Java 提薪实战营大纲(新)

Java 提薪实战营大纲(新)


Java 提薪实战营大纲(新)_第1张图片

Java 提薪实战营大纲(新)_第2张图片

第 1 周 并发编程精要

学习收益:
通过本周的学习,我们可以掌握 Java 多线程并发编程的相关知识,分析比较不同并发容器的效率。并发是分布式的基础知识,学好并发能为我们后续的学习打下扎实的基础。
课程内容:

1. 技术知识:

主要讲解 Java 线程并发的相关知识,包括多线程基础、线程同步、并发基础知识、容器等。

743案例实践(一):两个企业级实战项目的功能介绍及具体的架构分析(随身记信息管理系统和 MyFavorites 服务器系统)。
案例实践(二):并发容器性能竞赛实践:各种 Java 并发实现方式范例、同步的概念和表象。
案例实践(三):并发容器性能竞赛实践:灵活运用多种线程池,对比各种并发实现方法的效率差别。

详细知识点:多线程基础:线程,ThreadLocal,线程交互 notify/wait,线程协作 fork/join,Synchronized/Lock/ReadWriteLock,CountDownLatch/CyclicBarrier/Semaphore。并发基础:Atomic 原子操作,AQS/CAS,Callable/Future,Executor,线程池ThreadPoolExecutor。并发容器:ConcurrentHashMap/BlockingQueue/CopyOnWriteList 等。

第 2 周 详解多线程并发编程以及 Java NIO 技术

学习收益:
本周主要学习 Java 语言中较为新颖的并发编程特性,从而在工作中能够更熟练地运用更先进的 Java 功能。此外,为了承载更大的并发访问量,我们还将学习 Java 语言中非常重要的知识—— I/O 技术,以及网络框架是如何帮助开发者更有效率地开发高性能网络应用的。
课程内容:
案例实践(一):并发容器性能竞赛实践:学习 Java 8 以后新的并发特性,形成新的知识脉络。阶段总结:完整回顾 Java 多线程并发知识点,并解答常见的问题和易错点。技术知识:学习 NIO 技术知识,了解 Java AIO/NIO 以及 Netty 的设计实现原理。
案例实践(二):Java NIO 统一处理文件和网络 I/O:学习 Java IO 和 NIO 的核心知识。
案例实践(三):Java NIO 统一处理文件和网络 I/O:了解 Java NIO 的网络实现,弄清楚它是如何利用操作系统能力的。详细知识点:Fork/Join 框架,CompletableFuture,Java 8 Stream。I/O 知识:同步/异步,阻塞/非阻塞,BIO/NIO/AIO,Reactor/Proactor,Java I/O 包。Java NIO:缓冲区 Buffer,Channel,网络和文件一致接口,选择器和多路复用。

第 3 周 深入剖析 Java NIO 技术

学习收益:
本周我们将通过案例实践来厘清 Java NIO 是如何统一处理文件和网络 I/O 的。面对 I/O 就是面对时延和不稳定因数,设计网络框架要把重点放在帮助开发者集中精力于实现业务逻辑上,而非细节处理上。因此,我们将通过案例实战来剖析其背后的原理,从而实现进一步优化。
课程内容:
案例实践(一):Java NIO 统一处理文件和网络 I/O:掌握文件 I/O 访问和新的 NIO API,高效访问和处理文件。
案例实践(二):Java NIO 统一处理文件和网络 I/O:通过嵌入网络框架,学习实现 HTTP Server,了解响应式网络 API 精要。案例实践(三):MyFavorites 服务器系统:学习 Netty 核心概念和 API 设计原理,理解事件和线程模型。
案例实践(三):MyFavorites 服务器系统:和微信服务器网络对接,处理协议数据并返回结果。阶段总结:I/O 不仅重要且知识点众多,因此将全面回顾 I/O 所学内容,对常见问题进行解答。详细知识点:Java NIO:文件 NIO API,配合 Stream 访问数据。Netty:Netty 架构,EventLoop,TCP 拆解包,Netty 的启动和执行过程/线程模型/事件驱动。其他网络框架介绍,嵌入式 HTTP Server,响应式 Reactive 编程方法。

第 4 周 Java 语言和工具进阶

