值得學習和練手的C/C++開源項目

轉載聲明
html

本文轉自公衆號CodeSheep程序媛驛站獲受權轉載,如需轉載請聯繫原公衆號。linux

原文連接:C/C++領域的練手開源項目,小夥伴們接好git

夥伴們你們好,首先程序媛祝你們春節快樂!


話說以前其實已經推薦過Java領域的一些值得初學者學習和練手的開源項目

5個值得學習和練手的企業級開源項目!(JAVA)github

今天應你們要求,再來繼續推薦幾個我收藏的,關於C語言和C++領域的適合初學者學習和練手的開源項目,供你們參考。web

學完編程語言感受還只是玩具,其實也挺常見,主要是由於沒有足夠的實戰和練手,花點時間好好研讀這些開源項目大有裨益。你們能夠認真吸取這些項目並真正轉化爲本身的技能點,這樣之後不論是複試寫簡歷亦或是求職找工做,也能更加從容一點!算法

必需要說的是,不像Python,Java等開源項目通常都具有美觀的可視化界面、網頁、甚至手機App;而C語言和C++寫的項目通常很是樸素,大多運行於命令行那個簡單的黑乎乎界面,甚至徹底運行於後臺。macos


 Tinyhttpd 編程

項目名稱: Tinyhttpd後端

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

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

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


 tmux 

項目名稱: tmux

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

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


 musikcube 

項目名稱: musikcube

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

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


 MyTinySTL 

項目名稱: MyTinySTL

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

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


 oatpp 

項目名稱: oatpp

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

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


 muduo 

項目名稱: muduo

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

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


 CppNet 

項目名稱: CppNet

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

  • 簡單:只導出了最少許的接口,其聲明都相似系統 socket API。對客戶端而言,只新增了一個 buffer 類型

  • 快速:採用性能最優的 epoll 和 IOCP 作事件驅動。每一個鏈接都獨享一個內存池,從內存池中申請的內存都由智能指針管理

  • 清晰:結構上分爲事件驅動,會話管理,接口三層,經過回調向上通知。模塊之間職責分工明確,最大的類不超過 500 行代碼

項目源碼:https://github.com/caozhiyi/CppNet


天天進步一點點!Peace!

 做者:CodeSheep

編輯:西瓜媛

本文分享自微信公衆號 - 程序媛驛站(CXY_stage)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索