給學妹的 Java 學習路線

武培軒發表於2020-04-19

大家好,這篇文章主要是講解下如何自學 Java,這個問題有很多粉絲私信問過,今天又有直系學妹問我如何學習 Java?

我就以我的經歷,總結下分享給大家,有不當指出或者有更好的方法建議也歡迎留言指出,大家一起交流進步。

首先給出一張思維導圖,圖片和思維導圖原始檔可以在公眾號武培軒後臺回覆java即可。

Java 學習路線

首先第一步就是學習 Java 基礎:

Java 基礎

Java 是一門物件導向的程式語言,所以在瞭解基礎語法之後,還要搞懂它的物件導向程式設計思想(比如涉及到的封裝、繼承、多型、類、物件、介面等),除此之外還有泛型、反射等知識也需要學習,因為反射在許多框架中都有所應用。

除上述外,IO、集合、異常等也需要去了解下,不僅在面試中會問到,工作中也會用到。

有精力的可以去了解下 Java 8 的新特性,比如 Lambda 表示式、Stream 流操作以及新的 Date API

關於書籍的話,我推薦 《Java核心技術卷1:基礎知識》《Java核心技術卷2:高階特性》,這兩本書都比較適合入門,另外 《碼出高效:Java開發手冊》 這本書也挺好的,還不是非常厚,可以閱讀下。

如果覺得看書看不進去的話可以看視訊學習(尚矽谷、黑馬、達內等),另外我覺得在學習完一些知識後,可以自己動手去敲程式碼玩玩,興趣不一定是最好的老師,但成就感一定是

再分享一個我學習新知識的方法-閉環式學習:再學習完之後,通過思考對知識進行總結(可以使用思維導圖),然後和其他人進行講解分享,若身邊沒有這個環境的話,也可以在技術交流群裡進行分享。

閉環式學習

在瞭解了 Java 基礎知識後,可以去學習下併發相關的知識:

併發

併發相對於 Java 基礎可能會有些難以理解,可以通過 《Java併發程式設計實戰》《Java併發程式設計之美》 等書籍進行學習,主要包括如下內容:

  • 併發理論基礎:執行緒安全、鎖、執行緒等
  • 併發工具類:Lock、Condition、Semaphore、ReadWriteLock、CountDownLatch 等
  • 併發設計模式:Future、Master/Salve、Copy-on-Write、Balking 等

在你瞭解完併發相關知識後, 你可能會發現它很多與 JVM 有關,因此來了解下 JVM:

JVM

對於 JVM 的學習,我這裡推薦的書籍是 《深入理解Java虛擬機器:JVM高階特性與最佳實踐》(第三版可以在微信讀書上閱讀),雖然在開發中很少用到,但是我們不光要知其然,還要知其所以然,因為在學習 JVM 後,才能更深刻了解到 Java 程式是如何被執行以及優化的,況且在面試中也是必考點,JVM 方面內容主要包含:JMM、GC 以及調優等。

資料結構與演算法

演算法能力不是短時間內可以迅速提高的,因此可以在學習完 Java 基礎之後就可以著手學習了,許多大廠對於演算法的要求還是蠻高的,推薦剛開始可以刷劍指 Offer,然後刷 LeetCode,做完題一定要分類總結

演算法方面的書籍,入門級別的我推薦 《大話資料結構》、《演算法圖解》、《我的第一本演算法書》,圖文並茂,很適合入門,針對面試的話,我推薦 《程式設計之美》、《劍指offer》、《程式設計珠璣》、《程式設計師面試程式碼指南》,這幾本書的題刷完完全足夠應付面試了。

同時一定要對基本的資料結構瞭如指掌(連結串列、陣列、棧、佇列、雜湊表、樹等),還有常見的演算法也要了解,能夠手撕程式碼,比如:二分搜尋、分治、快排、動態規劃、回溯法、雙指標等。

作業系統

作業系統的書籍推薦閱讀 《計算機組成原理》、《作業系統》、《程式是怎樣跑起來的》,在瞭解了底層執行機制後,對於以後的學習是很有幫助的,主要內容包括:程式、執行緒、記憶體相關原理。

