【強烈推薦】可能是最適合你的 Java 學習路線和方法

else發表於2021-09-09

如遇連結無法開啟,建議使用 這個連結進行閱讀。

到目前為止,我覺得不管是在公眾號後臺、知乎還是微信上面我被問的做多的就是:“大佬,有沒有 Java 學習路線和方法”(大佬屬現代流行的客氣稱呼,本人非大佬哈)。所以,這部分單獨就自己的學習經歷來說點自己的看法。

前言

大一的時候,我僅僅接觸過 C 語言,對 C 語言的掌握程度僅僅是可以完成老師佈置的課後習題。那時候我的主要的精力都放在了參加各種課外活動,跟著一個很不錯的社團嘗試了很多我之前從未嘗試過的事情:露營、戶外燒烤、公交車演講、環跑古城牆、徒步旅行、異地求生、聖誕節賣蘋果等等。

到了大二我才接觸到 HTML、CSS、JS、Java、Linux、PHP 這些名詞。最開始接觸 Java 的時候因為工作的需要我選擇的安卓方向,我自己是在學習了大概 3 個月的安卓方向的知識後才轉向 Java 後臺方向的。最開始自己學習的時候,走了一些彎路,但是總體路線相對來說還是沒問題的。我讀的第一本 Java Web 方向的書籍是《Java Web 整合開發王者歸來》,這本書我現在已經不推薦別人看了,一是內容太冗雜,二是年代比較久遠導致很多東西在現在都不適用了。

很多人在學完 Java 基礎之後,不知道後面該如何進行下一步地進行學習,或者不知道如何去學習。如何系統地學習 Java 一直是困擾著很多新手或者期待在 Java 方向進階的小夥伴的一個問題。我也在知乎上回答了好幾個類似的問題,我覺得既然很多人都需要這方面的指導,那我就寫一篇自己對於如何系統學習 Java 後端的看法。剛好關注公眾號的很多朋友都是學 Java 不太久的,希望這篇文章對學習 Java 的朋友能有一點啟示作用。

由於我個人能力有限,下面的學習路線以及方法推薦一定還有很多欠缺的地方。歡迎有想法的朋友在評論區說一下自己的看法。本文比較適合剛入門或者想打好 Java 基礎的朋友,比較基礎。

學習路線以及方法推薦

下面的學習路線以及方法是筆主根據個人學習經歷總結改進後得出,我相信照著這條學習路線來你的學習效率會非常高。

學習某個知識點的過程中如果不知道看什麼書的話,可以檢視這篇文章 :。

另外,很重要的一點:建議使用 Intellij IDEA 進行編碼,可以單獨抽點時間學習 Intellij IDEA 的使用。

step 1:Java 基礎

《Java 核心技術卷 1/2》《Head First Java》 這兩本書在我看來都是入門 Java 的很不錯的書籍 (《Java 核心技術卷 1/2》 知識點更全,我更推薦這本書),我倒是覺得 《Java 程式設計思想》 有點屬於新手勸退書的意思,慎看,建議有點基礎後再看。你也可以邊看影片邊看書學習(黑馬、尚矽谷、慕課網的影片都還行)。對於 Java8 新特性的東西,我建議你基礎學好之後可以看一下,暫時看不太明白也沒關係,後面抽時間再回過頭來看。

看完之後,你可以用自己學的東西實現一個簡單的 Java 程式,也可以嘗試用 Java 解決一些程式設計問題,以此來將自己學到的東西付諸於實踐。

記得多總結!打好基礎!把自己重要的東西都記錄下來。 API 文件放在自己可以看到的地方,以備自己可以隨時查閱。為了能讓自己寫出更優秀的程式碼,《Effective Java》《重構》 這兩本書沒事也可以看看。

檢測一下自己的掌握情況,這 34 個問題都時 Java 中比較重要的知識點,最重要的是在 Java 後端面試中的出場率非常高。

step 2:多執行緒的簡單使用

多執行緒這部分內容可能會比較難以理解和上手,前期可以先簡單地瞭解一下基礎,到了後面有精力和能力後再回來仔細看。推薦 《Java 併發程式設計之美》 或者 《實戰 Java 高併發程式設計》 這兩本書。我目前也在重構一份我之前寫的多執行緒學習指南,後面會更新在公眾號裡面。

學習完多執行緒之後可以透過下面這些問題檢測自己是否掌握。

Java 多執行緒知識基礎:

  1. 什麼是執行緒和程式?
  2. 請簡要描述執行緒與程式的關係,區別及優缺點?
  3. 說說併發與並行的區別?
  4. 為什麼要使用多執行緒呢?
  5. 使用多執行緒可能帶來什麼問題?
  6. 說說執行緒的生命週期和狀態?
  7. 什麼是上下文切換?
  8. 什麼是執行緒死鎖?如何避免死鎖?
  9. 說說 sleep() 方法和 wait() 方法區別和共同點?
  10. 為什麼我們呼叫 start() 方法時會執行 run() 方法,為什麼我們不能直接呼叫 run() 方法?

Java 多執行緒知識進階:

  1. synchronized 關鍵字:① 說一說自己對於 synchronized 關鍵字的瞭解;② 說說自己是怎麼使用 synchronized 關鍵字,在專案中用到了嗎;③ 講一下 synchronized 關鍵字的底層原理;④ 說說 JDK1.6 之後的 synchronized 關鍵字底層做了哪些最佳化,可以詳細介紹一下這些最佳化嗎;⑤ 談談 synchronized 和 ReentrantLock 的區別。
  2. volatile 關鍵字: ① 講一下 Java 記憶體模型;② 說說 synchronized 關鍵字和 volatile 關鍵字的區別。
  3. ThreadLocal:① 簡介;② 原理;③ 記憶體洩露問題。
  4. 執行緒池:① 為什麼要用執行緒池?;② 實現 Runnable 介面和 Callable 介面的區別;③ 執行 execute() 方法和 submit() 方法的區別是什麼呢?;④ 如何建立執行緒池。
  5. Atomic 原子類: ① 介紹一下 Atomic 原子類;② JUC 包中的原子類是哪 4 類?;③ 講講 AtomicInteger 的使用;④ 能不能給我簡單介紹一下 AtomicInteger 類的原理。
  6. AQS :① 簡介;② 原理;③ AQS 常用元件。

step 3(可選):作業系統與計算機網路

作業系統這方面我覺得掌握作業系統的基礎知識和 Linux 的常用命令就行以及一些重要概念就行了。

關於作業系統的話,我沒有什麼作業系統方面的書籍可以推薦,因為我自己也沒認真看過幾本。因為作業系統比較枯燥的原因,我建議這部分看先看影片學可能會比較好一點。我推薦一個 Github 上開源的哈工大《作業系統》課程給大家吧!地址: 。

另外,對於 Linux 我們要掌握基本的使用就需要對一些常用命令非常熟悉比如:目錄切換命令、目錄操作命令、檔案的操作命令、壓縮或者解壓檔案的命令等等。推薦一個 Github 上學習 Linux 的開源文件:

計算機網路方面的學習,我覺得掌握基本的知識就行了,不需要太深究,一般面試對這方面要求也不高,畢竟不是專門做網路的。推薦 《網路是怎樣連線的》《圖解 HTTP》 這兩本書來看,這兩本書都屬於比較有趣易懂的型別,也適合沒有基礎的人來看。

step 4(可選):資料結構與演算法

如果你想進入大廠的話,我推薦你在學習完 Java 基礎或者多執行緒之後,就開始每天抽出一點時間來學習演算法和資料結構。為了提高自己的程式設計能力,你也可以堅持刷 。就目前國內外的大廠面試來說,刷 Leetcode 可以說已經成了不得不走的一條路。