学习收益:
本周将学习 Java JDK 中几个重要工具的使用以及部分关键特性的使用。JMX 是 Java 标配的管理监控接口,Java 在预处理阶段,开发者可以自定义处理逻辑。通过这部分知识点的学习,开发者可以更好地了解 Java 高级工具的运行原理,为后面进行性能调优打下良好基础。Java 安全也是很重要的知识内容,我们将通过实践去学习证书和模块化的知识,这些对理解 Java 大项目中安全部分的代码原理会有很大帮助。
课程内容:
技术知识(一):讲解主要的 JDK 命令行和图形工具的使用方法及具体应用场景。
技术知识(二):讲述 JMX 原理,Java 监控能力和相关工具,预处理器原理和具体编程实例。
案例实践(一):编写国密算法加密程序:学习 Java 安全技术知识,加解密算法。
案例实践(二):编写国密算法加密程序:了解证书相关知识,构建模块化定义裁剪 JDK 运行时。阶段总结:通过学习 Java 语言和工具进阶这个模块,更好地了解 Java 语言的高级能力,特别是模块化和安全相关技术。全面回顾所学内容,对常见问题进行解答。
详细知识点: JDK 工具,包括 jcmd、jstat、jmap 等常用命令行及其他图形监控工具。预处理器原理和编程,JMX 概念和工具。JPMS 模块化机制,JDK 模块化分析,J-Link 组装工具。Java 安全相关知识,加密解密算法,安全证书,加密传输,认证和授权。

第 5 周 DDD 领域驱动设计和 JVM 核心知识

学习收益:
本周将学习 DDD 领域驱动模型设计,通过实战项目了解 DDD 的思想和开发方法。此外,还将深入 Java 虚拟机内部,了解 JVM 核心技术,包括关键的内存模型和类加载原理,掌握 JVM 分析工具的使用方法和 GC 原理。
课程内容:
案例实践(一):随身记信息管理系统:了解 DDD 领域驱动设计的基本思想,设计系统模型。
案例实践(二):随身记信息管理系统:实战设计项目实体对象,领域服务等,更深刻地理解面向对象编程和重构技术精要。
技术知识(一):学习 JVM 基础知识,领悟 JVM 重要启动参数作用和类加载过程。
技术知识(二):理解 Java 字节码,运用 cglib 等工具类加强。
案例实践(三):实战剖析 JVM 状态并分析性能:了解 JVM 内存模型,分析线程/对象/类,学习 GC 基本原理。
详细知识点: 面向对象编程重点技术,领域驱动设计基础,重构思想关键点。JVM 基础知识,JVM 启动参数,Classloader 类加载器。字节码技术,cglib,JVM 内存模型。Java GC 原理,垃圾回收时的内存管理。

第 6 周 JVM 性能剖析和 Java 框架技术原理

学习收益:
上周我们学习了 JVM 的核心知识,本周将继续进行 JVM 技术实践,通过项目分析来深入理解不同的 GC 算法实现。此外,本周我们还会学习 Java 语言中一个非常重要的知识点:对象注入和开发框架技术,以及 Java 开发者最常用到的 Spring 全家桶。我们将通过开发一个 Spring Boot starter 实战项目来充分学习 Spring 的关键知识点,实现微服务的扩展组件。
课程内容:
案例实践(一):实战剖析 JVM 状态并分析性能:进一步了解 GC 算法,深入分析类加载和字节码技术。阶段总结:全方位复习 JVM 相关技术知识,运用 JDK 和三方的工具来分析 JVM,解答常见技术难题。技术知识:深入讲解 Java 对象注入的核心内容,分析 Guice 框架的实现方式和 DI 规范精要。
案例实践(二):实现信息获取的 Spring Boot starter:学习 Spring 框架和常用组件,包括 MVC,Data 等。
案例实践(三):实现信息获取的 Spring Boot starter:学习 Spring Boot 技术精要,config 解析处理原理,组件结合方法。
详细知识点: 常见的 GC 算法:Parallel GC/CMS/G1 等。对象注入原理和实现,DI 规范定义,Guice 框架。Spring 技术体系全面解析。Spring 微服务,Spring Boot 技术。

第 7 周 用 Java 框架实现 DDD 领域模型和 Java 云原生项目实战

