07 2015 档案
摘要:#I/O事件最近在研究tornado和gevent,里面涉及了非阻塞I/O。在了解非阻塞I/O之前,需要先了解I/O事件我们知道,内核有缓冲区。假设有两个进程A,B,进程B想读进程A写入的东西(即进程A做写操作,B做读操作)。进程A需要先写入到**内核缓冲区**中,然后B从内核缓冲区中读取,如图: ...
阅读全文
摘要:众所周知,python中的`yield`有这样的用法:```pythondef test(alist): for i in alist: yield i```这样,这个`test`函数就变成了一个生成器,当每次调用的时候,就会自动返回当前值。比如:```pythona = [1,2,3...
阅读全文
摘要:按照说明直接使用`pip install scrapy`会有两个问题:1. fatal error: ‘ffi.h’ file not found2. fatal error: ‘libxml/xmlversion.h’ file not found这两个文件都是存在的,可是却显示不存在。网上查找后...
阅读全文
摘要:##Same Tree ###题目给予两棵二叉树,判断这两棵树是否相等(即各节点的值都一样)###解题思路分别遍历两棵二叉树,并用列表分别存储这两棵树的节点的值,比较这两个列表就可以了```pythonclass Solution: # @param {TreeNode} p # @pa...
阅读全文
摘要:##Longest Common Prefix ###题目给予一个列表,元素为字符串,写一个程序找出最长公共前缀###解题思路先比较两个字符串,如果第一个字符不一样,则返回空值,比较完成后,用这个公共字符串和下一个元素继续比较,以此类推```pythonclass Solution: # @p...
阅读全文
摘要:从题目名字就可以看出这两道题是相似的,219是217的加强版##217:Contains Duplicate###题目给予一个数组,判断是否有重复的元素。如果有就返回True,没有就返回False。以下是我第一次想到的方法###解题思路遍历这个数组,建立一个字典,存储每个不同的数字的出现次数。如果某...
阅读全文
摘要:##Path Sum###题目给予一个二叉树,和一个值su,寻找是否有一个从根节点到叶节点的和为su,有则返回True,没有为False。比如: 5 / \ 4 8 / / \ 11...
阅读全文
摘要:raspberry部分使用入门~
阅读全文
摘要:在使用gevent框架的时候,我们经常会使用`join`函数,如下:```pythondef test1(id): print(id) gevent.sleep(0) print(id, 'is done!')t = gevent.spawn(test1, 't')t1 = gev...
阅读全文
摘要:gevent是一个异步I/O框架,当遇到I/O操作的时候,会自动切换任务,从而能异步地完成I/O操作但是在测试的情况下,可以使用`sleep`函数来让gevent进行任务切换。示例如下:```pythonimport geventdef test(id): print('Test %s is ...
阅读全文
摘要:在gevent的源码中,经常能看到switch函数。而不同的类中的switch函数有不同的用法##1. greenlet的switch函数这里面的greenlet**是greenlet库中的greenlet类**,它**是gevent中的Greenlet类的基类**(即Greenlet类是在gree...
阅读全文