推薦一本今年八月份的新書《后台開發:核心技術與應用實踐》,作者騰訊資深后台開發工程師徐曉鑫


   昨天被華章安利了一本今年8月份的新書《后台開發:核心技術與應用實踐》,極好的書,評價和口碑超高。
   這本書騰訊公司資深研發工程師多年后台開發經驗總結,獲騰訊、Facebook、微軟、阿里、百度多位資深技術專家高度認可。 完整勾勒后台開發技術能力體系,多維度講解了成為一名后台開發工程師所需掌握的核心技術、開發工具和實踐方法,后台工程師修煉必讀。作者sharexu是位值得推崇的女性開發者。

  后台開發是一個“歷史悠久”的領域,同是也是一個沉淀深厚,高技術價值的領域。本書清晰、嚴謹、務實的風格顯示出曉鑫對該領域知識的深刻理解。——張子興 Facebook對外支付項目主程,美國加州MenloPark
  每一位從事后台開發的專業人士都需要一本《后台開發:核心技術與應用實踐》。對每一位想要認真從事該領域工作的人來說,這是一本絕對必讀的書籍。——彭可競 微軟軟件工程師,美國華盛頓州Redmond
  《后台開發:核心技術與應用實踐》是作者多年后台開發、架構和研究的精華。本書用通俗的文字、詳盡的示例代碼,結合實際工作中的案例,講述了后台開發方方面面的知識,內容豐富。對於從事后台開發的人員,這是一本很好的由淺入深的學習書籍。——周樂 阿里巴巴資深算法工程師,北京望京
  使用C 語言進行后台開發有一定的門檻,本書可以很好的幫助你跨過這個“門檻”。——暢晉 百度大數據高級測試工程師,北京上地

 

 

內容推薦

 

因為后台開發所需要的技術廣泛而堅深,要成為一名后台開發工程師門檻很高,所以相關人才比較緊缺。作者是在騰訊工作多年的后台開發工程師,不僅技術精湛,而且在處理大量實際業務的過程中積累了豐富的開發經驗。在這本書中,她不僅首次為后台開發工程師勾勒出了完整的知識能力體系結構圖,而且還對后台開發工程師所需要掌握的大量復雜的技術知識進行了提煉、剝離和整合,專注於成為一名后台開發工程師所需掌握的核心技術、開發工具和實踐方法,大幅度降低后台開發工程師的學習曲線。本書的內容獲得了來自騰訊、Facebook、微軟、阿里、百度的多位資深技術專家的高度認可。全書一共13章,在邏輯上分為六大部分:第一部分(第1~3章)介紹了編程語言方面的知識,包括常用語法、類與常用STL的使用;第二部分(第4~5章)介紹了編譯原理和調試方法相關的知識,編譯原理包括編譯與鏈接的具體過程、Makefile的編寫、目標文件的內容與處理目標文件相關工具的使用,調試方法主要介紹了strace、gdb、top、ps與valgrind工具的使用等;第三部分(第6~8章)介紹了網絡相關的知識,包括TCP協議的關鍵知識點和TCP server的實現,網絡IO模型和select、poll與epoll三個重要函數的使用,還有ping、tcpdump、netstat和lsof這四個網絡分析工具的使用;第四部分(第9~11章)主要是多線程、進程和進程間通信相關的知識,包括多線程的使用、多線程的同步和重入問題,進程方面有父子進程、僵死進程、守護進程和進程間通訊的方式;第五部分(第12章)主要是HTTP協議的介紹與使用、CGI的設計原理、實現和FASTCGI的簡單介紹;第六部分(第13章)通過常用類庫JsonCPP和Protobuf的使用,演示如何使用第三方庫。

 

 

 

   

徐曉鑫:
聽到“后台開發”這個詞,估計很多人心中都會有一些自己的感性認識,這種認識具體到每個人可能有一些差別,但估計大部分人都有這么一種看法:“后台開發”是編寫一些用戶看不見的程序,也就是非界面的,既不是網頁,也不是App,更不是桌面程序,因為這些都是用戶看得見的(被稱為“前台開發”)。這種感性認識在一定程度上是正確的,但是它不夠具體,也不夠全面。
我所理解的“后台開發”的確是用戶“看不見”的部分,但是還有很多界面性的程序是給企業內部人員使用的,這些雖然是界面程序,但是對於最終用戶來說也是“看不到”的。舉個例子,開發一個電子商務的網站,提供給客戶進行商品購買的網頁是用戶看得見的,不屬於“后台”,但是電商網站內部員工使用的“用戶管理系統”,“訂單管理系統”等,也是用戶看不見的,但它們不屬於本書中所指的“后台”。在有些場合,或者一些人的習慣中,這些內部使用的系統也叫“后台”,這樣並沒有錯,希望讀者在聽到的時候,知道說話人指的是什么。
在BAT這類成熟的、大型的、技術分工明確的互聯網公司里,一般提到“后台開發”,指的是“服務端的網絡程序開發”,從功能上可以具體描述成這樣:服務器收到客戶端發來的請求數據,解析請求數據,然后進行處理,最后把結果返回,如下圖所示。

 



“SERVER”
這里的“SERVER”就是后台開發程序員需要用盡畢生精力去耕耘的“后台程序”,或者“服務器”。 SERVER接收請求的方式既可以是通過TCP請求包,也可以是HTTP請求包(其實也是 TCP連接)。如果是HTTP方式的請求,請求包的格式一般是JSON或者XML ,或者自定義的ASCII文本;如果是TCP請求,二進制的格式會常見一些。解析請求包的方式自然是請求包的格式相對應的,來的是什么格式的包,就用對應的解包庫區解析,如果是自定義的格式,就按照自定義的方式去解析。“處理請求”這一步是后台程序的具體業務邏輯。很多封裝好的后台程序包會把其他三步都做好,但是這一步還是需要開發者自己去實現,因為只有開發者自己清楚,程序是要去做“登陸”還是去做“注冊”的事情。“輸出回復包”和“接收請求包”是對應的,一般來說,收到的是 JSON,那么回復的也是JSON,收到的是 XML,那么發送的也是XML,其他的格式也是一樣的。這四個步驟是所有后台程序都會有的,無論使用什么語言去實現,都可以看到這四個步驟的影子。
“CLIENT”
“CLIENT”指的是向“ SERVER”發起請求,並接收“SERVER”回復的一方,就是通常稱的“客戶端”。既然后台程序是通過 TCP或者HTTP 接收和回復消息的,那么只要是能夠發起TCP或者HTTP連接的都可以作為客戶端,可以是瀏覽器, PC端的程序,安卓應用,IOS應用,等等。
當然,這只是“后台開發”最基本的概念認識,也是像BAT這類成熟的大型互聯網公司對“后台開發”這個崗位的工作范圍定位。具體到實際的工作中,后台開發工程師需要涉及的技術層面很多,接入層、邏輯層、數據層等、需要考慮的問題也很多,個人認為最重要的幾個就是高可用性(availabilty)、可擴展性(scalability),健壯性(robustness)。也許以后咱們可以一起仔細聊一聊這些話題。
本文部分段落摘自《后台開發:核心技術與應用實踐》緒論部分

 


《后台開發:核心技術與應用實踐》
ISBN:978-7-111-54339-8
作者:徐曉鑫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM