Java系統總結(學習目錄)
阿新 • • 發佈:2018-12-13
目錄
JVM
- JVM記憶體結構
- Java記憶體模型
- 垃圾回收
- JVM引數及調優
- Java物件模型
- HotSpot
- 類載入機制
- 虛擬機器效能監控與故障處理工具
- 編譯與反編譯
javaSE
- 閱讀原始碼(常用API底層原始碼,如集合類、包裝類)
- Java中各種變數型別
- 自動拆裝箱
- 熟悉Java中各種關鍵字
- 列舉
- Java IO&Java NIO
- Java反射與javassist
- Java序列化
- 註解
- JMS
- JMX
- 泛型
- 單元測試
- 正則表示式
- 常用的Java工具庫
- 什麼是API&SPI
- 異常
- 時間處理(讓程式睡眠)
- 編碼方式(中文編碼問題)
- 語法糖
Java併發程式設計
- 閱讀執行緒類的原始碼
- 執行緒池
- 執行緒安全
- 鎖和死鎖
Java底層知識(作業系統和計算機組成原理的知識)
- 位元組碼、class檔案格式
- CPU快取,L1,L2,L3和偽共享
- 尾遞迴
- 位運算
- 設計模式(瞭解23種設計模式,會使用常用設計模式)
- 實現AOP
- 實現IOC
- 不用synchronized和lock,實現執行緒安全的單例模式
- nio和reactor設計模式
- -----------------------------------------------------------------------
- Linux的常用命令
- 程序同步
- 緩衝區溢位
- 分段和分頁
- 虛擬記憶體與主存
網路程式設計知識
- http/1.0 http/1.1 http/2之前的區別
- Java RMI,Socket,HttpClient
- cookie 與 session
- 用Java寫一個簡單的靜態檔案的HTTP伺服器
- 瞭解nginx和apache伺服器的特性並搭建一個對應的伺服器
- 用Java實現FTP、SMTP協議
- 程序間通訊的方式
- 什麼是CDN?如果實現?
- 什麼是DNS?
- 反向代理
框架知識
- Servlet執行緒安全問題
- Servlet中的filter和listener
- Hibernate的快取機制
- Hiberate的懶載入
- Spring Bean的初始化
- Spring的AOP原理
- 自己實現Spring的IOC
- Spring MVC
- Spring Boot2.0
- Spring Security
應用伺服器知識
- JBoss
- tomcat
- jetty
- Weblogic
工具
- git & svn
- maven & gradle
Java和Spring的新版本
- Java 8
- Java 9
- Java 10
- Spring 5
- Spring Boot 2.0
效能優化
- 使用單例、使用Future模式、使用執行緒池、選擇就緒、減少上下文切換、減少鎖粒度、資料壓縮、結果快取
線上問題分析
- dump獲取
- dump分析
- 自己編寫各種outofmemory,stackoverflow程式
- 常見問題解決思路(記憶體溢位、執行緒死鎖、類載入衝突)
- 使用工具嘗試解決以下問題,並寫下總結
- 當一個Java程式響應很慢時如何查詢問題、
- 當一個Java程式頻繁FullGC時如何解決問題、
- 如何檢視垃圾回收日誌、
- 當一個Java應用發生OutOfMemory時該如何解決、
- 如何判斷是否出現死鎖、
- 如何判斷是否存在記憶體洩露
編譯原理知識
- 編譯與反編譯
- Java程式碼的編譯與反編譯
- Java的反編譯工具
- 詞法分析,語法分析(LL演算法,遞迴下降演算法,LR演算法),語義分析,執行時環境,中間程式碼,程式碼生成,程式碼優化
資料庫知識
- MySql 執行引擎
- MySQL 執行計劃
- SQL優化
- 事務
- 資料庫鎖
- 資料庫主備搭建
- binlog
- 記憶體資料庫
- 常用的nosql資料庫(redis、memcached)
- 分別使用資料庫鎖、NoSql實現分散式鎖
- 效能調優
資料結構與演算法知識
- 簡單的資料結構
- 棧、佇列、連結串列、陣列、雜湊表
- 樹(二叉樹、字典樹、平衡樹、排序樹、B樹、B+樹、R樹、多路樹、紅黑樹)
- 排序和查詢演算法
- 各種排序演算法和時間複雜度 深度優先和廣度優先搜尋 全排列、貪心演算法、KMP演算法、hash演算法、海量資料處理
大資料知識
- Zookeeper
- Solr,Lucene,ElasticSearch
- Storm,流式計算,瞭解Spark,S4
- Hadoop,離線計算
- 分散式日誌收集flume,kafka,logstash
- 資料探勘,mahout
網路安全知識
- 什麼是XSS
- 什麼是CSRF
- 什麼是注入攻擊
- 什麼是檔案上傳漏洞
- 加密與解密
- 什麼是DOS攻擊和DDOS攻擊
- SSL、TLS,HTTPS
- 如何通過Hash碰撞進行DOS攻擊
- 用openssl籤一個證書部署到apache或nginx
架構師
- 分散式架構
- 分散式
- 分散式事務
- Dubbo
- 分散式資料庫
- 分散式檔案系統
- 分散式快取
- 微服務
- ServiceMesh
- Docker & Kubernets
- Spring Boot
- Spring Cloud
- 高併發
- 分庫分表
- CDN技術
- 訊息佇列
- 監控
- 監控什麼
- 監控手段
- 監控資料採集
- Dapper
- 負載均衡(tomcat負載均衡、Nginx負載均衡)
- DNS(DNS原理、DNS的設計)
- CDN
新技術
- 雲端計算(IaaS、SaaS、PaaS、虛擬化技術、openstack、Serverlsess)
- 搜尋引擎(Solr、Lucene、Nutch、Elasticsearch)
- 許可權管理(Shiro)
- 區塊鏈
- 雜湊演算法、Merkle樹、公鑰密碼演算法、共識演算法、Raft協議、Paxos 演算法與 Raft 演算法、拜占庭問題與演算法、訊息認證碼與數字簽名
- 比特幣
- 以太坊
- 超級賬本
- 人工智慧(數學基礎、機器學習、人工神經網路、深度學習、應用場景)
常用框架(TensorFlow、DeepLearning4J)
- 其他語言
Groovy、Python、Go、NodeJs、Swift、Rust
注:如果侵犯版權,聯絡我刪除。