天天看點

JAVA知識體系,初學者java入門必備知識基礎,及學習體系

作者:整個世界我隻需要你1
JAVA知識體系,初學者java入門必備知識基礎,及學習體系

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深度優化

  1. 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叢集定制化分布式排程