白天的小萤火虫

导航

2011年4月27日

关于mmap的小记

摘要: 关于mmap,是linux系统给程序员提供的一个接口,使得可以像读取mem一样读取disk上的数据(系统会一点一点的load到内存,这个方式程序员可以控制,一般是首先会去mem查找,如果没有就去disk找,并同时load到mem中,OS一般不会给调度会disk,所以在使用这个方法的时候,最好有一次warmup的过程,预先全部load到mem中,同事就遇到过这个问题,表象就是第一次查询超时,第二次就正常)http://www.kernel.org/doc/man-pages/online/pages/man2/mmap.2.html 阅读全文

posted @ 2011-04-27 17:08 白天的小萤火虫 阅读(199) 评论(0) 推荐(0) 编辑

2011年3月17日

C++多线程编程以及epoll处理socket通信时多端口问题

摘要: 问题根源:当有许多客户端用socket来连接我的服务器(期间存在一定的数据交互)的时候,为了提高性能,我们需要采用多线程编程(处理具体的请求),同时还要使用epoll来高效的在IO事件之间切换(侦查socket连接的IO事件)。这篇随笔,我们主要是写一个单独的模块来解决http到rpc的转化这个问题(本质上来说,有很多开源库来完成这个协议转化的比如XML-RPC,具体需要根据实际情况使用),我们的这么模块需要做其他逻辑,所以自己做了这个工作。由于我们采用C++编程,有线程池的类写起来和传统的C程序有点不同。如要在c++下操作线程,有两种办法: 1、第一种:在.CPP文件中,定义不属于某个类的线 阅读全文

posted @ 2011-03-17 20:07 白天的小萤火虫 阅读(2705) 评论(0) 推荐(0) 编辑

2011年2月25日

2.23记录

摘要: 1、关于2条单向链表是否存在交点的问题,只能Y字型,方法是遍历两条链表,看他们的尾指针是否相同,相同则有交点,进而求交点的位置,两条链的长度为M,N,如果M>N,则短链从头开始扫,长链从M-N处开始扫,如果发现相同点,则为交点。2、链表是否有环,用一快(2)一慢(1)的指针,如果他们相遇了,则说明有交点,如果需要找点环的开始节点,则这样做:当第一次相交后,再一快一慢的扫一次,第二次遇上的时候,他们走的步长差值就为环的长度,有了这个长度M,则用M长的火车从头开始扫,当这列火车头尾相遇,则相遇点就是环的入口处。还有一个链表反转的问题,主要是注意递归版本的实现,想了好久#include< 阅读全文

posted @ 2011-02-25 14:51 白天的小萤火虫 阅读(207) 评论(0) 推荐(0) 编辑

2011年2月14日

第一章 C++对象

摘要: 本章讨论C++在内存中是怎么组织类对象的,这是后面实现多态的基础。关于下面的类定义,其在内存中的组成结构如下图,可见static数据是单独存放,一般数据是随着类对象走,static函数和非static函数都是单独存放,而虚函数也是单独存放,只是一个类有自己的vtable来指向这些虚函数,而每一个类对象则有一个vptr来指向这个虚表。[代码]有了上面的基础,我们考虑在继承体系中,其内存是如何组织的,一种可能的情况如下图所示,有了这个认识,对于对象切片操作以及通过指针和引用实现多态就会有比较深刻的理解。[代码] 阅读全文

posted @ 2011-02-14 20:14 白天的小萤火虫 阅读(133) 评论(0) 推荐(0) 编辑

2011年1月22日

同学分享的一篇关于python知识点的总结(挺好,故转载)

摘要: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE class类的定义(Python中的类没有什么public、private、protect)构造函数、析构函数[代码]类的静态变量[代码]初始化类的静态变量是这样的(DiveIntoPython中的例子) [代码]实例的成员变量[代码]属性定义[代码]说实话,当我看到这样的代码,我就不想使用属性了。这样定义起来也太不方便了,还要从object中继承。目前没有找到好的理由使用属性。只读属性(类必须从object继承,否则就不是只读的)在python 3000中所有的类都是 阅读全文

posted @ 2011-01-22 15:39 白天的小萤火虫 阅读(656) 评论(0) 推荐(0) 编辑

python库的学习系列之 13.2. ConfigParser — Configuration file parser

摘要: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 13.2. ConfigParser — Configuration file parser提供了一个ConfigParser.RawConfigParser方法,处理配置文件很好用,我们可以将配置文件读到一个map里面,方便程序访问。见例子:如果有以下一个配置conf文件,定义了两个section[代码]我们可以通过下面的程序去方便的读取他们:[代码]可以,使用非常简单。 阅读全文

posted @ 2011-01-22 15:07 白天的小萤火虫 阅读(242) 评论(0) 推荐(0) 编辑

python库的学习系列之 15. Generic Operating System Services

摘要: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 15.7. logging — Logging facility forPython使用这个模块,可以打印出非常漂亮的log信息,如一个简单的例子:[代码]而我们的logging.conf则是配置我们log格式的东东,以上的code对应下面的conf配置:[代码]在使用的地方:[代码]一般来说,上面的例子就够我们工作中使用了,如果要输出更漂亮,复杂的log信息, 可以参考http://docs.python.org/library/logging.html 阅读全文

posted @ 2011-01-22 14:49 白天的小萤火虫 阅读(328) 评论(0) 推荐(0) 编辑

python库的学习系列之 10. File and Directory Access

摘要: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 10.1. os.path — Common pathname manipulationsos.path.abspath(path) 找到path(以当前位置为准的相对位置)代表的文件的绝对路径。[代码]os.path.basename(path)提供系统中路径操作相关的函数,很常用的、文件路径、路径归一化、判断路径是文件夹还是文件,以及获取文件大小,文件更改,创建时间等等很多接口,有一个walk函数与os.walk差不多使用。10.2. fileinput — Ite 阅读全文

posted @ 2011-01-22 13:27 白天的小萤火虫 阅读(237) 评论(0) 推荐(0) 编辑

我常用的一些emacs配置

摘要: 看考http://docs.huihoo.com/homepage/shredderyin/emacs_elisp.html以下是C++编码的一些必要设置,已经够用了;;;;CC-mode配置 http://cc-mode.sourceforge.net/ (require'cc-mode) (c-set-offset'inline-open 0) (c-set-offset'friend '-) (c-set-offset'substatement-open 0) ;;;;我的C/C++语言编辑策略 (defunmy-c-mode-common-hook() (setqtab-width 阅读全文

posted @ 2011-01-22 11:50 白天的小萤火虫 阅读(320) 评论(0) 推荐(0) 编辑

2011年1月12日

python库的学习系列之 5.6.1. String Methods

摘要: 这个很简单,可以查看python str提供的具体方法,看python doc http://docs.python.org/library/stdtypes.html#string-methods 阅读全文

posted @ 2011-01-12 16:23 白天的小萤火虫 阅读(153) 评论(0) 推荐(0) 编辑