摘要: 命名管道FIFO是一种简单的跨进程IPC机制,相对比共享内存,消息队列等,FIFO支持基本的VFS操作,也支持poll事件处理。因此FIFO经常被作为进程之间快捷有效的消息通知管道。比如一个高性能服务器程序,往往会生成少数进程,这些进程往往可以分为两类,一类专门负责网络消息包收发处理,一类专门负责业务逻辑处理。而这两类进程之间往往通过共享内存作为消息包的环形缓冲区,同时使用FIFO作为这两类进程的消息通知机制(即通过write FIFO和read FIFO来通知对方有消息包到达和消除这种通知,这样使得负责网络消息包收发处理的进程能够以epoll或者select的方式统一监测socket和FI. 阅读全文
posted @ 2012-11-09 15:58 szgzwc 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 5、面对一些较模糊的问题和系统构建,如何才能化解于无形。要相信万事万物都是有联系的,绝对新的东西是不存在的,只有找到恰当的参照物才能理解模糊的事物,这个过程就是抽象归纳的过程。比如对于云计算这个概念,应该来说是比较模糊的,几乎没有人能给出一个让所有人都满意的定义,或者说几乎所有的定义都会被人挑战,但是我们还是可以从现实中找出一些类似的系统进行参照,比如amazon的AWS或者google的GAE,从它们身上我们可以看到很多云计算应该具备的特征。再比如说分布式文件系统,这个概念就比较具体,因为从搜索引擎上一搜索,大量的分布式文件系统,开源的也很多,其设计和源代码几乎都能随手可得,代码面前了无秘密 阅读全文
posted @ 2012-11-09 15:48 szgzwc 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 一个企业有软实力,同理,一个程序员也有软实力(软技术),以下是一些感悟,姑且称之为“程序员的软技术”。1、做好自己的事情,并因此获得较好的收益,这才是自己对团队最大的贡献。如果对自己的事情不努力去思考,反而总是分心其他事情,例如今天帮某个项目搞搞那个,明天再帮另一个项目打打杂,表面上看你做了不少贡献,好像是为团队为自己积累了人品,实际上回过头来看是给整个团队带来了不小的副作用,因为上层领导往往只看最后属于你的结果,过程往往无暇顾及。邓爷爷说的不管白猫还是黑猫,能抓老鼠的就是好猫。社会的进步不依赖于雷锋,而是依赖于制度,同样团队也是这样。所以只要每个人都对自己的事情达到精益求精的境界,那么团队自 阅读全文
posted @ 2012-11-09 15:47 szgzwc 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 在很多软件系统中,有很多算法是存在“不足”的,只要我们仔细思考代码,很多看似微小的算法也存在优化的可能性,虽然大部分改变不了系统本质,但是却降低了系统“变坏”的可能性。 曾经在开发某个服务器框架过程中,需要实现一个基于磁盘的CACHE模块mydiskalloc,该分配器的分配函数中有一个子过程是要从多个具有不同大小规格的空闲块链表找出一个符合需求的空闲数据块。这是一个朴素的遍历算法,根据需求大小从一个适当的链表开始判断链表是否为空,如果不为空则取头元素并退出,否则继续寻找下一个链表。这个子过程里面遍历的链表数目最多是O(10^3)级别。一般情况下,可能这个代价并不会很大,毕竟CPU是很快的,. 阅读全文
posted @ 2012-11-09 15:46 szgzwc 阅读(199) 评论(0) 推荐(0) 编辑