Java後端工程師必備書單(從Java基礎到分散式)

来源:https://www.cnblogs.com/AliCoder/archive/2019/10/15/11681698.html
-Advertisement-
Play Games

Java開發工程師一般負責後端開發,當然也有專門做Java Web的工程師,但是隨著前後端的分離,越來越多的Java工程師需要往大後端方向發展。 今天我們就來介紹一下Java後端開發者的書單。 首先要感謝一下江南白衣大大的後端書架,讓我在初學階段讀到了很多好書,直到現在都印象深刻。 我在兩年的學習歷 ...


Java開發工程師一般負責後端開發,當然也有專門做Java Web的工程師,但是隨著前後端的分離,越來越多的Java工程師需要往大後端方向發展。

今天我們就來介紹一下Java後端開發者的書單。

首先要感謝一下江南白衣大大的後端書架,讓我在初學階段讀到了很多好書,直到現在都印象深刻。

我在兩年的學習歷程中看了很多的書,其中不乏XXX入門到精通,XXX王者歸來,XXX指南什麼的。

雖然這類書確實毛病很多,但是作為非科班的我來說,當時還是看的津津有味。直到後來我看到一些優秀的書籍,以及白衣哥的書架,我才逐漸認識到看一些精品書籍的好處。

所以我們今天就從這些精品書籍中挑選一些優秀書籍來推薦給大家,當然其中有一些書我自己也沒有時間看完。

接下來我們按照後端技術棧各個部分的內容來推薦書籍。

網路

1 TCP/IP捲一

這本其實我剛開始沒看太懂,可能是當時太水的原因,但是一般是大牛力薦的書。

2 電腦網路:自頂向下

這本從應用層講到物理層,感覺這種方式學起來更輕鬆,我比較推薦小白看這本。

3 圖解HTTP和圖解TCP/IP

相較於前兩本大厚書,這兩本書更加親民,小白可以買來看看,還是很適合入門的。

4 電腦網路

沒錯,就是這本教材,作為非科班選手自己看這本書,那叫一個欲仙欲死啊,看完就忘記了。

操作系統

1 深入理解電腦系統

這本書不是嚴格意義上的操作系統書籍,而是對電腦基礎和操作系統做了一個串聯,可以解決你很多對於電腦的疑惑,並且對操作系統有一定理解。

其實這本書還是很厚的,有一定難度,建議有一些基礎後再看。

2 現代操作系統

這本書其實我沒怎麼看,比較詳細地講解了操作系,但是也是大家都比較推崇的書,還是那句話,很厚,慎看。

3 Linux內核設計與實現

當你對操作系統有一定理解以後,這本書將為你打開學習Linux內核的大門,當然在此之前你得有一定的c語言開發能力,以及對Linux的瞭解。反正,我現在還沒開始準備好看這本書。

4 Unix網路編程

這兩本書的厚度絕對讓你感到絕望,其實就是講解了Unix內核是如何實現網路通信的,其中涉及到很多網路,操作系統的知識,並且你要熟悉c語言。總之,這是一本奉為網路編程神書的存在,不過我等新手還是拿他壓壓泡麵就好了。

網上有很多博客會參照該書的內容,可以去看看它們。

數據結構與演算法

不瞞你說,由於我非科班,所以演算法基礎比較差,數據結構是考研時跟著天勤考研指南學的,學習演算法也是一路坎坷,舉步維艱。還是分享幾本比較靠譜的書吧。

1 演算法導論

你問我是不是認真的,我就是說說而已,這本書我買來沒看過。

2 數據結構與演算法(Java版)

這本書對於初學者來說還是比較友好的,當然學Java的看這本。

3 演算法圖解,啊哈演算法

這兩部書籍非常適合學習演算法的入門,前者主要用圖解的形式覆蓋了大部分常用演算法,包括dp,貪心等等,可以作為入門書,後者則把很多常用演算法都進行了實現,包括搜索,圖,樹等一些比較高級的常用演算法。

4 劍指offer

這本書還是要強烈推薦的,畢竟是面試題經常參考的書籍,當然最好有前面基本的鋪墊再看,可能收穫更大,這本書在面試之前一般都要嚼爛。

5 LeetCode

這不是一本書,是一個題庫,演算法麽,終究還是要靠刷題來提升熟練度的。

Java基礎

1 Java編程思想

這本書也是被譽為Java神書的存在了,但是對新手不友好,適合有些基礎再看,當然要選擇性地看。我當時大概只看了1/3

2 Java核心技術捲一

