- 博客(32)
- 收藏
- 关注
原创 Twisted源码分析4--Deferred
我们知道,twisted处处依赖异步编程,而回调是twisted异步编程的基础。由于回调在twisted编程中的广泛运用,twisted的开发者设计了一种抽象机制Deferred让程序员使用回调是更加简便。基础教程中关于Deferred的部分请参见小插曲,Deferred,需要进一步阅读的请参见Deferred的文档。而现在,我们就来分析Deferred的实现# /twisted/internet/
2016-05-29 21:00:11 1039
原创 Twisted源码分析3
在前两节中,我们通过一个简单的例子从服务器端的角度简要的研究了twisted的源码。在本节,我们将通过另外一个例子,从客户端的角度研究twisted的相关源码,完整例子在这里下面是简化的代码:class PoetryProtocol(Protocol): poem = '' def dataReceived(self, data): self.poem += data
2016-05-14 22:03:40 4145
原创 Twisted源码分析2
在上一篇博文中,我们借一个小例子简要讲解了创建事件监听循环,与客户端建立连接。这次,我们将继续按照上一篇开头的例子来探究负责底层传输的transport类# /twisted/internet/tcp.pydef doRead(self): ... protocol = self.factory.buildProtocol(self._buildAddr(addr)) if
2016-04-23 11:19:27 1297
原创 Twisted源码分析1
Twisted是用python编写的事件驱动的网络框架,虽然Twisted从发布到现在已经有不少年头了,而且现在也出现了不少新的高性能异步I/O框架,比如说tornado,但是Twisted任然具有很好的学习价值。如果想要看Twisted的教程的话,Twisted有着非常好的教程Twisted introduction,这个是翻译现在进入正题我们通过一个简单的例子来开始我们的分析from twist
2016-04-16 12:47:23 3526 3
原创 AVL树
# -*- encoding:utf8 -*-# ### 平衡二叉树 ###import BinarySortTreeclass Node(BinarySortTree.TreeNode): def __init__(self, key): BinarySortTree.TreeNode.__init__(self, key) self.height = 0class AV
2015-01-29 17:11:35 401
原创 堆排序 python
# -*- encoding:utf8 -*-def heapsort(alist): # 保持最大堆 def max_heapify(alist, idx, size): left = idx * 2 + 1 right = idx * 2 + 2 length = size if left < length: if alist[idx] > alist[left]:
2014-10-25 11:57:09 424
原创 二叉搜索树
# -*- encoding:utf8 -*-# 二叉搜索树class TreeNode(object): def __init__(self, key): self._key = key self._left = None self._right = None self._parent = None def getKey(self): return self._ke
2014-10-19 10:36:52 298
原创 Produce-Consumer Problem
# -*- encoding: utf8 -*-from threading import Thread, Conditionfrom Queue import Queueimport timeimport randomCONDITION = Condition()class Pool(Queue): """ 模拟一个能存放固定数目的值的缓存区 """ def __ini
2014-10-19 09:37:40 329
原创 编辑距离
def init(alist, num1, num2): dplist = alist for i in range(num1 + 1): dplist.append([]) for i in range(num1 + 1): for j in range(num2 + 1): dplist[i].append(0) for i in range(1, num1 + 1):
2014-10-12 16:57:40 319
原创 字典树 python实现
# -*- encoding:utf8 -*-class Trie(object): def __init__(self): self.root = dict() def findnode(self, string): current_dict = self.root temp = None idx = 0 while idx < len(string): te
2014-10-12 16:49:42 423
原创 poj1321棋盘问题
#include //#include using namespace std;const int MAX = 9;int account = 0;bool visit_col[MAX];//列bool arr[MAX][MAX];void dfs(int row,int num,int m,int n){if (num == n) {account ++;return;
2014-06-11 14:53:45 393
原创 设计模式----适配器模式
#适配器模式'''将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。''''''适用场景:1、已经存在的类的接口不符合我们的需求;2、创建一个可以复用的类,使得该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作;3、在不对每一个都进行子类化以匹配它们的接口的情况下,使用一些已经存在的子
2014-06-07 15:39:46 425
原创 设计模式----抽象工厂模式
#武器工厂#抽象工厂模式'''武器工厂生产武器的实例,不同属性的工厂生产不同属性的武器,武器的攻击可以设定,工厂需添加相应武器的类才能生产实例'''class WeaponFactory(object): '''This is an abstract class WeaponFactory''' def __init__(self,weapon = None):
2014-06-06 20:58:58 423
原创 pyhon快速排序
def quickSort(nums) : if len(nums) <= 1 : return nums return quickSort([x for x in nums if x < nums[0]]) + \ [x for x in nums if x == nums[0]] + \ quickSort([x f
2014-06-06 20:46:30 425
原创 设计模式----观察者模式
#设计模式---观察者模式#纯属练手仿制,如有错误欢迎拍砖#delusion's code#气象站台---小试牛刀class Subject(object): def register(self,observer): pass def unregister(self,observer): pass def notify(self)
2014-06-06 18:14:47 473 1
原创 POJ1731
#include #include #include using namespace std;int func(string& input,int start,int last) { int left = start; int right = last; char key = input[left]; while (left < right) { while (left =
2014-04-14 19:24:26 533
原创 汉诺塔问题
//Hanoi问题//A,B,C是三个石柱#includeusing namespace std;void move(int n,char getone,char putone){ cout"<<putone<<endl;}void Hanoi(int n,char A,char B,char C){ if(n==1)move(n,A,C); e
2013-12-29 18:36:10 431
原创 最大流
#include#include#includeusing namespace std;#define SIZE 200int pre[SIZE];bool visit[SIZE];int flow[SIZE];int capacity[SIZE][SIZE];queueQ;int min(int a,int b){ return a<b ? a:b
2013-12-28 17:26:13 529
原创 POJ1146
#include#include#include#includeusing namespace std;void permutation(string val){ int idx=-1; for(int i=val.size()-1;i>0;--i){ if(val[i-1]<val[i]){ idx=i-1; break; } } if(idx==-1){
2013-12-15 13:29:37 392
原创 DFS的栈做法
#include//求出搜索路径#includeusing namespace std;#define N 9int main(){ stackA; bool visit[N]; memset(visit,0,sizeof(visit)); bool arr[N][N]={ {0,0,0,0,0,1,1,0,0}, {1,0,0,0,0,0,0,1,0}, {1,0,
2013-12-15 11:51:39 1160
原创 DFS 的递归做法
#include//得到搜索路径using namespace std;#define N 9bool visit[N];void dfs(bool arr[N][N],int i){ visit[i]=true; cout<<i<<' '; for(int j=0;j<N;++j){ if(arr[i][j]==true && !visit[j]){ dfs(arr,j
2013-12-15 11:49:45 650
原创 去重的全排序
/*去重的全排列。。。再看看别人的代码,感觉差距好大。*/#include#include#includeusing namespace std;void permutation(string input);int main(){ string input="aabc"; permutation(input); return 0;}void permutation
2013-12-13 10:08:17 559
原创 斐波那契数
//递归#includeusing namespace std;int fun(int idx){ if(idx<=2) return 1; else return fun(idx-1)+fun(idx-2);}int main(){ int ans; cin>>ans; cout<<fun(ans)<<endl; return 0;
2013-12-09 18:22:26 471
原创 全排列的递归算法(以此加深对递归的理解)
#include#includeusing namespace std;#define length 3void permutation(char arr[],int idx,int size){ if(size==0){ for(int i=0;i<length;++i) cout<<arr[i]; cout<<endl; } else {
2013-12-09 18:16:32 579
原创 POJ3664
//知道为什么几次提交都是WA了,原来是struct没有初始化,对于任何程序,细节决定成败#include#includeusing namespace std;#define SIZE 50010struct vote{ vote(): a(0),b(0),num(0){}; int a; int b; int num;};int cmp1(vot
2013-12-08 11:17:13 573
原创 插入排序
#includeusing namespace std;#define N 10void InsertionSort(int arr[],int size){ for(int i=1;i<size;++i){ int temp=arr[i]; for(int j=i-1;j>=0 && arr[j]>temp;--j) arr[j+1]=arr[j];
2013-12-07 18:31:47 387
原创 堆排序
//因为边界问题调试了一天半,权当是教训吧#include#includeusing namespace std;#define N 10void HeapAdjust(int arr[],int i,int size){ for(int j=2*i;j<=size;j*=2) { if((j+1<=size)&&(arr[j+1]<arr[j])) j++; if(
2013-12-06 20:59:04 474
原创 树状数组求逆序数
#include#include#includeusing namespace std;#define SIZE 50001struct node{ node(): val(0),ord(0){}; int val; int ord;};node a[SIZE];int c[SIZE];int n=11;int lowbit(int x)
2013-11-28 09:52:14 594
原创 POJ2140
#include#includeusing namespace std;double Q(double m,double n){ double q=0.5-(m/2)+(n/m); return q;}int main(){ double N=0; int y; cin>>y; int A=0; for(int x=1;x<y;++x){
2013-11-24 17:25:54 448
原创 POJ2015
//POJ2105#include#include#includeusing namespace std;int Q(int x){ int n=1; for(int s=0;s<x;++s) n*=2; return n;}int main(){ vectorv(10); int N; cin>>N; for(int i=0;i<
2013-11-21 09:51:39 689
原创 冒泡排序
#include#includeusing namespace std;int main(){int value=0;int X=0;vectorv;while(cin>>value)v.push_back(value);for(int a=0;afor(int b=0;bif(v[a]>v[b]){X=v[a]; v[a]=v[b];
2013-11-13 15:32:56 364
原创 方格取数
#include#include#include"std_lib_facilities.h"int max(int x,int y){ if(x>y) return x; if(x return y;}int main(){ int m,n; cin>>m>>n; vector >v(m+1,vector(n+1));
2013-11-09 19:39:29 549
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人