給學妹的 Java 學習路線

大家好,這篇文章主要是講解下如何自學 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 等框架的源碼,學習優秀開發者的編程思想。

總結

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

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

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

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

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

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

Tags: