摘要:
通常,我们写服务器处理模型的程序时,有以下几种模型:(1)每收到一个请求,创建一个新的进程,来处理该请求;(2)每收到一个请求,创建一个新的线程,来处理该请求;(3)每收到一个请求,放入一个事件列表,让主进程通过非阻塞I/O方式来处理请求上面的几种方式,各有千秋,第(1)中方法,由于创建新的进程的开销比较大,所以,会导致服务器性能比较差,但实现比较简单。第(2)种方式,由于要涉及到线程的同步,有可能会面临死锁等问题。第(3)种方式,在写应用程序代码时,逻辑比前面两种都复杂。综合考虑各方面因素,一般普遍认为第(3)种方式是大多数网络服务器采用的方式,这也是本文讨论的重点—事件驱动处理库。1. s 阅读全文
posted @ 2011-12-28 22:37
小 楼 一 夜 听 春 雨
阅读(439)
评论(0)
推荐(0)
摘要:
http://blog.csdn.net/starlee/article/details/1472710 现在有很多软件都支持拖拽功能,就是用鼠标拖着文件放到软件窗口中某个位置,软件就可以做出相应的反应。比如,Windows自带的播放软件Windows Media Player,你可以拖着一个媒体文件放到它的主窗口中,它就会开始播放这个文件。 怎么让自己的软件也有这个功能呢? 其实,并不是很难,只要让你需要有拖拽功能的控件响应WM_DROPFILES消息就行了。下面以Edit控件和ListBox控件为例子来说明。 首先,从CEdit继承,自定义一个Edit控件。在头文件添加如下的消息响应函数: 阅读全文
posted @ 2011-12-28 10:33
小 楼 一 夜 听 春 雨
阅读(542)
评论(0)
推荐(0)
摘要:
http://blog.csdn.net/starlee/article/details/945728 我们知道,在面向对象语言中,公有继承是IS-A的关系,也就是说子类是一种基类,就像说轿车是一种汽车一样。但是,有时候逻辑上正确的公有继承却会违反替换原则。面向对象设计中的替换原则是:子类必须能够替换掉它们的基类。也就是说,代码中基类出现的地方都能用子类来替换,就跟汽车能用的地方都能用轿车一样。但是,如果设计不合理,就会违反这个原则,给开发带来隐患。下面就以一个C++的例子来说明:classCShape{public:virtual~CShape(){};virtualdoubleGetAre 阅读全文
posted @ 2011-12-28 10:21
小 楼 一 夜 听 春 雨
阅读(276)
评论(0)
推荐(0)
摘要:
http://blog.csdn.net/starlee/article/details/1485248 ADAPTER模式可以将一个类的接口转换成另外一个接口,那样就可以使原来不兼容而不能一起工作的那些类可以一起工作。 ADAPTER模式也可以称为WRAPPER模式。 对于ADAPTER模式的简单包装功能,下面以STL中的一个例子来说明://下列代码片断摘自VC++6.0中的STACK//可以在..VC98/Include/STACK中找到template<class_Ty,class_C=deque<_Ty>>classstack{public://......va 阅读全文
posted @ 2011-12-28 10:10
小 楼 一 夜 听 春 雨
阅读(242)
评论(0)
推荐(0)

浙公网安备 33010602011771号