給學妹的 Java 學習路線

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

總結

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

學習原本就是反人類的行爲,能夠和身邊的小夥伴一塊兒學習,有一個良好的氛圍是十分有益的,若沒有這個環境也能夠公衆號武培軒回覆加羣一塊兒技術交流討論。

基礎不牢,山崩地裂,建議你們仍是穩紮穩打,這樣才能夠走的更長更遠。

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

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

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

相關文章
相關標籤/搜索