JAVA 知識體系
開源架構知識點
Spring
IOC 容器及源碼解讀
容器啟動及配置類加載流程 元件添加 元件指派 元件注入 後置處理器 聲明式事務源碼解讀 Spring容器源碼解讀
AOP使用與源碼分析
@EnableAspectJAutoProxy注解 切面注解使用解析 AOP源碼解讀實戰
Spring MVC
Servlet 3.0 的注解實作
ServletContainerInitializer 容器初始化 ServletRegistration注冊 FilterRegisteration過濾器 ServletContext
性能實戰
基于Servlet3.0異步 Callable異步 DeferredResult異步
Mybatis
概述
為什麼要用ORM 為什麼使用MyBatis Mybatis快速入門
進階
Mybatis的配置 映射器的配置 動态SQL 與Spring的內建 緩存 關聯查詢 多對多級聯 代碼生成器
進階
源碼分析 插件開發 分頁插件使用與源碼分析
微服務架構
RPC原理
RMI的實作
原理
服務注冊與釋出 動态代理 序列化與反射
SpringBoot底層探析
SpringBoot快速入門
SpringBoot與微服務之間的關系 環境搭建 繼承Springmvc 繼承mybatis 整合日志 內建jsp 全集異常捕獲 打包部署 熱部署 內建Swagger2建構API管理體系
核心元件
starter actuator auto-configuration cli jta+atomikos的分布式事務
性能優化
jvm參數 掃包優化 undertow容器 @SpringBootApplication源碼解讀
SpringCloud進階進階
Zuul路由網管詳解及源碼探析 Ribbon用戶端負載均衡原理與算法詳解,與服務端均衡負載差別 Feign聲明式服務調用方法實作 Hystrix服務熔斷及服務降級實戰 Eureka注冊中心分析 Config配置服務中心與svn、git快速內建 BUS消息總線技術 Sleuth調用鍊路追蹤 Stream消息驅動的微服務
Docker虛拟化技術
Docker介紹、安裝與使用
Docker組成
鏡像 容器 私有倉庫 Docker Compose部署腳本 Docker Service 服務編排 Docker Redis分布式叢集部署 Docker File建構 通過Maven插件打包Docker鏡像 Docker部署及運作應用程式 Kubernetes編配 基于Docker建構Mysql叢集實戰 高可用SpringCloud微服務與Docker繼承實作動态擴充實戰
團隊協作開發
Git
Git基本工作原理
與SVN對比 基本運作流程
Git常用操作及問題處理
工程初始化及克隆 檔案送出 分支與常用标簽應用 遠端倉庫管理 合并與沖突解決 架構師職責: Git Flow必備技能,規範團隊Git操作
maven
安裝和配置
Windows上安裝 Linux上安裝 目錄分析
使用入門
編寫POM 編寫主代碼 編寫測試代碼 打包和運作
坐标和依賴
Maven坐标以及詳解 依賴的配置 依賴的範圍 傳遞性依賴和依賴調解
聚合與內建
聚合 繼承 聚合與繼承的關系 約定優于配置 反應堆
生命周期與插件
clean生命周期 default生命周期 site生命周期 指令行與生命周期 插件目标 插件綁定 插件配置 常用插件
倉庫
本地倉庫 遠端倉庫 中央倉庫 快照版本 遠端倉庫的配置 快照版本與鏡像
版本管理
版本号定義約定 主幹、标簽與分支
私服-Nexus
安裝Nexus Nexus的倉庫與倉庫組 Nexus使用、上傳、配置
Jenkins
環境搭建
Jenkins安裝 Jenkins Tomcat安裝 Jenkins Git安裝 Jenkins Maven安裝
配置管理
Jenkins配置 Jenkins管理 Jenkins配置程式作業 Jenkins配置單元測試 Jenkins配置自動化測試
部署分析
Jenkins配置郵件通知 Jenkins配置報表 Jenkins代碼分析 Jenkins分布式建構 Jenkins自動部署
進階進階
Jenkins名額與趨勢 Jenkins伺服器維護 Jenkins持續部署 Jenkins插件管理 Jenkins備份 Jenkins遠端測試
Dubbo應用及源碼解讀
dubbo簡介
分布式中rpc調用的痛點 dubbo主要解決那些rpc問題 dubbo設計的概念 dubbo的部署安裝
dubbo的配置使用
xml方式 注解方式 api方式 dubbo中各元素屬性學習
dubbo在項目的用法
類與類的依賴關系說明 項目之間的依賴劃分 實戰拆解分布式
dubbo源碼解析與示例
dubbo的子產品及層級 dubbo的初始化過程 dubbo的服務暴露 dubbo的服務引用 dubbo的服務攔截 服務的注冊與發現
Java基礎知識
JVM性能調優
1. Java記憶體區域
虛拟機的曆史 運作時資料區域 深入辨析堆和棧 方法的出入棧 虛拟機中的對象 堆參數設定和記憶體溢出實戰
2. 垃圾回收器和記憶體非配政策
GC概述 判斷對象的存活 辨析強、弱等各種引用 GC算法 分代收集 垃圾回收器 Stop The World現象 GC日志解讀 記憶體配置設定與回收政策 記憶體洩露和記憶體溢出辨析 JDK為我們提供的工具 了解MAT (Memory Analyzer Tool)
3. JVM的執行子系統
Class類檔案的本質 Class檔案格式 位元組碼指令 類加載機制 棧幀詳解 方法調用詳解 基于棧的位元組碼解析執行引擎
4. 編寫高效優雅的Java程式
構造器參數太多怎麼辦 不需要執行個體化的類應該構造器私有 不要建立不必要的對象 避免使用終結方法(finalize) 使類和成員的可通路性最小化 使可變性最小化 優先使用複合 接口優于抽象類 可變參數要謹慎使用 傳回零長度的數組或集合,不要傳回null 優先使用标準的異常 用枚舉代替int常量 将局部變量的作用域最小化 精确計算,避免使用float和double 當心字元串連接配接的性能
5. 深入了解性能優化
常用的性能評價/測試名額 常用的性能優化手段 詳細了解應用伺服器性能優化
網絡程式設計與高效IO
網絡協定
網絡模型 TCP UDP HTTP 原生JDK網絡程式設計(NIO/BIO)
1. Netty應用
Netty是什麼?為什麼要用Netty? 第一個Netty程式 Netty元件再了解 解決粘包,半包問題 編解碼器架構 序列化問題 單元測試
2. Netty進階和實戰
實作UDP通信 伺服器推送技術 WebSocket通信 實作自己的通信架構
3. Netty源碼分析
引導過程分析 EventLoop和EventLoopGroup分析 服務端接受連接配接事件分析OP_ACCEPT 分析讀事件OP_READ 分析寫資料和處理寫資料OP_WRITE 分析用戶端連接配接和連接配接事件OP_CONNECT
并發程式設計進階
1. 線程基礎、線程之間的共享和協作
基礎概念 啟動和終止線程 線程間的共享 線程間的協作
2. 線程的并發工具類
Fork/Join CountDownLatch作用、應用場景和實戰 CyclicBarrier作用、應用場景和實戰 Semaphore作、應用場景和實戰 Exchange作用、應用場景和實戰 Callable、Future和FutureTask
3. 原子操作CAS
CAS的原理 CAS的問題 原子操作類的使用
4. 顯式鎖和AQS
顯式鎖 LockSupport工具進階 AbstractQueuedSynchronizer實作及源碼分析
5. 并發容器
ConcurrentHashMap 其他并發容器 阻塞隊列
6. 線程池
什麼是線程池?為什麼要用線程池? 實作一個我們自己的線程池 JDK中的線程池 線程池的工作機制 合理配置線程池 Executor架構 CompletionService
7. 并發安全
類的線程安全 如何做到類的線程安全 線程不安全引發的問題 線程安全的單例模式
8. JMM和底層實作原理
現代計算機實體上的記憶體模型 Java記憶體模型 (JMM)
Mysql深度優化
- Mysql邏輯架構入門介紹
2. 存儲引擎
MyISAM Innodb Archive Memory Federated
3. 業務設計
鎖 事務 邏輯設計 實體設計
4. 查詢以及索引
慢查詢 索引 執行計劃 SQL優化
Linux
Linux注意事項 Linux基礎之類 Linux Jdk1.8環境安裝及操作指令 Linux Tomcat安裝與停啟
高性能架構
分布式架構思維
大型網際網路架構演進過程 架構師應具備的分布式知識 主流分布式架構設計詳解
分布式協調和分流
Zookeeper分布式環境指揮官
zk的入門 zk開發基礎 zookeeper應用實戰 協定及算法分析
Nginx高并發分流進階實戰
nginx安裝 正反向代理 nginx程序模型 核心配置結構 日志配置及簽個 location規則 rewrite的使用 動靜分離 跨域配置 緩存配置,Gzip配置 https配置 橫向擴充帶來的問題 LVS keepalived
異步與消息中間件
概述
什麼是消息中間件? 和RPC有何差別? 消息中間件使用場景介紹 消息中間件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)簡介及對比
ActiveMQ消息中間件
JMS規範 ActiveMQ使用 ActiveMQ進階特性和用法 企業級高可用叢集部署方案
RabbitMQ消息中間件
AMQP規範和RabbitMQ基本概念 Windows下安裝和運作 Linux下安裝與配置 原生Java用戶端使用 消息釋出時的權衡 消息消費時的權衡 消息的拒絕 控制隊列 消息的屬性 與Spring內建 叢集化與鏡像隊列
Kafka百萬級吞吐實戰
Kafka入門 Kafka的安裝和配置參數 Kafka的叢集 Kafka的生産者和消費者 整合Spring 深入了解Kafka 保證Kafka的可靠資料傳遞
緩存和NoSQL
Redis高性能緩存資料庫
Redis初入門及介紹 Java用戶端 Redis常用指令及多項目設計實戰 資料一緻性 Redis性能優化 Redis主從模式 Redis持久化 哨兵核心機制 高可用叢集
MongoDB
MongoDB入門
nosql與sql使用場景分析 基礎概念
mongodb進階
常用指令 快速入門 mongodo用戶端驅動 增删改查與聚合 安全控制
mongodb進階知識
存儲引擎 索引 高可用 最佳實踐與注意事項
緩存解決方案實戰
緩存的概念 SpringCache的用法 緩存的一緻性政策 緩存雪崩方案 緩存穿透方案
高可用資料儲存
MySQL高性能儲存實戰
Mycat進階實戰
FastDFS分布式檔案儲存實戰
檔案儲存實戰 檔案同步實戰 檔案查詢實戰 分布式部署實戰
分布式常見常見方案實戰
事務概念
事務與鎖 分布式事務産生背景 X/OpenDTP事務模型 标準分布式事務
分布式事務解決方案
兩階段送出 BASE理論與柔性事務 TCC方案 補償性方案 異步確定與最大努力型
單店登陸方案
單店登陸的問題背景 頁面跨域問題 Session跨域共享方案 Session的擴充
分布式任務排程方案
Quartz排程的用法 Elastic-Job示例 分布式排程的疑難點 Quartz叢集定制化分布式排程