1. 程式人生 > >Java系統總結(學習目錄)

Java系統總結(學習目錄)

目錄

JVM

框架知識

工具

效能優化

資料庫知識

大資料知識

架構師

新技術

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程式
  • 常見問題解決思路(記憶體溢位、執行緒死鎖、類載入衝突)
  • 使用工具嘗試解決以下問題,並寫下總結
  1. 當一個Java程式響應很慢時如何查詢問題、
  2. 當一個Java程式頻繁FullGC時如何解決問題、
  3. 如何檢視垃圾回收日誌、
  4. 當一個Java應用發生OutOfMemory時該如何解決、
  5. 如何判斷是否出現死鎖、
  6. 如何判斷是否存在記憶體洩露

編譯原理知識

  • 編譯與反編譯
  • Java程式碼的編譯與反編譯
  • Java的反編譯工具
  • 詞法分析,語法分析(LL演算法,遞迴下降演算法,LR演算法),語義分析,執行時環境,中間程式碼,程式碼生成,程式碼優化

資料庫知識

  • MySql 執行引擎
  • MySQL 執行計劃
  • SQL優化
  • 事務
  • 資料庫鎖
  • 資料庫主備搭建
  • binlog
  • 記憶體資料庫
  • 常用的nosql資料庫(redis、memcached)
  • 分別使用資料庫鎖、NoSql實現分散式鎖
  • 效能調優

資料結構與演算法知識

  • 簡單的資料結構
  1. 棧、佇列、連結串列、陣列、雜湊表
  2. 樹(二叉樹、字典樹、平衡樹、排序樹、B樹、B+樹、R樹、多路樹、紅黑樹)
  • 排序和查詢演算法
  1. 各種排序演算法和時間複雜度 深度優先和廣度優先搜尋 全排列、貪心演算法、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

架構師

  • 分散式架構
  1. 分散式
  2. 分散式事務
  3. Dubbo
  4. 分散式資料庫
  5. 分散式檔案系統
  6. 分散式快取
  • 微服務
  1. ServiceMesh
  2. Docker & Kubernets
  3. Spring Boot
  4. Spring Cloud
  • 高併發
  1. 分庫分表
  2. CDN技術
  3. 訊息佇列
  • 監控
  1. 監控什麼
  2. 監控手段
  3. 監控資料採集
  4. Dapper
  • 負載均衡(tomcat負載均衡、Nginx負載均衡)
  • DNS(DNS原理、DNS的設計)
  • CDN

新技術

  • 雲端計算(IaaS、SaaS、PaaS、虛擬化技術、openstack、Serverlsess)
  • 搜尋引擎(Solr、Lucene、Nutch、Elasticsearch)
  • 許可權管理(Shiro)
  • 區塊鏈
  1. 雜湊演算法、Merkle樹、公鑰密碼演算法、共識演算法、Raft協議、Paxos 演算法與 Raft 演算法、拜占庭問題與演算法、訊息認證碼與數字簽名
  2. 比特幣
  3. 以太坊
  4. 超級賬本
  • 人工智慧(數學基礎、機器學習、人工神經網路、深度學習、應用場景)

常用框架(TensorFlow、DeepLearning4J)

  • 其他語言

Groovy、Python、Go、NodeJs、Swift、Rust

注:如果侵犯版權,聯絡我刪除。