杂七杂八的小笔记

来源:互联网 发布:类似双程的网络剧 编辑:程序博客网 时间:2024/05/16 10:32

统计汉字与英文单词的数量,使用正则表达式。摘抄自http://iregex.org/。

“使用正则式 "(?x) (?: [\w-]+  | [\x80-\xff]{3} )"获得utf-8文档中的英文单词和汉字的列表。”在utf8编码中,要用3个这样的\x**才能表示一个汉字(这样超不公平的,耗我们的空间)。从\x80之后才是汉字的编码,所以是[\x80-\xff]{3}

regex=re.compile("(?x) (?: [\w-]+  | [\x80-\xff]{3} )")regex.findall(s)#s是字符串



有时候为了省带宽,需要用上压缩、解压缩。python中的模块zlib就可以用了。参照http://blog.csdn.net/jgood/article/details/4608546,以及python的document


import zlib, urllibfp = urllib.urlopen('http://localhost/default.html')    # 访问的到的网址。data = fp.read()fp.close()#---- 压缩数据流,一次性全部load进内存来压缩str1 = zlib.compress(data, zlib.Z_BEST_COMPRESSION)#后面是一个int值,1-9,数字越大压缩率越大,相应速度就慢了。str2 = zlib.decompress(str1)print '原始数据长度:', len(data)print '-' * 30print 'zlib.compress压缩后:', len(str1)print 'zlib.decompress解压后:', len(str2)print '-' * 30#---- 使用Compress, Decompress对象对数据流进行压缩/解压缩,可以分多阶段压缩。com_obj = zlib.compressobj(zlib.Z_BEST_COMPRESSION)decom_obj = zlib.decompressobj()str_obj = com_obj.compress(data)str_obj += com_obj.flush()print 'Compress.compress压缩后:', len(str_obj)str_obj1 = decom_obj.decompress(str_obj)str_obj1 += decom_obj.flush()print 'Decompress.decompress解压后:', len(str_obj1)print '-' * 30#---- 使用Compress, Decompress对象,对数据进行分块压缩/解压缩。com_obj1 = zlib.compressobj(zlib.Z_BEST_COMPRESSION)decom_obj1 = zlib.decompressobj()chunk_size = 30;#原始数据分块str_chunks = [data[i * chunk_size:(i + 1) * chunk_size] /    for i in range((len(data) + chunk_size) / chunk_size)]str_obj2 = ''for chunk in str_chunks:    str_obj2 += com_obj1.compress(chunk)str_obj2 += com_obj1.flush()print '分块压缩后:', len(str_obj2)#压缩数据分块解压str_chunks = [str_obj2[i * chunk_size:(i + 1) * chunk_size] /    for i in range((len(str_obj2) + chunk_size) / chunk_size)]str_obj2 = ''for chunk in str_chunks:    str_obj2 += decom_obj1.decompress(chunk)str_obj2 += decom_obj1.flush()print '分块解压后:', len(str_obj2) # ---- 结果 ------------------------原始数据长度: 5783------------------------------zlib.compress压缩后: 1531zlib.decompress解压后: 5783------------------------------Compress.compress压缩后: 1531Decompress.decompress解压后: 5783------------------------------分块压缩后: 1531分块解压后: 5783
<unistd.h>,char *getcwd(char * buffer,size_t size),chdir,fchdir<sys/stat.h><sys/types.h>,int mkdir(const char *pathname,mode_t mode), rmdirls -lih列出目录下的文件权限信息,i表示inode,h表示human readable,12194395 drwxrwxr-x  3 gauss gauss 4.0K  9月  7 13:21 %APPDATA%                        文件夹11141124 -rw-r--r--  1 gauss gauss 8.3K  8月 30 15:10 examples.desktop                 文件 int chmod(const char *path,mode_t mode)int chown(const char *path,uid_t owner,gid_t group)*******************************************************************************************************************************vmstat 显示虚拟内存的使用情况。procs   -----------memory----------                   ---swap-- -----io---- -system-- ----cpu----  r  b      swpd       free      buff         cache        si   so     bi    bo    in   cs      us sy id wa  3  0      0          1082148 108776 1174296    0    0     31    34  571  890 14  6 78  1procs:r,等待获得cpu时间以运行的进程数。b处于不可中断休眠的进程数memory:swpd,已用虚拟内存大小。free,空闲内存大小。buff,用作磁盘缓存的内存大小。cache,用作缓存的内存大小swap,si,每秒从磁盘换入的内存大小,so类似。io,bi每秒从磁盘都取的块数,bo类似。system,in每秒中断发生次数,cs每秒上下文切换的次数cpu,us用户程序所占cpu的时间比例,显示了用户进程的繁忙程度。sy内核代码所占比例。id表示cpu空闲所占的时间比例。wa用于等待I/O操作所占的比例。僵尸进程(Zombie Process)是由于子进程推出后父进程没有使用wait函数收集子进程状态而产生的,僵尸进程是一个已经结束了的进程,不占用系统的内存资源,对cpu时间几乎么有任何影响,只是会占用进程标中的位置。但是由于进程表空间有限,也就是进程数是有限,所以我们要杀掉这些占着茅坑不拉屎的进程。僵尸进程的存在是为了给程序员提供一些进程信息。运行中是否出现了错误。解决:只要我们把父进程给杀了,那么这些僵尸进程就会给init进程收留,init进程会清理掉他们。