学习收益:本周我们将学习在 DDD 设计思路下,如何通过 Spring 和 CDI 技术框架来分别实现业务逻辑,从而帮助我们更好地理解用 Java 框架实现原理和技术能力。其次,老师会系统讲解 Jakarta EE 知识和 Spring 框架的技术基础,助力理解 Java 整个开发体系。此外,我们还会学习 Quarkus 云原生开发框架,了解 Java 云原生方向的开发实践,掌握本地化编译技术。
课程内容:
案例实践(一):随身记信息管理系统:学习 DDD 领域模型,使用 Spring 框架实现业务逻辑。
案例实践(二):随身记信息管理系统:利用 CDI 实现领域模型架构,并了解 JEE 可以复用的技术组件。技术知识:学习 Jakarta EE(Java EE) 核心技术,理解主要子规范在 Java 开发中的重要作用。
案例实践(三):Quarkus 云原生项目:从整体上分析讲解 Quarkus,了解项目使用的技术栈。
案例实践(四):Quarkus 云原生项目:分析其高性能原理,编译成本地代码原理,GraalVM 技术。
详细知识点: Jakarta EE(Java EE)技术规范,Servlet/JPA/JaxRS/CDI/EJB 等重要子规范。Java 云原生技术,Quarkus 开源项目。GraalVM 项目和编译原理。
第 8 周 Java 高性能数据库访问
学习收益:
本周我们将通过知识点讲解和案例实战分析,来深入剖析 Java 访问数据库和进行数据存取的技术方法。对于大型企业项目来说,访问数据库是非常重要的信息处理环节,如何可靠高效地保存数据非常关键。通过本周的学习,我们将会了解 Java 访问数据库的几种方式以及在设计数据库表时所要遵循的原则,充分理解事务处理的核心技术。课程内容:阶段总结:全方位回顾前面所学的 Java 框架技术所涉及到的众多知识点,解答常见问题。
技术知识(一):了解 Java 数据库访问技术,学习数据库事务和锁的机制。
案例实践(一):实现信息获取的 Spring Boot starter:直接采用 JDBC 访问数据库,了解数据库表设计优化原则。
案例实践(二):Quarkus 云原生项目:数据访问的部分,使用 JPA 和 Hibernate,完善数据优化访问及事务处理,应对高并发下的访问。
技术知识(二):学习数据库分库分表相关技术,分布式数据库访问机制。
详细知识点: JDBC,事务技术。ORM 相关技术:JPA、Hibernate、MyBatis 等等。各种优化手段详解:库表设计优化,索引设计,外键,引擎选择等等。锁的原理,死锁场景和避免方案,SQL 查询优化、索引选择、连接优化、聚合查询等等。数据库垂直拆分与水平拆分,分库分表。

第 9 周 Java 数据存储进阶和 Java 性能优化

学习收益:本周我们将探究在面对海量用户和大并发需求时,如何在数据库访问层进行应对。除了目前业界采用的分库分表方法,我们还会讲解如何在微服务上进行拆分,如数据缓存和分布式事务等。此外,我们还会学习 Java 性能调优的相关知识,通过分析现存系统运行情况以及优化代码来提升整体性能。
课程内容:
案例实践(一):随身记信息管理系统:项目开始时考虑数据库表如何应对海量用户,进行分库分表设计。
案例实践(二):随身记信息管理系统:高效使用数据库缓存和合理处理事务,应对大并发访问。阶段总结:通过对若干项目的实战来更好地了解如何高效存储数据以及如何优化数据库,全面复习前面所学的知识点,解答常见问题。
技术知识(一):学习性能调优的基础知识,了解系统主要瓶颈位置,掌握相应工具的使用方法。
技术知识(二):领悟 Java 调试能力和热加载能力,知道如何在设计时优化并通过中间件能力来提升系统整体性能。
详细知识点: 分库分表实战,分布式主键,分表算法,数据迁移,实时同步。数据库事务处理,数据库缓存优化。Linux 环境性能调优,CPU、内存、磁盘和网络 I/O。Java Debug 能力,热加载 Reload。应用层中间件调优,设计时的重点考虑因素。

第 10 周 Java 性能优化和微服务系统设计

学习收益:本周我们将通过案例实践来学习 JVM 性能分析和调优过程。当我们面临存在性能问题的运行系统时,要知道如何通过工具进行分析和排错,并最终解决问题。此外,我们还会学习分布式和微服务的核心知识点,帮助我们全面认识微服务的设计原则。
课程内容:

  1. 案例实践(一):实战剖析 JVM 状态并分析性能:学习问题排查思路,找到系统瓶颈,查看 GC/线程/堆栈等数据信息。
  2. 案例实践(二):实战剖析 JVM 状态并分析性能:通过工具进行全链路追踪和指标检测,对系统日志进行分析。
  3. 阶段总结:JVM 性能分析和调优是帮助软件系统实现成熟稳定的必要环节,将全面复习所学内容,对重点问题进行解答。
  4. 技术知识(一):学习分布式基础知识,包括 RPC,协议,常见框架等。
  5. 技术知识(二):学习微服务设计原则,微服务治理和架构设计。
    详细知识点: JVM 问题排查分析,JVM 性能调优。系统可观测性,日志输出,全链路追踪 tracing,指标度量和监测。GC 日志,JVM 的线程堆栈等数据分析,内存分析。基础知识:RPC,通信与数据协议,WebService,REST,RPC 框架等等。微服务架构:微服务 12 要素及一些最佳实践,服务网格,云原生微服务,MicroProfile 技术核心。

第 11 周 分布式服务实战

学习收益:
本周我们将通过项目实践来深入学习微服务的分拆设计原则,并通过 Spring Cloud 来了解如何进行微服务治理,全面理解 Spring 微服务部署。另外,本周还有一个开源项目源码分析实战,即对 gRPC 和 Vert.x 的经典分布式处理源码进行剖析,通过源码来了解一个 RPC 框架在业务系统中是如何工作的,帮助我们更好地理解 Java 框架的实现原理。
课程内容:

  1. 案例实践(一):随身记信息管理系统:实战项目微服务拆分原则和分布式部署。
  2. 案例实践(二):随身记信息管理系统:使用 Spring Cloud 进行微服务治理。
  3. 案例实践(三):高质量源码分析:gRPC 实现跨进程 RPC 访问。
  4. 案例实践(四):高质量源码分析:Vert.x 如何集成 gRPC。
  5. 案例实践(五):高质量源码分析:一个跨节点,多语言 RPC 项目实现分析。详细知识点:微服务框架:Spring Cloud,Apache Dubbo 的基本使用与底层机制。微服务治理核心知识点:注册与发现、配置管理、服务分组、服务限流、服务熔断、服务降级、负载均衡等等。分布式技术:gRPC 框架,Vert.x 开发微服务系统。

第 12 周 微服务项目实践和消息中间件技术

学习收益:本周我们主要学习微服务的非业务功能特性,这部分技术能力可以移出 Java 进程,利用Service Mesh 技术,由云计算设施来提供服务,这也是目前云原生提倡的技术实现方法。此外,我们也会学习微服务客户端 API 的最佳实践,从而开发出高效的应用程序。另一方面,我们将学习中间件技术,讲解消息 API 关键技术和用 Java 实现的消息服务器,借此了解经典的 Java 消息处理技术方案。
课程内容:

  1. 技术知识(一):微服务非功能特性技术分析,云原生 Service Mesh 部署方式。
  2. 案例实践(一):MyFavorites 服务器系统:使用客户端访问微服务后台程序,考虑相关的技术因素。阶段总结:分布式和微服务是 Java 开发者需要学习的重点技术内容,对前面所学的知识进行回顾,并解答重点难点问题。
  3. 技术知识(二):学习消息的基础知识,包括协议和交互方式,消息系统核心设计原理。
  4. 技术知识(三):通过分析 JMS API 设计和 ActiveMQ 实现,了解消息系统的组成。
    详细知识点:
    项目的功能性需求和非功能性需求分析。如何实现项目的高性能、高可用、易维护、可扩展和安全性。微服务云原生:结合 Service Mesh 实现微服务治理。消息基本知识:消息模式(点对点、发布订阅),消息协议(STOMP、JMS、AMQP )。QoS,重试,死信队列,事务性,延迟投递,消息幂等与去重。消息中间件:ActiveMQ,JMS API。

第 13 周 消息中间件实践和缓存中间件技术

学习收益:
本周我们要学习的是分布式消息系统 Kafka,包括其原理和开发实践。Kafka 是当前大量数据传递、保存、处理的消息管道系统,学通了 Kafka 的相关知识点,将有助于理解其他分布式系统。此外,我们还会通过分布式缓存,实现 Web 的 Session 复制机制,实现分布式 Web 应用部署,并用缓存中间件和缓存 API 进行实战开发。
课程内容:

  1. 案例实践(一):Kafka 集群和数据处理:Kafka 的设计原则和重点概念。
  2. 案例实践(二):Kafka 集群和数据处理:Kafka 集群,分区,副本复制实践和数据处理开发实战。
  3. 技术知识:缓存的技术知识和应用场景,Spring 框架对缓存的支持。
  4. 案例实践(三):利用缓存进行 Session 复制:缓存的实战应用场景,开发扩展代码。
  5. 案例实践(四):利用缓存进行 Session 复制:配置和使用 Redis 复制 Session,通过工具进行监测。
    详细知识点: Kafka 功能与使用,高可用集群/分区/副本,性能分析。缓存的应用场景,加载策略,失效策略,缓存数据持久化。常见缓存问题处理:缓存预热、失效、击穿、雪崩、多级缓存。Spring 对缓存的支持。缓存中间件:Redis 的基本使用及底层原理。