計算機網路

計算機網路方面的資料,我推薦 《計算機網路自頂向下方法》,書中的例子都很形象,很適合入門,另外 《網路是怎樣連線的》、《圖解HTTP》 這兩部也很適合初學者閱讀。

資料庫

首先簡單學習下 MySQL 的基本語法,最好了解下索引的原理以及優化的方式。書籍方面,《高效能 MySQL》 有點厚,不過知識很全,《MySQL 技術內幕—InnoDB 儲存引擎》 這本書講的就比較深了,想要深入的可以閱讀下。

Redis 方面的書籍推薦 《Redis設計與實現》,感覺講的挺好的,從原始碼角度解析 Redis 架構設計。

設計模式

設計模式方面的書籍推薦 《設計模式之禪》《大話設計模式》《HeadFirst 設計模式》,這三本書都挺適合入門的,設計模式有 23 種,不需要每一個都很熟悉,只需要把常用常見的幾個掌握就好了:單例模式、工廠模式、策略模式、代理模式等。

框架

瞭解下 Spring、SpringMVC、Mybatis 等框架的基本使用,可以通過一個實戰專案去了解下,這樣更能夠去知道每個框架都是幹啥的,然後再去了解相關的原理,像 Spring 和 SpringMVC 的原理在面試中還是比較常考的,比如 IOC 和 AOP 的原理,SpringMVC 的執行流程等。

框架的學習其實推薦看官方文件,裡面的例子都很全面和經典,如果英語不好的話,可以去閱讀相關的書籍,比如 《Spring實戰》

另外,SpringBoot 框架也可以去了解下,通過實戰 demo 可以很快地掌握如何使用。

微服務現在公司用的也比較多,在有時間和精力的前提下,可以通過實戰專案瞭解學習下 SpringCloud

在做完專案之後,要多總結,還可以自己去擴充套件完善下自己的專案。

中介軟體

這部分就是多多益善了,你掌握的越多越好,比如訊息佇列、RPC 通訊框架等,可以在掌握其使用後,在有精力的前提下了解原理實現。

工具

工欲善其事,必先利其器,在開發中可能需要了解如下工具:

  • 開發工具:我這裡推薦 IDEA,不過 Eclipse 也是可以的,只是個開發工具,不用太糾結
  • 專案管理:Maven 和 Gradle 的都有,一般 Maven 的多一些,選擇一個學習即可
  • 版本控制:主要是 Git 和 SVN,不過 SVN 目前用的比較少了,可以學習下 Git,熟練使用即可

原始碼

在能夠熟練使用一個東西之後,有餘力的再去鑽研原始碼,可以先閱讀 JDK 原始碼,把常用的集合類、juc 併發包下的、執行緒相關的看下,看的時候可以結合視訊或者部落格進行閱讀,方便理解。

在對 JDK 常用類的原始碼有所瞭解後,可以去閱讀 Spring 等框架的原始碼,學習優秀開發者的程式設計思想。

總結

在有了學習目標和學習路線後,可以根據自己的情況,選擇視訊、書籍等方式去學習,學習之後要多思考、多總結,能夠分享給其他人最好,只有你能把你學到了分享出來,你才能確保你真的懂了。

學習本來就是反人類的行為,可以和身邊的小夥伴一起學習,有一個良好的氛圍是十分有益的,若沒有這個環境也可以公眾號武培軒回覆加群一起技術交流討論。

基礎不牢,山崩地裂,建議大家還是穩紮穩打,這樣才可以走的更長更遠。

還有就是一定要有一個自己的規劃和方向,然後朝著目標一步一步地學習奮鬥,只要堅持,總會有回報的。

寫得不好的或者大家有什麼更好的建議,也歡迎留言討論,你的一句話,可能就會幫助到一個即將入門的新手。

最好的關係就是互相成就,大家的在看、轉發、留言三連就是我創作的最大動力。

相關文章