Remons
作為程序員,大家可能都太過注重編程的學習。當然編程是很重要的!但很多底層基礎的知識也是不可缺少的部分。我曾經也是一個知注重學習各種新知識的程序員,沒有太在意底層的基礎學科知識。雖然工作影響不大,但總是感覺缺點東西,很多知識不能很透徹的理解。所以以我的經驗這裡推薦幾本書
第一,《現代操作系統》
《現代操作系統》是機械工業出版社出版的圖書,作者是(荷蘭)AnderwS.Tanenbaum。書中不僅涵蓋了現代操作系統的原理和實踐,認識了操作系統的基本結構,對我現在所用的電腦系統有了全新的認識。不僅如此這本書還特別關注了Linux操作系統,WindowsVista操作系統、嵌入式操作系統、實時操作系統以及多媒體操作系統。幾乎涵蓋了目前所用到的所有操作系統。
第二,《數據結構與算法分析+java語言描述(原書第3版)》
作為一個程序員無論工作中用不用得到一定要知道數據結構以及算法。本書是國外數據結構與算法分析方面的經典教材,使用卓越的Java編程語言作為實現工具討論了數據結構(組織大量數據的方法)和算法分析(對算法運行時間的估計)。本書把算法分析與有效率的Java程序的開發有機地結合起來,深入分析每種算法,內容全面、縝密嚴格,並細緻講解精心構造程序的方法。
當然要想把以上兩者連起來,需要的就是網絡了,所以下面推薦的關於網絡方面的書籍
第三,《計算機網絡》和《TCP/IP詳解》
網絡方面最經典的教材就是謝希仁編寫的《計算機網絡》,這也是第一次推薦國人寫的計算機方面的數,這本書是非常好的,尤其往網絡方面發展的同學一定要看看,絕對有收穫;當然有的同學可能喜歡外國作家寫的書,這裡就推薦這個國外經典計算機教材《TCP/IP詳解》共三卷; 在計算機網絡技術方面,最經典的就是思科認證教材CCNA,CCNP及CCIE系列認證教材。
要說基礎知識以上三本書就夠了,要推薦當然還是有的,主要沒有多少空閒時間去讀而已!希望能夠幫到你。歡迎關注留言哦
安易之之
計算機編程書有很多種類,在確定方向後以下書籍可作為參考:
C/C++
1、《C程序設計語言》 入門推薦
2、《C Primer Plus》 入門推薦
3、《C和指針》
4、《C陷阱與缺陷》
5、《C++ Primer》入門推薦
為了更深入地理解程序原理,建議再學一下彙編語言
《現代x86彙編語言程序設計》
Linux
《UINX環境高級編程》 後臺開發必讀
《鳥哥的Linux私房菜》 Linux運維推薦入門系列
《Linux內核設計與實現》
網絡
《TCP/IP詳解卷1:協議》
Java
《Java編程語言》 入門推薦
《Java編程思想》
Python
《Python核心編程》(第2版),第3版難度加大,內容變更較多,用2版入門足夠,perl現在已經沒落了,可不學
數據庫
《MySQL技術內幕》,目前企業所用後臺大多是linux+mysql,所以主要學習下mysql就足夠
如果對網站開發有興趣可以一併看下《php和mysql web開發》
系統原理
《深入理解計算機系統》強烈推薦,搞懂這本就基本能閱讀大部分計算機相關著作
計算機組成原理
《編碼:隱匿在計算機軟硬件背後的語言》
windows編程,估計你們會有windows編程的課程,如果有學下面這兩本就足夠了
《Windows程序設計》charles petzold(著)
《Windows核心編程》
編譯原理
龍書《編譯原理》,如果看不懂,推薦下面一本
《編譯系統透視:圖解編譯原理》
數據結構與算法
《數據結構與算法分析——C語言描述》,也有一本是C++語言描述
《算法導論》
編程主要靠實踐,多電腦敲代碼,最好以開發某款軟件為目標去多寫代碼
學完基礎課程,建議也學習下服務器安全方面的知識
上面不少書在網上有電子版,可以先下載看看,不清晰的再買實體書,或者圖書館去借
其它一些進階與提升的書,可以多逛逛圖書館。
Gemmy辜
首先要明確什麼是計算機基礎,它包括哪些,大多數認為包括以下幾個方面:
編程語言(如C/C++/Java/Python)
數據結構與算法(如字符串、數組、鏈表、樹、圖、查找、排序、歸併、動態規劃等)
操作系統(包括操作系統原理、Linux命令行以及更高階的系統編程)
計算機網絡(OSI七層協議、TCP/UDP、路由選擇、各種應用層協議等)
計算機組成原理
數據庫
編譯原理
設計模式
-
軟件工程
編程語言方面的就不說了,下面推薦一些比較火的入門級書籍吧,經典計算機書籍沒什麼變化,經典必讀書籍可以搜索一下互聯網各種書單。
計算機網絡、組成、系統方面
圖靈日語圖解系列,特別棒的入門系列,以極簡和形象生動的風格深入人心。
《圖解HTTP》172張圖解,對互聯網基盤——HTTP協議進行了全面系統的介紹。作者由HTTP協議的發展史娓娓道來,嚴謹細緻地剖析了HTTP協議的結構,列舉諸多常見通信場景及實戰案例,最後延伸到Web安全、最新技術動向等方面。
《圖解TCP/IP》一本圖文並茂的網絡管理技術書籍,旨在讓廣大讀者理解TCP/IP的基本知識、掌握TCP/IP的基本技能。書中講解了網絡基礎知識、TCP/IP基礎知識、數據鏈路、IP協議、IP協議相關技術、TCP與UDP、路由協議、應用協議、網絡安全等內容。
《網絡是怎樣連接的》本書以探索之旅的形式,從在瀏覽器中輸入網址開始,一路追蹤了到顯示出網頁內容為止的整個過程,以圖配文,講解了網絡的全貌,並重點介紹了實際的網絡設備和軟件是如何工作的。目的是幫助讀者理解網絡的本質意義,理解實際的設備和軟件,進而熟練運用網絡技術。同時,專設了“網絡術語其實很簡單”專欄,以對話的形式介紹了一些網絡術語的詞源,頗為生動有趣。
《編碼——隱匿在計算機軟硬件背後的語言》一本講述計算機工作原理的書。不過,你千萬不要因為“工作原理”之類的字眼就武斷地認為,它是晦澀而難懂的。作者用豐富的想象和清晰的筆墨將看似繁雜的理論闡述得通俗易懂,你絲毫不會感到枯燥和生硬。更重要的是,你會因此而獲得對計算機工作原理較深刻的理解。這種理解不是抽象層面上的,而是具有一定深度的,這種深度甚至不遜於“電氣工程師”和“程序員”的理解。
不管你是計算機高手,還是對這個神奇的機器充滿敬畏之心的菜鳥,都不妨翻閱一下本書,讀一讀大師的經典作品,必然會有收穫。
設計模式、軟件工程
《Head First設計模式》暢銷12年,累計印刷40餘次,銷量近20萬冊,榮獲第十五屆Jolt通用類圖書震撼大獎,讀者喜愛的十大IT圖書之一!
《大話設計模式》本書通篇都是以情景對話的形式,用多個小故事或編程示例來組織講解,中國人寫的一本比較知名的。
《構建之法,現代軟件工程(第三版)》做中學 Learning By Doing的現代方式教授軟件工程 李未院士鼎力推薦 眾多軟工教師一致好評 微軟研發總監鄒欣力作
《程序員修煉之道——從小工到專家》全球票選程序員讀物 常讀常新的不老神話,由一系列獨立的部分組成,涵蓋的主題從個人責任、職業發展,知道用於使代碼保持靈活、並且易於改編和複用的各種架構技術,利用許多富有娛樂性的奇聞軼事、有思想性的例子及有趣的類比,全面闡釋了軟件開發的許多不同方面的最佳實踐和重大陷阱。無論你是初學者,是有經驗的程序員,還是軟件項目經理,《程序員修煉之道:從小工到專家》都適合你閱讀。
能把上面的基本認真看我就很不錯了,加油!
希望對你有幫助,喜歡的話可以點個關注點個贊。
做工程師不做碼農
然後我們聊聊平常程序員能用到的基礎,計算機是一門很大的學科,下至離散數學、微積分、自動機理論,中間還有硬件、計算機組成原理、編譯器、程序語言、操作系統、算法,上到各種設計模式、架構設計其實都可以算作基礎,但是很多其實程序員平常可能不太用得到,我們就說一個做web的後端程序員可能需要用到的基礎知識,假設程序員已經掌握一門編程語言,足夠完成自己想的事情,並對一些基礎概念有了解
我們從一個http請求說起,請求通過網絡將一些數據通過網絡發送到服務端,這中間首先要經過HTTP協議進行數據的傳遞(不討論數據鏈路層和IP層、TCP的那些事情),這裡面就會涉及到HTTP協議的問題,比如header裡面有那些常用的字段,比如指定字符集、編碼方式、會話方式等等,然後通過header就知道對body裡面的數據進行如何的處理,比如序列化或者反序列化, 還有為什麼會有跨域的問題?為什麼要用 https?什麼又是http1.0 2.0,然後通過這些通常就要再去學習一個web框架,就會涉及到這個框架是怎麼對上面這些進行處理的了, 關鍵點:http協議與web框架
請求處理部分,通常就要做具體的業務邏輯處理了,什麼是cookie、session、token、jwt?為什麼要保存這些數據?什麼又是表單?中間件又是什麼鬼?此處通常又會涉及到分層架構比如什麼是MVC?數據庫又是什麼?為啥又要出個緩存?消息隊列又是啥?然後就會涉及到我們的業務類型和業務數據,比如該用什麼數據模型?什麼存儲?什麼序列化方式?什麼索引方式?什麼又是事務?關鍵點:分層架構、數據庫與事務、NOSQL、數據結構與算法
如果把上面這些都學完已經可以做個CRUD程序員了,大多數培訓出來的也就這個樣子,然後就是單機不行了,首先是業務上做水平或者垂直拆分?拆著拆著,就是一堆服務了,好吧就叫微服務吧?怎麼發現彼此?怎麼通信?怎麼傳遞數據?怎麼管理?掛了怎麼辦?怎麼提供統一接口?關鍵點:微服務、服務發現、通信方式、故障隔離、網關
經過上面的學習你已經是一個入門級別的程序員了,但是你還只是個會使用各種工具的程序員,那麼我們要開始獨立去面對一個小的業務模塊了,怎麼設計模塊?什麼是架構?怎麼協作開發?怎麼做測試?TTD是啥?敏捷又是啥?持續集成是什麼鬼?服務怎麼部署?docker是啥?kubernetes是啥?監控日誌又是啥?關鍵點:敏捷、測試驅動開發、持續集成、持續交付、docker與kubernetes、監控與日誌
經過這些我感覺已經能做個基本的程序員了,但是目前也只是個更全面的工具程序員了,我們總不能一直使用各種工具吧,我得熟悉底層的各種源碼吧?不說精讀個數據庫,泛讀個web框架、幾萬行代碼的中間件,貌似是得學習一下吧?你以為你可以讀懂了?去一邊去吧,你為什麼讀不懂源碼?你說我會了數據結構,好吧程序都是併發的,作者可能為了併發的安全性又去改動了一下,比如結合操作系統的copy on write機制,實現個redis的備份?利用磁盤順序寫,搞個wal日誌?寫個os cache批量刷盤?數據可能是通過網絡傳輸的, socket是啥?粘包拆包又是啥?IO又為啥要多路複用? 這些玩意是啥?併發!!關鍵詞:操作系統、Linux底層機制、併發、網絡
經過這些,你感覺完了?別鬧,讀完一箇中間件源碼就完了嘛?你知道編譯器嘛?微機原理呢?電子技術呢?計算機組成原理呢?你瞭解分佈式嘛?一致性呢?共識和時鐘又是個啥?分佈式鎖怎麼玩的?大數據瞭解嘛?service mesh明白嘛?data mesh呢?5G已經在路上,能趕上嘛?
阿彌陀佛,回頭是岸,學海無涯,放下屠刀,立地下崗!
程序員:方丈我還沒到34歲,能不能救救我?
方丈:施主,瞅你骨骼驚奇,但是我們只招985/211,計算機科班出身的996程序員,你願意12127嘛?
程序員:方丈,我可以住公司!
方丈:那我們考慮考慮,拿起簡歷放到旁邊的第1000零1的簡歷上做備選
編碼大棚
起步
1、數據結構
2、數據庫基礎(人大)
進階
3、圖論
4、離散數學
5、概率統計
虎呼哥
生活不僅僅只有寫代碼,作為程序員,我們不僅要將數據結構、計算機網絡、操作系統這三把斧玩好,更要擁有一個強健的體魄!
網絡:
萬物互聯時代,如果你還不懂網絡知識,那將寸步難行。這裡推薦三本經典書籍:
TCP/IP詳解
該書是網絡專家、著名技術作家W. Richard Stevens的傳世之作,內容詳盡且極具權威,被譽為TCP/IP領域的不朽名著,就我認識的老通信行業的專業開發人員,基本人手一本。本書共三卷,其中卷一偏重於基礎原理,卷二、卷三更多偏重於編程細節,作為基礎書籍推薦,卷一即可,對於學有餘力的童鞋,可學習二、三卷。
圖解HTTP
應用最廣泛的協議之一,前端工程師分析抓包分析數據,後端工程師實現REST API、搭建自己的HTTP服務器等過程中都繞不開HTTP這一知識點,《圖解HTTP》,用通俗易懂的語言講解了HTTP協議的方方面面,本書列舉諸多常見通信場景及實戰案例,最後延伸到Web安全、最新技術動向等方面,實在是一本不可多得的好書。
Wireshark網絡分析就這麼簡單
「授人以魚不如授人以漁」,全書以詼諧幽默的寫法為我們講解了枯燥的技術問題,由淺入深的用Wireshark分析了常見的網絡協議,還通過身邊的真實案例分享了Wireshark使用技巧,對初學者是很好的啟蒙書籍。本書可搭配前面介紹的兩本基礎理論書籍一起學習,必能達到事半功倍的效果。
操作系統:
現代操作系統
程序員的自我修養——鏈接、裝載和庫
如果你是高手,Linux Hacker或者geek,請繞行
但如果你是新手
如果你曾好奇過windows系統目錄下和軟件目錄下大堆大堆的dll文件是什麼?
如果你曾疑惑過我寫下的代碼經歷的怎樣的歷程最後怎樣到達了內存?
編譯器每天用,它到底做了什麼?
如果你已經學習或接觸了C,彙編,計算機結構,但還是沒辦法把三者的關係理順。
那麼,《程序員的自我修養——鏈接、裝載和庫》這本書絕對是對你的有幫助。
數據結構
基礎入門的話,這裡推薦《大話數據結構》。本書以一名教師的教學為場景,用生動形象的語言講解數據結構和相關算法的知識。全文大量引用了各種各樣的生活知識來類比數據結構中的專業知識。
程序員必備書籍
重要!
重要!
重要!
作為本文的壓軸戲,也是最重要的一本書《程序員健康指南》推薦給各位程序猿友們,專門為程序員量身製作的健康指南,針對頭痛、眼部疲勞、背部疼痛和手腕疼痛等常見的問題介紹了其成因和對策。身體是革命的本錢,各位在長期面對996的同時,一定要注意身體,加強鍛鍊,提高免疫力!
一個程序員的奮鬥史
python編程從入門到實踐,現在python越來越流行了,從機器學習到數據分析,從自動化測試到單片機開發都能找到他的身影,所以推薦這本書