第 14 周 Java 缓存中间件和 Java 项目管理实践

学习收益:在实际应用中,往往把缓存内嵌当成高级 HashMap 来使用。本周我们就会学习 Java 缓存 API 的用法,以及 Java 分布式缓存项目 Hazelcast,摸清缓存数据是如何在不同机器节点之间同步复制的。另外,我们还将接触 Java 项目管理,用 Maven 来管理 Java 项目,通过实际编写一个 Maven 插件来了解 Java 项目编译、测试、打包、部署等各状态的变化过程,同时我们还会开发一个实用的功能,对组件进行安全漏洞扫描,分析并生成报表。
课程内容:

  1. 技术知识(一):了解 Java 中缓存 API 和内嵌式缓存使用,学习分布式缓存 Hazelcast 技术。
  2. 阶段总结:Java 中间件消息和缓存是经常用到的两款中间件,对于支撑大并发 Java 应用系统起到了关键作用,回顾前面所学的知识,解答疑难问题。
  3. 技术知识(二):学习 Java 大规模项目管理技术能力,了解 DevOps 平台的功能特点及其在研发管理方面的应用实践。
  4. 案例实践(一):安全漏洞分析 Maven 插件:了解 Maven 技术原理,如何组织管理一个Java 项目,插件 API。
  5. 案例实践(二):安全漏洞分析 Maven 插件:设计并实现 Maven 插件,并进行项目组件的安全漏洞扫描分析。

详细知识点:
缓存中间件:JavaCache API, 内存缓存应用 Hazelcast(Java 数据结构、内存网格、事务支持、集群)。Java 项目实践,Maven 原理,Maven 插件实现。DevOps 研发管理平台,构建,部署,测试,运维流水线。

第 15 周 Java 项目管理和课程全面总结

学习收益:本周我们会学习单元测试工具 JUnit,了解 TDD/BDD 测试驱动开发的思想,这也是我们在实际工作中可以采用的敏捷开发方式。我们会总结两个贯穿整个课程的企业级实战项目,并对项目进行整合。
课程内容:

  1. 案例实践(一):对前面的实践项目,完善单元测试用例,并介绍 TDD/BDD 思想,必要时采用 Mock 测试方法。阶段总结:Java 项目管理是开发者进阶的一个重要环节,帮助更好地管理大规模开发团队。
  2. 案例实践(二):MyFavorites 服务器系统:整合项目功能,真实场景运行,分析日志输出。
  3. 案例实践(三):随身记信息管理系统:项目整体可以运行,分析其性能,输出相应指标。

课程总结:
全面总结回顾 Java 训练营课程,复习所学知识点,对关键问题进行解答。详细知识点:JUnit 单元测试,TDD/BDD,Mock 机制。Log 日志重要性,Logger 框架使用原则,分布式日志系统。

训练营实战项目:

实战一:

千万级用户“随身记”信息管理系统业务功能:用 DDD 领域驱动思想设计微服务系统,实现个人和团队的快捷信息管理,可以分布式部署,支持千万级用户。
技术难点:
通过 DDD 领域驱动思路来设计应用系统,采用微服务分布式部署,通过分库分表技术支持更多的用户数据存储。通过实践开发这个项目,进一步了解 Java 应用系统是如何设计和运用框架提升开发效率的,并且完整体验一个大规模项目的管理流程和开发、测试、上线流程。

实战二:

百万级用户“MyFavorites”公众号服务器业务功能:用 Netty 开发一个微信公众号服务器,对接微信并和“随身记”通信来保存信息,支持百万级数量以上的并发访问。
技术难点:通过 Netty NIO 技术高效对接微信公众号服务器,使其支持海量用户并发访问。通过和后台微服务进行数据通信来学习客户端访问和微服务治理,通过 Service Mesh 模型并结合云原生设施来实现非业务功能。

10 个动手实践项目:

https://shimo.im/docs/RKAWVbDVN1tdLRk8/ 《Java 提薪训练营-动手案例清单》十大知识模块清单:

  • 模块一:Java 并发编程
  • 模块二:Java NIO 技术
  • 模块三:Java 语言和工具进阶
  • 模块四:JVM 重点技术
  • 模块五:Java 对象注入和开发框架
  • 模块六:数据库高性能访问
  • 模块七:Java 性能优化
  • 模块八:分布式服务和服务治理
  • 模块九:使用消息、缓存等中间件服务
  • 模块十:Java 大规模项目管理

你可能感兴趣的:(java小菜鸟提升之路,java,开发语言,后端)