有哪些適合學習的開源項目?

1.c代碼

2.代碼緊湊,短小精悍

3.比較貼近雲計算,伺服器端的小型開源項目

4.Linux平台


推薦你個thttpd,代碼開源、簡潔的http伺服器


  • 分散式內存對象緩存系統memcached/memcached · GitHub

  • 高性能鍵值對存儲系統antirez/redis · GitHub

  • Google的鍵/值對(Key/Value Pair)嵌入式資料庫google/leveldb · GitHub

  • 輕量級web伺服器,用c語言寫的全部代碼只有502行(包括注釋)GitHub - EZLippi/Tinyhttpd: tinyhttpd 是一個不到 500 行的超輕量型 Http Server,用來學習非常不錯,可以幫助我們真正理解伺服器程序的本質。
  • 高性能web伺服器nginx: download
  • C語言寫的事件驅動框架libevent/libevent · GitHub
  • GitHub - EZLippi/WebBench: Webbench是一個在linux下使用的非常簡單的網站壓測工具。它使用fork()模擬多個客戶端同時訪問我們設定的URL,測試網站在壓力下工作的性能,最多可以模擬3萬個並發連接去測試網站的負載能力。


glib,glibc,coreutils,sqlite


首先你要看哪個方面的,還有哪個平台下的,另外,是否使用了框架,還是純粹的API使用,這裡先寫兩個,notepad++的源碼,還有filezilla的源碼,後面一個比較大,filezilla3是跨平台的,fillzilla2是windows上面的。

另外就需要你自己去找了,github, google code,包括最老的sf上面都有很多的代碼,僅僅用來學習的代碼不多,真正的代碼還是要做些事情的。


我個人了解並且改造過(個人改造,不是開源參與)的C工程源碼有兩個,snort和 tcpdump .

snort是純c的,是入侵檢測系統 http://www.snort.org/,這個系統的插件和規則的實現給我的印象比較深;

tcpdump,也是網路分析 http://www.tcpdump.org/


cjson,純C語言的,500餘行。

太符合你的標準了


如果你是linux用戶,強烈建議讀內核源代碼,你不用讀全部,也不可能度全部,可以選擇感興趣的一塊,比如文件系統或內存管理等,或是內核實現的一些工具(比如鏈表、基樹、紅黑樹的實現都相當精妙),讀linux源碼不僅能學到編碼的技巧,更能學到操作系統實現的一些知識。


linux源碼確實不錯,像之前的朋友說過的,某些介面實在是妙,鏈表的思路非常值得學習。其次推薦redis的源碼,如果你也對NoSql感興趣,redis肯定會吸引你,而且代碼現在也就1w左右吧。


若沒有1234這些限制的話,對於學習而言,竊以為FreeBSD的bin、sbin下面的代碼值得花心思,所謂花心思,至少指的是不但理解代碼本身的邏輯,還能夠對其使用到的api有一定的了解。


Boa伺服器可以看看。源碼下載: http://www.boa.org/


推薦閱讀:

學c語言該怎麼入門?
如何查看大型工程的源代碼?
既然編譯器是一個軟體,那它是如何編譯自己的?
覺得自己程序寫得很差不敢寫了怎麼辦?
未來想從事Linux 後台開發,需要學習linux內核嗎?像讀內核源碼。還是學好linux網路編程,C,演算法。學習內核的意義有哪些呢?

TAG:程序員 | 編程語言 | 計算機 | C編程語言 |