對於想要入門演算法和資料結構的朋友,建議看這兩本書 《演算法圖解》《大話資料結構》,這兩本書雖然算不上很經典的書籍,但是比較有趣,對於剛入門演算法和資料結構的朋友非常友好。《演算法導論》 非常經典,但是對於剛入門的就不那麼友好了。

另外,還有一本非常讚的演算法書推薦給各位,這本書的名字就叫 《演算法》,書中的程式碼都是用 Java 語言編寫。這本書的優點太多太多比如它的講解基礎而全面、對閱讀者比較友好等等。我覺得這本書唯一的缺點就是太厚了 (小聲 BB,可能和作者講解某些知識點的時候有點囉嗦有關)。除了這本書之外,《劍指 offer》《程式設計珠璣》《程式設計之美》 這三本書都被很多大佬推薦過了,對於演算法面試非常有幫助。《演算法之美》 這本書也非常不錯,非常適合閒暇的時候看。

step 5:前端知識

這一步主要是學習前端基礎 (HTML、CSS、JavaScript),當然 BootStrap、Layui 等等比較簡單的前端框架你也可以瞭解一下。網上有很多這方面資源,我只推薦一個大部分初學這些知識都會看的網站: ,這個網站用來回顧知識也很不錯 。推薦先把 HTML、CSS、JS 的基礎知識過一遍,然後透過一個實際的前端專案來鞏固。

現在都是前後端分離,就目前來看大部分專案都優先選擇 React、Angular、Vue 這些厲害的框架來開發。如果你想往全棧方向發展的話(筆主目前的方向,我用 React 在公司做過兩個小型專案),建議先把 JS 基礎打好,然後再選擇 React、Angular、Vue 其中的一個來認真學習一下。國內使用 Vue 比較多一點,國外一般用的是 React 和 Angular。

step 5:MySQL

學習 MySQL 的基本使用,基本的增刪改查,SQL 命令,索引、儲存過程這些都學一下吧!推薦書籍 《SQL 基礎教程(第 2 版)》(入門級)、《高效能 MySQL : 第 3 版》(進階)、《MySQL 必知必會》

step 6:常用工具

  1. Maven :建議學習常用框架之前可以提前花半天時間學習一下Maven的使用。(到處找 Jar 包,下載 Jar 包是真的麻煩費事,使用 Maven 可以為你省很多事情)。
  2. Git :基本的 Git 技能也是必備的,試著在學習的過程中將自己的程式碼託管在 Github 上。()
  3. Docker :學著用 Docker 安裝學習中需要用到的軟體比如 MySQL ,這樣方便很多,可以為你節省不少時間。()

step 7:常用框架

學習 Struts2(可不用學)、SpringSpringMVCHibernateMybatisshiro 等框架的使用, (可選) 熟悉 Spring 原理(大廠面試必備),然後很有必要學習一下 SpringBoot學好 SpringBoot 真的很重要。很多公司對於應屆生都是直接上手 SpringBoot,不過如果時間允許的話,我還是推薦你把 SpringSpringMVC 提前學一下。

關於 SpringBoot ,推薦看一下筆主開源的 (SpringBoot 核心知識點總結。 基於 Spring Boot 2.19+)。

Spring 真的很重要! 一定要搞懂 AOP 和 IOC 這兩個概念。Spring 中 bean 的作用域與生命週期、SpringMVC 工作原理詳解等等知識點都是非常重要的,一定要搞懂。

推薦看文件+影片結合的方式,中途配合實戰來學習,學習期間可以多看看 JavaGuide 對於。

另外,都 2019 年了,我們千萬不要再學 JSP 了好不?

step 8:高效能網站架構

學習 Dubbo、Zookeeper、常見的訊息佇列(比如ActiveMq、RabbitMQ)、RedisElasticsearch 的使用。

我當時學習這些東西的時候是透過黑馬影片最後一個分散式專案來學的,我的這種方式也是很多人普遍採用和接受的方式。我覺得應該是掌握這些知識點比較好的一種方式了,另外,推薦邊看影片邊自己做,遇到不懂的知識點要及時查閱網上部落格和相關書籍,這樣學習效果更好。

