C++後台開發有哪些練基礎的開源項目?
12-31
想轉行做後台開發,網上大多數都是推薦幾本書和參加開源項目,可是一搜C++的開源項目全是大型的成熟的項目,根本很難看懂嘛。誰能告訴我到底如何平滑轉行嗎,已經有快兩年C++經驗了?
http://github.com/yedf/handy
非常簡潔的一個網路庫,10行代碼能夠編寫一個完整的echo伺服器,採用最新的c++11語法,總共才2千行左右的代碼裡面還有一個單機千萬連接的例子學習中的建議:libevent、asio等成熟的廣泛應用的庫,其中有大量的代碼是為了跨平台,適合熟練的開發者閱讀,不適合初學者。
redis,memcache等開源項目,適合進階的開發者開發一個實際的應用,而handy有更多的例子,可以幫助開發者一步一步掌握網路編程的技巧。我告訴你一個識別 C++ 代碼質量的訣竅:找幾個 class,如果其 dtor 有 delete 或釋放資源的操作,看看作者是否同時正確禁用了 copy ctor 和 assignment operator(或者正確實現了它們,如果 class 確實應該是 copyable 的話),這反映了作者設計 C++ class 的基本功:正確管理內存和其他資源,以及他有沒有認真讀過 Effective C++。
我認為 C++ 標準應該這樣規定,只要用戶自己定義了 dtor,就默認禁掉 copy ctor 和 operator=,這樣更安全。此時,如果確實有需要,用戶可以自己定義 copy ctor 和 operator=。正在收集C++專題的練手項目,下面幾個質量不錯推薦下,實驗樓有配套的練習環境。
8月22日更新:
C/C++ - C++ 打造 Markdown 解析器Markdown 幾乎成為了程序員編寫文檔的標配,解析 Markdown 文本能夠加深日後編寫編譯器中詞法分析的理解,本項目使用 C++ 實現 Markdown 解析器,並將解析的內容生成為 HTML。1.C/C++ - C++ 實現太陽系行星系統
使用 C++實現 OpenGL GLUT 實現一個簡單的太陽系行星系統,將涉及一些三維圖形技術的數學基礎、OpenGL 里的三維坐標系、OpenGL 里的光照模型、GLUT 的鍵盤事件處理。2.C/C++ - C++實現運動目標的追蹤
本次實驗將使用利用 OpenCV 來實現對視頻中動態物體的追蹤。3.C/C++ - C++ 實現銀行排隊服務模擬使用 C++對銀行排隊服務進行模擬,以事件驅動為核心思想,手動實現模板鏈式隊列、隨機數產生器等內容,進而學習概率編程等知識。作為可選進階,這個模型同時還能稍加修改的應用到 CPU 資源爭奪模型中。4.C/C++ - 1小時入門增強現實技術僅需C++語言基礎,本課程將基於OpenCV實現一個將3D模型顯示在現實中的小例子,學習基於Marker的AR技術,既簡單又有趣。
5.C/C++ - 100 行 C++ 代碼實現線程池
為了追求性能,在伺服器開發中我們經常要面臨大量線程任務之間的調度和管理,本次實驗我們將使用 C++ 及大量 C++11新特性設計並實現一個線程池庫。 6.C/C++ - C++實現第一人稱射擊遊戲使用 OpenGL 實現一個第一人稱射擊類遊戲,涉及鍵盤滑鼠的處理、三維視角變換處理、素材載入渲染等。7.C/C++ - C++ 實現高性能內存池
獲得內存池所分配的內存速度高於從堆中獲得分配的內存的速度。和標準庫中的默認分配器一樣,內存池本質上也是分配器,本次實驗將設計並使用 C++實現一個高性能內存池。本答案會繼續增加新項目,如果你有好項目也歡迎投稿來做成項目課分享給大家:https://www.shiyanlou.com/contribute最近在看Redis,是C寫的,內存管理,存儲,備份,分散式等都有涉及,很不錯的後端學習資料,相比其他如libevent等網路框架都要完整,
c語言的話,redis,memcache,libevent,C++的話,leveldb,muduo,STL,boost下有個非同步網路通信框架asio,看源碼,先了解如何使用,然後網上看些關於這個框架的博客,有個整體性的認識,最後再看源碼~加油~
已經有兩年C++經驗的話,建議從網路編程這塊入手,先擼一個單線程的epoll伺服器,搞明白邊緣觸發水平觸發的區別,再擼一個多線程的epoll伺服器(linux下做高並發必用,libev,libevent和boost的asio,redis的網路部分也是用epoll實現的)。有這基礎就可以說後端入門了。接下來再學學資料庫,nosql和分散式即可
GitHub - libuv/libuv: Cross-platform asynchronous I/OProjects that use libuv · libuv/libuv Wiki · GitHub可以研究研究這個庫,質量非常高,隨著nodejs的發展而發展,裡面有事件循環、對文件訪問、網路訪問、線程池的跨平台抽象等等,是個基礎庫
gettogetto/ImageServer這是我寫的一個圖像處理伺服器,支持圖像的存儲、處理、獲取。基於事件驅動模型,封裝了一個簡單的多線程網路庫,含線程池、互斥鎖、條件變數等,採用RAII資源管理方式。供參考。
。。學毛線C++啊。。當然啦。。看C++要看leveldb看C要看redis
我來說說吧,不知道題主的C++代碼打過多少了,基礎怎麼樣,C++primer5看過,習題都打過,標準庫有意識地在在刷題中使用了?標準庫的實現,看過,實現過?好了,C++的基礎也可以了,以後還要不上各種effective系列,注意是以後的得空的時候。這個時候unix網路編程的書各種看,輔助看linux。
我到覺得最好先找個後台開發的工作如果找不到,先對照心儀的工作的招聘要求,好好學習一番這樣做目的性強一些,遇到困難也不容易慌
大家都在說看有名的源碼庫,其實我覺得可以看一個開源的後台伺服器項目,這樣可以學習後台伺服器是怎麼分散式,怎麼利用網路編程互相通信,怎麼利用資料庫存儲業務,我推薦看看蘑菇街的開源項目teamtalk
看看C類庫方面的只是,代碼在於一直敲打,加油哦
原來是做什麼的?作為一個摸索了兩年依然沒找到入口的人,我想問問到底該怎麼辦呢
推薦閱讀:
※如何看待 Github Gist 這個服務,怎樣更好的利用?
※如果蘋果忽然宣布 iOS 開源,這個世界會發生什麼?
※有哪些遊戲引擎的源碼值得一讀?
※GitHub 上有哪些前端牛人值得關注?同時請推薦些 GitHub 上前端架構類開源項目?
※有哪些需要捐款的開源項目?