這本書還是比較適合入門的,當然,這種厚皮書要看完還是很有難度的,不過比起上面那本要簡單一些

Java進階

1 深入理解JVM虛擬機

這本書是Java開發者必須看的書,很多jvm的文章都是提取這本書的內容。JVM是Java虛擬機,賦予了Java程式生命,所以好好看看把,我自己就已經看了三遍了。

2 Java併發編程實戰

這本書是Java 併發包作者寫的書,所以非常權威,但是比較晦澀難懂,我看的雲里霧裡的,大家可以按需選擇。

3 Java併發編程藝術

這本書是國內作者寫的Java併發書籍,比上面那一本更簡單易懂,適合作為併發編程的入門書籍,當然,學習併發原理之前,還是先把Java的多線程搞懂吧。

4 Effective Java

這本書和Java編程思想一樣被稱為神書,主要講的是Java的一些優化技巧和規範,沒有一定開發經驗的人看這本書會覺得索然無味,不知所云,所以,先擱著吧。

5 Java性能調優指南

說到JVM調優,可能會有很多的面試題浮現在你的腦海裡,這本書比較權威地講解了Java的性能調優方法,不過我還沒怎麼看,有空好好看看。

6 Netty權威指南

Netty是基於NIO開發的網路編程框架,使用Java代碼編程,其實這本書也可以放在網路或者Java Web部分。不過NIO屬於JDK自帶的一部分,是必須要掌握的,而對於Netty,大家如果學有餘力的話也可以看看。

JavaWeb

1 深入JavaWeb技術內幕

這本書是Java Web的集大成之作,涵蓋了大部分Java Web開發的知識點,不過一本書顯然無法把所有細節都講完,但是作為Java Web的入門或者進階書籍來看的話還是很不錯的。

2 How Tomcat Works

Java Web很重要的一部分內容就是Tomcat,作為應用伺服器,Tomcat使用Java開發,其源代碼和架構設計都是經典之作。

這是一本講解Tomcat基本原理的書籍,很好地通過剖析源碼來講解Tomcat的內部結構和運行機制,但是需要一定的基礎才能夠看懂,我還沒看這本書,日後再拜讀。

3 Tomcat架構解析

和上面這本書類似,主要講解Tomcat原理和架構,,要看懂這本書的話,前提是你要對Java基礎,NIO以及設計模式有所瞭解。這本書我也還沒看。

4 Spring實戰

這本書適合作為Spring的入門書籍,把Spring的概念,使用方式等內容都講的比較清楚。並且也介紹了Spring MVC的部分內容,Spring框架還是更註重實踐的,所以跟著書上的內容去做吧。

5 Spring源碼深度解析

學會Spring基礎後,可以花點時間看看這本講源碼的書了,這本書對於新手來說不太友好,主要也是因為Spring的代碼結構比較複雜,大家也可以看一些博客來完成對源碼的學習。

6 Spring MVC學習指南

本書是一本Spring MVC的教程,內容細緻、講解清晰,非常適合Web開發者和想要使用Spring MVC開發基於Java的Web應用的讀者閱讀。但是由於出的比較早,所以不太適合現在版本。

6 Maven實戰

Maven是Java Web開發中不可缺少的一部分,如果想要全面瞭解其實現原理的話,可以看看這本書。

資料庫

1 資料庫原理

資料庫原理應該是教材吧,這本書作為資料庫入門來說還是可以的,畢竟不是專門做DB的,看大厚書用處不大,這本書把資料庫的基本概念都講完了。

1 sql必知必會

這本書主要是講解sql語句怎麼寫,畢竟資料庫最重要的一點就是要熟練地使用sql語句,當然這本書也可以當做工具書來使用。

2 深入淺出MySQL

這本書適合作為MySQL的學習書籍,當你有了一定的MySQL使用經驗後,可以看看它,該書從資料庫的基礎、開發、優化、管理維護和架構5個方面對MySQL進行了詳細的介紹,講的不算特別深,但是足夠我們使用了。這本書我也只看了一部分。

3 MySQL技術內幕:innodb存儲引擎

看完上面那本書以後,對MySQL算是比較熟悉了,不過對於面試中常考的innodb引擎,還是推薦一下這本書把,專門講解了innodb存儲引擎的相關內容。我還沒有細看,但是內容足夠你學好innodb了。

4 高性能Mysql

這本書可以說是很厚了,更適合DBA拜讀,講的太詳細了,打擾了。

5 Redis實戰

和MySQL一樣,學習Redis的第一步最好也是先實戰一下,通過這本書就可以較好地掌握Redis的使用方法,以及相關數據結構了。

6 Redis設計與實現

該書全面而完整地講解了 Redis 的內部運行機制,對 Redis 的大多數單機功能以及所有多機功能的實現原理進行了介紹。這本書把Redis的基本原理講的一清二楚,包括數據結構,持久化,集群等內容,有空應該看看。

分散式

1 分散式Java應用

這本書是淘寶大牛寫的書,主要講的就是使用rpc來構建分散式的Java應用,講了很多基礎的東西,可以作為入門書籍,不過這本書我之前沒有遇到,所以沒看過。

2 大型網站技術架構

這本淘寶系技術指南還是非常值得推崇的,可以說是把大型網站的現代架構進行了一次簡單的總結,內容涵蓋了各方面,主要講的是概念,很適合沒接觸過架構的同學入門。看完以後你會覺得後端技術原來這麼博大精深。

3 大型分散式網站架構設計與實踐

這本書與上面一書相比更傾向於實踐,主要講的是分散式架構的一些解決方案,但是如果你沒有接觸過相關的場景,可能會看的雲里霧裡。

4 分散式服務框架原理與實踐

上面那本書講的是分散式架構的實踐,而這本書更專註於分散式服務的原理講解和對應實踐,很好地講述了分散式服務的基本概念,相關技術,以及解決方案等,對於想要學習分散式服務框架的同學來說是本好書。

5 大型網站系統與Java中間件開發實踐

話說這些書的名字真實夠長的。這本書也是阿裡系出品,主要講的是大型網站系統以及使用的相關中間件,畢竟阿裡是中間件大戶,所以很多中間件對應用再網站系統中,對於想學習這方面技術的同學來說可以一看。

6 從Paxos到Zookeeper分散式一致性原理與實踐

說起分散式系統,我們需要瞭解它的原理,相關理論及技術,這本書也是從這個角度出發,講解了分散式系統的一些常用概念,並且帶出了分散式一哥zookeeper,可以說是想學分散式技術的同學必看的書籍。

7 大規模分散式存儲系統

這本書是阿裡巴巴oceanbase核心開發大佬寫的書,講的是分散式存儲相關的原理和解決方案,該書不是很厚,如果想做存儲方向的同學可以看看。

雲計算

雲計算方面的內容主要是我在實習階段接觸的,如果只是應用開發方向的話這塊不懂也罷。主要還是看個人興趣。

1 OpenStack設計與實現

OpenStack是基於KVM技術的一套私有雲生態。這本書很好地講解了OpenStack的一些基本原理,包括各個組件的設計與實現,比起另一本《OpenStack王者歸來》簡單易懂的多。當然,前提最好是你對Linux內核和網路有所瞭解。

2 docker入門與實踐

docker是現在應用部署的主流方案了,所以瞭解一下還是挺有必要的,這本書作為入門書籍足夠讓你會使用docker了。

3 kubenetes權威指南

kubenetes是docker的集群解決方案,也是一個微服務的解決方案,所以這本書涉及的內容非常多,需要有網路,操作系統以及docker相關的基礎。我看這本書的時候可以說是非常暈的。

大數據

和雲計算一樣,大數據方面的內容也不算是Java後端技術棧所需要的,但是這也能為你加分,並且讓你跟大數據開發的崗位沾點邊,何樂而不為。

1 大數據技術原理與應用

作為大數據方面的一本教材,廈大教授寫的這本書還是非常贊的,從最基礎的原理方面講解了Hadoop的生態系統,並且把每個組件的原理都講得比較清楚,另外也加入了spark,storm等內容,可以說是大數據入門非常好的一本書了。

2 Hadoop實戰

這本書很厚,我買的時候大概看了一遍,一頭霧水。所以建議先看上面那本書,再來看更加進階的書籍,否則可能就是浪費時間了。

3 Hadoop權威指南

這本書主要對Hadoop生態中組件進行詳細講解,有點太詳細了,如果不是做大數據方向的話,可以不看。

其他:

1 Git權威指南

Git是現在大公司主流的代碼協同工具,如果你想要瞭解其底層原理,可以看看這本書。

2 重構

這本書主要介紹的是代碼重構的一些指導思想和最佳實踐。有重構需求的同學可以看看。

3 - n

其他方面的書籍就太多了,比如軟體工程方面的,測試方面,Linux方面,以及講一些程式員自我提升的書籍,就不一一列舉了,因為這部分的內容可以不歸入Java後端的技術棧。

微信公眾號

個人公眾號:黃小斜

