C++領域的練手開源項目,小夥伴們接好


Tinyhttpd

項目名稱: Tinyhttpd

項目簡介:Tinyhttpd 是J. David Blackstone在1999年寫的一個不到 500 行的超輕量型 Http Server,用來學習非常不錯,可以幫助我們真正理解服務器程序的本質。建議源碼閱讀順序為:main->startup->accept_request->execute_cgi, 通曉主要工作流程後再仔細把每個函數的源碼看一看。這500行代碼吃透了,C語言的功底就會大幅提升。

C/C++領域的練手開源項目,小夥伴們接好

【注:圖片來源於:www.cnblogs.com/nengm1988/p/7816618.html】

項目源碼:https://github.com/EZLippi/Tinyhttpd


tmux

項目名稱: tmux

項目簡介: tmux一個炫酷的終端複用軟件,它提供了一個非常易於使用的命令行界面,可橫向和縱向分割窗口,窗格可以自由移動和調整大小,而且還可以通過交互式菜單來選擇窗口、會話及客戶端。類似的終端複用器還有 GNU Screen。Tmux 與它功能相似,但是更易用,也更強大。大名鼎鼎的阮一峰老師還寫過tmux的使用教程,大家也可以看一看

C/C++領域的練手開源項目,小夥伴們接好

項目源碼:https://github.com/tmux/tmux


musikcube

項目名稱: musikcube

項目簡介: musikcube是一個使用C ++編寫的跨平臺,運行於終端上的音樂播放器。musikcube可以在Windows,macos和linux上輕鬆編譯和運行。它也可以在帶有raspbian的樹莓派上很好地運行,並且可以設置為流音頻服務器。炫酷得一腿。

C/C++領域的練手開源項目,小夥伴們接好

項目源碼:https://github.com/clangen/musikcube


MyTinySTL

項目名稱: MyTinySTL

項目簡介: 很多人表示學完C++不知道用來幹什麼,我覺得學完C++的第一個練手的好機會那就是自己試著實現一個小型的STL庫。MyTinySTL的作者它就用 C++11 重新複寫了一個小型 STL(容器庫+算法庫)。代碼結構清晰規範、包含中文文檔與註釋,並且自帶一個簡單的測試框架,非常適合新手學習與參考!

C/C++領域的練手開源項目,小夥伴們接好

項目源碼:https://github.com/Alinshans/MyTinySTL


oatpp

項目名稱: oatpp

項目簡介: 我們知道Java領域的Web框架非常繁榮,最知名的當屬Spring全家桶,而C語言和C++陣營則幾乎沒有。那oatpp則是一個輕量、跨平臺、高性能、完全零依賴,用純 C++ 實現的 Web 框架,實在是難得,小夥伴們可以學習學習。

C/C++領域的練手開源項目,小夥伴們接好

項目源碼:https://github.com/oatpp/oatpp


muduo

項目名稱: muduo

項目簡介: muduo是一個基於Boost庫實現的現代C++高併發網絡庫,由陳碩大神編寫。它一個高質量的事件驅動型的網絡庫,其核心代碼不超過4500行,使用 non-blocking IO(IO multiplexing) + one loop per thread模型,適合開發 Linux 下的多線程服務端應用程序,通過閱讀源碼還可學習到 C++ 語言、Linux 網絡編程等後端知識。

C/C++領域的練手開源項目,小夥伴們接好

項目源碼:https://github.com/chenshuo/muduo


CppNet

項目名稱: CppNet

項目簡介: CppNet一個封裝在 TCP 協議上的 Proactor 模式 multi-thread 網絡庫。包含 OS 接口調用、回調處理、定時器、緩存管理等,這裡有從操作系統到應用層的所有網絡細節,便於初學者學習和實踐。

  • 簡單:只導出了最少量的接口,其聲明都類似系統 socket API。對客戶端而言,只新增了一個 buffer 類型
  • 快速:採用性能最優的 epoll 和 IOCP 做事件驅動。每個連接都獨享一個內存池,從內存池中申請的內存都由智能指針管理
  • 清晰:結構上分為事件驅動,會話管理,接口三層,通過回調向上通知。模塊之間職責分工明確,最大的類不超過 500 行代碼
C/C++領域的練手開源項目,小夥伴們接好


分享到:


相關文章: