# javaLearn **Repository Path**: jkl9507/java-learn ## Basic Information - **Project Name**: javaLearn - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-12-08 - **Last Updated**: 2025-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java技术栈学习项目 这是一个完整的Java技术栈学习项目,包含了各种主流Java技术的示例代码和最佳实践。 ## 📚 项目结构 ``` java-learn-stack/ ├── java-basics/ # Java基础知识示例 ├── ssm-demo/ # SSM框架示例 ├── springboot-demo/ # Spring Boot示例 ├── springcloud-demo/ # Spring Cloud微服务示例 │ ├── eureka-server/ # 服务注册中心 │ ├── user-service/ # 用户服务 │ ├── order-service/ # 订单服务 │ └── gateway-service/ # 网关服务 ├── mysql-demo/ # MySQL数据库示例 ├── redis-demo/ # Redis缓存示例 ├── mq-demo/ # 消息队列示例 └── README.md # 项目说明文档 ``` ## 🛠 技术栈 ### Java核心 - **Java基础语法** - 数据类型、控制流程、方法 - **面向对象编程** - 封装、继承、多态、抽象类、接口 - **集合框架** - List、Set、Queue、Map - **异常处理** - 异常类型、处理机制、自定义异常 - **泛型编程** - 泛型类、泛型方法、通配符 - **多线程编程** - 线程创建、同步、通信、线程池 - **Stream API** - 函数式编程、流式处理 - **Lambda表达式** - 函数式接口、方法引用、闭包 - **函数式编程** - 高阶函数、函数组合、柯里化 - **设计模式** - GoF 23种经典设计模式实现 ### 后端框架 - **Spring Framework** - 核心框架 - **Spring MVC** - Web框架 - **Spring Boot** - 快速开发框架 - **Spring Cloud** - 微服务框架 - **MyBatis** - ORM框架 ### 数据库技术 - **MySQL** - 关系型数据库 - **Redis** - 内存数据库/缓存 - **JPA/Hibernate** - JPA实现 ### 消息队列 - **RabbitMQ** - 消息代理 - **Apache Kafka** - 分布式流处理平台 - **Apache RocketMQ** - 消息中间件 ### 开发工具 - **Maven** - 项目管理 - **Lombok** - 代码简化 - **Druid** - 数据库连接池 ## 🚀 快速开始 ### 环境要求 - JDK 8+ - Maven 3.6+ - MySQL 5.7+ - Redis 5.0+ - RabbitMQ 3.8+ - Kafka 2.8+ (可选) - RocketMQ 4.9+ (可选) ### 安装和配置 1. **克隆项目** ```bash git clone cd java-learn-stack ``` 2. **编译项目** ```bash mvn clean install ``` 3. **数据库配置** - 创建MySQL数据库 - 执行各模块的SQL脚本 - 更新application.yml中的数据库连接信息 4. **Redis配置** - 启动Redis服务 - 更新Redis连接配置 5. **消息队列配置** - 启动RabbitMQ服务 - 根据需要启动Kafka或RocketMQ - 更新相应的配置文件 ## 📖 模块说明 ### 1. Java基础知识示例 (java-basics) Java核心知识点演示,展示: - 数据类型和类型转换 - 面向对象编程概念 - 集合框架使用 - 异常处理机制 - 泛型编程 - 多线程编程 - Lambda表达式和函数式编程 - Stream API **启动方式:** ```bash cd java-basics mvn spring-boot:run ``` **访问地址:** http://localhost:8086/java-basics **演示页面:** - Lambda演示: http://localhost:8086/lambda-demo.html - 设计模式演示: http://localhost:8086/design-patterns-demo.html **API示例:** - `GET /api/java-basics/topics` - 获取所有主题 - `GET /api/java-basics/demo/data-types` - 演示数据类型 - `GET /api/java-basics/demo/oop` - 演示面向对象 - `GET /api/java-basics/demo/collections` - 演示集合 - `GET /api/java-basics/demo/exceptions` - 演示异常处理 - `GET /api/java-basics/demo/threads` - 演示多线程 - `GET /api/java-basics/demo/lambda` - 演示Lambda表达式 - `GET /api/java-basics/demo/design-patterns` - 演示设计模式 - `GET /api/java-basics/demo/lambda` - 演示Lambda表达式和函数式编程 - `GET /api/java-basics/demo/design-patterns` - 演示23种设计模式 ### 2. SSM框架示例 (ssm-demo) 传统的Spring + SpringMVC + MyBatis整合示例,包含: - Maven多模块项目结构 - Spring配置文件管理 - MyBatis映射和SQL操作 - 拦截器和过滤器 - JSP页面展示 **启动方式:** ```bash cd ssm-demo mvn tomcat7:run ``` **访问地址:** http://localhost:8080/ssm-demo/user/list ### 2. Spring Boot示例 (springboot-demo) 现代Spring Boot开发示例,展示: - Spring Boot自动配置 - JPA数据访问 - Redis缓存集成 - Spring Security安全配置 - AOP切面编程 - WebSocket实时通信 - Actuator监控 **启动方式:** ```bash cd springboot-demo mvn spring-boot:run ``` **访问地址:** http://localhost:8080/springboot-demo ### 3. Spring Cloud微服务示例 (springcloud-demo) 微服务架构实践,包含: - **Eureka Server** - 服务注册发现 - **User Service** - 用户服务 - **Order Service** - 订单服务(包含Feign调用) - **Gateway Service** - API网关 **启动顺序:** ```bash # 1. 启动服务注册中心 cd eureka-server && mvn spring-boot:run # 2. 启动用户服务 cd ../user-service && mvn spring-boot:run # 3. 启动订单服务 cd ../order-service && mvn spring-boot:run # 4. 启动网关服务 cd ../gateway-service && mvn spring-boot:run ``` **访问地址:** - Eureka控制台:http://localhost:8761 - API网关:http://localhost:8080 ### 4. MySQL数据库示例 (mysql-demo) 数据库操作最佳实践,包含: - JPA实体映射 - MyBatis SQL映射 - 复杂查询示例 - 事务管理 - Flyway数据库迁移 - Druid监控 **启动方式:** ```bash cd mysql-demo mvn spring-boot:run ``` **访问地址:** http://localhost:8083/mysql-demo ### 5. Redis缓存示例 (redis-demo) Redis缓存技术实践,包含: - Spring Cache注解缓存 - RedisTemplate操作 - 不同数据结构使用 - 缓存策略配置 - 手动缓存管理 **启动方式:** ```bash cd redis-demo mvn spring-boot:run ``` **访问地址:** http://localhost:8084/redis-demo ### 6. 消息队列示例 (mq-demo) 多种消息队列对比实践,包含: - **RabbitMQ** - 直连、扇形、主题交换机 - **Kafka** - 生产者消费者模式 - **RocketMQ** - 同步、异步、延时、顺序消息 - 消息持久化和重试机制 **启动方式:** ```bash cd mq-demo mvn spring-boot:run ``` **访问地址:** http://localhost:8085/mq-demo ## 📝 API文档 ### 用户管理API #### SSM模块 - `GET /user/list` - 用户列表页面 - `GET /user/add` - 添加用户页面 - `GET /user/edit/{id}` - 编辑用户页面 - `POST /user/save` - 保存用户 - `PUT /user/update` - 更新用户 - `DELETE /user/delete/{id}` - 删除用户 #### Spring Boot模块 - `GET /api/users` - 获取所有用户 - `GET /api/users/{id}` - 获取指定用户 - `POST /api/users` - 创建用户 - `PUT /api/users/{id}` - 更新用户 - `DELETE /api/users/{id}` - 删除用户 ### Redis操作API - `POST /api/redis/string` - String操作 - `POST /api/redis/hash` - Hash操作 - `POST /api/redis/list/lpush` - List左推 - `POST /api/redis/set` - Set操作 - `POST /api/redis/zset` - ZSet操作 ### 消息队列API - `POST /api/messages/rabbitmq/direct` - RabbitMQ直连消息 - `POST /api/messages/rabbitmq/fanout` - RabbitMQ扇形消息 - `POST /api/messages/kafka` - Kafka消息 - `POST /api/messages/rocketmq/sync` - RocketMQ同步消息 ## 🔧 配置说明 ### 数据库配置 各模块的application.yml文件中都包含了数据库配置示例,请根据实际情况修改: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/your_database username: your_username password: your_password ``` ### Redis配置 ```yaml spring: redis: host: localhost port: 6379 password: your_password ``` ### 消息队列配置 ```yaml spring: rabbitmq: host: localhost port: 5672 username: guest password: guest ``` ## 🎯 学习路径建议 1. **Java基础阶段** - 学习Java语法和数据类型 - 掌握面向对象编程思想 - 理解集合框架和异常处理 - 实践多线程编程 2. **框架入门阶段** - 学习SSM框架基本配置和使用 - 理解Maven项目管理 - 掌握MySQL基本操作 3. **现代开发阶段** - 学习Spring Boot快速开发 - 掌握Redis缓存技术 - 了解AOP和事务管理 4. **分布式阶段** - 深入Spring Cloud微服务 - 实践消息队列应用 - 学习分布式系统设计 5. **实践阶段** - 完整项目实战 - 性能优化 - 部署和运维 ## 🛠 常见问题 ### Q: 如何处理依赖冲突? A: 在父pom.xml中使用dependencyManagement统一管理版本。 ### Q: 如何调试微服务间的调用? A: 可以使用Spring Cloud Sleuth进行链路追踪。 ### Q: Redis和数据库数据一致性如何保证? A: 可以使用缓存双删、延迟双删等策略。 ### Q: 消息队列如何确保消息不丢失? A: 配置持久化、手动确认、重试机制等。 ## 📚 参考资源 - [Spring官方文档](https://spring.io/) - [MyBatis官方文档](https://mybatis.org/mybatis-3/) - [Redis官方文档](https://redis.io/documentation) - [RabbitMQ官方文档](https://www.rabbitmq.com/documentation.html) - [Kafka官方文档](https://kafka.apache.org/documentation/) ## 🤝 贡献指南 欢迎提交Issue和Pull Request来改进这个项目。 ## 📄 许可证 本项目采用MIT许可证,详见LICENSE文件。 --- **注意:** 这是一个学习项目,生产环境使用请根据实际情况进行调整和优化。