雪花台湾

值得推薦的C/C++框架和庫

值得學習的C語言開源項目

- 1. Webbench

Webbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個並發連接去測試網站的負載能力。Webbench使用C語言編寫, 代碼實在太簡潔,源碼加起來不到600行。

下載鏈接:home.tiscali.cz/~cz2105

- 2. Tinyhttpd

tinyhttpd是一個超輕量型Http Server,使用C語言開發,全部代碼只有502行(包括注釋),附帶一個簡單的Client,可以通過閱讀這段代碼理解一個 Http Server 的本質。

下載鏈接:sourceforge.net/project

- 3. cJSON

cJSON是C語言中的一個JSON編解碼器,非常輕量級,C文件只有500多行,速度也非常理想。

cJSON也存在幾個弱點,雖然功能不是非常強大,但cJSON的小身板和速度是最值得讚賞的。其代碼被非常好地維護著,結構也簡單易懂,可以作為一個非常好的C語言項目進行學習。

項目主頁:sourceforge.net/project

- 4. CMockery

cmockery是google發布的用於C單元測試的一個輕量級的框架。它很小巧,對其他開源包沒有依賴,對被測試代碼侵入性小。cmockery的源代碼行數不到3K,你閱讀一下will_return和mock的源代碼就一目了然了。

主要特點:

下載鏈接:code.google.com/p/cmock

- 5. Libev

libev是一個開源的事件驅動庫,基於epoll,kqueue等OS提供的基礎設施。其以高效出名,它可以將IO事件,定時器,和信號統一起來,統一放在事件處理這一套框架下處理。基於Reactor模式,效率較高,並且代碼精簡(4.15版本8000多行),是學習事件驅動編程的很好的資源。

下載鏈接:software.schmorp.de/pkg

- 6. Memcached

Memcached 是一個高性能的分散式內存對象緩存系統,用於動態Web應用以減輕資料庫負載。它通過在內存中緩存數據和對象來減少讀取資料庫的次數,從而提供動態資料庫驅動網站的速度。Memcached 基於一個存儲鍵/值對的 hashmap。Memcached-1.4.7的代碼量還是可以接受的,只有10K行左右。

下載地址:memcached.org/

- 7. Lua

Lua很棒,Lua是巴西人發明的,這些都令我不爽,但是還不至於臉紅,最多眼紅。

讓我臉紅的是Lua的源代碼,百分之一百的ANSI C,一點都不摻雜。在任何支持ANSI C編譯器的平台上都可以輕鬆編譯通過。我試過,真是一點廢話都沒有。Lua的代碼數量足夠小,5.1.4僅僅1.5W行,去掉空白行和注釋估計能到1W行。

下載地址:lua.org/

- 8. SQLite

SQLite是一個開源的嵌入式關係資料庫,實現自包容、零配置、支持事務的SQL資料庫引擎。 其特點是高度便攜、使用方便、結構緊湊、高效、可靠。足夠小,大致3萬行C代碼,250K。

下載地址:sqlite.org/

- 9. UNIX v6

UNIX V6 的內核源代碼包括設備驅動程序在內 約有1 萬行,這個數量的源代碼,初學者是能夠充分理解的。有一種說法是一個人所能理解的代碼量上限為1 萬行,UNIX V6的內核源代碼從數量上看正好在這個範圍之內。看到這裡,大家是不是也有「如果只有1萬行的話沒準兒我也能學會」的想法呢?

另一方面,最近的操作系統,例如Linux 最新版的內核源代碼據說超過了1000 萬行。就算不是初學者,想完全理解全部代碼基本上也是不可能的。

下載地址:minnie.tuhs.org/cgi-bin

- 10. NETBSD

NetBSD是一個免費的,具有高度移植性的 UNIX-like 操作系統,是現行可移植平台最多的操作系統,可以在許多平台上執行,從 64bit alpha 伺服器到手持設備和嵌入式設備。NetBSD計劃的口號是:」Of course it runs NetBSD」。它設計簡潔,代碼規範,擁有眾多先進特性,使得它在業界和學術界廣受好評。由於簡潔的設計和先進的特徵,使得它在生產和研究方面,都有卓越的表現,而且它也有受使用者支持的完整的源代碼。許多程序都可以很容易地通過NetBSD Packages Collection獲得。

下載地址:netbsd.org/

C++ 資源大全

關於 C++ 框架、庫和資源的一些匯總列表,內容包括:標準庫、Web應用框架、人工智慧、資料庫、圖片處理、機器學習、日誌、代碼分析等。

標準庫

C++標準庫,包括了STL容器,演算法和函數等。

框架

C++通用框架和庫

人工智慧

非同步事件循環

音頻

音頻,聲音,音樂,數字化音樂庫

生態學

生物信息,基因組學和生物技術

壓縮

壓縮和歸檔庫

並發性

並發執行和多線程

容器

密碼學

資料庫

資料庫,SQL伺服器,ODBC驅動程序和工具

調試

調試庫, 內存和資源泄露檢測,單元測試

遊戲引擎

圖形用戶界面

圖形

圖像處理

國際化

Jason

日誌

機器學習

數學

多媒體

網路

物理學

動力學模擬引擎

機器人學

科學計算

腳本

序列化

視頻

虛擬機

Web應用框架

XML

XML就是個垃圾,xml的解析很煩人,對於計算機它也是個災難。這種糟糕的東西完全沒有存在的理由了。-Linus Torvalds

多項混雜

一些有用的庫或者工具,但是不適合上面的分類,或者還沒有分類。

軟體

用於創建開發環境的軟體

編譯器

C/C++編譯器列表

在線編譯器

在線C/C++編譯器列表

調試器

C/C++調試器列表

集成開發環境(IDE)

C/C++集成開發環境列表

構建系統

靜態代碼分析

提高質量,減少瑕疵的代碼分析工具列表

推薦閱讀:

相关文章