【★更新★】收拾公布本人所有博文中供给的代码与对象(C++)
添加时间:2013-5-9 点击量:
(有些内容已更改,从头编辑收拾并再次公布,瞥见谅)
为了更便利地经管博文中涉及的各类代码与对象资料,如今把这些资料迁徙到 Google Code 中,有爱好者可前去。
C++
1、《【五一呈献】通用高机能 Windows Socket 组件 HP-Socket v2.1.1 正式公布》
《基于 IOCP 的通用异步 Windows Socket TCP 高机能办事端组件的设计与实现》
《通用异步 Windows Socket TCP 客户端组件的设计与实现》
择要:编写 Windows Socket TCP 客户端其实并不艰苦,Windows 供给了6种 I/O 通信模型供大师选择。但本座看过很多客户端法度都把 Socket 通信和营业逻辑混在一路,剪络续理还乱。每个法度都 Copy / Parse 类似的代码再进行批改,其实有点情何故堪。是以本座哄骗一些闲暇时候写了一个基于 IOCP 的通用异步 Windows Socket TCP 高机能办事端组件和一个通用异步 Windows Socket TCP 客户端组件供各位看官参详参详,能激发下大师的灵感。
HP-Socket 是一套通用的高机能 Windows Socket 组件包,包含办事端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛实用于 Windows 平台的 TCP 通信体系。HP-Socket 对通信层实现完全封装,上层应用不必存眷通信层的任何细节;HP-Socket 供给基于事务通知模型的 API 接口,能很是简单高效地整合到各类应用法度中;别的,为了让大师能更便利的进修 HP-Socket,特此精心建造了一个功能测试示例(Test Echo)和一个机能测试示例(Test Echo-PFM),用户可以经由过程这两个测试示例入手,敏捷把握组件的设计思惟和应用办法。
资料地址:请接见项目主页 ^_
2、《Windows C++ 应用法度通用日记组件(组件及测试法度)》
择要:编写一个通用的日记组件应当侧重推敲三个方面:功能、可用性和机能。下面,本座具体申明在设计日记组件时对这些方面题目的推敲:
-
- 功能:本日记组件的目标是满足大多半应用法度记录日记的需求 —— 把日记输出到文件或发送到应用法度中,并不供给一些错杂但不常用的功能
- 可用性:本日记组件侧重推敲了可用性,尽量让应用者用起来感觉简便、舒心
- 机能:机能是组件是否值得应用的硬指标,本组件从设计到编码的过程都尽量推敲到机能优化
资料地址:http://ldcsaa.googlecode.com/files/VC_Logger.zip
3、《如何养成杰出的 C++ 编程习惯(一)—— 内存经管》
择要:说起 C/C++ 的内存经管似乎令人望而却步,满屏的 new / / malloc / free,OutPut 窗口无尽的 Memory Leak 警告,法度诡异的 0X00000004 指针异常,仿佛回到那一年我们一路哭过的日子,你 Hold 得住吗?其实,实际并没有你想的那么糟糕。只要你付出一点点,花一点点心思,没错!就一点点罢了 —— 用 C++ 类封装内存接见,就会解决你大项目组的懊恼,让你受益毕生。以 Windows 法度为例,首要有以下几种内存经管体式格式:
-
- 虚拟内存(Virtual Memory)
- 默认堆和私有堆(Process Heap & Private Heap)
- 内存映射文件(File Mapping)
- 过程客栈(Heap,其实就是用 malloc() 或 默认的 new 操纵符在 Process Heap 里一小块一小块地割肉 ^_^)
- 栈(Stack,内存由调用者或被调用者主动经管)
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src 目次中)
4、《实现 Win32 法度的消息映射宏(类似 MFC )》
择要:对于消息映射宏,不消多说了,用过 MFC 的人都很清楚。但今朝有不少法度因为各类原因并没有应用 MFC,所以本帖评论辩论一下如安在 Win32 法度中实现类似MFC的消息映射宏。其实 Windows 的头文件 “WindowsX.h”(重视:不是“Windows.h”) 中供给了一些有效的宏来帮助我们实现消息映射。本座是也基于这个头文件实现消息映射。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/Win32Helper.h 文件中)
5、《用宏实现 C++ Singleton 模式》
择要:Singleton 设计模式应用很是广泛,实现起来也很简单,无非是私有化若干个机关函数,“operator =” 操纵符,以及供给一个静态的创建和烧毁办法。然则对每个类都写这些类似的代码是本座不克不及容忍的,是以,本座应用宏把全部 Singleton 模式封装起来,无论是类的定义还是类的应用的极其简单。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/Singleton.h 文件中)
6、《C++ 封装私有堆(Private Heap)》
择要:Private Heap 是 Windows 供给的一种内存内存机制,对于那些须要频繁分派和开释动态内存的应用法度来说,Private Heap 是进步应用法度机能的一大宝贝,应用它能降落 new / malloc 的调用列队竞争以及内存空洞。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/PrivateHeap.h 文件中)
7、《基于 crt debug 实现的 Windows 法度内存泄漏检测对象》
择要:Windows 法度内存泄漏检测是一项十分首要的工作,基于 GUI 的应用法度凡是在调试停止时也有内存泄漏呈报,但这个呈报的信息不周全,不克不及定位到产生泄漏的具体行号。其实本身实现一个内存泄漏检测对象是一件很是简单的工作,但看过网上写的很多例子,广泛存在两种题目:
-
- 要么推敲不周全,一种景象下能用,而在别的一种景象下却不克不及很好工作,或者漏洞呈报的输出体式格式不公道。
- 要么过于保守,例如:完全没有须要在 _malloc_dbg() 和 _free_dbg() 的调用前后用 CriticalSection 进行保护(跟踪一下多线程景象下 new 和 malloc 的代码就会熟悉打听)。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/debug/win32_crtdbg.h 文件中)
CodeProject
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》
(有些内容已更改,从头编辑收拾并再次公布,瞥见谅)
为了更便利地经管博文中涉及的各类代码与对象资料,如今把这些资料迁徙到 Google Code 中,有爱好者可前去。
C++
1、《【五一呈献】通用高机能 Windows Socket 组件 HP-Socket v2.1.1 正式公布》
《基于 IOCP 的通用异步 Windows Socket TCP 高机能办事端组件的设计与实现》
《通用异步 Windows Socket TCP 客户端组件的设计与实现》
择要:编写 Windows Socket TCP 客户端其实并不艰苦,Windows 供给了6种 I/O 通信模型供大师选择。但本座看过很多客户端法度都把 Socket 通信和营业逻辑混在一路,剪络续理还乱。每个法度都 Copy / Parse 类似的代码再进行批改,其实有点情何故堪。是以本座哄骗一些闲暇时候写了一个基于 IOCP 的通用异步 Windows Socket TCP 高机能办事端组件和一个通用异步 Windows Socket TCP 客户端组件供各位看官参详参详,能激发下大师的灵感。
HP-Socket 是一套通用的高机能 Windows Socket 组件包,包含办事端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛实用于 Windows 平台的 TCP 通信体系。HP-Socket 对通信层实现完全封装,上层应用不必存眷通信层的任何细节;HP-Socket 供给基于事务通知模型的 API 接口,能很是简单高效地整合到各类应用法度中;别的,为了让大师能更便利的进修 HP-Socket,特此精心建造了一个功能测试示例(Test Echo)和一个机能测试示例(Test Echo-PFM),用户可以经由过程这两个测试示例入手,敏捷把握组件的设计思惟和应用办法。
资料地址:请接见项目主页 ^_
2、《Windows C++ 应用法度通用日记组件(组件及测试法度)》
择要:编写一个通用的日记组件应当侧重推敲三个方面:功能、可用性和机能。下面,本座具体申明在设计日记组件时对这些方面题目的推敲:
-
- 功能:本日记组件的目标是满足大多半应用法度记录日记的需求 —— 把日记输出到文件或发送到应用法度中,并不供给一些错杂但不常用的功能
- 可用性:本日记组件侧重推敲了可用性,尽量让应用者用起来感觉简便、舒心
- 机能:机能是组件是否值得应用的硬指标,本组件从设计到编码的过程都尽量推敲到机能优化
资料地址:http://ldcsaa.googlecode.com/files/VC_Logger.zip
3、《如何养成杰出的 C++ 编程习惯(一)—— 内存经管》
择要:说起 C/C++ 的内存经管似乎令人望而却步,满屏的 new / / malloc / free,OutPut 窗口无尽的 Memory Leak 警告,法度诡异的 0X00000004 指针异常,仿佛回到那一年我们一路哭过的日子,你 Hold 得住吗?其实,实际并没有你想的那么糟糕。只要你付出一点点,花一点点心思,没错!就一点点罢了 —— 用 C++ 类封装内存接见,就会解决你大项目组的懊恼,让你受益毕生。以 Windows 法度为例,首要有以下几种内存经管体式格式:
-
- 虚拟内存(Virtual Memory)
- 默认堆和私有堆(Process Heap & Private Heap)
- 内存映射文件(File Mapping)
- 过程客栈(Heap,其实就是用 malloc() 或 默认的 new 操纵符在 Process Heap 里一小块一小块地割肉 ^_^)
- 栈(Stack,内存由调用者或被调用者主动经管)
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src 目次中)
4、《实现 Win32 法度的消息映射宏(类似 MFC )》
择要:对于消息映射宏,不消多说了,用过 MFC 的人都很清楚。但今朝有不少法度因为各类原因并没有应用 MFC,所以本帖评论辩论一下如安在 Win32 法度中实现类似MFC的消息映射宏。其实 Windows 的头文件 “WindowsX.h”(重视:不是“Windows.h”) 中供给了一些有效的宏来帮助我们实现消息映射。本座是也基于这个头文件实现消息映射。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/Win32Helper.h 文件中)
5、《用宏实现 C++ Singleton 模式》
择要:Singleton 设计模式应用很是广泛,实现起来也很简单,无非是私有化若干个机关函数,“operator =” 操纵符,以及供给一个静态的创建和烧毁办法。然则对每个类都写这些类似的代码是本座不克不及容忍的,是以,本座应用宏把全部 Singleton 模式封装起来,无论是类的定义还是类的应用的极其简单。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/Singleton.h 文件中)
6、《C++ 封装私有堆(Private Heap)》
择要:Private Heap 是 Windows 供给的一种内存内存机制,对于那些须要频繁分派和开释动态内存的应用法度来说,Private Heap 是进步应用法度机能的一大宝贝,应用它能降落 new / malloc 的调用列队竞争以及内存空洞。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/PrivateHeap.h 文件中)
7、《基于 crt debug 实现的 Windows 法度内存泄漏检测对象》
择要:Windows 法度内存泄漏检测是一项十分首要的工作,基于 GUI 的应用法度凡是在调试停止时也有内存泄漏呈报,但这个呈报的信息不周全,不克不及定位到产生泄漏的具体行号。其实本身实现一个内存泄漏检测对象是一件很是简单的工作,但看过网上写的很多例子,广泛存在两种题目:
-
- 要么推敲不周全,一种景象下能用,而在别的一种景象下却不克不及很好工作,或者漏洞呈报的输出体式格式不公道。
- 要么过于保守,例如:完全没有须要在 _malloc_dbg() 和 _free_dbg() 的调用前后用 CriticalSection 进行保护(跟踪一下多线程景象下 new 和 malloc 的代码就会熟悉打听)。
资料地址:https://ldcsaa.googlecode.com/files/high_pfm_socket_server_and_client-2.1.1.zip (源代码在 Common/Src/debug/win32_crtdbg.h 文件中)
CodeProject
我所有的自负皆来自我的自卑,所有的英雄气概都来自于我的软弱。嘴里振振有词是因为心里满是怀疑,深情是因为痛恨自己无情。这世界没有一件事情是虚空而生的,站在光里,背后就会有阴影,这深夜里一片寂静,是因为你还没有听见声音。—— 马良《坦白书》