随笔分类 -  C++

摘要:不得不说,做C++服务器程序开发,要是不理解线程池,不懂线程池,做C++服务器端的程序就没有任何意义。特别就是上次我因为理解错了线程池而做错了一件事,而被指导人批了一顿,至今记忆犹新,所以趁着周末学了下线程池的使用,小有成绩。 先看一种比较简单的线程池的实现。 这里我们没有使用到任何线程池的信息,就 阅读全文
posted @ 2017-08-06 17:37 $逝水无痕$ 阅读(941) 评论(0) 推荐(0)
摘要:come from:http://www.fuzhijie.me/?p=65一直想弄明白Windows的IO完成端口是什么,这个词语每每出现在我眼前时总是伴随着鲜花和赞美,因此我便将其同许多我从来没搞懂过的东西一起归为神秘一类。这两天一直在看《Windows核心编程》,学到了不少东西,但是同别的英文... 阅读全文
posted @ 2013-07-18 09:57 $逝水无痕$ 阅读(560) 评论(0) 推荐(0)
摘要:http://blog.sina.com.cn/s/blog_6af95663010158j2.html #ifndef PUBLIC_H#define PUBLIC_H//测试消息CommandIdconst int COMMANDID1_REQ = 0x00000001;const int CO... 阅读全文
posted @ 2013-07-17 23:34 $逝水无痕$ 阅读(290) 评论(0) 推荐(0)
摘要:条款10:如果写了operator new就要同时写operator delete这样做是为了效率,也就是当一个类的size很小的时候,如果需要频繁的new和delete对象,也即大量的分配释放小的内存块,这样不仅会造成系统内存碎片,性能也会很差。这个时候我们可以在new第一个对象的时候分配一个很大... 阅读全文
posted @ 2013-03-01 21:25 $逝水无痕$ 阅读(139) 评论(0) 推荐(0)
摘要:一、关于类型转换 K&R C的不说了,说了还容易混淆,只说ANSI C的: 如果其中一个操作数的类型是unsigned long int,那么另外一个操作数也被转换为unsigned long int。其次其中一个操作数的类型是long int,而另一个操作数的类型是unsigned i... 阅读全文
posted @ 2012-12-08 15:53 $逝水无痕$ 阅读(152) 评论(0) 推荐(0)
摘要:转自http://bbs.ednchina.com/BLOG_ARTICLE_1883274.HTM 一直以来对于ARM体系中所描述的RO,RW和ZI数据存在似是而非的理解,这段时间对其仔细了解了一番,发现了一些规律,理解了一些以前书本上有的但是不理解的东西,我想应该有不少人也有和我同样的困惑,因此... 阅读全文
posted @ 2012-09-12 17:32 $逝水无痕$ 阅读(338) 评论(0) 推荐(0)
摘要:【原文地址】http://blog.csdn.net/hityct1/article/details/4164393访问者模式(Visitor Pattern)的c++实现示例访问者模式是一种分离对象数据结构与行为的方法,通过这种分离,可以为一个已存在的类或类群(即被访问者)增加新的操作(即访问者)... 阅读全文
posted @ 2012-08-29 22:39 $逝水无痕$ 阅读(122) 评论(0) 推荐(0)
摘要:【原文转自】http://blog.csdn.net/freshow/article/details/5772307解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生... 阅读全文
posted @ 2012-08-29 22:25 $逝水无痕$ 阅读(222) 评论(0) 推荐(0)
摘要:【定义】享元模式(Flyweight),运用共享技术有效的支持大量细粒度的对象。【场景】依旧以手机为例,手机有很多属性,品牌,手机号码,手机颜色等,现在假设手机有品牌和手机号码两种属性。手机品牌有Iphone,Sumsung,Nokia三种,但是手机号码却有千千万万,这千千万万的手机号码便是大量的细... 阅读全文
posted @ 2012-08-26 23:49 $逝水无痕$ 阅读(126) 评论(0) 推荐(0)
摘要:【定义】中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地相互应用,从而使其耦合松散,而且可以独立的改变它们之间的交互。【场景】一个窗口中有两个控件,一个按钮Button和编辑框Label,现在要单机按钮则编辑框改变文本,如果将编辑框改变文本的代码放到... 阅读全文
posted @ 2012-08-26 19:17 $逝水无痕$ 阅读(141) 评论(0) 推荐(0)
摘要:【定义】职责链模式(Chain of Responsibility),使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的偶合关系。将这个对象练成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。【UML】【代码】#include using namespace std;class... 阅读全文
posted @ 2012-08-26 16:28 $逝水无痕$ 阅读(101) 评论(0) 推荐(0)
摘要:【定义】命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。【场景】这里以向窗口发送消息和窗口处理消息为例(有些牵强,UI窗口的消息管理其实可以用这个设计模式模拟实现,将Invoker改成MessageMana... 阅读全文
posted @ 2012-08-26 15:24 $逝水无痕$ 阅读(116) 评论(0) 推荐(0)
摘要:【定义】桥接模式(Bridge),将抽象部分与它的实现部分分离,使他们都可以独立地变化。【场景】继承实际上是一种非常紧密的依赖关系,也即父类实现中的任何变化都将会导致子类发生变化。以手机为例,手机包括品牌和操作系统,假设现在手机品牌分三种:三星,苹果,诺基亚,而手机软件按系统来分也有两种:安卓,IO... 阅读全文
posted @ 2012-08-22 23:15 $逝水无痕$ 阅读(117) 评论(0) 推荐(0)
摘要:【定义】单例模式(SingleTon),保证一个类仅有一个实例,并提供一个访问它的全局访问点。【场景】很多exe文件都只允许运行一次,即当你第一个exe打开未关闭之前,再第二次打开,会提示说“已经有一个exe程序在运行了”,如果将这个exe文件看成一个类,则它就是一个单例。【UML】【代码】//下面... 阅读全文
posted @ 2012-08-21 23:20 $逝水无痕$ 阅读(95) 评论(0) 推荐(0)
摘要:【定义】迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。【场景】下面是一个Int型的数组,这里实现一个遍历该数组的迭代器。如果又有一个新的数组,而数组里面的数据是class Car,则实现一个class CarArray即可,迭代器类是基于模... 阅读全文
posted @ 2012-08-21 21:49 $逝水无痕$ 阅读(172) 评论(0) 推荐(0)
摘要:【定义】组合模式(Composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。【场景】现在我们自己实现几个简单的基本控件(如按钮Button、文本编辑框Label)等;而实际上窗口也算上一个控件,只是窗口可以有子窗口,但最终窗口还是... 阅读全文
posted @ 2012-08-15 21:24 $逝水无痕$ 阅读(130) 评论(0) 推荐(0)
摘要:【定义】备忘录(Memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。【场景】备忘录模式,当然是在单机游戏里面用的多。比如角色扮演的《仙剑奇侠传》,在打Boss之前我们都会先保存当前进度,以便Boss没死,自己死了,好... 阅读全文
posted @ 2012-08-12 23:04 $逝水无痕$ 阅读(102) 评论(0) 推荐(0)
摘要:如果在类里增加一个带多个参数的operator new函数,则标准的operator new(size_t size)将会屏蔽解决方法如下:1. 如果写了一个多带参数的operator new函数,则也写一个和标准new同样参数的new函数class X{private: //...public: ... 阅读全文
posted @ 2012-06-12 17:19 $逝水无痕$ 阅读(126) 评论(0) 推荐(0)
摘要:1. 首先我被一个问题所困恼:条款7中的operator new是这么写的,但条款8中的new却多了一个while。回头再仔细看下条款7,原来条款7中的operator new只处理了第一次分配内存失败的异常。//条款7中的operator newtemplate void* NewHandler... 阅读全文
posted @ 2012-06-11 17:34 $逝水无痕$ 阅读(174) 评论(0) 推荐(0)