Appearance
Java后端重返工作8周详细学习计划
第一周:Java核心 + Spring Boot复习
Day 1:Java基础回顾
上午(3小时)
- Java 8-17新特性学习
- Lambda表达式和函数式接口(Function, Predicate, Consumer)
- Stream API:map、filter、reduce、collect操作
- Optional类的使用场景和最佳实践
- 实践:写10个Stream API的练习题
下午(3小时)
- Java并发编程复习
- synchronized、volatile、Lock接口
- 线程池:ThreadPoolExecutor参数详解
- CompletableFuture异步编程
- 实践:写一个简单的线程池示例
晚上(2小时)
- Java 17+新特性
- Record类
- Sealed Classes
- Pattern Matching
- Text Blocks
- 整理学习笔记
Day 2:JVM与性能优化
上午(3小时)
- JVM内存模型
- 堆、栈、方法区、元空间
- 垃圾回收算法:标记清除、复制、标记整理
- 常见GC:Serial、Parallel、CMS、G1、ZGC
- 阅读:《深入理解Java虚拟机》相关章节
下午(3小时)
- JVM调优实践
- 常用JVM参数:-Xms、-Xmx、-XX:MetaspaceSize
- 使用jstat、jmap、jstack工具
- 分析GC日志
- 实践:启动一个应用,观察GC行为
晚上(2小时)
- Java 21 Virtual Threads(虚拟线程)
- 虚拟线程 vs 平台线程
- 使用场景和性能对比
- 写代码测试虚拟线程性能
Day 3:Spring Boot 3.x基础
上午(3小时)
- Spring Boot 3.x新特性
- 需要Java 17+
- 原生镜像支持(GraalVM)
- Observability改进
- 创建Spring Boot 3.x项目
- 使用Spring Initializr
- 配置application.yml
- 理解自动配置原理
下午(3小时)
- RESTful API开发
- @RestController、@RequestMapping
- 参数校验:@Valid + BindingResult
- ResponseEntity使用
- 实践:创建User的CRUD接口
晚上(2小时)
- Spring Boot配置管理
- 多环境配置:dev、test、prod
- @ConfigurationProperties使用
- 敏感信息加密
- 实践:配置不同环境的数据库连接
Day 4:认证授权模块(结合你的经验)
上午(3小时)
- Spring Security 6.x基础
- 新的配置方式(Lambda DSL)
- 认证流程:AuthenticationManager
- 授权流程:AccessDecisionManager
- 阅读官方文档和迁移指南
下午(3小时)
- JWT认证实现
- JWT生成和解析(使用jjwt库)
- 实现JwtAuthenticationFilter
- Token刷新机制
- 实践:实现完整的JWT登录流程
晚上(2小时)
- 会话管理
- Redis存储会话
- 单点登录(SSO)思路
- 多端登录控制
- 整理你之前项目的登录模块经验
Day 5:限流与降级(结合你的经验)
上午(3小时)
- 限流算法理论
- 固定窗口、滑动窗口
- 令牌桶、漏桶算法
- 分布式限流思路
- 画图理解各算法差异
下午(3小时)
- Sentinel实战
- 集成Sentinel到Spring Boot
- 配置限流规则:QPS、线程数
- 熔断降级规则
- 热点参数限流
- 实践:为登录接口添加限流
晚上(2小时)
- Resilience4j使用
- RateLimiter、CircuitBreaker
- Retry、TimeLimiter
- 与Sentinel对比
- 实践:用Resilience4j实现服务降级
Day 6:统一异常处理与响应规范
上午(3小时)
- 全局异常处理
- @ControllerAdvice + @ExceptionHandler
- 自定义业务异常
- 统一错误码设计
- 参考你之前的错误信息标准
下午(3小时)
- 统一响应格式
- Result<T>封装类设计
- 分页响应处理
- 国际化支持
- 实践:实现完整的统一响应体系
晚上(2小时)
- 日志规范
- Logback配置
- MDC追踪请求链路
- 日志脱敏处理
- 实践:配置日志输出和归档
Day 7:第一周总结与项目搭建
上午(3小时)
- 回顾本周知识点
- 整理笔记和代码
- 完善项目结构
下午(3小时)
- 搭建完整的Spring Boot骨架项目
- 统一认证授权
- 统一异常处理
- 统一响应格式
- 限流降级
- Git版本管理,提交代码
晚上(2小时)
- 写第一周学习总结
- 规划下周学习重点
- 休息调整
第二周:MySQL深化 + PostgreSQL学习
Day 8:MySQL索引优化
上午(3小时)
- 索引原理深入
- B+Tree结构详解
- 聚簇索引 vs 非聚簇索引
- 覆盖索引、最左前缀原则
- 索引下推(ICP)
- 阅读:《高性能MySQL》索引章节
下午(3小时)
- 索引优化实践
- 使用EXPLAIN分析查询计划
- 索引失效场景:函数、隐式转换、!= 等
- 联合索引设计原则
- 实践:创建测试表,分析不同查询的执行计划
晚上(2小时)
- 索引优化案例
- 慢查询日志分析
- 使用pt-query-digest工具
- 练习:优化5个慢查询SQL
Day 9:MySQL事务与锁
上午(3小时)
- 事务特性(ACID)
- 事务隔离级别
- Read Uncommitted、Read Committed
- Repeatable Read、Serializable
- 各级别的问题:脏读、不可重复读、幻读
- InnoDB的MVCC机制
下午(3小时)
- MySQL锁机制
- 表锁 vs 行锁
- 共享锁(S)vs 排他锁(X)
- 间隙锁(Gap Lock)、Next-Key Lock
- 死锁产生和预防
- 实践:模拟死锁场景并解决
晚上(2小时)
- 分布式事务基础
- 2PC、3PC协议
- TCC、SAGA模式
- Seata框架了解
- 整理事务相关笔记
Day 10:MySQL高可用方案
上午(3小时)
- 主从复制原理
- binlog、relay log
- 异步复制、半同步复制、组复制
- 主从延迟问题
- 读写分离架构
下午(3小时)
- 分库分表
- 垂直拆分 vs 水平拆分
- 分片策略:hash、range、一致性hash
- ShardingSphere框架使用
- 实践:使用ShardingSphere-JDBC实现分表
晚上(2小时)
- MySQL性能优化总结
- SQL优化checklist
- 表设计规范
- 配置参数调优
- 整理MySQL知识导图
Day 11:PostgreSQL基础与安装
上午(3小时)
- PostgreSQL概述
- PostgreSQL vs MySQL核心差异
- 适用场景:复杂查询、JSON、地理数据
- 开源协议和社区生态
- 安装PostgreSQL
- Docker方式安装
- 配置postgresql.conf和pg_hba.conf
下午(3小时)
- PostgreSQL基础操作
- psql命令行工具使用
- 数据库、Schema、表的创建
- 用户和权限管理
- 与MySQL语法差异:自增、字符串连接等
- 实践:创建测试数据库和表
晚上(2小时)
- PostgreSQL数据类型
- 特色类型:Array、JSON/JSONB、UUID
- 范围类型、枚举类型
- 自定义类型
- 实践:测试各种数据类型
Day 12:PostgreSQL高级特性
上午(3小时)
- JSONB深入使用
- JSON vs JSONB性能对比
- JSONB索引:GIN索引
- JSONB查询操作符:->、->>、@>、?等
- 实践:设计一个使用JSONB存储配置的表
下午(3小时)
- 全文搜索
- tsvector和tsquery
- 中文分词:zhparser插件
- 全文索引:GIN、GiST
- 实践:实现一个简单的文章搜索功能
晚上(2小时)
- PostgreSQL扩展
- PostGIS:地理数据
- pgvector:向量存储(为AI做准备)
- 其他常用扩展
- 安装pgvector扩展
Day 13:PostgreSQL性能优化
上午(3小时)
- EXPLAIN分析
- EXPLAIN vs EXPLAIN ANALYZE
- 执行计划解读:Seq Scan、Index Scan、Bitmap Scan
- 成本估算模型
- 实践:分析复杂查询的执行计划
下午(3小时)
- 索引策略
- B-tree、Hash、GiST、GIN、BRIN等索引类型
- 部分索引、表达式索引
- 索引维护:REINDEX、VACUUM
- 实践:为不同场景选择合适的索引类型
晚上(2小时)
- 查询优化技巧
- CTE(WITH子句)优化
- 分区表使用
- 连接池配置:PgBouncer
- 整理PostgreSQL优化笔记
Day 14:第二周总结与数据库实战
上午(3小时)
- 回顾MySQL和PostgreSQL知识
- 对比两个数据库的优缺点
- 整理选型决策树
下午(3小时)
- 项目集成
- Spring Boot集成MySQL和PostgreSQL
- 配置多数据源
- MyBatis-Plus + JPA混合使用
- 实践:在项目中同时使用两个数据库
晚上(2小时)
- 写第二周学习总结
- 准备下周Docker和K8s学习
- 休息调整
第三周:Docker + Kubernetes入门
Day 15:Docker基础
上午(3小时)
- Docker核心概念
- 镜像、容器、仓库
- Docker vs 虚拟机
- Docker架构:Client、Daemon、Registry
- 安装Docker Desktop
- 基础命令:docker run、ps、exec、logs等
下午(3小时)
- Dockerfile编写
- FROM、RUN、COPY、CMD、ENTRYPOINT
- 多阶段构建(Multi-stage builds)
- 镜像分层和缓存机制
- 实践:为Spring Boot应用编写Dockerfile
晚上(2小时)
- 镜像优化
- 使用Alpine基础镜像
- 减少镜像层数
- .dockerignore使用
- 实践:优化Spring Boot镜像大小
Day 16:Docker进阶
上午(3小时)
- 容器网络
- bridge、host、none网络模式
- 自定义网络
- 容器间通信
- 实践:创建自定义网络连接多个容器
下午(3小时)
- 数据持久化
- Volume vs Bind Mount
- 数据卷管理
- 备份和恢复
- 实践:MySQL容器数据持久化
晚上(2小时)
- Docker Compose
- docker-compose.yml编写
- 服务编排:depends_on、networks、volumes
- 常用命令:up、down、logs、ps
- 实践:编写项目的docker-compose.yml
Day 17:Kubernetes核心概念
上午(3小时)
- K8s架构
- Master组件:API Server、Scheduler、Controller Manager、etcd
- Node组件:Kubelet、Kube-proxy、Container Runtime
- K8s对象:Pod、Service、Deployment等
- 安装Minikube或K3s本地集群
下午(3小时)
- Pod详解
- Pod生命周期
- 容器探针:liveness、readiness、startup
- Init容器、Sidecar容器
- 实践:创建第一个Pod并观察生命周期
晚上(2小时)
- kubectl命令
- get、describe、logs、exec
- apply、delete、edit
- 命令式 vs 声明式操作
- 实践:熟悉kubectl常用操作
Day 18:Kubernetes工作负载
上午(3小时)
- Deployment
- 声明式更新
- 滚动更新和回滚
- 暂停和恢复
- 扩缩容:手动和HPA
- 实践:部署Spring Boot应用
下午(3小时)
- Service
- ClusterIP、NodePort、LoadBalancer
- 服务发现和负载均衡
- Headless Service
- ExternalName
- 实践:为应用创建Service并测试访问
晚上(2小时)
- StatefulSet
- 有状态应用部署
- 持久化存储
- 与Deployment的区别
- 实践:部署MySQL StatefulSet
Day 19:Kubernetes配置与存储
上午(3小时)
- ConfigMap和Secret
- 创建和使用ConfigMap
- Secret类型和用途
- 作为环境变量或文件挂载
- 实践:将application.yml配置为ConfigMap
下午(3小时)
- 持久化存储
- PV和PVC
- StorageClass
- 动态供应
- 实践:为数据库配置持久化存储
晚上(2小时)
- Ingress
- Ingress Controller安装(Nginx)
- Ingress规则配置
- 基于域名和路径的路由
- 实践:配置Ingress访问应用
Day 20:Kubernetes高级特性
上午(3小时)
- HPA自动扩缩容
- 基于CPU/内存的HPA
- 自定义指标HPA
- VPA和Cluster Autoscaler了解
- 实践:配置HPA并测试压力下的自动扩容
下午(3小时)
- 健康检查实践
- 为Spring Boot应用配置健康检查端点
- 配置合理的探针参数
- 优雅停机
- 实践:完善应用的健康检查
晚上(2小时)
- 资源限制
- requests和limits
- QoS等级:Guaranteed、Burstable、BestEffort
- LimitRange和ResourceQuota
- 实践:为应用配置资源限制
Day 21:第三周总结与K8s实战
上午(3小时)
- K8s故障排查
- Pod启动失败排查
- 网络问题排查
- 存储问题排查
- 练习:模拟故障并排查
下午(3小时)
- 完整部署项目到K8s
- 编写完整的K8s YAML文件
- 部署应用、数据库、Redis
- 配置Ingress和域名访问
- 测试完整链路
晚上(2小时)
- 写第三周学习总结
- 了解K8s监控:Prometheus + Grafana
- 休息调整
第四周:Java与AI结合
Day 22:AI基础概念
上午(3小时)
- 大语言模型(LLM)基础
- GPT、Claude、Llama等模型对比
- Token、Temperature、Top-p等参数
- Prompt Engineering基础
- 注册OpenAI/Claude API密钥
下午(3小时)
- RAG(检索增强生成)
- RAG架构:检索 + 生成
- 向量化(Embedding)原理
- 相似度计算:余弦相似度、欧几里得距离
- 了解RAG应用场景
晚上(2小时)
- Vector Database概念
- 向量数据库 vs 传统数据库
- 主流向量库:Pinecone、Milvus、Weaviate、pgvector
- ANN算法:HNSW、IVF
- 整理AI基础概念笔记
Day 23:pgvector实战
上午(3小时)
- pgvector安装和配置
- 在PostgreSQL中启用pgvector
- vector数据类型
- 距离操作符:<->、<#>、<=>
- 创建向量表和索引
下午(3小时)
- Embedding生成
- 使用OpenAI Embedding API
- 文本向量化
- 中文向量化模型:BGE、M3E
- 实践:将文档向量化并存储到pgvector
晚上(2小时)
- 向量检索
- 相似度搜索SQL
- HNSW索引优化
- 混合检索:向量 + 关键词
- 实践:实现语义搜索功能
Day 24:LangChain4j入门
上午(3小时)
- LangChain4j介绍
- LangChain4j vs Python LangChain
- 核心组件:Model、Chain、Agent
- Maven依赖配置
- 创建第一个LangChain4j项目
下午(3小时)
- Chat Model集成
- 集成OpenAI GPT
- 集成Claude API
- 集成国内模型:通义千问、文心一言
- 实践:实现简单的对话功能
晚上(2小时)
- Prompt模板
- PromptTemplate使用
- 变量替换
- Few-shot学习
- 实践:设计专业领域的Prompt模板
Day 25:LangChain4j进阶
上午(3小时)
- Memory管理
- ConversationBufferMemory
- ConversationSummaryMemory
- 自定义Memory实现
- 实践:实现多轮对话记忆
下午(3小时)
- Chain构建
- LLMChain
- SequentialChain
- TransformChain
- 实践:构建复杂的处理链
晚上(2小时)
- Document Loaders
- 文本、PDF、Word文档加载
- 文档分割:RecursiveCharacterTextSplitter
- 元数据提取
- 实践:加载和处理文档
Day 26:RAG系统实现
上午(3小时)
- RAG架构设计
- 文档摄入流程
- 向量存储选择
- 检索策略
- 设计知识库RAG系统架构
下午(3小时)
- RAG实现(上)
- 文档加载和切分
- 向量化和存储到pgvector
- 集成LangChain4j和pgvector
- 实践:实现文档摄入功能
晚上(2小时)
- RAG实现(下)
- 用户查询处理
- 向量检索相关文档
- 组装Prompt并生成回答
- 实践:完成端到端RAG流程
Day 27:Spring AI框架
上午(3小时)
- Spring AI介绍
- Spring AI vs LangChain4j
- 核心抽象:ChatModel、EmbeddingModel、VectorStore
- Spring Boot集成
- 创建Spring AI项目
下午(3小时)
- Spring AI实战
- 配置ChatModel
- 使用ChatClient
- Streaming响应
- 实践:实现流式对话接口
晚上(2小时)
- Function Calling
- @Tool注解
- 自定义工具函数
- Agent模式
- 实践:实现天气查询工具调用
Day 28:第四周总结与AI项目
上午(3小时)
- AI技术选型
- LangChain4j vs Spring AI对比
- 向量库选择建议
- 国内模型 vs 国外模型
- 整理AI学习笔记
下午(3小时)
- 设计AI功能
- 智能日志分析系统
- 基于你的登录模块,添加AI异常检测
- 智能错误提示
- 实现核心功能
晚上(2小时)
- 写第四周学习总结
- 规划项目集成AI功能
- 休息调整
第五周:综合项目实战(上)
Day 29:项目架构设计
上午(3小时)
- 项目需求分析
- 智能化微服务系统
- 核心功能模块划分
- 技术栈确定
- 绘制系统架构图
下午(3小时)
- 数据库设计
- MySQL表设计:用户、权限、日志等
- PostgreSQL表设计:AI相关数据、向量存储
- Redis数据结构设计:会话、限流计数
- 编写DDL脚本
晚上(2小时)
- API设计
- RESTful API规范
- 接口文档编写(Swagger/OpenAPI)
- 统一响应格式定义
- 使用Apifox/Postman整理接口
Day 30:用户认证授权模块
上午(3小时)
- 用户注册登录
- 用户实体和DTO设计
- 密码加密:BCrypt
- 注册接口:参数校验、唯一性检查
- 登录接口:生成JWT Token
- 实现注册登录接口
下午(3小时)
- JWT认证拦截器
- 自定义JwtAuthenticationFilter
- Token解析和验证
- SecurityContext设置
- 白名单配置
- 测试JWT认证流程
晚上(2小时)
- 权限控制
- RBAC模型:用户、角色、权限
- @PreAuthorize注解使用
- 权限拦截器
- 实现基于角色的权限控制
Day 31:限流降级模块
上午(3小时)
- 基于Redis的限流
- Redis + Lua脚本实现限流
- 滑动窗口限流算法
- 自定义@RateLimit注解
- 实现通用限流组件
下午(3小时)
- Sentinel集成
- Sentinel Dashboard部署
- 配置限流规则
- 自定义限流异常处理
- 热点参数限流:针对不同用户
- 为关键接口配置限流
晚上(2小时)
- 服务降级
- 熔断降级规则
- 降级处理逻辑
- 监控和告警
- 测试限流降级效果
Day 32:统一异常处理与日志
上午(3小时)
- 全局异常处理器
- 自定义业务异常
- 统一错误码枚举
- @ControllerAdvice实现
- 不同异常的处理策略
- 完善异常处理体系
下午(3小时)
- 日志系统
- Logback配置:控制台、文件、滚动
- MDC实现请求链路追踪
- 日志脱敏:手机号、身份证、密码
- 日志异步输出
- 配置完整的日志系统
晚上(2小时)
- 审计日志
- AOP记录操作日志
- 登录日志、操作日志
- 异步保存到数据库
- 实现操作审计功能
Day 33:消息队列集成
上午(3小时)
- Kafka基础
- Kafka核心概念:Topic、Partition、Consumer Group
- 消息发送和消费
- 消息可靠性保证
- Docker部署Kafka
下午(3小时)
- Spring Kafka集成
- 配置Kafka连接
- @KafkaListener消费消息
- KafkaTemplate发送消息
- 异常处理和重试
- 实现日志异步处理
晚上(2小时)
- 消息可靠性
- 生产者确认机制
- 消费者手动提交
- 幂等性处理
- 测试消息发送和消费
Day 34:缓存策略
上午(3小时)
- Redis缓存设计
- 缓存策略:Cache-Aside、Write-Through
- 缓存穿透、击穿、雪崩解决方案
- 布隆过滤器
- 设计缓存架构
下午(3小时)
- Spring Cache集成
- @Cacheable、@CachePut、@CacheEvict
- 自定义缓存Key
- 缓存过期策略
- 为查询接口添加缓存
晚上(2小时)
- 分布式锁
- Redis实现分布式锁
- Redisson使用
- 锁的超时和续期
- 实现库存扣减等需要锁的场景
Day 35:第五周总结与代码review
上午(3小时)
- 代码review
- 检查代码规范
- 优化代码结构
- 单元测试补充
- 使用SonarQube进行代码质量检查
下午(3小时)
- 接口测试
- 编写接口测试用例
- 使用Postman/Apifox测试
- 压力测试:JMeter
- 记录测试结果
晚上(2小时)
- 写第五周学习总结
- 整理项目文档
- 休息调整
第六周:综合项目实战(下)- AI功能集成
Day 36:AI服务基础搭建
上午(3小时)
- AI服务模块设计
- 独立的AI微服务设计
- API接口定义
- 配置AI模型密钥
- 创建AI服务模块
下午(3小时)
- 集成LangChain4j
- 配置OpenAI/Claude客户端
- 封装通用Chat服务
- 实现流式响应接口
- 实现基础对话功能
晚上(2小时)
- Prompt模板管理
- 设计Prompt模板存储方案
- 模板变量替换
- 版本管理
- 创建常用Prompt模板库
Day 37:智能日志分析功能
上午(3小时)
- 日志分析需求
- 错误日志智能诊断
- 异常模式识别
- 解决方案推荐
- 设计日志分析流程
下午(3小时)
- 实现日志分析
- 从Kafka消费错误日志
- 构建日志分析Prompt
- 调用AI模型分析
- 生成诊断报告
- 测试日志分析功能
晚上(2小时)
- 日志聚合
- 相似错误聚类
- 频繁错误识别
- 趋势分析
- 实现日志智能聚合
Day 38:智能异常检测
上午(3小时)
- 异常行为检测设计
- 异常登录检测:IP、时间、频率
- 用户行为画像
- 风险评分机制
- 设计检测规则
下午(3小时)
- 实现异常检测
- 收集用户行为数据
- AI模型分析异常模式
- 实时风险评估
- 告警通知
- 测试异常检测准确率
晚上(2小时)
- 检测优化
- 误报处理
- 白名单机制
- 检测规则调优
- 优化检测效果
Day 39:RAG知识库系统
上午(3小时)
- 知识库设计
- 文档类型:API文档、FAQ、技术文档
- 文档结构化存储
- 元数据设计
- 设计知识库schema
下午(3小时)
- 文档摄入功能
- 文档上传接口
- 文档解析和切分
- 向量化和存储到pgvector
- 索引构建
- 实现文档摄入流程
晚上(2小时)
- 文档管理
- 文档CRUD接口
- 文档版本管理
- 文档权限控制
- 完善文档管理功能
Day 40:RAG检索和问答
上午(3小时)
- 检索策略
- 向量检索
- 混合检索:向量 + 关键词
- 重排序(Rerank)
- 实现检索服务
下午(3小时)
- 问答生成
- 检索相关文档
- 构建RAG Prompt
- 生成回答
- 引用来源标注
- 实现端到端问答功能
晚上(2小时)
- 问答优化
- 答案质量评估
- 检索召回率优化
- 缓存常见问题
- 测试和优化问答效果
Day 41:AI功能集成与测试
上午(3小时)
- 功能集成
- 将AI功能集成到主应用
- 配置路由和权限
- 统一错误处理
- 完成功能集成
下午(3小时)
- 全链路测试
- 测试日志分析功能
- 测试异常检测功能
- 测试知识库问答
- 记录测试结果
晚上(2小时)
- 性能优化
- AI调用异步化
- 响应时间优化
- 并发控制
- 优化AI功能性能
Day 42:第六周总结与部署准备
上午(3小时)
- 代码整理
- 代码review和重构
- 补充单元测试
- 完善注释和文档
- 提交代码到Git
下午(3小时)
- 部署配置
- 编写Dockerfile
- 编写K8s部署文件
- 配置环境变量
- 准备配置文件
- 测试本地容器化
晚上(2小时)
- 写第六周学习总结
- 整理项目亮点
- 休息调整
第七周:部署运维与监控
Day 43:Docker镜像构建
上午(3小时)
- 优化Dockerfile
- 使用多阶段构建
- 分离依赖层和代码层
- 使用轻量级基础镜像
- 构建各服务镜像
下午(3小时)
- Docker Compose编排
- 编写完整的docker-compose.yml
- 包含:应用、MySQL、PostgreSQL、Redis、Kafka
- 配置网络和数据卷
- 测试Docker Compose启动
晚上(2小时)
- 镜像优化
- 减小镜像体积
- 安全扫描
- 镜像分层优化
- 推送镜像到Docker Hub/阿里云
Day 44:Kubernetes部署
上午(3小时)
- 编写K8s YAML
- Deployment:应用服务
- StatefulSet:数据库
- ConfigMap:配置文件
- Secret:敏感信息
- 完成所有服务的YAML编写
下午(3小时)
- 部署到K8s
- 创建Namespace
- 部署数据库服务
- 部署应用服务
- 配置Service和Ingress
- 验证部署成功
晚上(2小时)
- 健康检查配置
- Liveness Probe
- Readiness Probe
- Startup Probe
- 测试Pod自动恢复
Day 45:配置HPA和监控
上午(3小时)
- HPA配置
- 配置基于CPU的HPA
- 配置基于内存的HPA
- 设置合理的伸缩参数
- 压测验证HPA效果
下午(3小时)
- Prometheus部署
- 部署Prometheus Operator
- 配置ServiceMonitor
- 应用暴露metrics端点
- 验证指标采集
晚上(2小时)
- Grafana配置
- 部署Grafana
- 配置Prometheus数据源
- 导入常用Dashboard
- 创建自定义监控面板
Day 46:日志收集与追踪
上午(3小时)
- ELK Stack了解
- Elasticsearch、Logstash、Kibana
- 或使用Loki + Promtail + Grafana
- 选择日志方案并部署
下午(3小时)
- 日志收集配置
- 配置应用日志输出
- 配置日志采集agent
- 配置日志索引
- 测试日志查询
晚上(2小时)
- 链路追踪
- SkyWalking或Jaeger了解
- 简单集成
- 查看调用链
- 体验链路追踪功能
Day 47:CI/CD Pipeline
上午(3小时)
- Git工作流
- Git分支策略:GitFlow
- 代码review流程
- 提交规范
- 配置Git仓库
下午(3小时)
- CI配置
- 使用GitHub Actions或GitLab CI
- 配置自动化测试
- 配置代码扫描
- 自动构建Docker镜像
- 编写CI配置文件
晚上(2小时)
- CD配置
- 自动部署到K8s
- 蓝绿部署或金丝雀发布
- 回滚机制
- 测试自动化部署
Day 48:故障演练与优化
上午(3小时)
- 故障模拟
- 模拟Pod崩溃
- 模拟网络故障
- 模拟数据库故障
- 验证自动恢复机制
下午(3小时)
- 性能测试
- 使用JMeter压测
- 分析性能瓶颈
- 优化慢接口
- 记录性能测试报告
晚上(2小时)
- 安全加固
- HTTPS配置
- 安全headers配置
- 敏感信息保护
- 完成安全检查清单
Day 49:第七周总结与文档
上午(3小时)
- 部署文档编写
- 架构图
- 部署步骤
- 配置说明
- 运维手册
- 完善项目文档
下午(3小时)
- 问题总结
- 部署过程中遇到的问题
- 解决方案记录
- 最佳实践总结
- 整理troubleshooting文档
晚上(2小时)
- 写第七周学习总结
- 准备项目演示材料
- 休息调整
第八周:面试准备与查漏补缺
Day 50:算法刷题(一)
上午(3小时)
- 数组和字符串
- 双指针技巧
- 滑动窗口
- 刷10道LeetCode中等题
- 记录解题思路
下午(3小时)
- 链表和树
- 链表反转、快慢指针
- 树的遍历、递归
- 刷10道LeetCode中等题
- 总结常见模式
晚上(2小时)
- 栈和队列
- 单调栈
- 优先队列
- 刷5道相关题
- 整理笔记
Day 51:算法刷题(二)
上午(3小时)
- 动态规划
- 背包问题
- 最长子序列
- 刷10道经典DP题
- 理解状态转移
下午(3小时)
- 图和搜索
- BFS、DFS
- 最短路径
- 刷10道图论题
- 掌握搜索技巧
晚上(2小时)
- 哈希表和排序
- 哈希表应用
- 常见排序算法
- 刷5道相关题
- 复习时间复杂度
Day 52:系统设计准备
上午(3小时)
- 系统设计基础
- CAP理论
- 一致性hash
- 负载均衡算法
- 学习设计方法论
下午(3小时)
- 高并发系统设计
- 缓存策略
- 限流降级
- 分库分表
- 消息队列
- 绘制架构图练习
晚上(2小时)
- 经典设计题
- 设计短链接系统
- 设计秒杀系统
- 设计IM系统
- 练习系统设计思路
Day 53:项目经历整理
上午(3小时)
- 整理之前项目
- 登录认证模块经验
- 限流系统实现
- 统一错误处理方案
- 使用STAR法则描述
下午(3小时)
- 整理新项目
- 项目背景和目标
- 技术选型理由
- 遇到的挑战和解决方案
- 项目亮点和成果
- 准备项目演示
晚上(2小时)
- 准备技术问题
- 为什么用PostgreSQL
- K8s部署经验
- AI功能如何实现
- 模拟回答
Day 54:Java核心知识复习
上午(3小时)
- JVM深入
- 内存模型详解
- GC算法和调优
- 类加载机制
- 准备高频面试题答案
下午(3小时)
- 并发编程
- synchronized原理
- AQS原理
- ConcurrentHashMap实现
- 线程池参数详解
- 整理并发知识点
晚上(2小时)
- Java新特性
- Virtual Threads应用
- Record和Sealed Classes
- Pattern Matching
- 准备新特性相关问题
Day 55:框架源码与原理
上午(3小时)
- Spring核心原理
- IOC容器实现
- AOP原理
- Bean生命周期
- 循环依赖解决
- 画图理解核心流程
下午(3小时)
- Spring Boot原理
- 自动配置原理
- Starter机制
- Actuator实现
- 准备Spring Boot面试题
晚上(2小时)
- MyBatis原理
- 执行流程
- 缓存机制
- 插件原理
- 整理ORM相关知识
Day 56:数据库与中间件
上午(3小时)
- MySQL深度复习
- 索引原理
- 事务和锁
- 主从复制
- 性能优化
- 准备MySQL面试题
下午(3小时)
- Redis深度复习
- 数据结构实现
- 持久化机制
- 集群方案
- 缓存问题
- 准备Redis面试题
晚上(2小时)
- 消息队列
- Kafka原理
- 消息可靠性
- 性能优化
- 准备MQ相关问题
Day 57:模拟面试与总结
上午(3小时)
- 模拟技术面试
- 找朋友或使用AI模拟
- 回答技术问题
- 讲解项目经验
- 系统设计题
- 记录薄弱环节
下午(3小时)
- 查漏补缺
- 针对薄弱环节强化
- 补充不熟悉的知识点
- 优化项目描述
- 再次模拟面试
晚上(2小时)
- 最终总结
- 8周学习成果回顾
- 技术栈梳理
- 简历优化
- 面试注意事项
- 准备开始投递简历
学习建议
时间安排
- 每天8小时学习:上午3小时 + 下午3小时 + 晚上2小时
- 保持规律作息:固定学习时间,形成习惯
- 劳逸结合:每周日适当休息,避免burnout
- 灵活调整:根据实际进度可调整计划
学习方法
- 项目驱动:所有知识点都在项目中实践
- 费曼学习法:能讲出来才算真懂
- 刻意练习:重点突破薄弱环节
- 及时总结:每天/每周写学习总结
项目管理
- Git版本控制:每天提交代码
- 文档同步:边做边写文档
- 代码规范:遵循阿里Java开发手册
- 单元测试:核心功能要有测试
面试准备
- 第5周开始可投简历:边学边面试
- 面试反馈很重要:根据面试调整学习重点
- 多投多练:不要怕失败,积累经验
- 准备作品集:GitHub项目要完善
重点关注
- 差异化竞争力:AI + Java是亮点
- 实战经验:K8s、PostgreSQL都是加分项
- 项目完整度:从开发到部署的完整链路
- 问题解决能力:面试时重点展示
资源推荐
书籍
- 《深入理解Java虚拟机》- JVM
- 《Java并发编程实战》- 并发
- 《高性能MySQL》- 数据库
- 《Kubernetes权威指南》- K8s
视频课程
- B站搜索:尚硅谷、黑马程序员
- YouTube:TechWorld with Nana(K8s)
在线资源
- LeetCode中国站 - 算法
- 牛客网 - 面经
- 掘金/博客园 - 技术文章
- Stack Overflow - 问题解决
AI辅助学习
- 使用Claude/ChatGPT解答疑问
- 用AI生成学习材料和测试题
- AI代码review和优化建议
祝你学习顺利!💪
