在线学习与知识社区主项目路线
主项目以“在线学习与知识社区”为业务背景,贯穿 Java 学习路线中的企业开发、中间件、分布式、云原生和 AI 应用能力。它不是一次性完成的大型项目,而是随课程阶段逐步演进的长期实战线。
v0.3.11 已提供第一阶段的命令行课程管理入口:flagship-project/course-manager-cli。每个阶段都应能独立学习、独立验收,并为下一阶段保留清晰扩展点。
九阶段演进路线
1. 命令行课程管理
学习目标
- 使用 Java 基础语法、面向对象、集合和异常处理建模课程、章节和学习记录。
- 练习命令行输入输出、数据校验、简单菜单和分层组织。
- 建立“先用最小业务闭环验证模型”的项目习惯。
引入技术
- Java 21
- Maven
- JUnit 5
- 集合、枚举、异常、文本文件读写
交付物
- 可在命令行运行的课程管理程序。v0.3.11 已提供
course-manager-cli入口。 - 支持课程列表、课程详情、学习进度记录和本地数据保存。v0.3.11 已覆盖示例课程、进度记录和本地
properties保存。 - 覆盖核心业务规则的单元测试。v0.3.11 已覆盖课程查询、进度记录、文件存储和命令行流程。
- README 中包含运行命令、测试命令和示例输出。v0.3.11 已在主项目 README 和 Java 核心复盘课中提供。
非目标
- 不引入 Web 框架、数据库或前端页面。
- 不实现用户登录、权限、支付或复杂推荐。
- 不追求持久化方案的高可靠性,本阶段只关注 Java 基础建模。
2. Spring Boot 单体应用
学习目标
- 将命令行业务迁移为 Spring Boot 单体服务。
- 理解 Controller、Service、Repository 分层和依赖注入。
- 掌握 REST API、参数校验、统一异常处理和基础持久化。
引入技术
- Spring Boot 3
- Spring MVC
- Bean Validation
- JDBC 或 MyBatis
- MySQL 或 H2
交付物
- 提供课程、章节、学习记录的 REST API。
- 数据库表结构、初始化脚本和本地运行说明。
- 服务层单元测试与接口级集成测试。
- API 示例请求和预期响应。
非目标
- 不拆分微服务。
- 不引入缓存、消息队列或搜索引擎。
- 不建设完整后台管理系统,优先保证后端业务闭环清晰。
3. 前后端分离
学习目标
- 理解前后端通过 HTTP API 协作的边界。
- 设计面向页面的接口、错误响应和分页查询。
- 建立基本的登录态、跨域配置和前端工程运行流程。
引入技术
- RESTful API
- OpenAPI 或接口文档
- Vue 或 React 基础
- TypeScript 基础
- CORS 与前端路由
交付物
- 课程列表、课程详情、学习进度页面。
- 前端开发、构建和本地预览命令。
- 后端接口文档与前端调用示例。
- 一组端到端手工验收场景。
非目标
- 不追求复杂视觉设计或组件库深度封装。
- 不实现多端适配、SSR 或移动 App。
- 不在前端复制后端业务规则。
4. Redis 与搜索
学习目标
- 理解缓存、索引和数据库查询之间的职责边界。
- 使用 Redis 优化高频读取和学习状态查询。
- 使用搜索引擎支持课程、文章和问答内容检索。
引入技术
- Redis
- Spring Cache 或 RedisTemplate
- Elasticsearch 或 OpenSearch
- 缓存失效策略
- 搜索索引同步
交付物
- 课程详情、热门课程或学习进度的缓存方案。
- 关键词搜索、分页和基础排序能力。
- 缓存命中、缓存失效和索引重建说明。
- 可复现的本地依赖启动方式。
非目标
- 不实现复杂推荐算法。
- 不追求搜索集群高可用部署。
- 不把所有查询都缓存或索引化,避免过度设计。
5. 消息队列与异步任务
学习目标
- 理解同步请求、异步任务和最终一致性的适用场景。
- 将通知、统计、索引更新等非核心链路从主请求中拆出。
- 掌握消息幂等、重试、失败补偿和任务可观测性。
引入技术
- RabbitMQ、Kafka 或 RocketMQ
- Spring AMQP 或 Spring for Apache Kafka
- 定时任务
- 幂等键与重试策略
- 任务状态表
交付物
- 学习进度更新后异步刷新统计或搜索索引。
- 评论、问答或系统通知的异步处理流程。
- 消息消费失败、重复消费和重试的测试用例。
- 异步任务运行与排查说明。
非目标
- 不引入复杂事件溯源架构。
- 不把所有业务调用改成消息通信。
- 不要求生产级消息集群治理。
6. 高并发与性能优化
学习目标
- 学会用指标、压测和日志定位瓶颈,而不是凭感觉优化。
- 理解数据库索引、连接池、线程池、缓存穿透和热点数据问题。
- 建立性能优化前后对比和回归验证习惯。
引入技术
- JMeter、k6 或 Gatling
- JVM 基础监控
- 连接池与线程池配置
- SQL 执行计划
- 限流、降级与本地缓存
交付物
- 至少一个核心接口的压测脚本和基线结果。
- 慢查询或热点接口的定位记录与优化方案。
- 优化前后的指标对比。
- 针对并发更新、重复提交或缓存击穿的保护措施。
非目标
- 不追求虚假的极限 QPS。
- 不在没有指标的情况下重写架构。
- 不引入与学习阶段无关的复杂中间件组合。
7. 微服务拆分
学习目标
- 理解从单体到微服务的拆分动机、成本和边界。
- 按课程、用户、学习记录、内容互动等领域拆分服务。
- 学习服务发现、配置管理、服务调用和分布式故障处理。
引入技术
- Spring Cloud
- 服务注册与发现
- OpenFeign 或 REST 客户端
- 配置中心
- 网关
- 分布式追踪基础
交付物
- 至少拆分出两个可独立运行的服务。
- 服务间调用、超时、重试和降级示例。
- 网关路由与统一入口说明。
- 拆分前后边界、收益和代价分析。
非目标
- 不为了使用微服务而拆分所有模块。
- 不实现复杂分布式事务平台。
- 不追求大规模组织治理能力。
8. Docker 与 Kubernetes
学习目标
- 掌握应用容器化、配置外置和环境一致性。
- 理解镜像、容器网络、健康检查和滚动发布。
- 学会把服务部署到 Kubernetes 的最小可用环境。
引入技术
- Docker
- Docker Compose
- Kubernetes
- ConfigMap 与 Secret
- Deployment、Service、Ingress
- 基础 CI/CD
交付物
- 应用和依赖的 Dockerfile 或 Compose 编排。
- Kubernetes 部署清单和本地集群运行说明。
- 健康检查、配置注入和日志查看示例。
- 一次从构建镜像到部署访问的完整记录。
非目标
- 不建设生产级多集群平台。
- 不深入云厂商专有服务。
- 不把运维复杂度提前引入到业务尚不稳定的阶段。
9. AI 问答与学习助手
学习目标
- 在已有学习内容和社区数据之上构建学习助手。
- 理解检索增强生成、提示词设计、上下文窗口和安全边界。
- 学会评估 AI 回答质量,并为不确定回答设计降级路径。
引入技术
- Spring AI 或 LLM API
- 向量数据库或向量索引
- Embedding
- RAG
- Prompt 模板
- 内容安全与引用溯源
交付物
- 基于课程文档的问答接口或页面。
- 回答中包含来源引用和无法回答时的明确提示。
- 一组标准问题、期望答案要点和人工评估记录。
- 学习助手的权限、成本和隐私边界说明。
非目标
- 不训练自有大模型。
- 不让 AI 代替课程正文、练习和测试。
- 不把模型输出视为绝对正确答案,必须保留引用和人工复核机制。