Skip to content

一个全面的Java核心技术实践项目,包含了设计模式、框架技术、性能优化、多线程编程等多个方面的示例代码和实践。所有代码都配备了完整的JUnit 5单元测试,确保代码质量和学习效果。

Notifications You must be signed in to change notification settings

OldCoderIsMe/java-core-practice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Java核心实践项目

一个全面的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

项目结构

设计模式 (Design Patterns)

  • 适配器模式 (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、并发工具等

Java 8+ 特性

  • 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 compile

运行测试

运行所有测试

mvn 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

学习方式建议

1. 通过测试学习

每个功能都有对应的测试用例,建议:

  • 先运行测试了解功能
  • 查看测试代码理解用法
  • 修改测试验证自己的理解

2. 按模块学习

# 从设计模式开始
mvn test -Dtest="*PatternTest" -q

# 学习高性能编程
mvn test -Dtest="DisruptorPatternTest,MultiThreadTest" -q

# 学习框架技术
mvn test -Dtest="SpringPatternTest,FrameworkToolsTest" -q

配置说明

依赖版本管理 (pom.xml)

项目使用统一的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>

Redis配置 (application.properties)

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123
server.port=8080

SPI配置

META-INF/services/ 目录下配置服务实现类,支持Java SPI机制。

主要学习内容

1. 设计模式实践

  • 23种经典设计模式的Java实现
  • 实际应用场景和最佳实践
  • 模式组合使用示例
  • 完整的测试覆盖: 每个模式都有对应的JUnit测试

2. 高并发编程

  • 线程池的正确使用
  • 无锁编程技术 (Disruptor)
  • 并发工具类应用
  • 并发测试实践: CountDownLatch、Future、CompletableFuture等

3. 性能优化

  • JMH微基准测试
  • 内存优化技术
  • GC调优实践
  • 基准测试方法: JMH注解和最佳实践

4. 框架深度学习

  • Spring IoC和AOP机制
  • Spring Boot自动配置
  • 自定义starter开发
  • 版本兼容性: 经过测试的稳定版本组合

5. 网络编程

  • HTTP客户端实现
  • RPC框架设计
  • 端到端测试: 完整的网络通信测试用例

6. 测试驱动学习 (NEW!)

  • 207个单元测试: 覆盖所有核心功能
  • 测试即文档: 通过测试用例学习API使用
  • 质量保证: 所有代码经过测试验证
  • 持续集成: Maven Surefire插件确保测试稳定性
  • 安全性保障: 所有依赖已升级到安全版本,消除已知漏洞

代码示例亮点

Stream API性能对比

// 传统方式 vs Stream并行处理
Stream.of(split)
    .parallel()
    .map(Integer::valueOf)
    .flatMap(p -> getIds(p).stream())
    .distinct()
    .flatMap(p -> getObject(p).stream())
    .forEach(out::print);

Disruptor高性能队列

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) {
        // 链式处理逻辑
    }
}

JUnit 5测试示例

@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来完善这个实践项目。请确保:

  1. 代码风格一致
  2. 添加必要的注释
  3. 必须提供JUnit 5测试用例
  4. 确保 mvn test 全部通过
  5. 更新相关文档

代码质量标准

  • 测试覆盖率: 所有public方法必须有测试
  • 测试命名: 使用@DisplayName提供中文描述
  • 断言: 使用JUnit 5的现代断言API
  • 参数化测试: 复杂场景使用@ParameterizedTest
  • 安全性: 确保依赖版本无已知安全漏洞
  • 版本管理: 新增依赖必须在properties中统一管理版本

许可证

本项目采用开源许可证,可自由学习和使用。

联系方式

如有问题或建议,请通过Issue进行反馈。


项目更新日志

v2.1 (2025) - 安全性与稳定性版本

  • 安全性升级: 修复所有已知安全漏洞,升级到安全版本
  • 依赖管理优化: 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级别漏洞
  • 其他组件: 全面升级到安全版本

注意: 本项目主要用于学习目的,所有功能都经过测试验证,可以安全运行。推荐通过测试用例学习各种技术的使用方法。

About

一个全面的Java核心技术实践项目,包含了设计模式、框架技术、性能优化、多线程编程等多个方面的示例代码和实践。所有代码都配备了完整的JUnit 5单元测试,确保代码质量和学习效果。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages