本文目录导读:

基础巩固案例(适合1-2天)
「员工管理系统」命令行版
- 核心知识点:面向对象、集合框架(ArrayList/HashMap)、IO流(文件读写)、异常处理
- 实操目标:
- 定义
Employee类(ID、姓名、薪资、部门) - 实现增删改查(CRUD)功能
- 将员工数据持久化到文本文件
- 添加自定义异常(如
EmployeeNotFoundException)
- 定义
- 扩展任务:使用
Collections.sort()实现按薪资排序
「简单银行账户」多线程模拟
- 核心知识点:线程安全、
synchronized、ReentrantLock、wait/notify - 实操目标:
- 模拟100个客户同时存取款
- 使用线程池(
ExecutorService)控制并发 - 实现死锁检测与预防
- 代码片段:
class Account { private int balance; public synchronized void deposit(int amount) { ... } public synchronized void withdraw(int amount) { ... } }
数据库与JDBC实战(1天)
「图书借阅系统」DAO模式
- 核心知识点:JDBC连接池(HikariCP)、PreparedStatement防注入、事务管理
- 实操目标:
- 设计MySQL表:
book、user、borrow_record - 使用DAO模式分层(
BookDAO、UserDAO) - 实现借书/还书事务(同步更新库存和记录)
- 设计MySQL表:
- 关键技巧:
Connection conn = DataSourceUtil.getConnection(); conn.setAutoCommit(false); try { // 业务操作 conn.commit(); } catch { conn.rollback(); }
Web开发入门(2天)
「待办事项清单」REST API
- 核心知识点:Spring Boot、JPA/Hibernate、RESTful设计原则
- 实操目标:
- 创建Spring Boot项目(
spring-boot-starter-web) - 定义
Todo实体(ID、标题、是否完成、截止日期) - 实现完整的CRUD API(GET/POST/PUT/DELETE)
- 使用Postman测试接口
- 创建Spring Boot项目(
- 进阶:添加Swagger文档、全局异常处理(
@ControllerAdvice)
「用户注册登录」Session/Cookie管理
- 核心知识点:Servlet/Filter、Session生命周期、密码加密(BCrypt)
- 实操目标:
- 实现注册(密码加密存储)、登录(Session校验)
- 使用Filter实现登录拦截(
@WebFilter) - 防止XSS(输入过滤)、CSRF(Token校验)
- 注意:对比Cookie与Session的适用场景
企业级框架综合(2-3天)
「小型电商平台」微服务架构
- 核心知识点:Spring Cloud(Eureka/Feign)、MyBatis-Plus、Redis缓存
- 模块设计:
| 服务名 | 功能 | 技术亮点 |
|---|---|---|
|
user-service| 用户注册登录 | JWT鉴权 | |product-service| 商品列表查询 | Redis缓存热点数据 | |order-service| 下单扣库存 | 分布式事务(Seata)+ 乐观锁 | - 实操目标:
- 使用Feign实现服务间调用
- 使用RabbitMQ实现订单异步通知
- 集成Sentinel实现流量控制
性能优化与JVM调优(1天)
「日志分析工具」内存泄漏定位
- 核心知识点:JVM内存模型、GC日志分析、MAT工具使用
- 实操步骤:
- 编写程序模拟内存泄漏(如静态集合无限添加对象)
- 设置JVM参数:
-Xms256m -Xmx512m -XX:+PrintGCDetails - 使用
jvisualvm监控堆内存,导出Heap Dump - 用MAT分析泄漏对象引用链
- 案例场景:批量处理大文件时
StringBuilder未及时释放
自动化测试与CI/CD(0.5天)
「单元测试+持续集成」实战
- 核心知识点:JUnit5、Mockito、Jacoco覆盖率、Jenkins管道
- 实操目标:
- 为「员工管理系统」编写单元测试(覆盖DAO和Service层)
- 使用Mockito模拟数据库操作
- 配置Jenkins自动构建+测试报告生成
- 代码示例:
@Test void testGetEmployeeById() { when(employeeDAO.findById(1)).thenReturn(new Employee("Tom", 5000)); assertEquals("Tom", employeeService.getEmployee(1).getName()); }
培训建议
- 分组对抗:将学员分成两组,分别实现「订单服务」和「支付服务」,最后联调
- 代码审查:针对
Optional使用不当、try-with-resources遗漏等常见问题进行Review - 实战考核:要求2小时内实现「在线答题系统」核心功能(包含数据库+API+前端Vue基础)
通过以上案例,学员可系统掌握Java开发的主流技术栈,并提升解决实际问题的能力。