一个全面的Java核心技术实践项目,包含了设计模式、框架技术、性能优化、多线程编程等多个方面的示例代码和实践。所有代码都配备了完整的JUnit 5单元测试,确保代码质量和学习效果。
本项目是一个基于Maven构建的Java核心技术实践集合,涵盖了从基础的设计模式到高级的框架技术,旨在为Java开发者提供丰富的学习资源和实战示例。项目已完成测试标准化改造和依赖安全性升级,所有main方法已规范化为JUnit 5测试用例,提供了207个高质量的单元测试,确保代码安全性和学习效果。
- 核心技术: Java 8, Maven
- 框架: Spring Framework 5.3.39, Spring Boot 2.7.18
- 数据库: Redis, MySQL Connector J 8.2.0, Hibernate 5.6.15
- 性能测试: JMH 1.36, Disruptor 3.4.4
- 网络通信: OkHttp 4.9.3, gRPC, RabbitMQ 5.22.0
- 工具库: Guava 33.4.0-jre, Lombok 1.18.30, Gson 2.11.0
- 监控: Sentinel 1.8.8, Metrics 4.2.28
- 测试: JUnit 5.8.2, Mockito 4.11.0, Maven Surefire 2.22.2
- 适配器模式 (
adapter/) - MacBook Pro适配器示例 - 责任链模式 (
chain/) - 多种责任链实现,包括Filter链、拦截器链等 - 命令模式 (
command/) - 法师与哥布林的魔法系统 - 解释器模式 (
interpreter/) - 表达式解析器 - 迭代器模式 (
iterator/) - 自定义聚合器和迭代器 - 访问者模式 (
visitor/) - 进博会展馆访问系统
- Spring框架 (
spring/) - IoC容器、事件机制、FactoryBean等 - Spring Boot Web (
web/) - Redis集成、REST控制器 - SPI机制 (
spi/) - Java服务提供者接口实现
- Disruptor (
disruptor/) - 高性能无锁队列示例 - JMH基准测试 (
jmh/) - 微基准测试框架使用 - 多线程编程 (
multiThread/) - 线程池、ThreadLocal、并发工具等
- Stream API (
jdk8/) - 流式处理、并行计算 - Optional - 避免空指针异常
- LocalDate - 新的日期时间API
- Lambda表达式 - 函数式编程
- 简单RPC (
simplerpc/) - 自定义RPC框架实现 - gRPC (
grpc/) - 高性能RPC框架
- 字符串处理 (
string/) - String intern机制、随机字符串生成 - 排序算法 (
sort/) - 归并排序、链表反转等 - 运行时工具 (
runtime/) - 进程执行示例 - Spring表达式 (
spel/) - SpEL表达式语言使用
- Sentinel (
sentinel/) - 阿里巴巴开源的流量控制组件 - Metrics (
metrics/) - 应用性能监控
- JDK 8 或更高版本
- Maven 3.x
- Redis (用于Spring Boot示例)
- MySQL (用于数据库相关示例)
mvn clean compilemvn test# 设计模式测试
mvn test -Dtest="*PatternTest"
# 多线程测试
mvn test -Dtest="MultiThreadTest"
# JDK8特性测试
mvn test -Dtest="Jdk8FeaturesTest"
# Spring框架测试
mvn test -Dtest="SpringPatternTest"# 测试完成后查看详细报告
open target/surefire-reports/index.html每个功能都有对应的测试用例,建议:
- 先运行测试了解功能
- 查看测试代码理解用法
- 修改测试验证自己的理解
# 从设计模式开始
mvn test -Dtest="*PatternTest" -q
# 学习高性能编程
mvn test -Dtest="DisruptorPatternTest,MultiThreadTest" -q
# 学习框架技术
mvn test -Dtest="SpringPatternTest,FrameworkToolsTest" -q项目使用统一的properties管理所有依赖版本:
<properties>
<!-- 核心框架版本 -->
<spring.version>5.3.39</spring.version>
<spring-boot.version>2.7.18</spring-boot.version>
<!-- 数据库相关版本 -->
<mysql-connector.version>8.2.0</mysql-connector.version>
<hibernate.version>5.6.15.Final</hibernate.version>
<!-- 工具库版本 -->
<guava.version>33.4.0-jre</guava.version>
<gson.version>2.11.0</gson.version>
<!-- ... -->
</properties>spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123
server.port=8080在 META-INF/services/ 目录下配置服务实现类,支持Java SPI机制。
- 23种经典设计模式的Java实现
- 实际应用场景和最佳实践
- 模式组合使用示例
- 完整的测试覆盖: 每个模式都有对应的JUnit测试
- 线程池的正确使用
- 无锁编程技术 (Disruptor)
- 并发工具类应用
- 并发测试实践: CountDownLatch、Future、CompletableFuture等
- JMH微基准测试
- 内存优化技术
- GC调优实践
- 基准测试方法: JMH注解和最佳实践
- Spring IoC和AOP机制
- Spring Boot自动配置
- 自定义starter开发
- 版本兼容性: 经过测试的稳定版本组合
- HTTP客户端实现
- RPC框架设计
- 端到端测试: 完整的网络通信测试用例
- 207个单元测试: 覆盖所有核心功能
- 测试即文档: 通过测试用例学习API使用
- 质量保证: 所有代码经过测试验证
- 持续集成: Maven Surefire插件确保测试稳定性
- 安全性保障: 所有依赖已升级到安全版本,消除已知漏洞
// 传统方式 vs Stream并行处理
Stream.of(split)
.parallel()
.map(Integer::valueOf)
.flatMap(p -> getIds(p).stream())
.distinct()
.flatMap(p -> getObject(p).stream())
.forEach(out::print);Disruptor<LongEvent> disruptor = new Disruptor<>(factory, bufferSize, executor);
disruptor.handleEventsWith(new LongEventHandler());public class FilterChain {
private List<Filter> filters = new ArrayList<>();
public void doFilter(Request request, Response response) {
// 链式处理逻辑
}
}@DisplayName("设计模式测试")
public class DesignPatternTest {
@Test
@DisplayName("测试适配器模式")
public void testAdapterPattern() {
MacBookPro macbook = new MacBookPro();
HooTooAdapter adapter = new HooTooAdapter(macbook);
assertDoesNotThrow(() -> adapter.request());
}
@ParameterizedTest
@ValueSource(strings = {"cat", "dog", "lion"})
public void testFilterChain(String animal) {
// 参数化测试示例
}
}欢迎提交Issue和Pull Request来完善这个实践项目。请确保:
- 代码风格一致
- 添加必要的注释
- 必须提供JUnit 5测试用例
- 确保
mvn test全部通过 - 更新相关文档
- 测试覆盖率: 所有public方法必须有测试
- 测试命名: 使用
@DisplayName提供中文描述 - 断言: 使用JUnit 5的现代断言API
- 参数化测试: 复杂场景使用
@ParameterizedTest - 安全性: 确保依赖版本无已知安全漏洞
- 版本管理: 新增依赖必须在properties中统一管理版本
本项目采用开源许可证,可自由学习和使用。
如有问题或建议,请通过Issue进行反馈。
- ✅ 安全性升级: 修复所有已知安全漏洞,升级到安全版本
- ✅ 依赖管理优化: Properties统一管理所有版本号
- ✅ 依赖精简: 移除重复依赖,提高项目维护性
- ✅ 测试扩展: 从81个扩展到207个JUnit 5测试用例
- ✅ 兼容性保证: 确保Java 8兼容性
- ✅ 构建优化: Maven编译器插件升级,构建更稳定
Tests run: 207, Failures: 0, Errors: 0, Skipped: 0
成功率: 100% ✅
总耗时: ~21秒
- MySQL Connector: 升级到8.2.0,修复HIGH级别漏洞
- Guava: 升级到33.4.0-jre,修复MEDIUM级别漏洞
- Gson: 升级到2.11.0,修复HIGH级别漏洞
- Spring Framework: 升级到5.3.39,修复CRITICAL级别漏洞
- 其他组件: 全面升级到安全版本
注意: 本项目主要用于学习目的,所有功能都经过测试验证,可以安全运行。推荐通过测试用例学习各种技术的使用方法。