目录

AaronJny

诗酒繁华,书剑天涯。

leetcode第15题 3Sum(三数之和)

比较简单的一道题,题目的大意是说: 给定一个长度为 n 的整数数组 nums,从数组中找出所有不重复的 (三个数相加等于 0 的组合)。 注意,仅字典序不同的、包含数字相同的三元组被认为是重复的,如(1,-1,0)和(0,1,,-1)被认为是重复的,只能保留其中一个。 样例输入: [-1, 0, 1, 2, -1, -4] 样例输出: [ [-1, 0, 1], [-1, -1, 2] ] 输出不一定要和样例输出完全一样(组合的字典序问题),但必须包含所有可能的组合。 题目链接:https://leetcode.com/problems/3sum/ 解题思路: 首先,最暴力的解法,直接三层循环,o(n^3)解决问题,这种方法很容易想到。时间复杂度太高了,我没交这种方法,不知道会不会超时。 怎么优化呢?可以用二分查找来做。 先对数组进行排序,使用内置的排序方法,时间复杂度认为在 O(nlogn)级别。 既然是要找三个数的和为 0 的组合,那么,当前两个数确定了之后,第三个符合条件的数就确定了。这样,我们可以枚举前两个数,然后再在数组中使用二分查找搜索第三个数。时间复杂度可以....

进程管理工具Supervisor的安装和简单使用

一、Supervisor 是什么? 这是一个 GitHub 上 5686 star(截至 2019-09-30 13:57:24)的项目,下面给出项目在GitHub上的定义: Supervisor is a client/server system that allows its users to control a number of processes on UNIX-like operating systems. 翻译:Supervisor 是一个客户端/服务器系统,允许其用户控制类似 UNIX 的操作系统上的许多进程。 简单来说,Supervisor 就是一个 unix 系统上的进程管理工具,它允许程序后台运行,并提供完备的管理功能。 二、安装 Supervisor 需要使用 python 进行安装。 PS: Supervisor 现在已经支持 Python3 啦~! 用 pip 安装 Supervisor: pip3 install supervisor 三、配置 Supervisor 查找配置文件的顺序如下(越靠前越优先): 当前目录下的 supervisord....

使用阿里云maxcompute sql随机从查询数据中抽取n条样本

近些年大数据发展迅速,大数据生态圈也越来越丰富。使用 sql 进行数据分析时有个常用的组件叫 HIVE ,而阿里云则提供了类似 HIVE 功能的商业云服务,称为 maxcompute 。 今天记录一下使用 maxcompute sql 从数据中随机抽取 n 条样本的方法。 假设有数据如下: id name 1 张三 2 李四 3 王五 4 龙傲天 5 刘斩仙 6 赵日天 我们想随机从上表中抽取 3 条数据,应该怎么写? 假设表名为tmp_table: select id,name from tmp_table order by rand() limit 3 这样就能够从表中随机抽取 3 条数据了。假设我们运行的结果如下: 1 张三 3 王五 4 龙傲天 你可以尝试反复运行上面的 sql,然后就会发现,每次运行的结果都是相同的,随机抽取数据都是上面给的 3 条。为什么呢? 从 sql 来理解,上面的语句相当于生成了一个随机序列,每条记录都分配了一个随机值,然后所有记录按照随机值排序,从排序结果中取前 3 条,以此达到随机选择的目的。 然后 ra....

使用python,在保留相对顺序的情况下,对列表去重