黃小斜是跨考軟體工程的 985 碩士,自學 Java 兩年,拿到了 BAT 等近十家大廠 offer,從技術小白成長為阿裡工程師。

作者專註於 JAVA 後端技術棧,熱衷於分享程式員乾貨、學習經驗、求職心得和程式人生,目前黃小斜的CSDN博客有百萬+訪問量,知乎粉絲2W+,全網已有10W+讀者。

黃小斜是一個斜杠青年,堅持學習和寫作,相信終身學習的力量,希望和更多的程式員交朋友,一起進步和成長!

原創電子書:
關註公眾號【黃小斜】後回覆【原創電子書】即可領取我原創的電子書《菜鳥程式員修煉手冊:從技術小白到阿裡巴巴Java工程師》

程式員3T技術學習資源: 一些程式員學習技術的資源大禮包,關註公眾號後,後臺回覆關鍵字 “資料” 即可免費無套路獲取。

考研複習資料:
電腦考研大禮包,都是我自己考研複習時用的一些複習資料,包括公共課和專業的複習視頻,這裡也推薦給大家,關註公眾號後,後臺回覆關鍵字 “考研” 即可免費獲取。

技術公眾號:Java技術江湖

如果大家想要實時關註我更新的文章以及分享的乾貨的話,可以關註我的公眾號【Java技術江湖】一位阿裡 Java 工程師的技術小站,作者黃小斜,專註 Java 相關技術:SSM、SpringBoot、MySQL、分散式、中間件、集群、Linux、網路、多線程,偶爾講點Docker、ELK,同時也分享技術乾貨和學習經驗,致力於Java全棧開發!

Java工程師必備學習資源: 一些Java工程師常用學習資源,關註公眾號後,後臺回覆關鍵字 “Java” 即可免費無套路獲取。

我的公眾號

本文由博客一文多發平臺 OpenWrite 發佈!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 幾個月前我也開始在csdn上開了博客,一來給自己加幾個少的可憐的流量,再者,讓公眾號的原創文章獲得更多的曝光,讓有需要的同學看到。 寫過csdn博客的同學都知道,預設只有打賞c幣功能;也沒有專門廣告位;引導欄目,只有側欄csdn自己的引導二維碼。 如何在csdn自定義欄目,加贊賞功能,或者其他等引導 ...
  • time time ####消費者 def consumer(name) print("\033[31;%s 想要吃包子1m\033[0m" %name) while True: baozi = yield print("包子[%s]來了,被[%s]" %(baozi, name)) ###生產者 ...
  • 源碼版本說明 本文源碼採用版本為 ,對應的 註意:本文只是從整體上梳理流程,不做具體深入分析 SpringBoot入口類 這是我們日常使用springboot開發見到次數最多的引導類了,完成這個類的編寫,就完成了一個springboot項目的框架,springboot就回自動為我們完成一些預設配置, ...
  • 幾個月前我也開始在csdn上開了博客,一來給自己加幾個少的可憐的流量,再者,讓公眾號的原創文章獲得更多的曝光,讓有需要的同學看到。 寫過csdn博客的同學都知道,預設只有打賞c幣功能;也沒有專門廣告位;引導欄目,只有側欄csdn自己的引導二維碼。 如何在csdn自定義欄目,加贊賞功能,或者其他等引導 ...
  • 公司最近有一個從ftp批量下載文件的需求,但是文件名重覆總會報錯 沒辦法,自己下班後寫了一個小演算法 仿照桶排序的原理,實現了這個小功能,直接上代碼: ...
  • 遍歷刪除List中符合條件的元素主要有以下幾種方法: 其中使用普通for迴圈容易造成遺漏元素的問題,增強for迴圈foreach會報java.util.ConcurrentModificationException併發修改異常。 所以推薦使用迭代器iterator,或者JDK1.8以上使用lambd ...
  • (手機橫屏看源碼更方便) 註:java源碼分析部分如無特殊說明均基於 java8 版本。 簡介 ThreadPoolExecutor的構造方法是創建線程池的入口,雖然比較簡單,但是信息量很大,由此也能引發一系列的問題,同樣地,這也是面試中經常被問到的問題,下麵彤哥只是列舉了一部分關於ThreadPo ...
  • 學習Java和其他技術的資源其實非常多,但是我們需要取其精華去其糟粕,選擇那些最好的,最適合我們的,同時也要由淺入深,先易後難。基於這樣的一個標準,我在這裡為大家提供一份Java的學習資源清單。 Java入門學習資源 這裡主要推薦的是幾個技術學習網站,基本上都是視頻學習資源。 1 慕課網慕課網是做得 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...