自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 C++单元测试三:测试private成员

测与不测之争关于类的私有成员(数据和方法),要不要进行单元测试之争,尚没有统一的结论;(关于这一争论,可以参考http://stackoverflow.com/questions/9202862/is-unit-testing-private-methods-a-good-practice)有人认为测试私有成员也是一个好的实践,原因嘛,就是没有原因,你本来就应该测你的所有代码;也有人说,类

2013-06-03 14:48:08 5558 2

原创 C++单元测试二:何时Mock及其是与非

什么时候需要mock在前面一部分(C++单元测试一:并非看上去那么简单——几个很实际的问题),我遇到的问题是:一个单元测试工程只能测一个被测类(其实前文的后记部分也已指出,其实创建新工程也不是特别必要,可以让Mock类从被测类继承,但问题是这是真的Mock吗?);那么,是不是一个测试工程只能测一个类呢?还是这种方式本身就有问题呢?由于没有找到实际工程中测试代码、被测代码的文件组织方面的资料

2013-06-02 23:01:44 5425

原创 C++单元测试一:并非看上去那么简单——几个很实际的问题

理想与现实为Java和C#做单元测试,基本上都有比较统一的工具、模式可用,IDE的支持也非常到位;可是到了C++这里,一切就变的那样的“不走寻常路”,各种单元测试框架盛行,例如CppUnit, CppUnitLite, CxxUnit,Google Test等等,以及微软在VS2012中也加入了对原生C++代码单元测试的支持MSTest。面对如此诸多的测试框架,选择哪一个其实无所谓,只要顺手就

2013-05-31 20:47:48 17217 10

原创 shared_ptr的一些尴尬

shared_ptr在boost库中已经有多年了,C++11又为其正名,把他引入了STL库,放到了std的下面,可见其颇有用武之地;但是shared_ptr是万能的吗?有没有什么样的问题呢?本文并不说明shared_ptr的设计原理,也不是为了说明如何使用,只说一下在使用过程中的几点注意事项。智能指针是万能良药?智能指针为解决资源泄漏,编写异常安全代码提供了一种解决方案,那么他

2013-05-28 14:32:38 24613 7

原创 博客搬家

在CSDN注册账号很多年了,从来没打算开通博客,之前也零零散散在其他地方写过一些技术文章,但最近这两年都没维护了——太懒了。这两天有时间又有写东西的冲动,就准备了boost源码的一些文章,等再发到那个博客上才发现,自己上一篇文章已经是两年前的事儿了,太汗了。于是想干脆搬家吧,然后就开了这儿的博。所以,本贴以前的帖子,都是从那边搬过来的。有些可能太老,自己都记不清楚了。兴许后面自己会勤快点。

2013-05-24 09:17:55 748

原创 boost.asio 学习笔记07——总结

至此,我们对boost.asio的基本体系结构以及在windows上的实现,做了一个梳理;个人认为常用到的操作及其实现都涉及到了。当然,本文并没有对非Win环境下的实现、SSL,串口、buffer管理、以及如何使用asio等进行讨论。 针对asio,个人也是刚刚接触正在学习,觉得要想使用好他,还是首先要了解socket的基本操作,在windows环境下,还要了解IOCP模型,然后才能用好它

2013-05-23 14:04:13 1525 1

原创 boost.asio 学习笔记06——其他

asnyc_read VS. async_read_some VS. async_receiveasync_read是一个全局函数;后面两个则于ip::tcp::socket的成员个函数;都可以用来异步读取操作,他们有什么样的差别呢。先来看async_read_some和async_receive,他们的文档说明如下:async_read_some:Start an asynchr

2013-05-23 14:04:10 2452

原创 boost.asio 学习笔记05——asio的windows实现

Operation还记得前面我们在分析resolver的实现的时候,挖了一个关于operation的坑?为了不让自己陷进去,现在来填吧;接下来我们就来看看asio中的各种operation。 和前面提到过的service的类似,这里的operation也分为两大系:IOCP Enable和Disable系列。这里我们重点关注下图中红色部分表示的IOCP Enable系列oper

2013-05-23 14:04:08 9603

原创 boost.asio 学习笔记04——asio的体系结构

三层类关系图根据前面的分析,我们知道asio有着这样的逻辑:参考STL,提供basic模版,对外使用basic模版的实例提供接口。basic模版将具体操作委托给下层服务类完成。下层服务类再把操作委托给平台相关的服务类。 鉴于此,我们将asio体系划分为三层:io object层,basic_模版类层,服务层。第一层:io object层,作为应用程序直接使用的对象,

2013-05-23 14:04:05 3164

原创 boost.asio学习笔记03——io objects

asio的文档,告诉我们在声明一个io_service对象之后,就可以创建io对象去干活了,例如:int main(int argc, char* argv[]){   boost::asio::io_service io_service;    tcp::resolver resolver(io_service);   tcp::resolver::que

2013-05-23 14:04:03 3232

原创 boost.asio 学习笔记02——io_service类

从第一个boost.asio的教程开始,boost文档就一直在告诉我们:使用boost.asio第一步就是要创建一个io_service对象。那么io_service是个什么东西呢? boost.asio文档说,io_service为下面的这些异步IO对象提供最核心的IO功能:boost::asio::ip::tcp::socketboost::asio::ip::tcp::acc

2013-05-23 14:04:00 4120 1

原创 boost.asio 学习笔记01——概述

boost.asio为异步IO提供了一份标准的C++的跨平台实现,特别针对网络IO提供了良好的支持,使之成为C++网络编程利器。关于如何使用asio,boost文档中已经有了详尽说明,而且附带的例子也很直观,我们不必再造轮子;本文则结合asio的基本应用,侧重于源代码的分析,特别是针对windows平台上的实现进行分析。 纵观asio源码,在统一的接口层之下,asio提供了大量的类来支持不同的

2013-05-23 14:03:58 2484

原创 QT:“无法定位程序输入点……”

装了Qt之后,要把Qt的安装目录映射到Path环境变量里面,主要是这几个目录:a. D:\ProgramFiles\Qt.2010.05\qt\bin;b. D:\ProgramFiles\Qt.2010.05\bin;c. D:\ProgramFiles\Qt.2010.05\mingw\bin;需要注意的一点是:目录a和b的需要按照a,b的顺序写下来,否则在资源管理器运行qt程

2013-05-23 14:03:55 1246

原创 C++:获取类成员的偏移量

第一种方式是MFC里使用广泛的宏:对空对象成员取地址#define OFFSET(structure, member) ((int)&((structure*)0)->member); 正如我们平时通过某对象的地址指针访问某个成员变量一样,这里只是强制使用0作为该地址,但区别是并没有通过该地址去访问成员变量,而只是用&操作符来获取该成员变量的地址,所以不会出现访问违规的情况。objec

2013-05-23 14:03:53 2416

原创 [转载]深入了解字符集和编码

转自:http://hideto.javaeye.com/blog/97803   关键字: 字符集 编码 一、什么是字符集?什么是编码? 字符(Character)是文字与符号的总称,包括文字、图形符号、数学符号等。 一组抽象字符的集合就是字符集(Charset)。 字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字

2013-05-23 14:03:51 604

原创 Eclipse+CDT+MinGW+QT开发环境搭建

本人使用的是Eclipse+CDT+MinGW+QT作为开发环境,简单描述一下此环境的搭建。第一步:下载Eclipse。从http://www.eclipse.org/downloads/随便下载一个Eclipse,注意如果直接下载的是for C++的就可以省略第二步了。下载完成后直接解压就可以使用了。第二步:下载安装CDT。从http://www.eclipse.org/cdt/下载CD

2013-05-23 14:03:48 961

原创 Boost 库的编译

-->-->-->-->-->-->编译环境    编译器:MinGW(4.4)Path:MinGW下的bin目录加到系统PATH路径 编译工具:bjam.exeBoost使用bjam来编译代码(bjam调用编译器),bjam.exe可以从boost网站下载,也可以自己从源代码编译出来。不过推荐从网站下载,因为方便。为进行编译,Bja

2013-05-23 14:03:46 644

原创 UML中的“关系”总结

UML中,事物之间的联系方式,无论是物理上的,还是逻辑上的,都用“关系(relationship)”来建模。在面向对象的建模中,将“关系”细分为三种:依赖、泛化、关联。下面分别说明。 1、 依赖(dependency)依赖是一种使用关系。它表示一个事物的变化会影响到所有使用它的事物的行为。在UML图形表示法中,依赖用一个带方向的虚线来表示,箭头指向被依赖的事物。

2013-05-23 14:03:44 596

原创 如何传递类成员函数的指针

需求:在类A里面,有一组规格相同的函数; 类B中有一个成员F为A中成员函数的指针,在构造B对象时对该成员F进行初始化,然后在Do函数中调用此函数指针所对应的函数。为实现这个目的,需要怎么做呢。 Class AVoid F1();Void F2();Void F3(); 

2013-05-23 14:03:42 1414

原创 初学S60,常见问题记录

最近开始学习S60,从搭建环境到第一个Helloworld程序出世,期间遇到了不少问题,再同事的帮助以及Google的强力支持下,逐一得到解决,下面逐一做一个记录。1出现“Cannot start ECMT Manager”错误提示框                           原因:在安装Symbian S60 3rd Edition FP1 SDK时,默认识

2013-05-23 14:03:39 687

原创 看ACE如何劫持main函数

-->-->用过ACE的都知道,程序的main函数必须写成int main (int argc, char*argv[])的形式,这是为什么呢,看了ACE的源码才知道,原来是…… 看ace/OS_main.h中的一段代码,就会恍然大悟: #       define main \ ace_main_i (int, char

2013-05-23 14:03:37 849 1

原创 Windows模块加载基址与地址计算

<!--@font-face {font-family:宋体}@font-face {font-family:"@宋体"}p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideog

2013-05-23 14:03:35 3015

原创 符号文件

先不管什么是符号文件,先看看在没有符号文件支持时的情况,下面是VC8.0在没有符号文件支撑时的一个调用堆栈 >     DllTwo.dll!003d1cde()       [下面的框架可能不正确和/或缺失,没有为 DllTwo.dll 加载符号]            MapTest.exe!004017f5()        

2013-05-23 14:03:32 3271

原创 MAP文件格式小注

<!--@font-face {font-family:"@宋体"}p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; fon

2013-05-23 14:03:30 755

原创 Unix大事记

1 Unix大事记 按照年份,罗列出年史上发展大事。左边为各个厂商围绕Unix的事件,右边则属于Unix史上的技术发展路线。     2 Unix的发展简述 UNIX 是一个强大的多用户、多任务操作系统,支持多种处理器架构,最早由Ken Thompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。经过长期的发展和完善,目前已成长为

2013-05-23 14:03:28 827

原创 数据库连接及线程池

3.1 自己的实践过程 曾几何时,记住了一句话:“建立数据库连接是一个代价高昂的过程”,也从那时开始,我在构建系统时,一旦建立起了数据库连接,就保存起来,任何要用数据库的地方,都使用这个数据库连接对象进行操作。        这样的行为,在以前写的单线程程序中,倒也可以接受,但在这次写的多线程程序中,就出现问题了。在这次的程序中,最开始设计时,在工作线程类中,设置了一个SqlConnectio

2013-05-23 14:03:25 2813

原创 .NET Remoting 使用总结

隔了这么多天,终于炮制出了自己关于.NET Remoting技术在项目中的应用总结。 2、Remoting技术的应用        根据需求,我们的系统必须以C/S方式构建,而且是三层架构,这样一来,就出现了服务器端和客户端通信的问题。                为了解决双方的通信问题,还要考虑效率、性能等方面,经过分析、试验,我们根据效率、移植、开发难易等几个因素,舍弃了一开始提出

2013-05-23 14:03:23 950

原创 C#网络编程应用备忘

1.1 基本概念        .NET中的System.Net.Socktes命名空间提供了大量的对网络编程的支持类,这些类对Socket编程提供了良好的封装和支持,涵盖了TCP、UDP等连接和无连接的通信。应用程序可以通过 TCPClient、TCPListener 和 UDPClient 类使用传输控制协议 (TCP) 和用户数据文报协议 (UDP) 服务。   这些协议类建立在 Sy

2013-05-23 14:03:20 661

原创 第一次:破解之旅

为了做一个设备的控制程序,在界面UI上需要用到一些“表盘”控件,最直接的想法,从网上下一个现成的拿来用呗。于是,上网,Google,跋山涉水,千辛万苦,踏破数双铁鞋,翻遍边边角角,终于在一个论坛上获得线索,一番顺藤摸瓜之后,当下来一个表盘控件的安装包。我得意的笑,我得意的笑。 笑过之后,双击Setup开始安装,一切顺利,Finish按钮之后,出来了Readme,还是English的,老眼昏花的我

2013-05-23 14:03:18 662

原创 XXXX系统开发之后总结

最近承担的一架鸟系统,按照初步的设计构思,目前已经进入尾声阶段。本人首次跨上.NET平台,首次使用C#构建系统,回顾开发过程,有多少风雨收获,以此作为以记之。本总结主要是就此系统在开发过程中遇到的一些技术问题或者其它与技术相关的感悟,涉及面比较杂,都是个人觉得比较有用的一些东西(你可能会不以为然,嗤之以鼻后莫扔砖头),涉及内容如下,自己就这些话题的应用感受将逐步添加进来,敬请关注。1、C#

2013-05-23 14:03:15 723 1

原创 使用.NET 2.0 SDK工具创建数字证书

使用vs2005,好像只能创建测试证书,该.pfx数字证书默认有效期只有一年,并且“颁发者”、“颁发给”均为当前机器名和当前登陆用户名的组合,这看起来颇有不爽。我们完全可以创建更友好的.pfx数字证书吗?带着问题,上网,Google,搜到了别些虾们早都已经整理好的内容,现摘录如下,以备后忘。 使用Microsoft .NET Framework 的SDK命令提示,按以下步骤操作: 1、创建一个

2013-05-23 14:03:13 609

原创 用.NET 2.0 Enterprise Library库读写App.config文件(3)

Enterprise Library Configuration HelpersThe Enterprise Library for .NET 2.0 has made it a lot easier to use the System.Configuration classes.More info how to configure the new application blocks you c

2013-05-23 14:03:11 577

原创 用.NET 2.0 Enterprise Library库读写App.config文件(2)

How To Read/Write Another App.Config FileTo open another App.Config file you need to create an instance of ExeConfigurationFileMap. The purpose of this class is not that obvious but we can use it to o

2013-05-23 14:03:09 643

原创 用.NET 2.0 Enterprise Library库读写App.config文件 (1)

原文出处:http://geekswithblogs.net/akraus1/articles/64871.aspx          今天我将介绍.NET 2.0中System.Configuration命名空间的最大变化。我注意到我的Blog每天都差不多每天都被Google命中20次,他们大部分都是搜索如何配置.NET 2.0 Enterprise Library的,也有一部分是寻找如下问

2013-05-23 14:03:06 1416

原创 Windows平台下的播放波形文件的API

一 问题    最近公司一哥们,在钻研《Windows程序设计》,忽然问偶,说MessageBeep怎么是哑巴,不会出声呢,呵呵,我以前也用过这个鸟API,记得也没成功,觉得这是个一般的小问题,就没怎么深究,所以,这会儿这哥们问起,我也没给他讲个所以然,最好还是他自己在网上找了资料,整理了解决办法。 二 解决    这哥们解决之后,在BBS上发贴庆贺,内容照搬如下,嘿嘿,侵犯版权,不要甩砖头

2013-05-23 14:03:04 2586

原创 VS2005中Manifest引入的问题

问题        我们的上个项目是在Win2003下,用VS2005开发的一个MFC的SDI程序。在系统开发完毕后,为了验证各个平台的适应性,首先提取了所有相关的DLL,然后到Windows2000下运行,一切正常;然而到XP下,就出现系统错误,提示“由于应用程序的配置不正确,应用程序无法启动。重新安装应用程序可能会解决这个问题。”如下图;在干净的2003系统上(除了操作系统外,什么都没有),

2013-05-23 14:03:02 655

原创 远程注入代码

近日在做一软件汉化工作时,由于原软件的标题在程序内部会根据运行状态发生变化,且其中的Tab Contrl控件的标签也是由代码写死的,无法使用资源编辑器进行修改,而且当时没有找到合适的工具来对PE文件进行修改,而且这种方法由于没有做过没有经验,难以保证原有系统的稳定性,所以就采用了在原有程序外面挂接一个程序,来修改原有软件的这部分文字。         对于程序的标题栏,在外接程序中使用FindW

2013-05-23 14:02:59 1784

原创 汉化工作备忘

近日接到一项临时任务,要对某英文软件进行汉化,拿到的该软件只有一个exe软件。根据以前的经验,觉得这应该不是个多难的问题,于是就接受了此任务,并很快就转入正式工作,谁知道在开发过程中,还遇上了不少问题。下面,简单记述一下此汉化过程,以做备忘。     由于以前使用VS中的资源编辑器打开过EXE文件窥看过其中的资源,于是在开始工作时也使用此工具打开此EXE文件,呵呵,顺利的打开了里面的资源,看到了

2013-05-23 14:02:57 669

原创 关于Manifest的疑惑

最近使用VS2005开发了一套Unmanaged的MFC程序,完成后,按照以往的经验,拷贝依赖的DLL,制作安装包,然后到2000系统上安装,运行没有问题,可是在Xp系统上却运行不起来,报错“应用程序没有正确配置...”,到网上查了一下资料,才发现原来和Manifest有关,那么这个Manifest到底是什么东西,和操作系统有什么关系,操作系统加载应用程序时又是如何使用Manifest的呢? —

2013-05-23 14:02:55 475

原创 在程序内启动其他进程(程序)

使用代码来启动另外一个程序,有很多方法,归结起来主要有以下几个函数,他们的说明及使用特点分别归纳在下表中。 ① ShellExecute函数        下面的大部分信息来自于MSDN。   函数原型:HINSTANCE ShellExecute(           HWND hwnd,                       //指定父窗体句柄    LPCTSTR lpO

2013-05-23 14:02:52 1324

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除