【课程背景】
企业通过校招或社招的新员工如何快速掌握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、集成测试与验证