更新整理本人所有博文中提供的代碼與工具(C++,2013.08)

  爲了更方便地管理博文中涉及的各種代碼與工具資源,現在把這些資源遷移到 Google Code 中,有興趣者可前往下載。


C++

1、《通用高性能 Windows Socket 組件 HP-Socket v2.2.2 正式發佈

   《基於 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++ 應用程序通用日誌組件(組件及測試程序下載)

  摘要:編寫一個通用的日誌組件應該着重考慮三個方面:功能、可用性和性能。下面,本座詳細說明在設計日誌組件時對這些方面問題的考慮:

  • 功能:本日誌組件的目的是滿足大多數應用程序記錄日誌的需求 —— 把日誌輸出到文件或發送到應用程序中,並不提供一些複雜但不常用的功能

  • 可用性:本日誌組件着重考慮了可用性,儘量讓使用者用起來覺得簡便、舒心

  • 性能:性能是組件是否值得使用的硬指標,本組件從設計到編碼的過程都儘量考慮到性能優化

  資源下載地址:請訪問項目主頁 ^_*

3、《如何養成良好的 C++ 編程習慣(一)—— 內存管理

  摘要:說起 C/C++ 的內存管理似乎令人望而生畏,滿屏的 new / delete / malloc / free,OutPut 窗口無盡的 Memory Leak 警告,程序詭異的 0X00000004 指針異常,彷彿回到那一年我們一起哭過的日子,你 Hold 得住嗎?其實,現實並沒有你想的那麼糟糕。只要你付出一點點,花一點點心思,沒錯!就一點點而已 —— 用 C++ 類封裝內存訪問,就會解決你大部分的煩惱,讓你受益終身。以 Windows 程序爲例,主要有以下幾種內存管理方式:

  • 虛擬內存(Virtual Memory)

  • 默認堆私有堆(Process Heap & Private Heap)

  • 內存映射文件(File Mapping)

  • 進程堆棧(Heap,其實就是用 malloc() 或 默認的 new 操作符在 Process Heap 裏一小塊一小塊地割肉 ^_^)

  • (Stack,內存由調用者或被調用者自動管理)

  資源下載地址:https://code.google.com/p/ldcsaa/downloads/list (源代碼在 vc-common-src-2.2.1.zip 的 Common/Src 目錄中)

4、《實現 Win32 程序的消息映射宏(類似 MFC )

  摘要:對於消息映射宏,不用多說了,用過 MFC 的人都很清楚。但目前有不少程序由於各種原因並沒有使用 MFC,所以本帖討論一下如何在 Win32 程序中實現類似MFC的消息映射宏。其實 Windows 的頭文件 “WindowsX.h”(注意:不是“Windows.h”) 中提供了一些有用的宏來幫助我們實現消息映射。本座是也基於這個頭文件實現消息映射。

  資源下載地址:https://code.google.com/p/ldcsaa/downloads/list(源代碼在 vc-common-src-2.2.1.zip 的 Common/Src/Win32Helper.h 文件中)

5、《用宏實現 C++ Singleton 模式

  摘要:Singleton 設計模式應用非常廣泛,實現起來也很簡單,無非是私有化若干個構造函數,“operator =” 操作符,以及提供一個靜態的創建和銷燬方法。但是對每個類都寫這些雷同的代碼是本座不能容忍的,因此,本座使用宏把整個 Singleton 模式封裝起來,無論是類的定義還是類的使用的極其簡單。

  資源下載地址:https://code.google.com/p/ldcsaa/downloads/list (源代碼在 vc-common-src-2.2.1.zip 的 Common/Src/Singleton.h 文件中)

6、《C++ 封裝私有堆(Private Heap)

  摘要:Private Heap 是 Windows 提供的一種內存內存機制,對於那些需要頻繁分配和釋放動態內存的應用程序來說,Private Heap 是提高應用程序性能的一大法寶,使用它能降低 new / malloc 的調用排隊競爭以及內存空洞。

  資源下載地址:https://code.google.com/p/ldcsaa/downloads/list (源代碼在 vc-common-src-2.2.1.zip 的 Common/Src/PrivateHeap.h 文件中)

7、《基於 crt debug 實現的 Windows 程序內存泄漏檢測工具

  摘要:Windows 程序內存泄漏檢測是一項十分重要的工作,基於 GUI 的應用程序通常在調試結束時也有內存泄漏報告,但這個報告的信息不全面,不能定位到產生泄漏的具體行號。其實自己實現一個內存泄漏檢測工具是一件非常簡單的事情,但看過網上寫的很多例子,普遍存在兩種問題:

    • 要麼考慮不周全,一種環境下能用,而在另外一種環境下卻不能很好工作,或者漏洞報告的輸出方式不合理。

    • 要麼過於保守,例如:完全沒有必要在 _malloc_dbg() 和 _free_dbg() 的調用前後用 CriticalSection 進行保護(跟蹤一下多線程環境下 new 和 malloc 的代碼就會明白)。

  資源下載地址:https://code.google.com/p/ldcsaa/downloads/list (源代碼在 vc-common-src-2.2.1.zip 的 Common/Src/debug/win32_crtdbg.h 文件中)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章