史上最強的Java學習教程,為小白量身定製!

語言: CN / TW / HK

不知不覺踏入網際網路行業已經四年了。

回顧當初第一次接觸Java,是在大學的課堂,晦澀難懂的知識點,現在還能想起被期末考試支配的恐懼。

直到踏入網際網路這個行業,再回想一下自己整個入行到工作的歷程,總結了一下學習Java的路線,希望可以幫到各位初入行的Java小白。

一、大綱

多數事情,都要有目標的行動,行動為了完成目標。還可以把目標寫下來或打印出來,貼到身邊明顯的地方,有利於督促自己。

學Java,但是不能只學Java,因為在計算機這棵大樹中,Java只是一片葉子。

一個合格的Coder,除了Java,還需要熟悉作業系統、計算機網路、資料庫、前端、中介軟體、框架等等這些東西,如果要成為一個Top Coder,專案管理、英語、溝通、演算法也很重要。

就針對就業來說,個人覺得掌握 Java基礎、計算機基礎、工具的使用、資料庫、web前端,Javaweb,框架使用、Linux、中介軟體,就算一個入門級的Coder了。

一、Java基礎

我把 Java 基礎部分真正要學的內容列一下。

01、Java 簡介

  • Java語言概述
  • Java中JDK、JRE、JVM三者之間的關係
  • Java中public class與class
  • Java識別符號與關鍵字
  • Java 變數
  • Java 資料型別
  • Java運算子
  • Java 表示式 & 語句 & 程式碼塊
  • Java中的註釋

02、Java 控制語句

  • Java if else
  • Java switch 語句
  • Java for 迴圈
  • Java while 迴圈
  • Java break 語句
  • Java continue 語句

03、Java 陣列

  • Java 陣列
  • 多維陣列
  • Java 陣列複製

04、Java 面向物件(1)

  • Java 類和物件
  • Java 方法
  • Java 方法過載
  • Java 構造方法
  • Java 字串
  • Java 訪問許可權
  • Java this 關鍵字
  • Java final 關鍵字
  • Java 遞迴
  • Java instanceof 操作符

05、Java 面向物件(2)

  • Java 繼承
  • Java 方法重寫
  • Java super 關鍵字
  • 抽象類 & 抽象方法
  • Java 介面
  • Java 多型
  • Java 封裝

06、Java 面向物件(3)

  • 巢狀&內部類
  • Java static 關鍵字
  • Java 匿名內部類
  • Java 單例
  • Java 列舉類
  • Java 列舉構造方法
  • Java 列舉字串
  • Java 反射

07、Java 異常處理

  • Java 異常簡介
  • Java 異常處理
  • Java try catch
  • Java throw 和 throws
  • Java 捕獲多個異常
  • Java try-with-resources
  • Java 註解
  • Java 註解型別
  • Java 日誌
  • Java 斷言

08、Java 集合

  • Java 集合框架
  • Java 集合介面
  • Java List 介面
  • Java ArrayList
  • Java Vector
  • Java Stack

09、Java 佇列

  • Java 佇列介面
  • Java 優先順序佇列
  • Java 雙端佇列介面
  • Java LinkedList
  • Java 陣列佇列
  • Java 阻塞佇列介面
  • Java ArrayBlockingQueue
  • Java LinkedBlockingQueue

10、Java Map

  • Java Map 介面
  • Java HashMap
  • Java LinkedHashMap
  • Java WeakHashMap
  • Java EnumMap
  • Java SortedMap 介面
  • Java NavigableMap 介面
  • Java TreeMap
  • Java ConcurrentMap 介面
  • Java ConcurrentHashMap

11、Java Set

  • Java Set 介面
  • Java HashSet
  • Java EnumSet
  • Java LinkedHashSet
  • Java SortedSet 介面
  • Java NavigableSet 介面
  • Java TreeSet
  • Java 集合演算法
  • Java 迭代器介面
  • Java ListIterator 介面

12、Java 位元組流

  • Java IO 流簡介
  • Java InputStream
  • Java OutputStream
  • Java FileInputStream
  • Java FileOutputStream
  • Java ByteArrayInputStream
  • Java ByteArrayOutputStream
  • Java ObjectInputStream
  • Java ObjectOutputStream
  • Java BufferedInputStream
  • Java BufferedOutputStream
  • Java PrintStream

13、Java 字元流

  • Java Reader
  • Java Writer
  • Java InputStreamReader
  • Java OutputStreamWriter
  • Java FileReader
  • Java FileWriter
  • Java BufferedReader
  • Java BufferedWriter
  • Java StringWriter
  • Java PrintWriter

14、Java 併發程式設計

  • 程序與線
  • 多執行緒的入門類和介面
  • 執行緒組和執行緒優先順序
  • 執行緒的狀態及主要轉化方法
  • 執行緒間的通訊
  • 重排序和 happens-before
  • volatile
  • synchronized 與鎖
  • CAS 與原子操作
  • AQS
  • 計劃任務
  • Stream 平行計算原理
  • Frok/Join
  • 通訊工具類
  • CopyOnWrite
  • 併發集合容器
  • 鎖介面和類
  • 阻塞佇列
  • 執行緒池原理

15、Java 虛擬機器

  • Java 記憶體結構
  • 垃圾回收
  • JVM 記憶體區域
  • Java 虛擬機器棧
  • class 檔案
  • 位元組碼指令
  • JVM 引數調優
  • Java 物件模型
  • HotSpot
  • 類載入機制
  • 編譯和反編譯
  • 反編譯工具(javap)
  • JIT
  • 虛擬機器效能監控和故障處理工具(jps、jstack、jmap、jstat、jconsole、javap)

怎麼系統化的學習呢?

推薦一套視訊,動力節點老杜講的Java零基礎教程,在 B 站上看。

 https://www.bilibili.com/video/BV1Rx411876f

二、計算機基礎

計算機基礎都包括哪些呢?

計算機組成原理、作業系統、計算機網路、資料結構與演算法。

計算機組成原理

先說計算機組成原理,這部分內容主要涉及

  • 計算機系統概述
  • 資料與運算
  • CPU 概述
  • 儲存子系統概述
  • 匯流排和 IO 概述

計算機基礎知識的學習建議學習《計算機專業導論》

計算機專業導論可以幫助你對即將學習的學科有一個大致的瞭解,知識注重廣度而非深度。

軟體工程專業的同學也可以去看《軟體工程導論》

三、工具的使用

如果你既想寫出質量槓槓的 Java 程式碼,又想追求開發效率,用 Intellij IDEA 準沒錯!

可以去 B 站上看一下這個 Intellij IDEA 的教學視訊。

www.bilibili.com/video/BV14t411z77T

大家都知道,版本控制系統非常重要!!!!!!

即便你只是一個人在編碼,它也可以幫助你建立專案的快照、記錄每個改動、建立不同的分支等等。

如果你參與的是多人協作,它更是一個無價之寶,你不僅可以看到別人對程式碼的修改,還可以同時解決由於並行開發帶來的衝突。

版本控制系統有很多,其中最突出的代表就是 Git。

想要把 Git 學好的話,可以看看這套Git教學視訊。

www.bilibili.com/video/BV1iv411p7ap

四、資料庫

Java 實習工作,不外乎增刪改查嘛,不要抱太多幻想,基本上任何一個人的實習經歷,都是從 CRUD 開始的。

要學習MySQL 的話,推薦看下邊這套

www.bilibili.com/video/BV1fx411X7BD

B站上很經典的視訊教程,好評如潮,涵蓋MySQL的全部知識點了

這一套組合拳打下來,找一份實習工作我認為是完全沒問題了。

這也是一個 Java 後端程式設計師必須掌握的技能點,缺一不可!

五、web前端

雖然是作為Java後端開發Coder,但是面對一個完整的專案,與前端有著不可或缺的關係。

簡單的前端知識我們還是需要了解的。

還有就是,也不是所有的公司都是區分前後端的,全棧工程師顯然更厲害。

前端基礎技術(HTML/CSS/JavaScript)

HTML:

www.bilibili.com/video/BV11t411K74Q

CSS:

www.bilibili.com/video/BV1tt411M7Vj

JavaScript:

www.bilibili.com/video/BV1Ft411N7R3

另外推薦一些你會遇到的知識學習教程

Linux基礎知識(用於做web伺服器)

www.bilibili.com/video/BV1Li4y1V7pG

Vue.js(最容易上手的前端框架)

