摘要: 在面向对象的开发中,每个人都系统的理解和抽象都可能会有区别,因此设计出的系统类的属性和方法也会有区别,怎么来衡量一个系统中的类的设计是否合理呢?在面向对象的领域有五大原则来进行评判。 1、单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担了太多的职责,那么这些职责就相当于耦合在了一起,其中一个职责的变化都可能会影响或者弱化这个类承担其他职责的能力,甚至会导致职责出现混乱。因... 阅读全文
posted @ 2012-07-12 17:24 小马喝水 阅读(162) 评论(1) 推荐(1) 编辑
摘要: 从学习软件开发至今已有数年,经历了许多软件开发过程,觉得做一个系统总是从头到尾再来一次,能复用的只是一个个函数库或者某些开源的工程。于是我就在思考:软件开发有没有一个比较统一的“套路”,让我在开发系统之初就很明确接下来我应该具体要做哪些工作?有机会接触到设计模式的思想,它总结出了在构建软件系统的过程中,一些常用的模式,这些不同于函数库或者开源工程,提供的是一套编程代码。它指导开发者在处理软件需... 阅读全文
posted @ 2012-07-12 17:23 小马喝水 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 魔兽是游戏数据传输时基于TCP连接,此时主机作为TCP的服务端,非主机是客户端。但是没办法在Internet上实现两个非服务器主机之间的直接TCP连接(这个可以看P2P的实现原理)。那对战平台是怎么实现在Internet上通过War3的局域网模式连接对战的呢? 简单来说是如果A建了一个主机,B要进A的主机,A通过平台转发过来的消息知道B要连接主机,就在自己本地创建一个TCP的客户端,让这个客户... 阅读全文
posted @ 2011-11-18 18:39 小马喝水 阅读(594) 评论(1) 推荐(1) 编辑
摘要: 11 阅读全文
posted @ 2011-11-18 09:49 小马喝水 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 前段时间研究gloox1.0版的注册,用官方自带的example,注册应该是很简单的例子,代码如下: 1: j = new Client( "pc-20110409pvwc" ); 2: j->disableRoster(); 3: j->registerConnectionListener( this ); 4: 5: m_reg = new Registration( j ); 6: m_reg->registerRegistrationHandler( this ); 7: 8: j->logInstance().registerLogHand 阅读全文
posted @ 2011-05-15 18:44 小马喝水 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 今天研究gloox库,我使用的是最新发布版gloox1.0版本。听一个朋友说可以用Email格式账号登录,于是我想试试,直接用的Gloox库的示例代码,加上Email账号:如下 JID jid( "zhaoze87@163.com@pc-201006241430/gloox" ); j = new Client( jid, "123" ); j->registerConnectionListener( this ); j->registerMessageSessionHandler( this, 0 ); j->disco()-> 阅读全文
posted @ 2011-05-06 23:34 小马喝水 阅读(972) 评论(0) 推荐(0) 编辑
摘要: 今天在论坛上面看到一个帖子,楼主使用ImageList添加BMP文件,然后在ListCtrl中使用,代码如下: 1: CImageList* m_imagelist; 2: m_imagelist = new CImageList(); 3: m_imagelist->Create(32, 32, ILC_COLOR32, 0, 4); 4: HBITMAP hBitmap; 5: CBitmap *pBitmap; 6: CString FilePathName = "D://测试//4.BMP"; 7: pBitmap = new CBitmap; 8: //从文 阅读全文
posted @ 2011-05-05 11:52 小马喝水 阅读(1490) 评论(0) 推荐(0) 编辑
摘要: 在对类成员变量初始化的时候,我们很多时候没有注意到,在类构造函数的初始化列表中初始化成员变量,和在构造函数中赋值初始化成员变量的差别是很大的,不仅表现在程序的执行效率上,同时还有语法上的区别。类定义如下: 1: class String 2: { 3: public: 4: String() 5: { 6: cout "String::String()" 7: } 8: String(String& str) 9: { ... 阅读全文
posted @ 2011-04-23 18:57 小马喝水 阅读(274) 评论(0) 推荐(0) 编辑
摘要: GDI+可以通过设置绘图属性,操作比较简单 ImageAttributes ia; ia.SetColorKey(Color::White,Color::White); graphic.DrawImage(m_image,desrect,0,0,32,32,Unit::UnitPixel,&ia); 阅读全文
posted @ 2011-04-08 15:07 小马喝水 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 这几天公司软件要增加黑名单的功能,因为公司产品的IM功能模块用的是开源的Gloox库,Gloox是实现了XMPP协议的c++客户端库,所以我觉得这个功能应该是很简单的,结果做起来发现XMPP的花名册管理(XMPP协议里面花名册管理部分相当于一般IM的好友管理)还挺麻烦的,消息绕来绕去的,我头都转晕了,再加上公司的前辈也没留下文档,没办法只有好好看看XMPP协议文档对花名册管理部分的描述了。 XMPP协议文档编号是RFC2193,里面的第7部分就是花名册管理(RostorManage)的描述,由于是英文文档,所以我看的速度很慢,然后边看边写了个Demo来印证,当然了Demo也是基于G... 阅读全文
posted @ 2010-11-26 11:52 小马喝水 阅读(718) 评论(0) 推荐(0) 编辑