Java Web 學習路線
Author:@Zealot
Date:2018/10/22
. 前言
本文用於 NMID 內部技術交流,各模組闡述比較籠統,具體學習細節靠自己和參考學習手冊。
菜雞一枚,歡迎各位大佬提出任何建議,將不勝感激。
. 導圖
- 整體圖
- Java SE
- Java EE
- Another Version
. 0 走進計算機的世界
- 《浪潮之巔》 吳軍 人民郵電出版社
講述IT行業興衰史。 - 《計算機導論》 楊繼萍 錢偉 清華大學出版社
科普向,介紹計算機基礎知識。 - 《電腦科學導論》 Behrouz Forouzan 機械工業出版社
大學計算機相關專業的基礎課教材,涉及電腦科學的各個方面。著重講解基本概念而不是數學模型和技術細節。 - 《電腦科學概論》 J. Glenn Brookshe 人民郵電出版社
國外頂尖大學教材,描繪電腦科學各個子學科主要領域。
. 1 基礎知識
- 可以看下教務線上提供的教學大綱和考綱以做更多瞭解
- C語言程式設計 ★★★★★
基本資料型別、關係運算子、程式結構流程控制、指標、結構體、檔案操作、程式導向程式設計思想 - 資料結構 ★★★★★
各種資料結構基本概念和特點,各種資料結構的增刪查改操作實現演算法、各種資料結構的應用場景、常見排序查詢演算法的特點和實現
推薦書籍:《大話資料結構》程傑 - 計算機網路 ★★★★★
OSI七層模型各層功能和常見協議,網路層(IP)、運輸層(TCP/UDP)、應用層(HTTP/DNS/FTP/SMTP)及其對應埠。
IP:幀結構,各類地址,劃分子網等
TCP:協議特點、三次握手和四次揮手過程和原理、如何進行流量控制
UDP:協議特點、與TCP的比較
HTTP:報文結構、工作流程和原理
DNS:工作流程和原理 - 演算法分析與設計 ★★★★★
演算法複雜度分析、常見演算法思想:貪心、動態規劃等等
推薦書籍:《演算法設計與分析基礎》第三版 Anany Levitin 清華大學出版社 譯者:潘彥
刷題!刷題!刷題!牛客 & LeetCode & CodeForces - 資料庫原理 ★★★★★
模式、ER關係、常用SQL(DDL,DML)、三大正規化等
非科班的以下科目找書來瀏覽一遍(沒學過,不多說)
- 計算機組織與結構 ★★★★
- 作業系統 ★★★★(記憶體/執行緒/程式)
- 軟體工程 ★★★★(專案工程)
- 編譯原理 ★★★
. 2 Java SE
- 建議先看完視訊再看書
推薦書籍:Head First Java / Java核心技術 / Effective Java - 基本語法,常用介面(看API)
Date,Sql,Math,Calendar,Arrays,Collections,Atomic,Concurrent,包裝類等 - 物件導向
物件導向程式設計思想
類&物件,其結構,程式碼初始化順序,相互呼叫等
三大特點(封裝、繼承、多型)的具體細節 WHAT & WHY & HOW - 異常
- Java併發程式設計
基本概念(同非同步,併發行,阻塞,死鎖等);
執行緒基本操作,執行緒6種狀態,執行緒間通訊,執行緒池使用,JDK併發包等 - String & StringBuffer & StringBuilder
原始碼,特點,異同 - 集合框架
List,Map,Set,Tree,Queue,Stack
熟悉整個框架體系結構(UML圖),看原始碼分析,掌握底層資料結構,實現原理和特點,擴充套件機制,適用場景等
掌握泛型機制,具備利用泛型開發的抽象思想 - IO 流
檔案基本操作(讀寫),位元組流,字元流,File類等
可以自己寫個HttpUtilAPI - 網路程式設計
Socket,NIO(結合併發程式設計),TCP&UDP方式等實現通訊 - 反射(框架靈魂)
WHAT,WHY,HOW,在框架中的應用
Class類,如何獲得並呼叫類的屬性和方法等
. 3 JVM
- JVM啟動
JVM生命週期 - VM常用引數配置
- 類與物件
物件表示機制,類狀態轉換(Class檔案格式、載入連結初始化過程)
雙親委派機制
例項建立流程 - 執行時資料區
記憶體模型,各區作用和特性(堆、棧、方法區、PC計數器)
永久代,新生代,老年代(特點,分割槽,如何晉升等) - GC(垃圾收集)
回收演算法:標記清除,複製,標記壓縮
分代收集 - 垃圾收集器
序列/並行,CMS,G1收集器 - 調優分析
檢視配置JVM,GC日誌
jinfo
jstat
jstack
. 4 設計模式(23種)
- 單例模式
特點及應用場景
必會:手寫單例(餓漢,懶漢,內部類),能區分三種方式的異同優劣 - 其他
常見設計模式:責任鏈,代理,介面卡,橋接,裝飾等
掌握思想,經典實現,使用情況等
. 5 Mysql
- 推薦書籍:Mysql必知必會 / 高效能Mysql / Mysql技術內幕(偏DBA)
- 體系結構
組成模組 - Sql
AUID,Sql優化,Sql分析,Sql執行流程 - 儲存引擎
Innodb,Mysiam,Memory各自特點和應用場景 - 隔離級別
- 索引
優缺點,原理,實現細節,資料結構(B,B+樹原理) - 檢視
- 儲存過程
. 7 (Web) Servlet & JSP
- 推薦書籍:《Java Web開發詳解》孫鑫
- 掌握MVC模型
看書吧,略過了。
. 8 伺服器
- Tomcat
啟動分析,體系結構 - Nginx
反向代理 - Jetty
. 9 Linux
- 資源:Linux初學者(學習資料) - 路人甲的文章 - 知乎
- 檔案結構
- 系統管理命令
許可權,防火牆,埠,程式,檔案(檢視,解壓,移動,刪除等) - Shell程式設計
. 10 敏捷開發&協作開發
- IDEA
專案構建流程、常用快捷鍵、各種黑科技(目的都是為了效率)、程式碼除錯 - Maven/Gradle
命令、依賴格式、異同等 - 前端除錯
介面測試、google控制檯(F12) - Github
常見操作(Clone,Commit,Push,Merge,Star,Fork等) - Git
如上點常見命令,操作要規範,語句要明確
. 11 (Web) Spring
- 上手做最重要
核心模組,DI,IOC,AOP,註解,攔截器,SpringMVC
. 12 (Web) Mybatis
- 上手做最重要
. 13 (Web) SpringBoot
- 上手做最重要
瞭解原理、基於Spring來體會SpringBoot帶來的不同
. 14 NoSql
- Redis
推薦書籍:Redis開發與運維 / Redis設計與實現
底層原理,資料結構,常見命令,通訊協議,Jedis,持久化,複製,哨兵,叢集。快取設計等等 - MongoDB&Memcached
不瞭解,不多嗶嗶 - 至少掌握一個,瞭解所有的,說得出異同
. 15 分散式
- 負載均衡/分散式資料庫/分散式應用叢集
- RPC
- Dubbo
- ZooKeeper
. 16 快取
- Redis
- Memcached
- Ehcache
- 等等
. 17 訊息佇列
- ActiveMQ/Rabbitmq等
. 18 人文
- 技術之瞳——阿里巴巴技術筆試心得
- 卓有成效的程式設計師
- 程式設計師修煉之道
- 禪與摩托車維修藝術
- 頸椎病康復指南 (╯°Д°)╯( ┻━┻