不知不覺踏入互聯網行業已經四年了。前端
回顧當初第一次接觸Java,是在大學的課堂,晦澀難懂的知識點,如今還能想起被期末考試支配的恐懼。java
直到踏入互聯網這個行業,再回想一下本身整個入行到工做的歷程,總結了一下學習Java的路線,但願能夠幫到各位初入行的Java小白。程序員
多數事情,都要有目標的行動,行動爲了完成目標。還能夠把目標寫下來或打印出來,貼到身邊明顯的地方,有利於督促本身。web
學Java,可是不能只學Java,由於在計算機這棵大樹中,Java只是一片葉子。算法
一個合格的Coder,除了Java,還須要熟悉操做系統、計算機網絡、數據庫、前端、中間件、框架等等這些東西,若是要成爲一個Top Coder,項目管理、英語、溝通、算法也很重要。數據庫
就針對就業來講,我的以爲掌握 Java基礎、計算機基礎、工具的使用、數據庫、web前端,Javaweb,框架使用、Linux、中間件,就算一個入門級的Coder了。 編程
我把 Java 基礎部分真正要學的內容列一下。後端
0一、Java 簡介 設計模式
Java語言概述數組
Java中JDK、JRE、JVM三者之間的關係
Java中public class與class
Java標識符與關鍵字
Java 變量
Java 數據類型
Java運算符
Java 表達式 & 語句 & 代碼塊
Java中的註釋
0二、Java 控制語句
Java if else
Java switch 語句
Java for 循環
Java while 循環
Java break 語句
Java continue 語句
0三、Java 數組
Java 數組
多維數組
Java 數組複製
0四、Java 面向對象(1)
Java 類和對象
Java 方法
Java 方法重載
Java 構造方法
Java 字符串
Java 訪問權限
Java this 關鍵字
Java final 關鍵字
Java 遞歸
Java instanceof 操做符
0五、Java 面向對象(2)
Java 繼承
Java 方法重寫
Java super 關鍵字
抽象類 & 抽象方法
Java 接口
Java 多態
Java 封裝
0六、Java 面向對象(3)
嵌套&內部類
Java static 關鍵字
Java 匿名內部類
Java 單例
Java 枚舉類
Java 枚舉構造方法
Java 枚舉字符串
Java 反射
0七、Java 異常處理
Java 異常簡介
Java 異常處理
Java try catch
Java throw 和 throws
Java 捕獲多個異常
Java try-with-resources
Java 註解
Java 註解類型
Java 日誌
Java 斷言
0八、Java 集合
Java 集合框架
Java 集合接口
Java List 接口
Java ArrayList
Java Vector
Java Stack
0九、Java 隊列
Java 隊列接口
Java 優先級隊列
Java 雙端隊列接口
Java LinkedList
Java 數組隊列
Java 阻塞隊列接口
Java ArrayBlockingQueue
Java LinkedBlockingQueue
十、Java Map
Java Map 接口
Java HashMap
Java LinkedHashMap
Java WeakHashMap
Java EnumMap
Java SortedMap 接口
Java NavigableMap 接口
Java TreeMap
Java ConcurrentMap 接口
Java ConcurrentHashMap
十一、Java Set
Java Set 接口
Java HashSet
Java EnumSet
Java LinkedHashSet
Java SortedSet 接口
Java NavigableSet 接口
Java TreeSet
Java 集合算法
Java 迭代器接口
Java ListIterator 接口
十二、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
1三、Java 字符流
Java Reader
Java Writer
Java InputStreamReader
Java OutputStreamWriter
Java FileReader
Java FileWriter
Java BufferedReader
Java BufferedWriter
Java StringWriter
Java PrintWriter
1四、Java 併發編程
進程與線
多線程的入門類和接口
線程組和線程優先級
線程的狀態及主要轉化方法
線程間的通訊
重排序和 happens-before
volatile
synchronized 與鎖
CAS 與原子操做
AQS
計劃任務
Stream 並行計算原理
Frok/Join
通訊工具類
CopyOnWrite
併發集合容器
鎖接口和類
阻塞隊列
線程池原理
1五、Java 虛擬機
Java 內存結構
堆
棧
垃圾回收
JVM 內存區域
Java 虛擬機棧
class 文件
字節碼指令
JVM 參數調優
Java 對象模型
HotSpot
類加載機制
編譯和反編譯
反編譯工具(javap)
JIT
虛擬機性能監控和故障處理工具(jps、jstack、jmap、jstat、jconsole、javap)
怎麼系統化的學習呢?
推薦一套視頻,動力節點老杜講的Java零基礎教程,在 B 站上看。
計算機基礎都包括哪些呢?
計算機組成原理、操做系統、計算機網絡、數據結構與算法。 計算機組成原理
先說計算機組成原理,這部份內容主要涉及
計算機系統概述
數據與運算
CPU 概述
存儲子系統概述
總線和 IO 概述
計算機基礎知識的學習建議學習《計算機專業導論》
計算機專業導論能夠幫助你對即將學習的學科有一個大體的瞭解,知識注重廣度而非深度。
軟件工程專業的同窗也能夠去看《軟件工程導論》
若是你既想寫出質量槓槓的 Java 代碼,又想追求開發效率,用 Intellij IDEA 準沒錯!
能夠去 B 站上看一下這個 Intellij IDEA 的教學視頻。
你們都知道,版本控制系統很是重要!!!!!!
即使你只是一我的在編碼,它也能夠幫助你建立項目的快照、記錄每一個改動、建立不一樣的分支等等。
若是你參與的是多人協做,它更是一個無價之寶,你不只能夠看到別人對代碼的修改,還能夠同時解決因爲並行開發帶來的衝突。
版本控制系統有不少,其中最突出的表明就是 Git。
想要把 Git 學好的話,能夠看看這套Git教學視頻。
Java 實習工做,不外乎增刪改查嘛,不要抱太多幻想,基本上任何一我的的實習經歷,都是從 CRUD 開始的。 要學習MySQL 的話,推薦看下邊這套
B站上很經典的視頻教程,好評如潮,涵蓋MySQL的所有知識點了
這一套組合拳打下來,找一份實習工做我認爲是徹底沒問題了。
這也是一個 Java 後端程序員必須掌握的技能點,缺一不可!
雖然是做爲Java後端開發Coder,可是面對一個完整的項目,與前端有着不可或缺的關係。
簡單的前端知識咱們仍是須要了解的。
還有就是,也不是全部的公司都是區分先後端的,全棧工程師顯然更厲害。
前端基礎技術(HTML/CSS/JavaScript)
HTML:
CSS:
JavaScript:
另外推薦一些你會遇到的知識學習教程
Linux基礎知識(用於作web服務器)
Vue.js(最容易上手的前端框架)
Web階段事後,就是JavaWeb了。
推薦這兩套視頻,不一樣版本的,直接跟着視頻學
JavaWeb【IDEA版本】
JavaWeb【Eclipse經典版】
要找到一份 Java 實習工做的話,Spring 的系列框架是要懂一些,不要求多熟練,若是能夠掌握一個框架,尤爲是 Spring Boot,那對你也有幫助。由於若是你不會這玩意的話,基本上是作不了項目的。
主要涉及的內容有:
Spring
Spring MVC
MyBatis
Spring Boot
關於 SSM(Spring+Spring MVC+MyBatis)的學習,能夠看下面這個視頻。
關於 Spring Boot 的學習,能夠看下邊這個視頻
學了 SSM + Spring Boot,就能夠上手實戰項目了,像 GitHub 上的 vhr 和 mall,都是不錯的練手項目,強烈推薦。
這時候你的水平仍是僅僅存留在對框架的簡單運用上,要想進一步學習,還要找一些框架的源碼,進行深刻了解。
除此以外還有這個時候的你應該對設計模式瞭如指掌,還須要看一些關於代碼編寫優化的書,提升本身的代碼能力。
能夠學習分佈式架構、微服務等提高本身的技術。
隨着咱們的業務量愈來愈大和越重要,單體的架構模式已經沒法對應大規模的應用場景,並且系統中決不能存在單點故障致使總體不可用,因此只有垂直或是水平拆分業務系統,使其造成一個分佈式的架構,利用分佈式架構來冗餘系統消除單點的故障,從而提升整個系統的可用性。
同時分佈式系統的模塊重用度更高,速度更快,擴展性更高是大型的項目必不可少的環節。
而微服務架構引入策略 – 對傳統企業而言,開始時能夠考慮引入部分合適的微服務架構原則對已有系統進行改造或新建微服務應用,逐步探索及積累微服務架構經驗,而非全盤實施微服務架構。
既然已經踏入互聯網圈子,成爲程序員中的一員,就要秉持「一直學習」的觀念,常常更新本身的技術庫,對於專業的java程序員來講真的不誇張!
推薦視頻:
Dubbo視頻教程:www.bilibili.com/video/BV1Sk…
Redis視頻教程:www.bilibili.com/video/BV14t…
Maven多模塊管理:www.bilibili.com/video/BV1kg…
Linux視頻教程:www.bilibili.com/video/BV1dt…
SpringCloud視頻教程:www.bilibili.com/video/BV1ZV…
SpringCloud Alibaba視頻教程:www.bilibili.com/video/BV1nK…
Nginx視頻教程:www.bilibili.com/video/BV11V…
Spring Session視頻教程:www.bilibili.com/video/BV1iK…
FastDFS視頻教程:www.bilibili.com/video/BV1ta…
RabbitMQ視頻教程:www.bilibili.com/video/BV1Ap…
MyCat視頻教程:www.bilibili.com/video/BV1gK…
Docker視頻教程:www.bilibili.com/video/BV1QA…
Kubernetes(k8s)視頻教程:www.bilibili.com/video/BV1KU…
MySQL集羣視頻教程:www.bilibili.com/video/BV1Rg…
SVN視頻教程:www.bilibili.com/video/BV1ux…
Apache Shiro視頻教程:www.bilibili.com/video/BV14T…
大型互聯網電商項目:www.bilibili.com/video/BV1RQ…
總之,先把主要知識點掌握完全掌握,慢一點是正常的,求快得不償失,等把底層基礎知識打牢,在學東西的時候就會快不少,之後徹底能夠多找項目練手,學習效率嗖嗖的,有時候慢就是快。