Files
gc-plan/plan.md
2026-04-29 23:45:17 +08:00

333 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 三月学习计划:从 Spring 全家桶到 AI Agent 网站
> 目标:以 Spring 生态为基础Web 能力为骨架AI Agent 开发与算法能力为扩展,最终交付一个具备前端交互能力的 AI Agent 网站。
---
## 学习路线总览
```
Month 1 Month 2 Month 3
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Java + Spring │───▶│ Spring 进阶 │───▶│ AI Agent 开发 │
│ ORM(JPA+MP) │ │ Vue 3 前端 │ │ 算法入门 │
│ HTML/CSS/JS │ │ 工程化部署 │ │ 最终项目 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
---
## 前置准备(开始前 1-2 天完成)
| 事项 | 说明 |
|------|------|
| 安装 JDK 17+ | 推荐 Eclipse Temurin / Amazon Corretto |
| 安装 IDE | IntelliJ IDEA Community Edition |
| 安装 Maven | Spring Boot 项目构建工具 |
| 安装 Git | 版本管理 |
| 安装 Postman | API 调试工具 |
| 安装 VS Code | 前端开发用 |
| 安装 Node.js 18+ | 前端环境 |
---
## 第一阶段Java 基础 + Spring Boot 入门 + Web 基础(第 1-4 周)
### 第 1 周Java 核心基础速通
**目标**:掌握 Java 基本语法,能写出简单程序。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | JDK 安装、环境变量、Hello World、IDE 使用 | 跑通第一个程序 |
| 2 | 变量、数据类型、运算符、字符串 | 写一个计算器 |
| 3 | if/else、switch、for/while 循环 | 打印乘法表、猜数字游戏 |
| 4 | 数组、ArrayList、方法定义与调用 | 写一个学生成绩管理器 |
| 5 | 类与对象、构造方法、封装 | 定义一个 Student 类并实例化 |
| 6 | 继承、多态、接口、抽象类 | 设计简单的动物继承体系 |
| 7 | 异常处理、集合框架List/Map/Set | 用 Map 实现一个简易通讯录 |
**本周产出**:一个命令行通讯录程序(增删改查)。
---
### 第 2 周Spring Boot 入门
**目标**:理解 Spring Boot 是什么,创建第一个 Web 项目。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | Spring 框架是什么、IoC 和 DI 概念 | 手写一个简单的 IoC 容器理解原理 |
| 2 | Spring Boot 项目结构、启动流程 | 用 Spring Initializr 创建项目 |
| 3 | @RestController@RequestMapping | 写第一个 "Hello World" API |
| 4 | @GetMapping/@PostMapping、参数接收 | 实现 RESTful 风格的学生 CRUD |
| 5 | @Service@Repository 分层架构 | 重构代码为 Controller-Service-Repository |
| 6 | application.yml 配置、多环境配置 | 配置开发/生产环境 |
| 7 | 复习与总结 | 完成一个简单的 REST API 服务 |
**本周产出**:一个基于内存的 RESTful 学生管理 API。
---
### 第 3 周ORM 双轨 —— JPA + MyBatis-Plus
**目标**:同时掌握两种主流 ORM 框架,理解各自适用场景。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | MySQL 安装、数据库/表的基本操作 | 创建 students 数据库和表 |
| 2 | Spring Data JPA、Entity、Repository | 用 JPA 实现学生数据持久化 |
| 3 | MyBatis-Plus 基础、Mapper、BaseMapper | 用 MyBatis-Plus 重写同一套 CRUD |
| 4 | JPA vs MyBatis-Plus 对比总结 | 写一份对比笔记API 风格、适用场景、性能差异 |
| 5 | @Transactional、分页查询(两种框架写法) | 分别用 JPA 和 MP 实现分页和搜索 |
| 6 | HTML 基础(标签、表单、布局) | 写一个静态学生列表页 |
| 7 | CSS 基础选择器、盒模型、Flexbox | 美化学生列表页 |
**本周产出**:分别用 JPA 和 MyBatis-Plus 实现的学生数据访问层,附带对比笔记。
> **快速参考JPA vs MyBatis-Plus 选型**
>
> | 维度 | Spring Data JPA | MyBatis-Plus |
> |------|----------------|--------------|
> | 风格 | 自动生成 SQL约定大于配置 | 半自动SQL 可控性高 |
> | 简单 CRUD | `JpaRepository` 零代码 | 继承 `BaseMapper` 零代码 |
> | 复杂查询 | JPQL / Specification / QueryDSL | LambdaQueryWrapper / 手写 SQL |
> | 灵活度 | 低 — SQL 是框架生成的 | 高 — 可以精确控制 SQL |
> | 学习曲线 | 较陡JPA 规范本身很重) | 较平缓(对 SQL 友好) |
> | 适用场景 | 表关系复杂、面向对象建模 | 复杂 SQL、报表、多表联查 |
> | 国内流行度 | 外企/传统企业多 | 互联网/中小团队首选 |
>
> **新手建议**:两个都学。简单 CRUD 用 JPA 体验"无 SQL"的快感;复杂查询用 MyBatis-Plus 体会 SQL 的掌控力。实际工作中两把刀都磨利,视场景出鞘。
---
### 第 4 周:前端基础 + 项目整合
**目标**:补齐前端基础,理解 Spring MVC 核心,交付第一个完整项目。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | JavaScript 基础变量、函数、DOM 操作) | 用 JS 实现页面的增删按钮 |
| 2 | fetch API 调用后端接口 | 前端页面调通后端 API |
| 3 | Spring MVC 请求处理流程、拦截器 | 实现登录拦截器 |
| 4 | 统一异常处理、参数校验Bean Validation | 添加全局异常处理和表单校验 |
| 5 | RESTful API 设计规范、HTTP 状态码 | 规范化所有 API 接口 |
| 6 | 跨域 CORS 配置、文件上传 | 实现头像上传功能 |
| 7 | 阶段总结 & 第一个里程碑项目 | 前后端联调、代码整理、写 README |
**里程碑项目**:学生管理系统 v1 —— Spring Boot + JPA/MyBatis-Plus + MySQL + 原生 JS 全栈应用。设计上同一套业务逻辑提供两个数据访问实现JPA 版 + MP 版),通过配置切换。
---
## 第二阶段Spring 进阶 + 现代前端框架(第 5-8 周)
### 第 5 周Spring 全家桶核心组件
**目标**:掌握 Spring Security 和常用中间件。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | Spring Security 架构、过滤器链 | 引入 Security 依赖,配置基础认证 |
| 2 | JWT 认证、登录/注册接口 | 实现 JWT 登录注册流程 |
| 3 | 权限控制RBAC、方法级安全 | 实现角色权限管理 |
| 4 | Redis 基础、Spring Cache | 用 Redis 缓存热点数据 |
| 5 | Spring Boot Actuator、健康检查 | 配置应用监控端点 |
| 6 | 参数校验进阶、自定义注解 | 写一个自定义校验注解 |
| 7 | MyBatis-Plus 进阶LambdaQueryWrapper、条件构造器、逻辑删除 | 用 MP 实现复杂查询和软删除 |
**本周产出**:带安全认证和缓存的学生管理系统 v2。
---
### 第 6 周前端框架入门Vue.js
**目标**:掌握 Vue 3 基础,能开发 SPA 应用。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | Vue 3 介绍、创建项目Vite、组件基础 | 搭建 Vue 项目 |
| 2 | 响应式数据ref/reactive、计算属性 | 实现一个计数器和一个 Todo List |
| 3 | 指令v-if/v-for/v-model、事件处理 | 写一个动态表单 |
| 4 | 组件通信props/emits、插槽 | 拆分 Todo List 为多个组件 |
| 5 | Vue Router 路由、导航守卫 | 实现多页面导航 |
| 6 | Pinia 状态管理 | 全局状态管理用户信息和 Token |
| 7 | Axios 封装、请求拦截 | 封装 HTTP 客户端统一处理 JWT |
**本周产出**:一个独立的前端 SPA 应用Todo + 路由 + 状态管理)。
---
### 第 7 周:前后端分离实战
**目标**:将 Vue 前端与 Spring Boot 后端完整对接。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | 前后端分离架构设计 | 规划 API 接口文档 |
| 2 | 登录注册页面 + JWT 对接 | 实现完整登录流程 |
| 3 | CRUD 页面实现(列表、表单、删除) | 学生管理的完整前端 |
| 4 | 分页组件、搜索、排序 | 列表页增加分页和搜索 |
| 5 | 文件上传前端实现 | 头像上传和预览 |
| 6 | 错误处理、Loading 状态、空状态 | 完善交互体验 |
| 7 | Nginx 部署、前后端联调 | 本地部署完整应用 |
**本周产出**:前后端分离的学生管理系统 v3Vue 3 + Spring Boot
---
### 第 8 周:工程化能力
**目标**:掌握测试和 API 文档等工程化技能。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | 单元测试JUnit 5 + Mockito | 为 Service 层写单元测试 |
| 2 | 集成测试(@SpringBootTest + H2 | 用 H2 内存数据库测试 |
| 3 | Swagger/Knife4j API 文档 | 为所有接口生成文档 |
| 4 | 阶段总结 & 第二个里程碑项目 | 代码审查、性能优化 |
**里程碑项目**:学生管理系统 v4 —— 有测试、有文档的完整前后端分离项目DAO 层同时提供 JPA 和 MyBatis-Plus 两套实现,可配置切换。
---
## 第三阶段AI Agent 开发 + 算法基础(第 9-12 周)
### 第 9 周AI & LLM 基础
**目标**:理解大语言模型的基本概念和使用方式。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | AI/ML 基本概念、LLM 是什么 | 了解 GPT/Claude/文心一言等模型 |
| 2 | Prompt Engineering 基础 | 动手写各种 Prompt体验不同效果 |
| 3 | OpenAI API / 国内大模型 API 调用方式 | 用 Postman 调通一个大模型 API |
| 4 | Spring AI 框架入门 | 集成 Spring AI 到 Spring Boot 项目 |
| 5 | 对话接口实现Chat Completion | 实现一个简单的聊天 API |
| 6 | Streaming 流式响应SSE | 实现打字机效果的流式对话 |
| 7 | 上下文管理、多轮对话 | 实现带记忆的多轮对话 |
**本周产出**:一个可以多轮对话的聊天机器人 API。
---
### 第 10 周AI Agent 核心概念
**目标**:理解 Agent 架构,实现带工具调用的 Agent。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | Agent 是什么(感知-思考-行动) | 了解 ReAct / Plan-and-Execute 模式 |
| 2 | Function Calling / Tool Use 原理 | 手动解析一次 Function Call 流程 |
| 3 | Spring AI Function Calling 实现 | 定义并注册一个 Function 给模型调用 |
| 4 | 多工具协作(天气、搜索、计算器) | 注册多个 Tool让模型自动选择调用 |
| 5 | Agent 记忆系统(短期 + 长期记忆) | 用 Redis 实现对话历史持久化 |
| 6 | RAG检索增强生成基础 | 用 Spring AI + 向量数据库做知识库问答 |
| 7 | Prompt 模板管理与优化 | 设计并管理多个 Prompt 模板 |
**本周产出**:一个支持 Function Calling 和多轮对话的 Agent 后端。
---
### 第 11 周:算法入门 + Agent 前端
**目标**:学习基础算法,构建 Agent 前端交互界面。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | 时间复杂度、空间复杂度、大 O 表示法 | 分析常见代码的时间复杂度 |
| 2 | 排序算法(冒泡/快排/归并) | 手写三种排序并比较性能 |
| 3 | 搜索算法二分、BFS、DFS | 用 BFS 解决迷宫问题 |
| 4 | 哈希表、常用技巧(双指针、滑动窗口) | LeetCode 简单题 3-5 道 |
| 5 | AI Agent 前端页面设计 | 用 Vue 3 设计聊天界面 |
| 6 | 流式对话前端实现SSE 对接) | 前端实现打字机效果 |
| 7 | 对话历史管理、Markdown 渲染 | 对话列表、消息气泡、代码高亮 |
**本周产出**Agent 聊天前端页面,支持流式输出和历史记录。
---
### 第 12 周:最终项目 —— AI Agent 网站
**目标**:整合所有技能,交付完整 AI Agent 网站。
| 天 | 学习内容 | 实践 |
|----|---------|------|
| 1 | 项目架构设计 | 设计 Agent 网站的完整架构图 |
| 2 | Agent 后端开发(工具集成) | 集成搜索、计算、天气等工具 |
| 3 | Agent 后端开发(记忆 + RAG | 完善记忆系统和知识库 |
| 4 | 前端页面完善(聊天 + 设置 + 工具面板) | 完成所有前端页面 |
| 5 | 前后端联调、错误处理 | 全流程测试和 bug 修复 |
| 6 | 部署上线Docker + Nginx | 打包部署到服务器 |
| 7 | 项目总结与复盘 | 写项目 README、整理技术文档 |
**最终项目**AI Agent 网站 ——
```
功能清单:
├── 🤖 智能对话 —— 多轮对话,流式输出
├── 🔧 工具调用 —— 联网搜索、计算器、天气查询
├── 📚 知识库 —— RAG 文档问答
├── 🧠 记忆系统 —— 跨会话记忆
├── 👤 用户系统 —— 注册登录、JWT 认证
├── 💬 聊天界面 —— Markdown 渲染、代码高亮
└── ⚙️ 系统设置 —— 模型选择、参数配置
```
---
## 学习节奏建议
| 事项 | 建议 |
|------|------|
| 每天学习时间 | 2-3 小时(周末可加量到 4-6 小时) |
| 代码量 | 每天至少手写 50-100 行代码 |
| 复习频率 | 每周日复习本周内容,每月底做一次大复习 |
| 遇到问题 | 先自己 Debug 15 分钟 → Google/StackOverflow → 问 AI |
| 笔记 | 用 Markdown 记录核心概念和自己的理解 |
---
## 推荐学习资源
### 书籍
- 《Head First Java》—— Java 入门首选
- 《Spring Boot 实战派》—— Spring Boot 快速上手
- 《Vue.js 快速上手》—— 前端框架入门
### 视频
- B 站尚硅谷/黑马程序员 Spring Boot 教程
- B 站 Vue 3 入门教程
### 文档
- [Spring Boot 官方文档](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)
- [Spring Data JPA 官方文档](https://docs.spring.io/spring-data/jpa/reference/)
- [MyBatis-Plus 官方文档](https://baomidou.com/)
- [Spring AI 官方文档](https://docs.spring.io/spring-ai/reference/)
- [Vue 3 官方文档](https://cn.vuejs.org/)
### 刷题
- LeetCode 简单难度(从第 2 个月开始每天 1 题)
---
## 每周检查点
| 周次 | 核心检查项 |
|------|-----------|
| 第 1 周 | 能用 Java 写出面向对象的命令行程序 |
| 第 2 周 | 能用 Spring Boot 写 RESTful API |
| 第 3 周 | 能用 JPA 和 MyBatis-Plus 分别操作数据库 |
| 第 4 周 | 第一个全栈 CRUD 应用(双 ORM 实现可切换) |
| 第 5 周 | 理解并实现 JWT 认证 |
| 第 6 周 | 能用 Vue 3 写 SPA 应用 |
| 第 7 周 | 前后端分离完整对接 |
| 第 8 周 | 有测试、有文档 |
| 第 9 周 | 能调用大模型 API 实现对话 |
| 第 10 周 | 理解 Agent 架构 + Function Calling |
| 第 11 周 | 算法入门 + Agent 聊天前端 |
| 第 12 周 | AI Agent 网站上线 |
---
> **最重要的原则**:多写代码,少看视频。看完概念立刻动手,遇到 bug 是学习的最好机会。