原創為了你,我又又又把Java學習路線和方法更新了一遍

      網友投稿 880 2025-04-01

      到目前為止,我覺得不管是在公眾號后臺、知乎還是微信上面我被問的做多的就是:“大佬,有沒有 Java 學習路線和方法”(大佬屬現代流行的客氣稱呼,本人非大佬哈)。大概 5 個多月之前,我在公眾號發過一篇類似的文章:【原創】Java 學習路線以及方法推薦。今天突然想到能把一些讀者問我的一些常見問題匯總起來,于是利用下班后的時間,我先把這篇文章重新完善了一遍。另外,我把 Java 學習的一些常見問題整理在了 JavaGuide 上,并且單獨為它開了一個 tab,以后我會整理一些常見的 Java 學習方向的問題放在這里避免重復回答一些常見的問題。


      備注:JavaGuide地址為?https://github.com/Snailclimb/JavaGuide?,或者直接在瀏覽器搜索:JavaGuide Github?出來的第一個搜索結果應該就是了。

      到目前為止,我覺得不管是在公眾號后臺、知乎還是微信上面我被問的做多的就是:“大佬,有沒有 Java 學習路線和方法”(大佬屬現代流行的客氣稱呼,本人非大佬哈)。大概 5 個多月之前,我在公眾號發過一篇類似的文章:【原創】Java 學習路線以及方法推薦。今天突然想到能把一些讀者問我的一些常見問題匯總起來,于是利用下班后的時間,我先把這篇文章重新完善了一遍。另外,我把 Java 學習的一些常見問題整理在了 JavaGuide 上,并且單獨為它開了一個 tab,以后我會整理一些常見的 Java 學習方向的問題放在這里避免重復回答一些常見的問題。

      備注:JavaGuide地址為?https://github.com/Snailclimb/JavaGuide?,或者直接在瀏覽器搜索:JavaGuide Github?出來的第一個搜索結果應該就是了。

      前言

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

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

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

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

      學習路線以及方法推薦

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

      學習某個知識點的過程中如果不知道看什么書的話,可以查看這篇文章 :Java 學習必備書籍推薦終極版![1]。

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

      下面提到的一些視頻,公眾號[2]后臺回復關鍵“1”即可獲取!

      step 1:Java 基礎

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

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

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

      學習完之后可以看一下下面這幾篇文章,檢查一下自己的學習情況:

      Java 基礎知識回顧[3]

      Java 基礎知識疑難點/易錯點[4]

      一些重要的 Java 程序設計題[5]

      step 2:多線程的簡單使用

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

      學習完多線程之后可以通過下面這些問題檢測自己是否掌握。

      Java 多線程知識基礎:

      什么是線程和進程?

      請簡要描述線程與進程的關系,區別及優缺點?

      說說并發與并行的區別?

      為什么要使用多線程呢?

      使用多線程可能帶來什么問題?

      說說線程的生命周期和狀態?

      什么是上下文切換?

      什么是線程死鎖?如何避免死鎖?

      說說 sleep() 方法和 wait() 方法區別和共同點?

      為什么我們調用 start() 方法時會執行 run() 方法,為什么我們不能直接調用 run() 方法?

      Java 多線程知識進階:

      synchronized 關鍵字:① 說一說自己對于 synchronized 關鍵字的了解;② 說說自己是怎么使用 synchronized 關鍵字,在項目中用到了嗎;③ 講一下 synchronized 關鍵字的底層原理;④ 說說 JDK1.6 之后的 synchronized 關鍵字底層做了哪些優化,可以詳細介紹一下這些優化嗎;⑤ 談談 synchronized 和 ReentrantLock 的區別。

      volatile 關鍵字:① 講一下 Java 內存模型;② 說說 synchronized 關鍵字和 volatile 關鍵字的區別。

      ThreadLocal:① 簡介;② 原理;③ 內存泄露問題。

      線程池:① 為什么要用線程池?;② 實現 Runnable 接口和 Callable 接口的區別;③ 執行 execute() 方法和 submit() 方法的區別是什么呢?;④ 如何創建線程池。

      Atomic 原子類: ① 介紹一下 Atomic 原子類;② JUC 包中的原子類是哪 4 類?;③ 講講 AtomicInteger 的使用;④ 能不能給我簡單介紹一下 AtomicInteger 類的原理。

      AQS :① 簡介;② 原理;③ AQS 常用組件。

      另外,推薦看一下下面這幾篇文章:

      Java 并發基礎常見面試題總結[6]

      Java 并發進階常見面試題總結[7]

      并發容器總結[8]

      樂觀鎖與悲觀鎖[9]

      JUC 中的 Atomic 原子類總結[10]

      AQS 原理以及 AQS 同步組件總結[11]

      step 3(可選):操作系統與計算機網絡

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

      關于操作系統的話,我沒有什么操作系統方面的書籍可以推薦,因為我自己也沒認真看過幾本。因為操作系統比較枯燥的原因,我建議這部分看先看視頻學可能會比較好一點。我推薦一個 Github 上開源的哈工大《操作系統》課程給大家吧!地址:https://github.com/hoverwinter/HIT-OSLab 。

      另外,對于 Linux 我們要掌握基本的使用就需要對一些常用命令非常熟悉比如:目錄切換命令、目錄操作命令、文件的操作命令、壓縮或者解壓文件的命令等等。推薦一個 Github 上學習 Linux 的開源文檔:《Java 程序員眼中的 Linux》[12]

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

      step 4(可選):數據結構與算法

      【原創】為了你,我又又又把Java學習路線和方法更新了一遍

      如果你想進入大廠的話,我推薦你在學習完 Java 基礎或者多線程之后,就開始每天抽出一點時間來學習算法和數據結構。為了提高自己的編程能力,你也可以堅持刷?Leetcode[13]。就目前國內外的大廠面試來說,刷 Leetcode 可以說已經成了不得不走的一條路。

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

      step 5:前端知識

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

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

      step 5:MySQL

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

      下面這些 MySQL 相關的文章強烈推薦你看看:

      【推薦】MySQL/數據庫 知識點總結[14]

      阿里巴巴開發手冊數據庫部分的一些最佳實踐[15]

      一千行 MySQL 學習筆記[16]

      MySQL 高性能優化規范建議[17]

      數據庫索引總結[18]

      [事務隔離級別(圖文詳解)](../database/事務隔離級別(圖文詳解 "事務隔離級別(圖文詳解 "事務隔離級別(圖文詳解)")").md)

      一條 SQL 語句在 MySQL 中如何執行的[19]

      step 6:常用工具

      Maven?:建議學習常用框架之前可以提前花半天時間學習一下Maven的使用。(到處找 Jar 包,下載 Jar 包是真的麻煩費事,使用 Maven 可以為你省很多事情)。

      Git?:基本的 Git 技能也是必備的,試著在學習的過程中將自己的代碼托管在 Github 上。(Git 入門[20])

      Docker?:學著用 Docker 安裝學習中需要用到的軟件比如 MySQL ,這樣方便很多,可以為你節省不少時間。(Docker 入門[21])

      step 7:常用框架

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

      關于 SpringBoot ,推薦看一下筆主開源的?Spring Boot 教程[22](SpringBoot 核心知識點總結。基于 Spring Boot 2.19+)。

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

      推薦看文檔+視頻結合的方式,中途配合實戰來學習,學習期間可以多看看 JavaGuide 對于常用框架的總結[23]。

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

      step 8:高性能網站架構

      學習?Dubbo、Zookeeper、常見的消息隊列(比如ActiveMq、RabbitMQ)、Redis?、Elasticsearch?的使用。

      我當時學習這些東西的時候是通過黑馬視頻最后一個分布式項目來學的,我的這種方式也是很多人普遍采用和接受的方式。我覺得應該是掌握這些知識點比較好的一種方式了,另外,推薦邊看視頻邊自己做,遇到不懂的知識點要及時查閱網上博客和相關書籍,這樣學習效果更好。

      一定要學會拓展知識,養成自主學習的意識。?黑馬項目對這些知識點的介紹都比較蜻蜓點水。

      step 9:其他

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

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

      總結

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

      官網(大概率是英文,不推薦初學者看)。

      書籍(知識更加系統完全,推薦)。

      視頻(比較容易理解,推薦,特別是初學的時候。慕課網和嗶哩嗶哩上面有挺多學習視頻可以看,只直接在上面搜索關鍵詞就可以了)。

      網上博客(解決某一知識點的問題的時候可以看看)。

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

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

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

      在網上找一個符合自己能力與找工作需求的實戰項目視頻或者博客跟著老師一起做。做的過程中,你要有自己的思考,不要淺嘗輒止,對于很多知識點,別人的講解可能只是滿足項目就夠了,你自己想多點知識的話,對于重要的知識點就要自己學會去往深處學。

      Github 或者碼云上面有很多實戰類別項目,你可以選擇一個來研究,為了讓自己對這個項目更加理解,在理解原有代碼的基礎上,你可以對原有項目進行改進或者增加功能。

      自己動手去做一個自己想完成的東西,遇到不會的東西就臨時去學,現學現賣(這種方式比較難,初學不推薦用這種方式,因為你腦海中沒有基本的概念,寫出來的代碼一般會很難或者根本就做不出來一個像樣的東西)。

      ......

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

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

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

      Java 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:EXCEL表格復制到WORD中怎樣保留完整格式
      下一篇:Excel2010中表格分開在兩個窗口中顯示的解決方法
      相關文章
      亚洲AV香蕉一区区二区三区| 亚洲a∨无码一区二区| 中文字幕亚洲日本岛国片| 亚洲第一街区偷拍街拍| 亚洲一久久久久久久久| 久久夜色精品国产噜噜亚洲a| 亚洲五月丁香综合视频| 亚洲无mate20pro麻豆| 亚洲 日韩经典 中文字幕 | 亚洲欧美熟妇综合久久久久 | 亚洲综合小说另类图片动图| 亚洲色偷偷色噜噜狠狠99 | 亚洲AV永久无码区成人网站| 国产亚洲3p无码一区二区| 亚洲狠狠婷婷综合久久久久| 亚洲va中文字幕无码久久| 亚洲国产老鸭窝一区二区三区| 亚洲第一精品福利| 亚洲欧洲日本精品| 亚洲乱码一二三四区乱码| 亚洲精品又粗又大又爽A片| 亚洲AV无码AV男人的天堂不卡| 女bbbbxxxx另类亚洲| 国产精品亚洲mnbav网站| 亚洲婷婷五月综合狠狠爱| 亚洲AV日韩AV天堂一区二区三区| 久久亚洲日韩看片无码| 亚洲另类自拍丝袜第1页| 在线aⅴ亚洲中文字幕| 亚洲AV无码成人精品区日韩| 亚洲色偷拍区另类无码专区| 中文字幕第13亚洲另类| 亚洲AV人无码激艳猛片| 亚洲丝袜中文字幕| 亚洲丶国产丶欧美一区二区三区| 亚洲欧洲中文日韩av乱码| 亚洲国产精品VA在线看黑人| 亚洲精品国产情侣av在线| 亚洲日韩精品国产一区二区三区 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 爱情岛亚洲论坛在线观看|