- 博客(5)
- 收藏
- 关注
原创 一个灵活的可复用网络库
写一个服务器并不算太难,但是写一个可复用性极强的网络库还是有一些难度的。 首先,我先总结一下在工作中遇到的需求。 在一个大型的服务器中,IO必然应该是多线程的,但是连接并不应该是在这些IO线程中平均分配的,因为连接的特性不同,某种连接就需要单独的占用一个IO线程,而某些连接则又应该共享同一个IO线程。例如:与数据库前端服务器相连的连接,一般情况下,这种连接的数据量比起单个与客户端连
2011-06-14 11:53:00 354
原创 自己实现的 rb-tree 准备用在我的网络库中
#ifndef RB_TREE_H_#define RB_TREE_H_typedef struct RB_TREE_NODE{ int color; unsigned long long key; void* data; struct RB_TREE_NODE* p; struct RB_TREE_NODE* left; struct RB_TREE_NODE* right;} RB_TRE
2011-06-08 10:35:00 242 1
原创 设计与思维方式的改变
<br />我想,很多人跟我一样都犯过这样的错误,那就是本末倒置。当我看到了别人实现的代码中有很好的地方,就很想拿来用;在书上看到了好的模式也很想拿来用。吸取别人好的东西固然是好的,也是很必要的,在进行自己的设计时分析问题的顺序并不应该是从别人的结构或者模式出发。因为模式和结构再好也是对某种特定需求的一个实现。<br /> <br />在分析问题时,首先应该先分析,我所提供的程序最后需要什么样的结果,比如,这个模块,我需要向上层提供怎样形式的接口,这个是最重要的,如果先从模块内部的构造进行思考,很可能造成模
2011-05-27 11:44:00 226
原创 关于工厂模式和类型登记表
需求:在实际应用中,我经常会遇到这样一种情况,在底层的某个接口中,提供一个传入一个父类指针,又向上层提供一个类型可扩展的方式,使得上层可以自定义父类的实现,但与此同时,又想封装对这个类的所有使用,使用户只能定义这个类的行为,而不能自己使用这个类。一下为实现这种模式的一种方法: 带有登记表的工厂模式class TypeBase{ virtual void do_something() = 0;};class CreatorBase{public: virtual TypeBase* cre
2011-05-23 16:46:00 244
原创 使用autotools生成符合自由软件标准的Makefile
<br />一直以来在开发中我都是使用自己手工编写的简单Makefile进行代码的编译的,编写一个简单的Makefile通常不太复杂,只需要设置一些编译条件的变量,objs列表,加上几行简单的代码即可。但是这样的makefile在很多情况下会暴露出很大缺点,例如在另一个环境的机器上编译等,很可能需要改写Makefile.<br /> <br />使用autotools生成符合自由软件标准的Makefile,就可以帮助我们解决这个问题。我们可以使用像标准的软件包一样的方式进行编译和安装,形式如下:<br />
2011-05-10 15:18:00 389
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人