Java核心技术学习计划(12周)
Java核心技术学习计划(12周)
核心目标:系统掌握Java企业级开发技术栈,通过”苍穹外卖”项目实战辅助理解
学习策略:以知识点深度掌握为主,项目代码为实践验证工具
📚 每周知识点详解
周数 | 核心知识点 | 技术细节 | 对应项目模块 |
---|---|---|---|
第1周 | Java语法核心 | - 自动装箱/拆箱原理 - String常量池机制 - 泛型擦除与通配符 - 异常分类(Checked/Unchecked) |
员工管理系统类型转换验证 |
第2周 | OOP高级特性 | - 抽象类与接口设计原则 - 静态代理vs动态代理 - 类加载机制(双亲委派) - 注解处理器原理 |
菜品管理模块的工厂模式应用 |
第3周 | 集合框架源码 | - ArrayList扩容机制 - HashMap哈希冲突解决 - ConcurrentHashMap分段锁 - Fail-Fast迭代器原理 |
购物车模块的线程安全集合选择 |
第4周 | IO与NIO | - 装饰器模式在IO中的应用 - Buffer的position/limit机制 - Channel零拷贝原理 - Path API操作 |
订单导出功能的文件操作实现 |
第5周 | JDBC进阶 | - 数据库连接池原理(HikariCP) - PreparedStatement防SQL注入 - ResultSet元数据操作 - 批处理优化技巧 |
分类管理的批量删除功能实现 |
第6周 | 多线程并发 | - synchronized锁升级过程 - AQS同步器原理 - ThreadLocal内存泄漏防范 - CompletableFuture异步编排 |
订单状态更新的异步通知机制 |
第7周 | JVM基础 | - 内存模型(堆/栈/方法区) - GC算法(CMS/G1) - 类文件结构 - JIT编译器原理 |
性能调优时的JVM参数配置 |
第8周 | Spring原理 | - Bean生命周期管理 - 三级缓存解决循环依赖 - AOP代理选择策略(JDK/CGLIB) - 事务传播机制 |
支付模块的事务边界控制 |
第9周 | MyBatis进阶 | - 一级/二级缓存机制 - 插件开发(PageHelper原理) - 动态SQL生成原理 - 延迟加载实现 |
复杂菜品查询的SQL优化 |
第10周 | 分布式基础 | - CAP定理实践 - Redis持久化策略 - 分布式Session方案 - 幂等性设计 |
购物车Redis集群部署 |
第11周 | 安全架构 | - OAuth2授权码模式 - JWT签名验证流程 - CSRF防御方案 - XSS过滤策略 |
用户认证模块的安全加固 |
第12周 | 工程化实践 | - Git Flow工作流 - Maven多环境配置 - Jacoco覆盖率测试 - Dockerfile编写规范 |
项目持续集成流水线搭建 |
🔍 深度学习方法
- 每日知识图谱:用XMind绘制技术点关联图(如:HashMap→哈希冲突→ConcurrentHashMap)
- 源码阅读:每天30分钟阅读JDK/Spring关键类源码(ArrayList.java等)
- 技术对比:制作对比表格(如:ArrayList vs LinkedList性能差异)
- 原理复现:尝试手写简化版框架(如:迷你Spring IoC容器)
🛠 配套实战任务
- Week1:实现带泛型验证的DTO基类
- Week3:用ConcurrentHashMap改造购物车并发控制
- Week5:编写HikariCP连接池监控组件
- Week7:通过-XX:+PrintGCDetails分析项目GC日志
- Week9:开发MyBatis分页插件
- Week12:搭建Jenkins自动化部署流水线
📖 推荐学习资源
书籍:
- 《Effective Java》
- 《深入理解Java虚拟机》
- 《Spring源码深度解析》
视频:
工具:
- Arthas诊断工具
- JProfiler性能分析
- IDEA的Diagrams代码可视化
关键建议:每周选择1-2个知识点进行专题突破,结合项目代码调试验证(如通过断点跟踪Spring Bean创建过程)。建议建立错题本记录调试中遇到的典型问题。
第一周详细学习计划(3.5-3.11)
📌 学习目标
- 深入理解Java基础语法特性与底层原理
- 建立与C++语法差异的认知体系
- 通过员工管理系统验证类型转换场景
📅 每日学习安排
Day 1(3.5): 自动装箱/拆箱原理
学习重点:
- 基本类型与包装类对应关系(int ↔ Integer)
- 自动装箱的底层实现(
Integer.valueOf()
) - 缓存机制(-128~127的IntegerCache)
- 性能陷阱与最佳实践
实践任务:
- 编写测试代码验证以下场景:
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // true
Integer c = 200;
Integer d = 200;
System.out.println(c == d); // false
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 立日心的博客!