《Java企业应用开发与项目实战》 立志于快速专向Java企业应用开发 主讲:陈国星 【课程背景】 企业通过校招或社招的新员工如何快速掌握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实现IPFilter 案例:通过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对SpringData 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、微服务之SpringCloud Ø 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与SpringCloud 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、集成测试与验证
|