Java SE部分
基础语法
- 变量与数据类型:基本数据类型(byte、short、int、long、float、double、char、boolean),引用数据类型(类、接口、数组、字符串等),变量的声明、初始化和作用域。
- 运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符等。
- 流程控制:顺序结构、选择结构(if - else、switch - case)、循环结构(for、while、do - while),以及 break、continue 关键字的使用。
- 方法:方法的定义、参数传递、返回值,方法的重载和递归调用。
- 数组:一维数组和多维数组的声明、初始化、遍历和常用操作。
面向对象编程
- 类与对象:类的定义,对象的创建和使用,构造方法,this 关键字。
- 封装:访问修饰符(public、private、protected、默认),成员变量的封装和访问控制。
- 继承:继承的概念,extends 关键字,方法重写,super 关键字,继承的层次结构和多态性。
- 多态:对象的多态性,方法的动态绑定,向上转型和向下转型。
- 抽象类与接口:抽象类的定义和使用,抽象方法,接口的定义和实现,接口的多实现和默认方法。
常用类
- String 类:字符串的创建、操作(拼接、截取、替换等),字符串的比较,不可变特性。
- StringBuilder 与 StringBuffer:可变字符串,两者的区别和适用场景。
- 包装类:基本数据类型的包装类(Integer、Double、Boolean 等),自动装箱和拆箱。
- Math 类:数学运算相关的方法,如随机数生成、三角函数、指数运算等。
- Date 与 Calendar 类:日期和时间的处理,获取当前日期和时间,日期的格式化和解析。
- File 类:文件和目录的操作,文件的创建、删除、读取、写入,目录的创建和遍历。
内部类和包装类
内部类
- 成员内部类:定义在另一个类的内部,作为外部类的一个成员,可以访问外部类的所有成员。
- 静态内部类:使用
static
修饰的内部类,只能访问外部类的静态成员。 - 局部内部类:定义在方法内部,只能在该方法内部使用。
- 匿名内部类:没有显式的类名,通常用于创建一次性的对象,常用于实现接口或继承抽象类。
包装类
- 基本数据类型对应的包装类:
Byte
、Short
、Integer
、Long
、Float
、Double
、Character
、Boolean
。 - 自动装箱和拆箱:Java 提供了自动将基本数据类型转换为包装类对象(装箱)和将包装类对象转换为基本数据类型(拆箱)的功能。
- 基本数据类型对应的包装类:
注解
- 内置注解:如
@Override
用于标识方法重写;@Deprecated
用于标记已过时的元素;@SuppressWarnings
用于抑制编译器警告。 - 元注解:用于定义注解的注解,如
@Retention
用于指定注解的保留策略(SOURCE、CLASS、RUNTIME);@Target
用于指定注解可以应用的目标元素类型。 - 自定义注解:可以通过
@interface
关键字定义自己的注解,并使用元注解进行配置。
- 内置注解:如
动态代理
- 概念:在运行时动态创建代理类和代理对象,无需手动编写代理类的代码。
- Java 中的动态代理实现
- 基于接口的动态代理:使用
java.lang.reflect.Proxy
类和java.lang.reflect.InvocationHandler
接口实现。 - 基于类的动态代理:使用第三方库如 CGLIB 实现,它可以为没有实现接口的类创建代理。
- 基于接口的动态代理:使用
枚举
- 基本概念:枚举是一种特殊的类,用于定义一组固定的常量。
- 枚举的定义和使用:使用
enum
关键字定义枚举类型,枚举常量默认是public static final
的。 - 枚举的方法:枚举类型可以有自己的构造方法、成员变量和方法,还可以实现接口。
集合框架
- List 接口:有序、可重复的集合,常用实现类有 ArrayList、LinkedList,列表的添加、删除、查找等操作。
- Set 接口:无序、不可重复的集合,常用实现类有 HashSet、TreeSet,集合的交、并、差等操作。
- Map 接口:键值对形式的集合,常用实现类有 HashMap、TreeMap、Hashtable,映射的添加、获取、遍历等操作。
- Queue 接口:队列,先进先出(FIFO)的数据结构,常用实现类有 LinkedList、PriorityQueue。
- 迭代器(Iterator):用于遍历集合元素,统一的遍历方式,避免对集合内部结构的暴露。
异常处理
- 异常体系:Throwable 类,Error 和 Exception 的区别,受检异常和非受检异常。
- try - catch - finally 语句:捕获和处理异常,finally 块的作用,多个 catch 块的使用。
- throw 与 throws 关键字:手动抛出异常,声明方法可能抛出的异常。
- 自定义异常:创建自定义异常类,用于特定业务场景下的异常处理。
多线程
- 线程基础:线程的概念,进程与线程的区别,线程的生命周期(新建、就绪、运行、阻塞、死亡)。
- 创建线程的方式:继承 Thread 类,实现 Runnable 接口,使用 Callable 接口和 Future 获取线程执行结果。
- 线程同步:synchronized 关键字,同步方法和同步块,解决线程安全问题。
- 线程通信:wait ()、notify ()、notifyAll () 方法,生产者 - 消费者模型。
- 线程池:Executor 框架,线程池的创建和使用,常见的线程池类型(如 FixedThreadPool、CachedThreadPool 等)。
并发编程
- 原子操作:Atomic 类(如 AtomicInteger、AtomicBoolean 等),利用 CAS(Compare and Swap)实现原子操作。
- 并发集合:ConcurrentHashMap、CopyOnWriteArrayList 等,支持高并发访问的集合类。
- Lock 接口:可重入锁(ReentrantLock),读写锁(ReentrantReadWriteLock),用于更灵活的线程同步控制。
- 并发工具类:CountDownLatch、CyclicBarrier、Semaphore 等,用于协调多个线程的执行。
Java I/O
- 字节流:InputStream 和 OutputStream 及其子类,如 FileInputStream、FileOutputStream,用于读写字节数据。
- 字符流:Reader 和 Writer 及其子类,如 FileReader、FileWriter,用于读写字符数据,字符编码的转换。
- 缓冲流:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter,提高读写效率。
- 对象流:ObjectInputStream 和 ObjectOutputStream,用于对象的序列化和反序列化。
- NIO(New I/O):通道(Channel)、缓冲区(Buffer)、选择器(Selector),基于非阻塞的 I/O 模型,提高 I/O 性能。
反射机制
- Class 类:获取类的 Class 对象,通过 Class 对象获取类的构造方法、成员变量、成员方法等信息。
- 反射的应用:动态创建对象,调用对象的方法,访问和修改对象的成员变量,在框架开发和插件化开发中有广泛应用。
泛型
- 泛型的定义:在类、接口、方法中使用类型参数,提高代码的复用性和类型安全性。
- 泛型的通配符:?、?extends T、?super T 的含义和使用场景。
- 泛型擦除:泛型在编译后的类型擦除机制,以及带来的一些限制和注意事项。
网络编程
- HTTP协议:深入理解请求头/响应头结构、状态码、Cookie/Session机制
- NIO进阶:Selector多路复用、ByteBuffer内存池优化、Netty底层原理
- WebSocket:实现即时通讯功能,对比HTTP长轮询方案
- 实战案例:开发简易HTTP服务器(支持GET/POST)、实现文件断点续传
JUnit和断言
新特性
- Java 8+:Lambda表达式、Stream API、Optional空安全处理
- Java 11+:ZGC低延迟垃圾回收器、var局部变量类型推断
- Java 17+:密封类(sealed class)、模式匹配(Pattern Matching)
- 实战案例:用Stream重构集合处理代码,实现并行数据清洗
Java进阶部分
高并发
- 并发工具进阶:
- LongAdder vs AtomicLong性能对比
- StampedLock乐观锁实现高吞吐量场景
- 并发模式:
- Fork/Join框架实现分治算法
- Disruptor无锁队列在金融交易系统中的应用
- 实战案例:设计百万级QPS的抢购系统(库存防超卖)
- 并发工具进阶:
分布式
- 一致性协议:Raft选举机制、ZAB协议在ZooKeeper中的应用
- 分布式存储:Ceph对象存储原理、MinIO私有云部署
- 实战案例:基于Paxos算法实现分布式锁服务
微服务
- Service Mesh:Istio流量管理、链路加密(mTLS)
- Serverless:Spring Cloud Function实现无服务器架构
- 实战案例:将单体应用改造为Serverless微服务集群
JVM
内存分析:
- MAT工具分析堆内存泄漏
- JProfiler定位CPU热点方法
GC调优:
- G1回收器Region划分策略
- 大对象分配优化(-XX:PretenureSizeThreshold)
数据库部分
关系型数据库:MySQL PostgreSQL
NoSQL:MongoDB Redis
缓存:
搜索引擎:
- Elasticsearch:
Web前端部分
前端基础 HTML/ CSS/ JavaScript AJAX jQuery
有精力可以学一下 TypeScript 很像js
前端框架
- React:组件化开发、Hooks、状态管理(Redux/Context API)27。
- Vue.js:Vue 3组合式API、Pinia/Vuex状态管理37。
工程化工具
- Webpack模块打包、Babel转译、NPM/Yarn依赖管理8。
前后端协作:
- RESTful API设计
- 使用Swagger/OpenAPI生成文档,Postman调试接口8。
- SSR与静态站点
- 学习Next.js(React)或Nuxt.js(Vue)实现服务端渲染57。
- RESTful API设计
JavaEE与Web后端部分
J2EE基础
- Servlet
- Tomcat(Web服务器)
- JSP /
- Nginx
常用框架
- Spring部分
- MyBatis
- Netty
- 工作流
- 实用工具类库
高性能和高可用
- CDN
- 消息队列
- 负载均衡
DevOps与云原生
1. 容器化与编排
- Docker:镜像构建、Docker Compose多容器管理28。
- Kubernetes:Pod部署、Service暴露、Ingress路由管理710。
2. CI/CD与监控
- Jenkins/GitLab CI:自动化构建、测试与部署流水线810。
- 云服务:AWS EC2/S3、阿里云容器服务,实现弹性伸缩与负载均衡28。
其他内容
构建工具
Maven
Gradle
版本控制
- Git
- Github
测试部分
Linux与服务器部分
远程调用
设计模式

