如何紮實系統地學好後端開發(Linux 環境下)?細分方向有哪些?可否推薦一些好的開源項目?

非CS專業,經過半年多的自學積累,對C/C++、數據結構與演算法、操作系統原理、計算機網路等掌握的還算可以。下一階段,打算看《The Linux Programming Interface》、《Unix環境高級編程》、《Unix網路編程第一卷》和陳碩那本書。題主為初學者,想知道後端開發的細分方向、具體內容。希望對後端開發比較熟悉的牛人們能夠給一些意見,比如後端開發的具體方向、好的開源項目。多謝。


Linux C++ 伺服器端這條線怎麼走?一年半能做出什麼? - 陳碩的回答

請看 @陳碩 的回答,他說的挺好的。


謝邀。

個人推薦開源項目Thrift。

官網:Apache Thrift

Github:apache/thrift · GitHub

Thrift最初由facebook開發,07年四月開放源碼,08年5月進入apache孵化器。

Thrift允許定義一個簡單的定義文件中的數據類型和服務介面,以作為輸入文件,編譯器生成代碼用來方便地生成RPC客戶端和伺服器通信的無縫跨編程語言。

我讀了一部分源碼並沒有讀完,裡面包含了大量C/C++開發技巧(部分是C++11新特性)及利用Boost庫實現網路編程。官網有文檔,我就不詳細展開了,希望對題主有幫助。


你得說明白這後台方向是啥後台。計算是後台,服務是後台,數據採集存儲都是後台。後台只是個相對概念而已。


要「系統「的學的話真的是挺難的,因為不同場景下的解決方案很不同,在這樣的情況下,經常會用到很多自己以前從沒用過的東西,所以這樣的情況下考驗的就是一個快速學習上手的能力還有基礎了。如果題主實在感到迷茫的話,不妨查一下現在流行的各種後台解決方案,了解一下各項技術都是為了應對什麼問題而出現的,自己寫點簡單的demo。

拿我現在工作的例子來說(剛出校門的職場新人),原來的後台是用nodejs+mongodb寫的,但是實際應用的發現經常會有一些性能問題(是我來之前的部署,所以不清楚哪兒的問題),後來改成go+redis+elasticsearch了,我來公司的第一個任務就是完成數據的遷移,把原來mongodb中的數據遷移到es中,用python寫完遷移之後,為了工作需要現在也轉為go的開發了,未來我們還會給後台加入docker簡化部署,加入日誌系統,還需要給運營做一套內容管理等等。這麼來看的話你是不是對後台要做的事情有一個簡單的認知?後台需要的知識比較雜,不用完全跟著書本走,我大學四年基本就是折騰linux+看書+google走過來的,多花時間寫點自己感興趣的東西比看書有意思多了。暫時就想到這麼多,有時間的話再補充~


後台開發有很多方向,不同方向區別很大,題主你不說需求,讓大家怎麼玩...


《The Linux Programming Interface》、《Unix環境高級編程》選一個看就行,主要章節多敲代碼,部分章節可以粗略的看看,比如io部分章節和網路部分(直接看《Unix網路編程第一卷》就行,這本也不用全部看完,具體看那些,可以參考陳碩書裡面的建議),然後再看陳碩的書,可以先用用muduo,然後看具體實現。

接下就是寫東西練手或者找相關的實習。


推薦閱讀:

為什麼操作系統必須要有內核?
基於什麼樣的理由或特徵可以判別某個系統是 Android 的修改版本而不是另一個基於 Linux 開發的系統?
學習bash編程時,應該養成哪些好的習慣?
用 SSH 登錄伺服器用 Vim 在線寫 PHP 代碼的體驗是怎樣的?
Google 的 Android 為什麼不自主開發一個內核而要用 Linux 內核?

TAG:Linux | 網路編程 | 後台開發 | 伺服器編程 |