摘要: 解释一下Linux上free命令的输出。默认输出是KB,可以用free -m则输出是MB 下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如:FO[2][1] =24677460FO[3][2] =10321516 1 2 3 4 5 61 total used free shared buffers cached2 Mem: 24677460 23276064 1401396 0 870540 120840083 -/+ buffers/cache: 10321516 143559444 Swap:. 阅读全文
posted @ 2014-01-06 11:30 桂皮猪 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步?同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知(异步的特点就是通知)。而阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函 阅读全文
posted @ 2013-12-14 12:03 桂皮猪 阅读(12668) 评论(5) 推荐(4) 编辑
摘要: 好吧,我有代码格式的强迫症,代码不整齐,我看的都头疼,之前一直喜欢用SourceStyler C++的,但是这个在win7下貌似不能使用,只能转向astyle了.http://www.cnblogs.com/xuxm2007/archive/2010/09/21/1832686.html关于参数的话,差不过够用就行,不用非得调的那么精细,比较重要的是要看代码啊,不是这玩意下面的url也是值得参考的:http://www.cppblog.com/jerryma/archive/2012/02/02/164813.htmlhttp://astyle.sourceforge.net/astyle.h 阅读全文
posted @ 2013-12-06 16:30 桂皮猪 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 在对文件进行预处理的时候,由于有的文件有太大,处理很慢,用python处理是先分割文件,然后每个文件起一个线程处理,启了10个线程,结果还比不起线程慢一些,改成多进程之后就好了.使用multiprocessing模块实现真正的并发 因为GIL会序列化线程, Python中的多线程不能在多核机器和集群中加速. 因此Python提供了multiprocessing模块, 可以派生额外的进程代替线程, 跳出GIL的限制. 此外, 你也可以在外部C代码中结合该建议, 使得程序更快. 注意, 进程的开销通常比线程昂贵, 因为线程自动共享内存地址空间和文件描述符. 意味着, 创建进程比创建线程会花费更多, 阅读全文
posted @ 2013-11-29 18:43 桂皮猪 阅读(829) 评论(0) 推荐(0) 编辑
摘要: python 调用函数时使用星号 *, **调用函数时使用星号 * 或 **test(*args):* 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。test(**kwargs):** 的作用则是把字典 kwargs 变成关键字参数传递。如果 kwargs 等于 {'a':1,'b':2,'c':3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。 阅读全文
posted @ 2013-11-29 09:34 桂皮猪 阅读(461) 评论(0) 推荐(0) 编辑
摘要: 当重复一个正则表达式时,如用 a*,操作结果是尽可能多地匹配模式。当你试着匹配一对对称的定界符,如 HTML 标志中的尖括号。匹配单个 HTML 标志的模式不能正常工作,因为 .* 的本质是“贪婪”的>>> s = 'Title'>>> len(s)32>>> print re.match('', s).span()(0, 32)>>> print re.match('', s).group()TitleRE 在 "" 中匹配 "”,因此正则表达 阅读全文
posted @ 2013-11-25 17:37 桂皮猪 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 1.多字节问题必须要全部转成unicode再处理,否则就会有问题,比如中文gbk编码的"和珅",其中的珅的后半字节和|的一样的,所以在处理的时候会有问题,如下我们用re.split来分割:#用正则分隔某个字符串def split(str, patternlist): unicodestr = str.decode('gbk') result = [] for i in patternlist: unicodei = i.decode('gbk') outlist = re.split(unicodei, unicodestr) for j i 阅读全文
posted @ 2013-11-25 14:58 桂皮猪 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在 Python 里更是如此,在官方发布的库中就包含有做这件事情的库,那就是 ConfigParser,这里简单的做一些介绍。 ConfigParser 解析的配置文件的格式比较象 ini 的配置文件格式,就是文件中由多个 section 构成,每个 section 下又有多个配置项,比如:C代码[db]db_host=127.0.0.1db_port=3306db_user=rootdb_pass=password[concurrent]thread=10processor=20 假设上面的配置文件的名字为 阅读全文
posted @ 2013-11-22 14:30 桂皮猪 阅读(197) 评论(0) 推荐(0) 编辑
摘要: substr使用时要判断起点和长度是否超过了串本身的长度,否则会抛异常 阅读全文
posted @ 2013-11-20 10:30 桂皮猪 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 【转自http://www.cnblogs.com/liyulong1982/p/3404947.html】1.基本概念服务(server):“服务”可以分软件和硬件两个类别,本文提到的“服务”都是指软件,是一种程序。称之为“服务”的程序一般具备2个特点:1) 程序启动后常驻内存,成为守护进程。2) 能与其他进程通信,接收请求,处理请求并做出回应。本文中的服务特指基于TCP/IP 协议通过socket进行通信的服务。为什么互联网业务需要“服务”这种类型的程序呢?主要有2个原因1) 有些功能可以通过一个独立的程序来完成,不用每个程序都写一套代码来实现这个功能,这样有利于程序的解耦和复用2) 有些 阅读全文
posted @ 2013-11-04 17:24 桂皮猪 阅读(1024) 评论(0) 推荐(0) 编辑