Skip to content

在线学习与知识社区主项目路线

主项目以“在线学习与知识社区”为业务背景,贯穿 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 代替课程正文、练习和测试。
  • 不把模型输出视为绝对正确答案,必须保留引用和人工复核机制。