www.bilibili.com/video/BV1q54y1v7T7

六、JavaWeb

Web階段過後,就是JavaWeb了。

推薦這兩套視訊,不同版本的,直接跟著視訊學

JavaWeb【IDEA版本】

www.bilibili.com/video/BV1Yz411B7Pk

JavaWeb【Eclipse經典版】

www.bilibili.com/video/BV18z411i7g

七、框架

要找到一份 Java 實習工作的話,Spring 的系列框架是要懂一些,不要求多熟練,如果可以掌握一個框架,尤其是 Spring Boot,那對你也有幫助。因為如果你不會這玩意的話,基本上是做不了專案的。

  • 主要涉及的內容有:
  • Spring
  • Spring MVC
  • MyBatis
  • Spring Boot

關於 SSM(Spring+Spring MVC+MyBatis)的學習,可以看下面這個視訊。

www.bilibili.com/video/BV1Ug4y1i7W7

關於 Spring Boot 的學習,可以看下邊這個視訊

www.bilibili.com/video/BV1pK411G7aw

學了 SSM + Spring Boot,就可以上手實戰專案了,像 GitHub 上的 vhr 和 mall,都是不錯的練手專案,強烈推薦。

八、網際網路分散式技術

這時候你的水平還是僅僅存留在對框架的簡單運用上,要想進一步學習,還要找一些框架的原始碼,進行深入瞭解。

除此之外還有這個時候的你應該對設計模式瞭如指掌,還需要看一些關於程式碼編寫優化的書,提高自己的程式碼能力。

可以學習分散式架構、微服務等提升自己的技術。

隨著我們的業務量越來越大和越重要,單體的架構模式已經無法對應大規模的應用場景,而且系統中決不能存在單點故障導致整體不可用,所以只有垂直或是水平拆分業務系統,使其形成一個分散式的架構,利用分散式架構來冗餘系統消除單點的故障,從而提高整個系統的可用性。

同時分散式系統的模組重用度更高,速度更快,擴充套件性更高是大型的專案必不可少的環節。

而微服務架構引入策略 – 對傳統企業而言,開始時可以考慮引入部分合適的微服務架構原則對已有系統進行改造或新建微服務應用,逐步探索及積累微服務架構經驗,而非全盤實施微服務架構。

既然已經踏入網際網路圈子,成為程式設計師中的一員,就要秉持“一直學習”的觀念,經常更新自己的技術庫,對於專業的java程式設計師來說真的不誇張!

推薦視訊:

Dubbo視訊教程:https://www.bilibili.com/video/BV1Sk4y197eD

Redis視訊教程:https://www.bilibili.com/video/BV14t411H76W

Maven多模組管理:https://www.bilibili.com/video/BV1kg4y187td

Linux視訊教程:https://www.bilibili.com/video/BV1dt411W7N1

SpringCloud視訊教程:https://www.bilibili.com/video/BV1ZV411y7ix

SpringCloud Alibaba視訊教程:https://www.bilibili.com/video/BV1nK4y1j7gL

Nginx視訊教程:https://www.bilibili.com/video/BV11V411C7r9

Spring Session視訊教程:https://www.bilibili.com/video/BV1iK411p7dZ

FastDFS視訊教程:https://www.bilibili.com/video/BV1ta4y1v7Kw

RabbitMQ視訊教程:https://www.bilibili.com/video/BV1Ap4y1D7tU

MyCat視訊教程:https://www.bilibili.com/video/BV1gK4y1b7iU

Docker視訊教程:https://www.bilibili.com/video/BV1QA411L7B5

Kubernetes(k8s)視訊教程:https://www.bilibili.com/video/BV1KU4y147g3

MySQL叢集視訊教程:https://www.bilibili.com/video/BV1Rg4y1i7VR

SVN視訊教程:https://www.bilibili.com/video/BV1ux411j7H2

Apache Shiro視訊教程:https://www.bilibili.com/video/BV14T4y1g75M

大型網際網路電商專案:https://www.bilibili.com/video/BV1RQ4y1K7Pq

總之,先把主要知識點掌握徹底掌握,慢一點是正常的,求快得不償失,等把底層基礎知識打牢,在學東西的時候就會快很多,以後完全可以多找專案練手,學習效率嗖嗖的,有時候慢就是快。