在开发工作中,难免会遇到需要在保留相对顺序的情况下,对列表进行去重的需求。今天,就简单讲一下这个。 “在保留相对顺序的情况下,对列表去重”是指什么?请看示例: 给定列表 1: a = [1,2,2,3,4,4,5,6,7,7] 去重后输出: [1,2,3,4,5,6,7] 给定列表 2: b = [3,3,1,2,9,5,6,6,3,9,8,'a',5,'c','a'] 去重后输出: [3,1,2,9,5,6,8,'a','c'] 大概就是这个意思。下面说几种实现思路。 1. 暴力 字面意思,无脑暴力处理,开一个新列表,用来保存去重后的数据。 def duplicate_v1(objs): # 开一个新列表,用来保存去重后的数据 res = [] # 遍历原始列表 for obj in objs: # 如果这个元素已经在新列表中了 if obj in res: # 就直接忽略,处理下一个 continue # 否则将该元素加入到新列表中 res.append(obj) # 返回新列表 return res 简单计算一下,假设n=len(objs)这个函数的时间复杂度为 O(n....

Java技能关键词纠错——计算两字符串最长公共子序列(动态规划)

前言 最近在做一项功能,需要自动从招聘文本中提取技能需求关键词。然而问题来了,请看下面这句招聘需求: 2、 熟练掌握 SpringMVC、Srping、Mybetis 或者 hibernate,熟悉 jQuery,EasyUI 或者 AngularJS; 稍微仔细点看,比较熟悉 Java 的兄 dei 可能已经发现了,WTF?Spring、MyBatis哭晕在厕所…… 是哪家公司的我就不说了哈,影响不好,可能就是单纯手误吧。 然而,我就需要多做一项工作——纠错。从招聘文本中提取的关键词,不能直接作为结果,还需要使用对可能的手误打错、粘贴漏字这些问题进行处理,对可能为错误的关键词进行纠正。 整体的思路是这样的: 1.我写了一个提取器,可以按照特定的规则从招聘文本中提取可能的关键词 2.我建立了一个小型的 Java 关键词库。但不属于这个词库的、可能的关键词,也能被 1 中的提取器识别出来。 3.对于所有提取的技能关键词,尝试和词库进行匹配(匹配时关键词和词库统一转成小写,避免大小写不一致产生的问题),如果匹配上了,说明这个词大概率没有拼写问题,跳过。 4.如果在 3 中没有匹配....

如何构建一个自己的代理ip池

撰写于2019年2月21日,由我的csdn blog个上迁移而来。 前言 对于爬虫来说,当你的访问频率达到了目标网站的预警值时,就可能触发目标网站的反爬机制。而封禁访问者ip就是很常见的一个反爬机制。 当ip被封禁后,从此ip发出的请求将不能得到正确的响应。这种时候,我们就需要一个代理ip池。 什么是代理ip池? 通俗地比喻一下,它就是一个池子,里面装了很多代理ip。它有如下的行为特征: 1.池子里的ip是有生命周期的,它们将被定期验证,其中失效的将被从池子里面剔除。 2.池子里的ip是有补充渠道的,会有新的代理ip不断被加入池子中。 3.池子中的代理ip是可以被随机取出的。 这样,代理池中始终有多个不断更换的、有效的代理ip,且我们可以随机从池子中取出代理ip,然后让爬虫程序使用代理ip访问目标网站,就可以避免爬虫被ban的情况。 今天,我们就来说一下如何构建自己的代理ip池。而且,我们要做一个比较灵活的代理池,它提供两种代理方式: 1.每次都通过http接口提取一个随机代理ip,然后在爬虫中使用此代理ip(大部分代理ip池服务都是这种形式) 2.使用squid3代理做请求转....

关于scrapy分布式爬虫请求去重和指纹过期的两种方法——思路

编写爬虫时,有时有对请求指纹设置生命周期的需求,考虑出两种方案,记录下来。

TensorFlow练手项目三:使用VGG19迁移学习实现图像风格迁移

软件环境为python2.7和tensorflow1.4,使用vgg19迁移学习,完成图片风格迁移Demo。

TensorFlow练手项目二:基于循环神经网络(RNN)的古诗生成器

使用 python2.7 和 tensorflow 1.4,利用循环神经网络编写了一个智障古诗生成器。

TensorFlow练手项目一:使用循环神经网络(RNN)实现影评情感分类

使用python2.7和tensorflow 1.4,编写循环神经网络实现一个影评情感分析的小Demo.