八個(gè) C++ 開(kāi)源項(xiàng)目,幫助初學(xué)者進(jìn)階成長(zhǎng)
通過(guò)參與或閱讀開(kāi)源項(xiàng)目的源代碼,你可以獲得豐富的實(shí)踐機(jī)會(huì)。實(shí)際的項(xiàng)目代碼比簡(jiǎn)單的教程更具挑戰(zhàn)性,可以幫助你深入理解 C++ 的各種概念和技術(shù)。
1.ThreadPool
一個(gè)簡(jiǎn)單的 C++11 線程池實(shí)現(xiàn),只有一個(gè)頭文件,代碼加起來(lái)不到 100 行。
GitHub 地址:https://github.com/progschj/ThreadPool
2.sudoku
C++ 實(shí)現(xiàn)的命令行數(shù)獨(dú)游戲。600 余行代碼,初學(xué)者也可以輕松學(xué)習(xí)。
GitHub 地址:https://github.com/mayerui/sudoku
3.Tinytetris
Tinytetris 是一個(gè)用 C++ 編寫的終端版俄羅斯方塊游戲。它提供了兩個(gè)版本的源碼,分為注釋版和庫(kù)版,注釋較多易于理解和學(xué)習(xí)。
GitHub 地址:https://github.com/taylorconor/tinytetris
4.MyTinySTL
當(dāng)你學(xué)習(xí)完 C++ 的“書本”知識(shí)后,是不是有些手癢了呢?MyTinySTL 這個(gè)注釋詳細(xì)、實(shí)踐夯實(shí)基礎(chǔ)的項(xiàng)目便是你 C++ 學(xué)習(xí)之旅的下一站。作為新手練習(xí)用途,MyTinySTL 的作者 Alinshans 用 C++11 重新復(fù)寫了一個(gè)小型 STL(容器庫(kù)+算法庫(kù))。代碼結(jié)構(gòu)清晰規(guī)范、包含中文文檔與注釋,并且自帶一個(gè)簡(jiǎn)單的測(cè)試框架,適合 C++ 新手來(lái)實(shí)踐一番。
GitHub 地址:https://github.com/Alinshans/MyTinySTL
5.C-Plus-Plus
C-Plus-Plus 是收錄用 C++ 實(shí)現(xiàn)的各種算法的集合,并按照 MIT 許可協(xié)議進(jìn)行授權(quán)。這些算法涵蓋了計(jì)算機(jī)科學(xué)、數(shù)學(xué)和統(tǒng)計(jì)學(xué)、數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、工程等各種主題。除外,你可能會(huì)發(fā)現(xiàn)針對(duì)同一目標(biāo)的多個(gè)實(shí)現(xiàn)使用不同的算法策略和優(yōu)化。
GitHub 地址:https://github.com/TheAlgorithms/C-Plus-Plus
6.calculator
微軟開(kāi)源的 Windows 系統(tǒng)預(yù)裝的計(jì)算器工具。該工具提供標(biāo)準(zhǔn)、科學(xué)、程序員計(jì)算器的功能,以及各種度量單位和貨幣之間的轉(zhuǎn)換功能。快來(lái)看看微軟工程師編寫的代碼吧!學(xué)習(xí)大廠的編碼規(guī)范、項(xiàng)目結(jié)構(gòu)之類的,提高閱讀源碼的能力。英文的項(xiàng)目且沒(méi)有講解部分,需要通過(guò)閱讀源碼學(xué)習(xí),難度較高。
GitHub 地址:https://github.com/microsoft/calculator
7.workflow
workflow 是搜狗公司的服務(wù)器引擎,搜狗幾乎所有的后端 C++ 服務(wù)和其他幾十家公司都在使用這個(gè)引擎,每日處理超百億請(qǐng)求。不單網(wǎng)絡(luò)、磁盤 IO、CPU 計(jì)算等,workflow 著眼于所有異步資源都盡可能全部調(diào)起。使用 workflow,你可以輕松搭建后端服務(wù)器(如 HTTP Server),可以輕松高效地發(fā)起客戶端請(qǐng)求(支持 HTTP、Redis、Mysql、Websocket 和 Kafka 協(xié)議)。
GitHub 地址:https://github.com/sogou/workflow
8.jwEngine
一個(gè)跨平臺(tái)、輕量級(jí)、支持 C++ 和 Lua 的 Web 框架。支持 TCP、KCP、WebSocket、HTTP 等協(xié)議,底層采用 libuv 異步 IO 提高并發(fā),避免多線程上下文切換開(kāi)銷和破壞代碼美感,網(wǎng)絡(luò)部分和邏輯部分使用一個(gè)主事件循環(huán)驅(qū)動(dòng)。支持 Lua 提高開(kāi)發(fā)效率,適用于小型游戲開(kāi)發(fā)。
GitHub 地址:https://github.com/jwcpp/jwEngine