不知不覺踏入互聯網行業已經四年了。
回顧當初第一次接觸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教學視頻。
四、數據庫
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(最容易上手的前端框架)
六、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
總之,先把主要知識點掌握徹底掌握,慢一點是正常的,求快得不償失,等把底層基礎知識打牢,在學東西的時候就會快很多,以后完全可以多找項目練手,學習效率嗖嗖的,有時候慢就是快。