【課程背景】
企業通過校招或社招的新員工如何快速掌握Java開發的技能,進入實際的企業項目開發?企業已有員工想從其它崗位方向如何快速轉型Java企業應用開發?
本課程采取由淺入深、案例實戰驅動理論學習的教學方式,站在一個擁有多年Java開發經驗的角度以理論+案例實戰的方式帶領學員攻克一個個Java企業應用開發的各個必備技能?包括像Java企業應用開發的核心技術有哪些?如何利用業界主流的技術框架SpringBoot、SpringCloud快速的進行Java企業應用開發,完成整個綜合案例。
通過該課程的學習,可使學員了解Java體系的技術要求,理解Java企業應用開發精髓,了解業界最流行的Java框架與技術,會結合開發工具的一些常用的功能、快速代碼生成的技巧、調試技巧跟學員進行實戰講解,使學員能夠熟練的掌握Java企業應用日常開發中必備的一些技能。課程全程會貫穿一個完整項目案例,貫穿課程當中所學知識,真正做到學以致用和快速落地。
【課程收益】
? 掌握Java語言基礎
? 掌握基于Java企業級應用開發流程
? 掌握數據庫設計與開發
? 掌握Java單體應用開發技術棧
? 掌握Java企業級應用開發框架SSM
? 掌握Java分布式系統開發技術棧
? 掌握Java快速開發框架SpringBoot
? 掌握微服務架構開發框架SpringCloud
【課程對象】研發工程師、售前技術工程師、運維工程師
【課程時間】1天
【課程大綱】
一、Java企業應用開發之核心J2SE
1、Java簡介
? Java語言簡介
? Java語言特點
? JDK安裝與環境變量配置
? 開發Java程序的步驟
? 集成開發環境IDEA的介紹
? IDEA的環境配置
? Java源程序和字節碼文件
案例:使用IDEA編寫第一個Java程序
2、Java虛擬機和垃圾回收
? 虛擬機的介紹和分類
? Java虛擬機
? Java虛擬機的運行過程
? Java虛擬機的基本原理
? Java虛擬機的基本概念
? Java虛擬機的結構組成
? 垃圾回收介紹
? 垃圾回收的原理和意義
? 如何強制進行垃圾回收
? 垃圾回收策略和優化
案例:Java虛擬機調優
3、Java面向對象
? Java繼承
? Java Override/Overload
? Java多態
? Java抽象類
? Java封裝
? Java枚舉
? Java包
? 面向對象的基本概念
? 面向對象的封裝、繼承與多態
? 面向對象設計原則
? 常用面向對象設計模式
案例:案例驅動面向對象原則和面向對象設計模式實戰
4、集合
? 集合的定義與集合框架的優點
? Java.util中的常用的集合類介紹
? ArrayList
? 迭代器
? LinkedList
? Vector
? HashMap
? Set
? 集合的應用
? 高并發場景下非同步類容器面臨問題
? Java中高并發容器原理與應用實戰
案例:實例演示各種集合類的應用
案例:實例模擬高并發下非同步類容器線程安全問題
案例:實例演示高并發容器的應用
5、異常
? 異常應用案例
? 異常分類:編譯時異常和運行時異常
? 自定義業務異常
案例:系統異常與自定義異常的應用實戰
6、多線程
? 線程的概念
? 進程與線程的區別
? 為什么要使用多線程
? Java實現多線程的兩種方式Thread和Runnable
? 線程優先級
? 線程的生命周期
? 線程的狀態
? 什么是后臺線程
? 生產者與消費者模式
? 線程池的定義與應用場景
? 同步與異步的區別
? 有哪些常見的線程池以及用法
? 如何實現自定義線程池
? 多線程間線程同步問題怎么解決?
? 多線程間協作的模型有哪些
案例:實例演示4種類型線程池的應用
案例:案例演示多線程間協同調度
7、Maven工程結構
? 環境配置
? 創建maven項目
? 導出依賴jar包的插件配置pom.xml
? 如何正確配置dependency
? 如何配置中央倉庫
? 如何配置maven私服nexus
? Maven多模塊管理
8、JDBC
? Reflection簡介與其工作原理
? Java動態相關機制反射
? 使用Reflection的3個步驟
? 數據庫訪問技術簡介
? 數據庫編程步驟
? ODBC與JDBC的介紹與使用差異
? JDBC的詳細介紹
? JDBC工作示意圖
? JDBC訪問數據庫步驟
? JDBC操作數據庫示例
? 事務的處理和使用
案例:基于JDBC訪問數據庫實現增刪改查
案例:基于JDBC訪問數據庫方式如何防止SQL注入
二、Java Web應用開發
1、Java企業應用開發之Web應用服務器tomcat
? tomcat介紹
? tomcat的安裝與環境配置
? tomcat的常用操作與安裝目錄結構介紹
? tomcat管控臺介紹
? tomcat集成到IDEA
2、Servlet介紹與應用
? Servlet簡介
? 基于Servlet實現MVC開發模式
? Servlet工作原理
? Servlet生命周期
? 基于Servlet實現文件的上傳和下載
? 什么是過濾器
? 過濾器的基本原理
案例:通過Servlet實現文件的上傳和下載Servlet過濾器
案例:通過Servlet實現IP Filter
案例:通過Servlet實現字符編碼的Filter
三、數據庫設計與應用
1、數據庫設計概述
? 各數據庫分類與應用場景
? 關系數據庫管理系統與關系數據庫
? 結構化查詢語言SQL
? 常用數據庫建模與設計工具
? E-R圖設計原則與繪制
2、關系型數據庫設計
? 實體與表間關系
? 表主鍵定義
? 一對多與多對多表關系
? 數據類型設計
? 合理表設計的幾大原則
3、表記錄的插入、更新和刪除
? Insert插入表記錄
? 數據庫表自增字段
? Update更新表記錄
? 批量插入多條記錄
? Insert…select插入結果集數據
? Delete刪除表記錄
? Truncate刪除表記錄
4、表記錄的查詢
? 使用select語句查詢指定字段列表
? 使用from字句指定要查詢的數據表
? 多表關聯查詢
? 使用單一過濾條件過濾結果集
? 非空判斷運算符
? 使用like進行模糊查詢
? 使用order by字句對結果集排序
? 使用聚合函數匯總結果集
? Group by與聚合函數
? Group by與having字句
? 子查詢與比較運算符
? 子查詢與in運算符
? 子查詢與exists邏輯運算符
? 子查詢與any運算符
? 子查詢與all運算符
5、函數
? 系統函數與自定義函數
? 系統函數之數學函數
? 系統函數之字符串函數
? 系統函數之日期和時間函數
6、視圖與觸發器
? 視圖的定義與創建
? 視圖作用分析
? 刪除視圖
? 使用觸發器實現檢查約束
? 觸發器實現冗余數據維護
? 觸發器的刪除與注意事項
7、存儲過程
? 存儲過程的應用場景
? 存儲過程的定義與創建
? 預處理SQL
8、事務與鎖機制
? 為什么要使用事務
? 事務的自提交
? 事務的提交與回滾
? 事務的ACID特性
? 事務的隔離級別與并發問題
? MySQL事務的四種隔離級別
? 鎖機制的必要性
? 表鎖
? 行鎖
? 間隙鎖
? 死鎖與鎖等待
四、Java企業級應用開發之SSM框架
1、SSM框架
? 框架是什么?為什么要使用框架?
? Java企業應用開發各框架的應用情況
? SSM框架的架構以及各層技術職責
? MVC的介紹和原理
2、Spring
? 什么是Spring
? Spring的模塊組成
? Spring工作原理
? 搭建Spring開發環境
? 建立Spring項目
? Spring中Bean配置
? Spring-Bean作用域
? IOC和DI
? IOC出現之前-分離接口與實現
? IOC出現之前-采用工廠設計模式
? IOC反轉控制思想
? Spring的IOC容器配置Bean
? Spring容器
? ApplicationContext
? 依賴注入的3種方式
? 外部屬性文件的使用
? 組件掃描和組件裝配
? AOP簡介
? Spring AOP思想與原理
? Spring數據庫連接池
? Spring事務管理
? SpringMVC與Spring的整合
? Mybatis與Spring整合
案例:基于Spring AOP實現的方法執行時間統計
3、前端控制層之SpringMVC
? 什么是SpringMVC
? SpringMVC工作原理
? SpringMVC請求處理流程
? SpringMVC框架介紹
? 創建SpringMVC應用
? 基于注解應用
? SpringMVC常用注解
? SpringMVC與Web應用集成
案例:SpringBoot下SpringMVC完成增刪改查的界面和控制器部分
案例:SpringBoot下SpringMVC完成基于restful的增刪改查
4、數據訪問層
? Java企業應用開發中數據訪問技術有哪些
? 數據訪問之Mybatis的介紹
? 數據訪問之Mybatis與傳統JDBC的比較
? 數據訪問之Mybatis環境配置
? 數據訪問之Mybatis事務管理
? 數據訪問之Mybatis配置數據源
? 數據訪問之Mybatis的SQL映射文件
? CRUD(查詢)
? CRUD(插入)
? CRUD(修改)
? CRUD(刪除)
? 數據訪問之Mybatis動態SQL
? 動態sql語句-if
? 動態sql語句-choose
? 動態sql語句-trim
? 動態sql語句-where
? 動態sql語句-set
? 動態sql語句-foreach
? 動態sql語句-array
? 動態sql語句-map
? 實現關聯數據的查詢
? 數據訪問之Mybatis的緩存
? Mybatis代碼生成工具
? Mybatis sql輸出
? Mybatis延時加載
? 與Spring5的集成
? 與SpringMVC的集成
? 數據訪問之JdbcTemplate應用與實戰
? 數據訪問之JPA應用與實戰
案例:基于Mybatis實現的增刪改查
案例:基于JdbcTemplate實現的增刪改查
案例:基于JPA實現的增刪改查
案例:基于SSM三大框架的整合案例實戰
五、Java企業級應用快速開發框架之SpringBoot
1、微服務基礎
? 傳統單體架構面臨的問題
? 微服務架構演變過程剖析
? 從微服務架構要求剖析微服務架構應解決哪些問題?
? 介紹微服務基本概念、技術發展的由來,以及目前流行的技術(主要針對Java 平臺),Spring Boot、Spring Cloud、Spring Cloud Stream等
? Spring Boot 預備環境、新建 Spring Boot 應用、代碼組織結構、運行
2、SpringBoot概述
? 什么是Spring Boot
? Spring Boot的核心功能
? Spring Boot的優缺點對比
? Spring Boot的版本
? Spring Boot環境快速搭建
實戰:使用SpringBoot快速構建RESTful API應用
3、SpringBoot核心配置
? 啟動類與@SpringBootApplication
? 自動配置的開閉
? Spring Boot的配置文件
? Spring Boot之starter pom
? 使用命令行參數實現外部配置
? 常規屬性的配置
? 多環境配置之Profile配置
? SpringBoot的包版本管理
? SpringBoot自動配置
? SpringBoot熱部署機制
? 如何自定義配置參數?
? 外部化配置
? 多環境配置
? Spring Boot常用注解
? Spring Boot發布之jar與war
? 生產級特性
? 外部配置
? 監控
實戰:使用SpringBoot基于多環境的快速切換
4、SpringBoot數據庫開發
? SpringBoot使用JPA實現ORM
? SpringBoot的JPA常用注解
? SpringBoot整合JPA
? SpringBoot整合Mybatis
? 介紹JDBCTemplate背景
? SpringBoot整合JDBCTemplate
實戰:SpringBoot對Spring Data JPA的整合
5、SpringBoot與Redis整合
? Redis簡介與背景介紹
? Redis安裝與配置
? Redis常用數據類型
? Redis結構與底層原理
? Redis常用命令
? Redis鍵
? Redis字符串、列表、集合
? Redis事務機制
? Redis發布訂閱
? Redis數據備份與恢復機制rdb與aof
? SpringBoot與Redis整合
實戰:SpringBoot整合redis實現熱數據緩存
實戰:SpringBoot整合redis實現分布式鎖
七、Java企業應用開發之分布式系統與微服務
1、架構演變歷程
? 傳統單體架構分析
? 單體架構局限性與面臨的挑戰
? 如何解決單體架構的局限性和面臨挑戰?
? 架構的演變歷程剖析
案例:結合案例分析傳統單體架構面臨問題
2、微服務架構綜述
? 什么是微服務架構?
? 微服務架構優點
? 微服務架構面臨的挑戰有哪些?
? 微服務生命周期與交付流程
? 微服務管理規范
? 微服務解決方案的技術選型
? 微服務架構及常用組件
? 基于微服務架構的設計對于團隊有什么要求?
? 什么類型場景不適合上微服務架構?
3、微服務的設計與拆分
? 服務的設計、開發和運維流程
? 服務拆分的維度有哪些?如何正確的進行服務拆分?
? 服務拆分后常遇問題有哪些?如何解決?
? 服務的設計原則
? 服務拆分后面臨挑戰
4、微服務之Spring Cloud
? Spring Cloud定義
? Spring Cloud生態子項目剖析
? Spring Cloud特點
5、微服務之注冊中心
? 服務調用端與服務提供端之間透明通信
? 如何實現服務的動態注冊與發現
? 注冊中心引入
? 注冊中心之zookeeper
? 注冊中心底層實現剖析
? SpringCloud之注冊中心Eureka
? Eureka服務注冊與發現的原理剖析
? Eureka的自保護機制
? Eureka的應用實戰
? Eureka的高可用
? SCA下服務注冊與發現中心之Nacos?
? Nacos基本架構
? Nacos支持功能(服務發現、配置管理…)
? Nacos SDK與Open-API
? Nacos與Eureka對比
實戰:將案例中的各微服務基于EurkaServer實現服務的注冊與發現
實戰:將案例實戰中的各微服務基于Nacos實現的服務注冊與發現
6、微服務之遠程調用
? 如何實現跨服務間的遠程調用?
? 跨服務間遠程調用的幾種方式?
? 跨服務間遠程調用需考慮的因素有哪些?
? 如何實現跨服務調用的負載均衡?
? 服務端負載均衡常見方案
? 客戶端負載均衡常見方案
7、微服務之遠程同步調用
? 基于RestTemplate的直連遠程調用
? RestTemplate如何與Eureka實現服務發現以及負載均衡
? 基于Feign實現的遠程負載均衡調用
? 如何解決跨服務間同步調用的數據一致性?
? 本地事務定義以及事務的ACID特性分析
? 什么是分布式事務?
? 分布式事務的應用場景有哪些?
? 分布式事務的原理
? 分布式事務XA協議、兩階段提交與三階段提交的流程與原理剖析
? SCA下Seata對事務模式的支持
? Seata AT模式下的應用實戰
實戰:基于RestTemplate實現直連的遠程調用
實戰:基于RestTemplate與Eureka整合實現的遠程負載均衡調用
實戰:基于Feign方式實現的訂單服務遠程調用商品服務
8、微服務之遠程異步調用
? 跨服務間異步調用的實現方式
? 跨服務間異步調用如何確保異步成功執行?
? 基于MQ實現微服務異步調用
? MQ的異步通知模型
? 異步通知模型下服務的冪等性要求
? 如何實現本地事務與MQ消息發送的一致性
? 基于MQ下的事務消息模型
? 分布式系統之同步調用案例分析
? 分布式系統同步調用存在問題與優化方向
? 消息隊列之分布式系統異步調用案例分析
? 消息隊列之削峰填谷案例分析
? 消息中間件選型與對比
? 消息隊列編程模型之點對點
? 消息隊列編程模型之發布/訂閱
? 消息隊列Kakfa安裝與配置
? Kafka主題管理與創建
? Kafka消息發送
? Kafka消息消費(單播、多播)
? Kafka消費消息偏移量
? Kafka消費者分組
? Kafka分區與副本
? Kafka集群
實戰:實戰演示多服務間的遠程異步調用
9、微服務之容錯處理
? 雪崩效應場景分析
? 如何應對雪崩效應下的容錯處理
? 微服務間調用超時如何處理?
? 如何實現微服務的服務降級與熔斷
? 如何對服務提供者實現限流?
? Spring Cloud體系下之容錯處理解決方案斷路器Hystrix
? 基于Hystrix實現方法級的服務降級與熔斷
? 基于Hystrix服務降級與熔斷策略的配置
? 如何正確設置服務的超時時間?應遵循什么原則?
? 基于Hystrix Dashboard實現服務的流量與熔斷監控
? SCA服務限流降級之Sentinel
? Sentinel的基本概念:資源、規則
? Sentinel的工作流程與原理剖析
? Sentinel對流量控制、熔斷降級的實現機制
? Sentinel實時監控和規則管理的控制臺
? Sentinel與開源框架的快速適配
? Spring Cloud體系下之容錯處理解決方案斷路器Hystrix
? Sentinel與Spring Cloud Hystrix對比
實戰:通過跨服務的遠程調用服務降級與熔斷模擬,通過Hystrix Dashboard查看可視化監控數據
實戰:基于Sentinel配置管理平臺實現動態限流
實戰:基于Sentinel實現上游服務訂單服務調用下游服務商品服務限流
10、微服務之網關
? 微服務網關定義
? 微服務網關的應用場景有哪些?
? 網關的實現原理
? SpringCloud之微服務網關zuul
? 編寫zuul微服務網關的流程
? zuul過濾器的應用
? zuul的容錯與回退處理
? zuul如何自定義服務的中轉策略
? SpringCloud之微服務網關gateway
實戰:基于zuul實現遠程案例中服務的鑒權
實戰:基于spring cloud gateway實現遠程案例中服務的鑒權
六、綜合案例
1、綜合案例介紹
? 需求與功能分析
? 架構設計(確認采用技術架構、技術棧、數據交互流程圖)
? 接口梳理
? 數據庫表設計
? 服務拆分與設計
2、工程搭建
? 創建父工程
? 創建基礎模塊
? 創建用戶微服務
? 創建商品微服務
? 創建訂單微服務
3、商品微服務開發
? 實體層開發
? 數據訪問層開發
? 服務層開發
? 接口層開發
? 單元測試
4、訂單微服務開發
? 實體層開發
? 數據訪問層開發
? 服務層開發
? 接口層開發
? 單元測試
6、用戶微服務開發
? 實體層開發
? 數據訪問層開發
? 服務層開發
? 接口層開發
? 單元測試
7、網關層微服務開發
? 網關路由映射設計
? 網關鑒權功能開發
8、集成測試與驗證