從嵌入式到互聯(lián)網(wǎng)
我是06年進(jìn)的大學(xué),從大二的時(shí)候參加電子設(shè)計(jì),大三的時(shí)候進(jìn)入電子設(shè)計(jì)的校隊(duì),并參加了09年的全國大學(xué)生電子設(shè)計(jì)競(jìng)賽,但遺憾的是只拿了四川省的一等獎(jiǎng)。整個(gè)排名下來,在我們隊(duì)的前一名就是國二,當(dāng)時(shí)負(fù)責(zé)硬件的隊(duì)友比賽結(jié)束都掉了眼淚。由于學(xué)校的原因,電子設(shè)計(jì)和機(jī)器人是學(xué)校在當(dāng)時(shí)非常重視的競(jìng)賽,選拔和培訓(xùn)機(jī)制也比較完善。在我的記憶里電子設(shè)計(jì)競(jìng)賽學(xué)校從來都是全國的第一名。也正是這樣的原因?qū)е伦约盒纬闪艘粋€(gè)非常錯(cuò)誤的觀念:硬件和嵌入式最難,最牛逼。什么互聯(lián)網(wǎng)之類的無非是做做網(wǎng)頁,連高中生都搞的定,數(shù)學(xué)之類的也就只能用來搞研究了。
13年研究生畢業(yè),期間在微軟亞洲研究院實(shí)習(xí)。畢業(yè)后經(jīng)歷了傳統(tǒng)的嵌入式公司,之后進(jìn)入了國內(nèi)Top3的互聯(lián)網(wǎng)公司,現(xiàn)在回過頭來看10年前的自己,當(dāng)時(shí)的想法是多么的片面和無知。嵌入式的進(jìn)入門檻確實(shí)相對(duì)要高些,但跨過門檻之后,會(huì)發(fā)現(xiàn)技術(shù)不分高低貴賤,只是方向和領(lǐng)域不同罷了?;ヂ?lián)網(wǎng)技術(shù)雖然入門簡(jiǎn)單,但隨著需求和規(guī)模的變化和增長(zhǎng),技術(shù)門檻也會(huì)發(fā)生指數(shù)級(jí)別的上升,而數(shù)學(xué)在其中又扮演著至關(guān)重要的角色。
認(rèn)識(shí)的轉(zhuǎn)變除了工作環(huán)境的變化之外,讀書也發(fā)揮了很大的作用,下面來分享下從嵌入式到互聯(lián)網(wǎng)我這個(gè)非典型程序員的個(gè)人書單(過程中讀過的書遠(yuǎn)不止文中羅列的內(nèi)容,一些質(zhì)量不高的書目在此略過)
書單
匯編
匯編方面除了《微機(jī)原理》和《計(jì)算機(jī)組成原理》的課程學(xué)習(xí)外,自己也單獨(dú)買過匯編的書籍,但總的來說都收獲不大印象也不深刻。真正對(duì)匯編有深刻的理解是在實(shí)際的工作中。工作需要在一個(gè)沒有MMU的控制器上實(shí)現(xiàn)Bios、Bootloader、App三個(gè)獨(dú)立的運(yùn)行空間,當(dāng)時(shí)的解決方案是手動(dòng)編寫兩級(jí)中斷向量表。自此之后對(duì)匯編不再有恐懼的感覺。所以,很多時(shí)候?qū)嵺`是最好的學(xué)習(xí)方法。
C語言
C語言方面只使用了譚浩強(qiáng)的那本《C程序設(shè)計(jì)》。雖然這本書在網(wǎng)上被吐槽的很厲害,但因?yàn)楫?dāng)時(shí)自己年少無知,加上時(shí)間寬裕,整本書看了三四遍,同時(shí),書上的例子也都自己手動(dòng)敲過一遍(高中基本沒接觸過電腦,打字都要對(duì)著鍵盤邊看邊打,所以,測(cè)試?yán)泳彤?dāng)做練習(xí)打字了),所以,整體下來這本書也基本夠用。
C++
《C++ Primer Plus》
《Effective C++》
《C++ 標(biāo)準(zhǔn)程序庫》
Java
《Java核心技術(shù)》
《Effective Java》
《深入理解Java虛擬機(jī)》
Python
《Python基礎(chǔ)教程》(當(dāng)“字典”使用吧)
HMTL5
《HTML5權(quán)威指南》(當(dāng)“字典”使用吧)
設(shè)計(jì)模式
《大話設(shè)計(jì)模式》
《重構(gòu)》
編譯鏈接
《編譯原理》(龍書)
《程序員自我修養(yǎng)-鏈接、裝載與庫》(正和這本書的名字一樣,我覺得每個(gè)程序員都應(yīng)該讀一下)
操作系統(tǒng)
《自己動(dòng)手寫操作系統(tǒng)》
《嵌入式實(shí)時(shí)操作系統(tǒng) ucOS II》
《無線傳感器網(wǎng)絡(luò)操作系統(tǒng) TinyOS》(內(nèi)容基本是官方文檔的摘抄,但國內(nèi)關(guān)于TinyOS的中文資料確實(shí)不多)
計(jì)算機(jī)網(wǎng)絡(luò)
《圖解HTTP》
Linux
《鳥哥的私房菜》
《嵌入式Linux應(yīng)用開發(fā)完全手冊(cè)》(書名感覺有些low,但韋東山的作品確實(shí)經(jīng)典,尤其是他的視頻)
《Linux內(nèi)核完全剖析》(通過這本書才真正理解了實(shí)模式和保護(hù)模式、段頁式管理、內(nèi)核態(tài)和用戶的切換實(shí)現(xiàn),而不是停留在枯燥的概念上)
《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》
《Linux內(nèi)核源代碼情景分析》
《Unix環(huán)境高級(jí)編程》
Android
《瘋狂Android講義》(入門經(jīng)典)
《Android開發(fā)藝術(shù)探索》(估計(jì)現(xiàn)在變成面試寶典了)
《Android群英傳》
《Android框架揭秘》(這本書比較老,但對(duì)于開始理解Android的系統(tǒng)框架還是挺有幫助的)
《深入理解Android內(nèi)核設(shè)計(jì)思想》
《Android系統(tǒng)源代碼情景分析》(可能功力不夠,一直都讀不動(dòng)。感覺更適合作為“字典”來使用)
后臺(tái)服務(wù)
《Java Web整合開發(fā)王者歸來》(Java EE的經(jīng)典之作)
《后臺(tái)開發(fā):核心技術(shù)與應(yīng)用實(shí)踐》(C++后臺(tái))
《自己動(dòng)手寫網(wǎng)絡(luò)爬蟲》(基于Java的)
分布式系統(tǒng)
《大型網(wǎng)站技術(shù)架構(gòu)》
《Hadoop權(quán)威指南》
算法與數(shù)據(jù)結(jié)構(gòu)
《數(shù)據(jù)結(jié)構(gòu)(C語言版)》(對(duì)于常用的數(shù)據(jù)結(jié)構(gòu)都有對(duì)應(yīng)的C語言實(shí)現(xiàn))
《編程之美》
《算法導(dǎo)論》(坦白的將這本書來來回回嘗試閱讀了兩三次,但每次都是讀到一半就讀不下去了,期間還看了MIT的公開課。最終還是覺得這本書當(dāng)做“字典”來使用更合適)
《進(jìn)軍硅谷》(內(nèi)容基本都是LeetCode的原題,可以先刷題再看書)
機(jī)器學(xué)習(xí)
《機(jī)器學(xué)習(xí)》(周志華)
《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》(基于python的基礎(chǔ)實(shí)現(xiàn))
《Python機(jī)器學(xué)習(xí)及實(shí)踐:從零開始通往Kaggle競(jìng)賽之路》(基于Python庫實(shí)現(xiàn))
《統(tǒng)計(jì)自然語言處理》(內(nèi)容嚴(yán)謹(jǐn)、全面)
《TensorFlow Machine Learning Cookbook》(Tensorflow入門超棒的資料,但目前好像只有英文版)
《集體智慧編程》(Simons大神推薦的圖書)
其他
《這就是搜索引擎》
《浪潮之巔》
《數(shù)學(xué)之美》
《沸騰15年》(互聯(lián)網(wǎng)的編年史風(fēng)格跟吳曉波的《激蕩三十年》很像)
《淘寶技術(shù)這十年》
書單可能有遺漏,后面會(huì)慢慢再補(bǔ)充完整。
個(gè)人博客和Github
github:github.com/CaiquanLiu