摘要: 565. Array Nesting 这道题目的大概意思是,先选定数组中一个起始的位置,再根据她的值定位到相应的下标,继续下去,直到出现循环为止,最后找出最长的不循环的。 显然需要将数组中每个位置起始的都要计算一遍,所以首先想到的就是dfs。 或者是不用函数递归的形式,直接写在一个函数里面,这样还避阅读全文
posted @ 2018-05-01 17:00 banananana 阅读(16) 评论(0) 编辑
摘要: [LeetCode]495. Teemo Attacking 时隔多日,又要开始继续重拾算法了; 题目:这道题目是一个披着游戏皮的数组题目,计算提莫总共攻击时长。 分为三种情况: 如果当前攻击时间点加上duration后超过了下一个时间点,那个显然下一个时间点就不用计算了,直到找到数组中没有超过的时阅读全文
posted @ 2018-05-01 15:48 banananana 阅读(15) 评论(0) 编辑
摘要: south 命令学习 概述 在django某个版本之前,django自身提供一个创建数据库的命令-syncdb,它会根据model来创建相应的表,但是这个命令不好的地方在于,如果想要对model进行更改字段,那么只能在数据库中把改model对应的表给删除掉,然后再次执行命令来创建数据库。但是,sou阅读全文
posted @ 2018-04-30 10:53 banananana 阅读(26) 评论(0) 编辑
摘要: 最近在做微信的发送模版消息,在测试的时候发现有的时候能够发送,有时候无法发送,查了相关的日志(日志记录发送结果很重要!!),看到了微信返回的错误消息,发现是 invalid credential, access_token is invalid or not latest hint: [QM1DJA阅读全文
posted @ 2018-03-11 16:17 banananana 阅读(670) 评论(0) 编辑
摘要: 决策树模型与学习1. 定义一般的,一棵决策树包含一个根结点,若干个内部结点和若干个叶结点;叶结点对应于决策结果,其他每个结点则对应于一个属性测试;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;跟结点包含样本全集,从跟结点到每个叶结点的路径对应一个判定测试序列。上面的定义可能有些抽象,我随阅读全文
posted @ 2018-03-11 10:41 banananana 阅读(27) 评论(0) 编辑
摘要: 树链剖分原理和实现 理解 树链剖分就是将树分割成多条链,然后利用数据结构(线段树、树状数组等)来维护这些链。首先就是一些必须知道的概念:重结点:子树结点数目最多的结点;轻节点:父亲节点中除了重结点以外的结点;重边:父亲结点和重结点连成的边;轻边:父亲节点和轻节点连成的边;重链:由多条重边连接而成的路阅读全文
posted @ 2017-11-12 12:21 banananana 阅读(1532) 评论(0) 编辑
摘要: crontab命令 用法 crontab命令可以在固定的时间执行指定的脚本,时间可以是分钟、小时、日、月、周及以上的任意组合。 分别包括分、时、日、月、星期、要执行的命令 第1列 分钟0~59第2列 小时0~23(0表示子夜)第3列 日1~31第4列 月1~12第5列 星期0~7(0和7表示星期天)阅读全文
posted @ 2017-11-11 22:38 banananana 阅读(37) 评论(0) 编辑
摘要: 树状数组的原理和实现 概念 树状数组或者二叉索引树也称作Binary Indexed Tree,又叫做Fenwick树;它的查询和修改的时间复杂度都是log(n),空间复杂度则为O(n),这是因为树状数组通过将线性结构转化成树状结构,从而进行跳跃式扫描。通常使用在高效的计算数列的前缀和,区间和。 其阅读全文
posted @ 2017-10-22 17:49 banananana 阅读(1521) 评论(0) 编辑
摘要: 连接远程主机 做法:通过ssh来连接远程主机,然后通过expect来发送密码,登陆主机以后再发送需要执行的命令来设置ss。为了避免出现超时,所以需要设置一个超时时间; 代码如下: #!/usr/bin/expect set user root set host yourip set password阅读全文
posted @ 2017-10-15 19:04 banananana 阅读(40) 评论(0) 编辑
摘要: 跳跃表原理和实现 前提 有时候会被问到链表如果做到二分搜索,可能会有部分的人会去把链表中的值保存到数组来进行二分,但是如果知道跳跃表的话,那么这个数据结构就可以解决这个困惑,它允许快速查询一个有序连续元素的数据链表,它的效率可以做到和二分相同,都是O(logn)的平均时间复杂度,其空间复杂度为O(n阅读全文
posted @ 2017-10-07 20:41 banananana 阅读(1253) 评论(0) 编辑
摘要: Scrapy框架解析 Scrapy框架大致包括以下几个组件:Scrapy Engine、Spiders、Scheduler、Item Pipeline、Downloader; 组件 Scrapy Engine 这是框架的核心,负责控制数据流在整个系统的各个组件间的流动过程,并且在特定动作发生时触发相阅读全文
posted @ 2017-09-18 17:03 banananana 阅读(134) 评论(0) 编辑
摘要: 前言 的确,我一开始的时候也认为二分查找挺简单的,但是在我对二分查找进行总结的时候,发现虽然思路很简单,但是代码要写的正确就不容易了。 区间 需要注意的是 注意计算的区间是左闭右开区间[)还是左闭右闭区间[],两者的代码是不太一样的。 左闭右闭区间 如果说你使用的是左闭右闭区间: int searc阅读全文
posted @ 2017-09-16 17:59 banananana 阅读(47) 评论(0) 编辑
摘要: Python风格规范 整理自Google开源项目指南 分号 行长度 不要使用反斜杠连接行,可以使用圆括号来连接; # True x = ('This will build a very long long ' 'long long long long long long string') URL可以阅读全文
posted @ 2017-09-16 01:21 banananana 阅读(158) 评论(0) 编辑
摘要: 多线程库总结 基于线程的并行性 threading模块 下面是一些基础函数,函数包括: threading模块一共提供的类包括:local、Thread、Lock、RLock、Condition、Semaphore、Event、Time 1. Thead-Local Data 专门用来管理线程局部的阅读全文
posted @ 2017-09-12 22:43 banananana 阅读(262) 评论(0) 编辑
摘要: Redis数据结构底层总结 本篇文章是基于作者黄建宏写的书Redis设计与实现而做的笔记 数据结构与对象 Redis中数据结构的底层实现包括以下对象: String Redis中并没有直接使用C语言中的字符串,而是在其基础之上实现了字符串的数据结构,叫做简单动态字符串(SDS)。 其内部的定义为: 阅读全文
posted @ 2017-08-24 00:37 banananana 阅读(420) 评论(0) 编辑
摘要: Celery 使用(一) 架构 如下图: 整体的流程,任务发布者或者是任务调度,将任务发送到消息代理中,接着消息代理将任务发送给消费者来执行,其执行完后将结果保存到backend中。 使用 先创建Celery实例和相关的任务,这里配置Celery可以通过创建一个配置文件,然后通过app.config阅读全文
posted @ 2017-08-18 00:13 banananana 阅读(93) 评论(2) 编辑
摘要: RabbitMQ中的使用 这篇文章将会介绍关于RabbbitMQ的使用,并且使用的是kombo(客户端的Python实现)来实现; 安装 如果使用的是mac安装的话,可以先安装到指定的位置,接着配置命令访问路径: vi .bash_profile,输入下面两行 RABBIT_HOME=/usr/lo阅读全文
posted @ 2017-08-17 01:35 banananana 阅读(456) 评论(0) 编辑
摘要: web框架总结 前提 一个web框架需要包含的组件或者功能有: wsgi 首先要了解WSGI的相关知识,如下: web server:指的是软件程序,它从客户端接受请求,然后返回一个Response,需要注意的是它不创建Response,web app才是创建Response的主体。web app:阅读全文
posted @ 2017-08-15 23:34 banananana 阅读(186) 评论(0) 编辑
摘要: 装饰器总结 前提 使用装饰器的前提在于Python提供的特性: 可以通过一个例子来了解: def get_animal(name='dog'): def dog(): return 'this is a dog' def cat(): return 'this is a cat' # 返回函数对象 阅读全文
posted @ 2017-08-15 03:29 banananana 阅读(208) 评论(0) 编辑
摘要: Python 协程总结 理解 协程,又称为微线程,看上去像是子程序,但是它和子程序又不太一样,它在执行的过程中,可以在中断当前的子程序后去执行别的子程序,再返回来执行之前的子程序,但是它的相关信息还是之前的。 优点: 如果要充分利用CPU多核,可以通过使用多进程+协程的方式 使用 打开asyncio阅读全文
posted @ 2017-08-13 09:21 banananana 阅读(749) 评论(1) 编辑