Spring部分
第一阶段:Spring核心原理与基础框架
1. Spring Framework Core
- 核心目标:理解IoC/DI、AOP设计思想
- 重点内容:
- IoC容器:Bean生命周期、@Component/@Bean注解、XML配置与JavaConfig对比
- 依赖注入:@Autowired原理、构造器注入 vs Setter注入、解决循环依赖
- AOP编程:
- JDK动态代理与CGLIB区别
- 实现日志记录/事务管理(@Around、@Before等切面注解)
- Spring JDBC:JdbcTemplate使用,对比原生JDBC的优势
- 实践项目:实现一个银行转账系统,手动模拟事务管理(不依赖Spring事务注解)
2. Spring MVC
- 核心目标:从Servlet过渡到MVC框架
- 关键衔接:对比Servlet开发模式 → DispatcherServlet工作原理
- 重点内容:
- 请求处理流程:HandlerMapping → Controller → ViewResolver
- 注解驱动开发:@Controller/@RequestMapping/@RequestBody
- 参数绑定:@RequestParam/@PathVariable/@ModelAttribute
- 视图技术:Thymeleaf模板引擎集成(替代JSP)
- 实践项目:开发博客系统的文章管理模块(CRUD+分页)
第二阶段:现代Spring开发范式
3. Spring Boot
- 核心目标:掌握自动化配置与生产级应用构建
- 重点内容:
- Starter机制:分析spring-boot-starter-web的自动配置过程
- 外部化配置:多环境配置(application-{profile}.yml)、@ConfigurationProperties
- 嵌入式容器:Tomcat vs Undertow性能对比
- Actuator:健康检查、Metrics监控端点配置
- 测试:@SpringBootTest集成测试、MockMVC模拟HTTP请求
- 实践项目:改造第一阶段项目为Spring Boot版本,增加Swagger API文档
4. Spring Security
- 核心目标:构建安全认证体系
- 学习路径:
- 基础认证:内存认证 → JDBC认证 → 自定义UserDetailsService
- 表单登录 vs JWT认证:实现无状态认证(搭配JJWT库)
- 权限控制:方法级安全(@PreAuthorize)、ACL权限模型
- OAuth2.0:授权码模式实现(整合GitHub登录)
- 实践项目:为博客系统增加RBAC权限管理,支持JWT+OAuth2混合认证
第三阶段:企业级整合与深度优化
5. 数据持久化整合
- Spring Data JPA:
- Repository动态代理机制
- @Query注解实现复杂查询
- 审计功能(@CreatedDate)
- MyBatis Plus:
- 通用Mapper与条件构造器
- 分页插件原理分析
- 多数据源配置:AbstractRoutingDataSource动态切换
- 性能优化:
- 二级缓存整合(Ehcache/Redis)
- 批处理优化(JdbcTemplate批量插入)
6. 响应式编程
- Spring WebFlux:
- Reactor编程模型(Flux/Mono)
- 对比Servlet阻塞模型的性能优势
- 整合MongoDB Reactive驱动
第四阶段:微服务架构进阶
7. Spring Cloud
- 基础组件:
- 服务注册发现:Eureka vs Nacos注册中心对比
- 配置中心:Spring Cloud Config + Bus动态刷新
- 服务调用:OpenFeign声明式客户端 + Hystrix熔断
- 进阶方案:
- 网关:Spring Cloud Gateway动态路由配置
- 链路追踪:Sleuth + Zipkin全链路监控
- 分布式事务:Seata AT模式实现
- 实践项目:拆解博客系统为微服务架构(用户服务/内容服务/评论服务)
- 必读文档:
- 深度书籍:
- 《Spring揭秘》(深入理解设计思想)
- 《Spring Boot编程思想》(核心原理剖析)
按照这个路径学习,建议每完成一个阶段就进行知识图谱绘制(如用XMind整理技术点关联),遇到问题优先查阅官方文档,同时结合Github优质开源项目(如spring-petclinic)进行对比学习。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ErgouTree's Blog!
评论
FPS: 60