# java-demo-parent **Repository Path**: snowmaples1/java-demo-parent ## Basic Information - **Project Name**: java-demo-parent - **Description**: java-study-everything - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-19 - **Last Updated**: 2026-10-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java 后端知识验证工程 这是一个 Maven 多模块学习工程,用可运行 Demo 验证 Java 后端知识。每个已纳入的知识点 都要落到明确假设、运行入口、自动断言和证据边界,不以只打印日志或偶发现象作为结论。 当前知识范围参考 `../JavaGuide` 的后端内容,来源快照为提交 `b21729217e32d014a20b592c9df9e934d816c1f1`。本工程只提取知识结构和验证问题,不复制 JavaGuide 正文。 ## 从这里开始 - [Java 后端知识验证总索引](docs/interview/BACKEND_KNOWLEDGE_INDEX.md):从知识点进入对应 Demo。 - [core-demo](core-demo/README.md):按技术域组织的 Java 8、集合、并发、I/O、JVM 与算法验证。 - [spring-demo](spring-demo/README.md):Spring Framework 的 IoC、AOP、生命周期和 MVC。 - [spring-boot-demo](spring-boot-demo/README.md):数据库、事务、MyBatis、缓存、消息和安全。 - [spring-cloud-demo](spring-cloud-demo/README.md):分布式算法、稳定性模型和微服务组件边界。 - [Java 面试训练体系](docs/interview/README.md):首次裸答、实验、口述、追问和延迟复测。 - [整合测试证据](docs/codex/JAVAGUIDE_INTEGRATION_TEST_EVIDENCE.md):RED、GREEN、重构和最终结果。 ## 项目结构 ```text java-demo-parent ├── core-demo Java 语言、集合、并发、I/O、JVM、算法 ├── spring-demo Spring Framework 原理实验 ├── spring-boot-demo │ ├── boot-starter 自动装配与 Web 基础 │ ├── boot-db SQL、MyBatis、MyBatis-Plus、事务 │ ├── boot-security Spring Security、JWT、Sa-Token │ ├── boot-mq RabbitMQ 路由、RocketMQ 幂等与积压治理 │ ├── boot-redis Redis 与 Cache Aside │ ├── boot-test Redis、Netty 等独立实验 │ └── boot-mcp Spring AI MCP 服务端与客户端 ├── spring-cloud-demo │ ├── nacos 注册中心与配置中心接入 │ ├── sentinel 限流与熔断组件接入 │ ├── gateway 网关过滤与认证边界 │ └── system-design 分布式、高可用和高性能的可执行模型 ├── docs 知识索引、面试训练和执行记录 └── scripts 显式集成测试脚本 ``` ### 顶层模块 | 模块 | 主要内容 | 默认验证方式 | 外部依赖 | |------|----------|--------------|----------| | `core-demo` | Java 8 基础、集合、Stream、并发、I/O、JVM、算法与数据结构 | JUnit 4 | 无 | | `spring-demo` | IoC、AOP、Bean 生命周期、事件、MVC | JUnit 4、Spring Test | 无 | | `spring-boot-demo` | Boot 自动装配、数据库、事务、MyBatis、Redis、MQ、安全、MCP | JUnit 4、显式 Profile | 默认无;MCP 使用 Java 17 独立构建 | | `spring-cloud-demo` | Nacos、Sentinel、Gateway、系统设计模型 | JUnit 4 | 默认无;真实组件联调按需启用 | ## 知识点如何落到 Demo ```text 知识点 -> 待验证假设 -> Maven module -> JUnit 测试或显式运行入口 -> 自动断言与实际结果 -> 能证明和不能证明的边界 ``` `docs/interview` 保存知识地图、来源和训练状态。模块 README 保存运行命令、测试入口和 证据边界。CAP、跨地域容灾、CDN、分库分表等无法由单 JVM 证明的主题,统一标记为设计 演练,不会包装成生产性能或可用性结论。 面试训练不会批量生成首次回答。训练者的原始作答、AI 参考答案和逐次评价分别保存,只有 经过口述、追问和延迟复测的题目才能标记为已掌握。具体规则见 [训练规则](docs/interview/RULES.md)。 ## 环境要求 | 范围 | Java | 主要版本 | |------|------|----------| | `core-demo`、`spring-demo`、大部分 Boot 与 Cloud 模块 | 8 | Spring Boot 2.7.18、Spring Cloud 2021.0.4、Spring Cloud Alibaba 2021.0.4.0 | | `spring-boot-demo/boot-mcp` | 17 | Spring Boot 3.4.6、Spring AI 1.1.4 | 构建工具使用 Maven。根目录默认 reactor 只包含 Java 8 模块,可以直接执行: ```bash mvn clean install ``` `boot-mcp` 不参与默认构建。需要构建 MCP 时,先将 `JAVA_HOME` 切换为 JDK 17,再显式 启用 `boot-mcp` Profile: ```bash mvn -Pboot-mcp clean install ``` ## 运行验证 ### Java 集合与并发 ```bash mvn -pl core-demo -Dtest='JBC*Test' test mvn -pl core-demo -Dtest='JCC*Test' test mvn -pl core-demo test ``` ### Spring Boot 数据库与常用框架 ```bash mvn -pl spring-boot-demo/boot-starter,spring-boot-demo/boot-db,\ spring-boot-demo/boot-security,spring-boot-demo/boot-mq,\ spring-boot-demo/boot-redis test ``` ### Spring Cloud 与系统设计 ```bash mvn -pl spring-cloud-demo/nacos,spring-cloud-demo/sentinel,\ spring-cloud-demo/gateway,spring-cloud-demo/system-design test ``` ### 本次整合模块的聚合验证 ```bash mvn -pl core-demo,spring-boot-demo/boot-starter,spring-boot-demo/boot-db,\ spring-boot-demo/boot-security,spring-boot-demo/boot-mq,\ spring-boot-demo/boot-redis,spring-cloud-demo/nacos,\ spring-cloud-demo/sentinel,spring-cloud-demo/gateway,\ spring-cloud-demo/system-design test ``` ## 数据库与 RocketMQ 配置 默认测试不连接外部数据库。需要验证开发测试库时,从 [.env.example](.env.example) 准备 本地 `.env`,填写 MySQL 和 Oracle 的 URL、用户名与密码,然后显式运行: ```bash scripts/run-database-integration-tests.sh ``` 脚本只执行 MySQL 的 `SELECT 1` 和 Oracle 的 `SELECT 1 FROM dual`,不创建、更新或删除 数据库对象。`.env` 只用于本地开发,不得提交到版本库或写入测试报告。 RocketMQ 可靠消费示例同样默认关闭。配置真实 NameServer 与共享 MySQL、人工执行建表 SQL 后,使用 `bash scripts/run-rocketmq-demo.sh` 启动,或用 `bash scripts/run-rocketmq-integration-tests.sh` 执行显式集成验证。详细边界见 [boot-mq README](spring-boot-demo/boot-mq/README.md)。 ## 当前验证状态 以下数据来自 2026-09-11 的整合验收: | 模块 | 测试数 | 跳过 | 结果 | |------|-------:|-----:|------| | `core-demo` | 75 | 3 | 通过 | | `boot-starter` | 3 | 0 | 通过 | | `boot-db` | 25 | 2 | 通过 | | `boot-security` | 1 | 0 | 通过 | | `boot-mq` | 20 | 0 | 通过 | | `boot-redis` | 2 | 0 | 通过 | | `nacos` | 1 | 0 | 通过 | | `sentinel` | 2 | 0 | 通过 | | `gateway` | 2 | 0 | 通过 | | `system-design` | 9 | 0 | 通过 | | **合计** | **140** | **5** | **0 失败,0 错误** | 5 个跳过项中,2 个是真实数据库测试,默认构建不会误连;另外 3 个是保留的手工并发 观察实验。显式数据库 profile 已另行执行 2 个只读测试,MySQL 和 Oracle 均通过。 `spring-demo` 当前共有 12 个测试,其中 4 个通过,8 个因以下历史资源缺失而报错: - `applicationContext.xml` - `applicationContext-aop.xml` - `applicationContext-aop-aspect.xml` - `applicationContext-listener.xml` - `applicationContext.properties` 因此,根目录 `mvn test` 当前不是全绿基线。Spring 原理模块的现状和证据边界见 [spring-demo/README.md](spring-demo/README.md)。 ## 安全与实验边界 - 配置文件只引用环境变量,不保存数据库密码、私钥或访问令牌。 - 默认自动测试不访问 MySQL、Oracle、Redis、RabbitMQ、RocketMQ、Nacos 或 Sentinel Dashboard。 - 并发测试必须有超时和退出路径,线程池在测试结束时关闭。 - 故障实验使用受控异常,不在测试进程中制造真实 OOM 或无限循环。 - H2 只验证 SQL 与事务控制流,不能替代 MySQL 或 Oracle 的优化器、锁和方言行为。 - 系统设计单元测试只证明算法和状态转换,不代表生产吞吐量、延迟或可用性。