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