11 2012 档案

摘要:定义: epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。因为它会复用文件描述符集合来传递结果而不是迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一个原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入Ready队列的描述符集合就行了。epoll除了提供select\poll那种IO事件的电平触发(Level Triggered)外,还提供了边沿触发(Edge Triggered). 阅读全文
posted @ 2012-11-30 20:39 venow 阅读(32883) 评论(9) 推荐(9)
摘要:今天我来看一个简单的写xml文件的一个类,该类非常简单,简单到其实就是C语言的文件操作再上上一点STL的知识,这个类没有MarkupSTL这个C++读写xml文件这么强大,但是如果我们项目中要操作xml文件,完全可以用这个替代或者在这个的基础上进行扩展。 这个xmlwriter类是用来写xml文件,并不能用来读取xml文件,是一个澳大利亚人写的,网址如下:http://www.codeproject.com/Articles/13498/XMLWriter-A-simple-reusable-class,共包含两个文件,一个头文件和一个cpp文件,在代码中我已经添加必要的注释,应该很容易... 阅读全文
posted @ 2012-11-27 20:53 venow 阅读(1715) 评论(1) 推荐(0)
摘要:大多数的网络服务器,包括Web服务器都具有一个特点,就是单位时间内必须处理数目巨大的连接请求,但是处理时间却是比较短的。在传统的多线程服务器模型中是这样实现的:一旦有个请求到达,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出。这就是"即时创建,即时销毁"的策略。尽管与创建进程相比,创建线程的时间已经大大的缩短,但是如果提交给线程的任务是执行时间较短,而且执行次数非常频繁,那么服务器就将处于一个不停的创建线程和销毁线程的状态。这笔开销是不可忽略的,尤其是线程执行的时间非常非常短的情况。 线程池就是为了解决上述问题的,它的实现原理是这样的:在应用程序启动之后 阅读全文
posted @ 2012-11-22 20:07 venow 阅读(37798) 评论(12) 推荐(6)
摘要:最近想转到Linux下的C\C++编程,但是当前工作还是以在Window下的C++开发为主,偶尔也在Linux和Mac OS开发一些小工具,但是就是开发这些小工具让我有想转到Linux下C\C++编程的念头。但是工作还是要做的,不然没得饭吃啊,所以就只能利用下班时间及周末时间研究一下,先熟悉熟悉,由于大学木有认真的学习过C语言,一直以为C语言里有bool类型,直到工作后才知道C语言中木有这个类型,o(╯□╰)o。。。,所以就从C语言学起,我已经学过C++了,为什么还要从头来学C语言呢,我从事C++开发也就一年多一点,C++博大精深,所以我连半个C++程序员都算不上。废话少说了,为将来转到L.. 阅读全文
posted @ 2012-11-21 21:51 venow 阅读(6751) 评论(2) 推荐(0)
摘要:原型模式定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式解析: 原型模式是一种创建型设计模式,该模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。它主要面对的问题为:"某些结构复杂的对象"的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是他们却拥有比较稳定一致的接口。 UML图如下: 简单示例代码如下://基类class Prototype{public: virtual ~Prototyp 阅读全文
posted @ 2012-11-05 20:53 venow 阅读(430) 评论(0) 推荐(0)
摘要:模板方法模式定义: 定义一个操作中的算法骨架,而将一些实现步骤延迟到子类当中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法解析: 模板方法模式是比较简单的一种设计模式,但是它却是代码复用的一项基本的技术,在类库中尤其重要,它遵循“抽象类应当拥有尽可能多的行为,应当拥有尽可能少的数据”的重构原则。作为模板的方法要定义在父类中,在方法的定义中使用到抽象方法,而只看父类的抽象方法是根本不知道怎样处理的,实际做具体处理的是子类,在子类中实现具体功能,因此不同的子类执行将会得出不同的实现结果,但是处理流程还是按照父类定制的方式。这就是模板方法的要义所在,制定算法骨.. 阅读全文
posted @ 2012-11-05 20:40 venow 阅读(377) 评论(0) 推荐(0)
摘要:策略模式定义: 定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式解析: 策略模式是处理算法的不同变体的一种行为模式,通过在抽象策略中定义算法接口或封装算法标识,实现该抽象策略的具体子类成为一个单独的算法,即具体策略。策略模式使用多个类来区别不同的行为,使用策略模式避免暴露复杂的、与算法相关的内部数据结构。当一个类中的操作以多个条件分支语句的形式出现的时候,可以使用策略模式将相关的条件分支移入各自的具体策略类中以代替这些条件语句,从而减少系统处理的复杂度。 优点: 1、 提供了一种替代继承的方法,而且既保持了继... 阅读全文
posted @ 2012-11-03 13:32 venow 阅读(512) 评论(0) 推荐(0)
摘要:发布/订阅模式定义: 又称为观察者模式,定义对象间的一种一对多的依赖关系,一个发布者可以对应多个订阅者,当发布者发生变化的时候,他可以将消息一一通知给所有的订阅者当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。发布/订阅模式解析: UML图如下,这里发布者IPublisher提供依赖于它的订阅者的添加add和删除remove操作,同时提供一个依赖于它的所有订阅者同步的操作notify。订阅者需要提供一个update操作,当发布者发出notify通知所有订阅者时,进行调用update。 简单代码示例如下://订阅者基类class ISubsc... 阅读全文
posted @ 2012-11-03 10:13 venow 阅读(9978) 评论(1) 推荐(0)