一定要學會擴充知識,養成自主學習的意識。 黑馬專案對這些知識點的介紹都比較蜻蜓點水。

step 9:其他

可以再回來看一下多執行緒方面的知識,還可以利用業餘時間學習一下 Netty ,這樣簡歷上也可以多點東西。如果想去大廠, 的一些知識也是必學的(Java 記憶體區域、虛擬機器垃圾演算法、虛擬垃圾收集器、JVM 記憶體管理)推薦《深入理解 Java 虛擬機器:JVM 高階特性與最佳實踐(最新第二版》和《實戰 Java 虛擬機器》,如果嫌看書麻煩的話,你也可以看我整理的文件。

另外,現在微服務特別火,很多公司在面試也明確要求需要微服務方面的知識。如果有精力的話可以去學一下 SpringCloud 生態系統微服務方面的東西。

總結

我上面主要概括一下每一步要學習的內容,對學習規劃有一個建議。知道要學什麼之後,如何去學呢?我覺得學習每個知識點可以考慮這樣去入手:

  1. 官網(大機率是英文,不推薦初學者看)
  2. 書籍(知識更加系統完全,推薦)
  3. 影片(比較容易理解,推薦,特別是初學的時候。慕課網和嗶哩嗶哩上面有挺多學習影片可以看,只直接在上面搜尋關鍵詞就可以了)
  4. 網上部落格(解決某一知識點的問題的時候可以看看)

這裡給各位一個建議,看影片的過程中最好跟著一起練,要做筆記!!!

最好可以邊看影片邊找一本書籍看,看影片沒弄懂的知識點一定要儘快解決,如何解決?

首先百度/Google,透過搜尋引擎解決不了的話就找身邊的朋友或者認識的一些人。另外,一定要進行專案實戰!很多人這時候就會問沒有實際專案讓我做怎麼辦?我覺得可以透過下面這幾種方式:

  1. 在網上找一個符合自己能力與找工作需求的實戰專案影片或者部落格跟著老師一起做。做的過程中,你要有自己的思考,不要淺嘗輒止,對於很多知識點,別人的講解可能只是滿足專案就夠了,你自己想多點知識的話,對於重要的知識點就要自己學會去往深處學。
  2. Github 或者碼雲上面有很多實戰類別專案,你可以選擇一個來研究,為了讓自己對這個專案更加理解,在理解原有程式碼的基礎上,你可以對原有專案進行改進或者增加功能。
  3. 自己動手去做一個自己想完成的東西,遇到不會的東西就臨時去學,現學現賣(這種方式比較難,初學不推薦用這種方式,因為你腦海中沒有基本的概念,寫出來的程式碼一般會很難或者根本就做不出來一個像樣的東西)。

做專案不光要做,還要改進,改善。另外,如果你的老師有相關 Java 後臺專案的話,你也可以主動申請參與進來。

一定要學會分配自己時間,要學的東西很多,真的很多,搞清楚哪些東西是重點,哪些東西僅僅瞭解就夠了。一定不要把精力都花在了學各種框架上,演算法和資料結構真的很重要!

另外,學習的過程中有一個可以參考的文件很重要,非常有助於自己的學習。我當初弄 JavaGuide: 的很大一部分目的就是因為這個。客觀來說,相比於部落格,JavaGuide 裡面的內容因為更多人的參與變得更加準確和完善。

開源專案推薦

作者的其他開源專案推薦:

  1. : 適合新手入門以及有經驗的開發人員查閱的 Spring Boot 教程(業餘時間維護中,歡迎一起維護)。
  2. : 我覺得技術人員應該有的一些好習慣!
  3. spring-security-jwt-guide :從零入門 !Spring Security With JWT(含許可權驗證)後端部分程式碼。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2318/viewspace-2824079/,如需轉載,請註明出處,否則將追究法律責任。

相關文章