摘要: 1 XXXServer1.1 BaseSever提供基础的循环等待请求的处理框架。使用serve_forever启动服务,使用shutdown停止。同时提供了一些可自行扩展的方法,用于对不同类型的请求做自己想要的处理。1.2 TCPServer在BaseServer基础上增加了一个TCP的socket连接,使用server_bind、server_activate、server_close处理TCP启停等操作同时增加了get_request、shutdown_request、close_request处理客户端请求。1.3 UDPServer继承自TCPServer,将socket改为了SOC 阅读全文
posted @ 2014-02-28 11:28 鸪斑兔 阅读(2930) 评论(0) 推荐(0) 编辑
摘要: Lighttpd 是一个德国人领导的开源Web服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销、cpu占用率低、效能好以及丰富的模块等特点。Lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(output compress),URL重写,Alias等重要功能;而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对 阅读全文
posted @ 2014-02-25 20:40 鸪斑兔 阅读(405) 评论(0) 推荐(0) 编辑
摘要: Python中所有加载到内存的模块都放在sys.modules。当import一个模块时首先会在这个列表中查找是否已经加载了此模块,如果加载了则只是将模块的名字加入到正在调用import的模块的Local名字空间中。如果没有加载则从sys.path目录中按照模块名称查找模块文件,模块文件可以是py、pyc、pyd,找到后将模块载入内存,并加入到sys.modules中,并将名称导入到当前的Local名字空间。详细信息参考:http://www.cnblogs.com/qq78292959/archive/2013/05/17/3083961.html扩展知识:Python在import其它模块 阅读全文
posted @ 2014-02-08 14:43 鸪斑兔 阅读(11473) 评论(0) 推荐(1) 编辑
摘要: class A(object): def __init__(self): print "init" def __new__(cls,*args, **kwargs): print "new %s"%cls return object.__new__(cls, *args, **kwargs)A()输出:new init知识点:继承自object的新式类才有__new____new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__ne... 阅读全文
posted @ 2014-02-08 12:01 鸪斑兔 阅读(39518) 评论(0) 推荐(5) 编辑
摘要: Python没有真正的私有变量。内部实现上,是将私有变量进程了转化,规则是:_下面的小技巧可以获取私有变量:1 class Test(object):2 def __init__(self):3 self.__zzz=1114 5 if __name__ == '__main__':6 a = Test()7 print a._Test__zzz同样,通过a._Test__zzz=222的方式,可以修改私有变量的值。通过dir(Test)和dir(a)可以看到类属性和其实例属性之间的区别:print dir(Test)print dir(a)['__c... 阅读全文
posted @ 2014-01-29 16:21 鸪斑兔 阅读(12978) 评论(0) 推荐(1) 编辑
摘要: 错误的方式:# su - testuser -c "/tmp/test.sh; echo $?"Sun Microsystems Inc. SunOS 5.10 Generic January 20050正确的方式:# su - testuser -c '/tmp/test.sh; echo $?'Sun Microsystems Inc. SunOS 5.10 Generic January 20053区别就在于单引号和双引号的含义不同,双引号会进行内容解析,单引号是原样传入。可以用set -x查看:# set -x# su - testuser -c & 阅读全文
posted @ 2013-12-25 13:53 鸪斑兔 阅读(1348) 评论(1) 推荐(0) 编辑
摘要: id | sed -e 's/).*//g' -e 's/.*(//'比$LOGNAME $NAME who am i都要准确一些 阅读全文
posted @ 2013-12-25 11:47 鸪斑兔 阅读(324) 评论(0) 推荐(0) 编辑
摘要: Linux的进程的信息都记录在/proc//下面,其实常用的ps、top命令也是从这里读取信息的。常用的信息有:cmd(命令)、cmdline(完整的命令行参数)、envrion(环境变量)、status(详细状态)一些内容,例如cmdline、envrion中的各部分不使用换行,而是用null分隔,所以需要借助tr命令进行一下转换:cat /proc/20938/cmdline | tr "\000" "\n"Solaris下面的/proc没有记录这些信息,但它提供了p开头的一系列命令来获取和修改这些信息,常用的有:pcred(用户、组id)、pldd 阅读全文
posted @ 2013-11-20 10:10 鸪斑兔 阅读(1200) 评论(0) 推荐(0) 编辑
摘要: nbtstat -an 10.146.36.186 阅读全文
posted @ 2013-10-30 14:08 鸪斑兔 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 1 class Test: 2 def __getattr__(self, name): 3 print name, 4 return self 5 6 def __call__(self, *args, **kwargs): 7 print "call", args, kwargs, 8 return self 9 10 t = Test()11 #输出xxx call ('x',) {} yyy call ('y',) {'m': 1, 'n': 'nnnn'} zzz call () {} 阅读全文
posted @ 2013-09-13 17:46 鸪斑兔 阅读(197) 评论(0) 推荐(0) 编辑