Java开发学习清单
面向前端转全栈的详细学习路径
📚 目录
阶段一:Java语言基础
1.1 Java语法基础
-
基本数据类型
- 8种基本类型:byte、short、int、long、float、double、char、boolean
- 包装类型:Byte、Short、Integer、Long、Float、Double、Character、Boolean
- 自动装箱与拆箱
- 类型转换:隐式转换、显式转换
- 字符串:String、StringBuilder、StringBuffer
-
控制流语句
- 条件语句:if-else、switch-case
- 循环语句:for、while、do-while、增强for循环
- 跳转语句:break、continue、return
- 标签语句的使用
-
面向对象编程
- 类与对象:定义、实例化、成员变量、成员方法
- 构造方法:默认构造、有参构造、构造方法重载
- 封装:访问修饰符(private、protected、public、default)
- 继承:extends关键字、super关键字、方法重写
- 多态:方法重载、方法重写、向上转型、向下转型
- 抽象类:abstract关键字、抽象方法
- 接口:interface关键字、默认方法、静态方法、函数式接口
- 内部类:成员内部类、静态内部类、局部内部类、匿名内部类
1.2 异常处理
- 异常体系
- Throwable、Error、Exception
- RuntimeException vs CheckedException
- 常见异常类型:NullPointerException、ArrayIndexOutOfBoundsException等
- 异常处理机制
- try-catch-finally语句
- try-with-resources语句
- throws关键字
- throw关键字
- 自定义异常类
1.3 集合框架
- Collection接口
- List接口:ArrayList、LinkedList、Vector
- Set接口:HashSet、LinkedHashSet、TreeSet
- Queue接口:LinkedList、PriorityQueue、ArrayDeque
- Map接口
- HashMap、LinkedHashMap、TreeMap、Hashtable
- ConcurrentHashMap(线程安全)
- 迭代器
- Iterator接口
- ListIterator接口
- 增强for循环原理
- 比较器
- Comparable接口
- Comparator接口
- Lambda表达式比较器
1.4 泛型
- 泛型基础
- 泛型类、泛型方法、泛型接口
- 类型擦除机制
- 通配符:?、? extends T、? super T
- 泛型边界:上界、下界
1.5 Java 8+ 新特性
- Lambda表达式
- 语法格式:(参数) -> {方法体}
- 函数式接口:@FunctionalInterface
- 方法引用:::操作符
- Stream API
- 创建Stream:集合.stream()、Stream.of()、Stream.generate()
- 中间操作:filter、map、flatMap、distinct、sorted、limit、skip
- 终端操作:forEach、collect、reduce、count、anyMatch、allMatch
- 并行流:parallelStream()
- Optional类
- of()、ofNullable()、empty()
- isPresent()、ifPresent()、orElse()、orElseGet()
- map()、flatMap()、filter()
- 时间日期API
- LocalDate、LocalTime、LocalDateTime
- Instant、Duration、Period
- DateTimeFormatter格式化
- ZoneId时区处理
1.6 并发编程
- 线程基础
- Thread类、Runnable接口
- 线程生命周期:NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED
- 线程创建方式:继承Thread、实现Runnable、实现Callable
- 线程同步
- synchronized关键字:同步方法、同步代码块
- volatile关键字:可见性、禁止重排序
- Lock接口:ReentrantLock、ReadWriteLock
- 死锁问题与避免
- 线程池
- ExecutorService接口
- ThreadPoolExecutor参数配置
- Executors工厂类:newFixedThreadPool、newCachedThreadPool、newSingleThreadExecutor
- Future接口、CompletableFuture异步编程
- 并发工具类
- CountDownLatch、CyclicBarrier、Semaphore
- AtomicInteger、AtomicLong、AtomicReference
- ConcurrentHashMap、CopyOnWriteArrayList
1.7 I/O操作
- 文件I/O
- File类:文件操作、目录操作
- FileInputStream、FileOutputStream
- FileReader、FileWriter
- BufferedReader、BufferedWriter
- 网络I/O
- Socket编程基础
- ServerSocket、Socket
- URL、URLConnection
- NIO
- Channel、Buffer、Selector
- ByteBuffer、CharBuffer
- FileChannel、SocketChannel
1.8 JVM基础
- 内存结构
- 堆内存:新生代、老年代
- 方法区(元空间)
- 程序计数器、虚拟机栈、本地方法栈
- 垃圾回收
- GC算法:标记清除、标记整理、复制算法
- 垃圾收集器:Serial、Parallel、CMS、G1、ZGC
- GC调优参数
- 类加载机制
- 类加载过程:加载、验证、准备、解析、初始化
- 类加载器:Bootstrap、Extension、Application
- 双亲委派模型
阶段二:Web后端开发
2.1 Servlet基础
- HTTP协议
- HTTP请求方法:GET、POST、PUT、DELETE、PATCH
- HTTP状态码:200、201、400、401、403、404、500
- HTTP头部:Content-Type、Authorization、Cookie
- 请求体、响应体格式
- Servlet生命周期
- init()、service()、destroy()方法
- ServletConfig、ServletContext
- 请求转发、重定向
- 会话管理
- Cookie机制:设置、读取、过期时间
- Session机制:创建、获取、销毁
- URL重写
2.2 Spring框架
- IoC容器
- Bean定义:@Component、@Service、@Repository、@Controller
- 依赖注入:@Autowired、@Resource、@Inject
- 作用域:singleton、prototype、request、session
- 生命周期:@PostConstruct、@PreDestroy
- AOP面向切面
- 切面:@Aspect
- 切点:@Pointcut表达式
- 通知:@Before、@After、@Around、@AfterReturning、@AfterThrowing
- 连接点、切点、切面概念
- 配置管理
- @Configuration、@Bean
- @PropertySource、@Value
- @Profile环境配置
- 条件装配:@Conditional
2.3 Spring Boot
- 自动配置
- @SpringBootApplication注解
- 自动配置原理:@EnableAutoConfiguration
- 条件注解:@ConditionalOnClass、@ConditionalOnProperty
- 配置管理
- application.properties/yml配置
- @ConfigurationProperties绑定配置
- 多环境配置:dev、test、prod
- 外部化配置:命令行参数、环境变量
- Starter机制
- spring-boot-starter-web
- spring-boot-starter-data-jpa
- spring-boot-starter-security
- 自定义Starter开发
2.4 Spring MVC
- 控制器
- @Controller、@RestController
- @RequestMapping、@GetMapping、@PostMapping
- 路径变量:@PathVariable
- 请求参数:@RequestParam、@RequestBody
- 请求头:@RequestHeader
- 参数校验
- Hibernate Validator注解:@NotNull、@NotBlank、@Email、@Size
- @Valid、@Validated注解
- 自定义校验注解
- 异常处理
- @ControllerAdvice全局异常处理
- @ExceptionHandler异常处理方法
- 自定义异常类
- 响应处理
- ResponseEntity返回响应
- @ResponseBody、@ResponseStatus
- 视图解析器配置
2.5 数据访问层
- JPA/Hibernate
- 实体映射:@Entity、@Table、@Id、@GeneratedValue
- 字段映射:@Column、@Temporal、@Enumerated
- 关联映射:@OneToOne、@OneToMany、@ManyToOne、@ManyToMany
- 懒加载:@Lazy、FetchType.LAZY
- 级联操作:CascadeType
- 查询方式
- 方法名查询:findBy、countBy、deleteBy
- @Query注解:JPQL查询
- @Query注解:原生SQL查询
- Criteria API动态查询
- Spring Data JPA
- Repository接口:CrudRepository、PagingAndSortingRepository、JpaRepository
- 自定义Repository方法
- @Modifying、@Transactional
- 事务管理
- @Transactional注解
- 事务传播行为:REQUIRED、REQUIRES_NEW、SUPPORTS
- 事务隔离级别:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE
- 事务回滚:rollbackFor、noRollbackFor
2.6 API设计
- RESTful设计
- 资源命名规范
- HTTP方法语义
- 状态码使用规范
- 版本控制:URL版本、Header版本
- 分页与排序
- Pageable接口
- Page、Slice分页结果
- 排序参数处理
- 错误处理
- 统一错误响应格式
- 业务异常码设计
- 参数校验错误处理
2.7 文档与测试
- API文档
- Swagger/OpenAPI 3.0
- @ApiOperation、@ApiParam注解
- 接口分组、标签管理
- 单元测试
- JUnit 5:@Test、@BeforeEach、@AfterEach
- Mockito:@Mock、@InjectMocks、when().thenReturn()
- Spring Boot Test:@SpringBootTest、@WebMvcTest
- 集成测试
- @DataJpaTest数据层测试
- @WebMvcTest控制器测试
- TestContainers数据库测试
阶段三:数据存储与缓存
3.1 关系型数据库
- MySQL基础
- 数据类型:INT、VARCHAR、TEXT、DATETIME、DECIMAL
- 约束:PRIMARY KEY、FOREIGN KEY、UNIQUE、NOT NULL
- 索引:B+树索引、哈希索引、复合索引
- 查询优化:EXPLAIN执行计划
- SQL进阶
- 复杂查询:子查询、关联查询、UNION
- 窗口函数:ROW_NUMBER、RANK、DENSE_RANK
- 存储过程、触发器
- 事务:ACID特性、隔离级别
- 数据库设计
- 范式:1NF、2NF、3NF、BCNF
- 反范式设计
- 分库分表策略
- 读写分离架构
3.2 连接池与ORM
- 连接池配置
- HikariCP:高性能连接池
- 连接池参数:maximumPoolSize、minimumIdle、connectionTimeout
- 连接池监控:JMX、指标收集
- MyBatis
- Mapper接口定义
- XML映射文件:resultMap、sql片段
- 动态SQL:if、choose、foreach
- 分页插件:PageHelper
3.3 Redis缓存
- Redis基础
- 数据类型:String、Hash、List、Set、ZSet
- 常用命令:SET、GET、HSET、HGET、LPUSH、RPOP
- 过期策略:TTL、EXPIRE
- 缓存策略
- Cache Aside模式
- Read Through模式
- Write Through模式
- Write Behind模式
- Spring Cache
- @Cacheable、@CacheEvict、@CachePut
- CacheManager配置
- 缓存key生成策略
- 分布式应用
- 分布式锁:SET NX EX
- 限流:滑动窗口、令牌桶
- 消息队列:Pub/Sub模式
3.4 消息队列
- Kafka
- 主题(Topic)、分区(Partition)、副本(Replica)
- 生产者:acks、retries、batch.size
- 消费者:group.id、auto.offset.reset
- 事务消息、幂等性
- RabbitMQ
- Exchange、Queue、Binding
- 消息确认机制:ACK、NACK
- 死信队列、延迟队列
- 集群部署
- Spring集成
- @KafkaListener、@RabbitListener
- 消息序列化:JSON、Avro
- 错误处理、重试机制
3.5 搜索引擎
- Elasticsearch基础
- 索引(Index)、类型(Type)、文档(Document)
- 映射(Mapping)、分析器(Analyzer)
- 查询DSL:match、term、range、bool
- 聚合查询:terms、date_histogram、metrics
- Spring Data Elasticsearch
- @Document、@Field注解
- ElasticsearchRepository
- 自定义查询方法
阶段四:安全与认证
4.1 Spring Security
- 认证机制
- Authentication、Authorization概念
- UserDetailsService、UserDetails
- PasswordEncoder密码加密
- 自定义登录页面
- 授权机制
- 基于角色的访问控制:@PreAuthorize、@PostAuthorize
- 方法级安全:@Secured、@RolesAllowed
- 资源级安全:URL模式匹配
- 过滤器链
- SecurityFilterChain配置
- 自定义过滤器
- 异常处理:AuthenticationEntryPoint、AccessDeniedHandler
4.2 JWT认证
- JWT基础
- JWT结构:Header、Payload、Signature
- 对称加密:HMAC算法
- 非对称加密:RSA算法
- Token管理
- Access Token、Refresh Token
- Token过期时间设置
- Token刷新机制
- Token黑名单机制
- Spring Security集成
- JwtAuthenticationFilter
- JwtTokenProvider
- 无状态认证配置
4.3 OAuth2
- OAuth2流程
- 授权码模式(Authorization Code)
- 客户端凭证模式(Client Credentials)
- 密码模式(Resource Owner Password)
- 简化模式(Implicit)
- Spring Security OAuth2
- Authorization Server配置
- Resource Server配置
- 客户端配置
- 第三方登录
- 微信登录、QQ登录、GitHub登录
- 社交账号绑定
4.4 Web安全
- 常见攻击防护
- XSS攻击:输入过滤、输出编码
- CSRF攻击:CSRF Token、SameSite Cookie
- SQL注入:参数化查询、输入验证
- 文件上传安全:文件类型检查、路径遍历防护
- HTTPS配置
- SSL证书配置
- HTTP重定向到HTTPS
- HSTS头部设置
- CORS跨域
- @CrossOrigin注解
- CorsConfiguration配置
- 预检请求处理
阶段五:分布式与微服务
5.1 微服务架构
- 服务拆分
- 领域驱动设计(DDD)
- 单一职责原则
- 服务边界划分
- 数据一致性考虑
- 服务通信
- 同步通信:HTTP、gRPC
- 异步通信:消息队列
- 服务发现:Eureka、Consul、Nacos
- 负载均衡:Ribbon、LoadBalancer
5.2 Spring Cloud
- 服务注册发现
- Eureka Server配置
- Eureka Client配置
- 服务健康检查
- 服务下线处理
- 配置中心
- Spring Cloud Config Server
- 配置文件管理:Git、SVN
- 配置刷新:@RefreshScope
- 配置加密:对称加密、非对称加密
- 服务网关
- Spring Cloud Gateway
- 路由配置:Path、Host、Method
- 过滤器:GlobalFilter、GatewayFilter
- 限流:Redis限流、令牌桶算法
- 服务调用
- OpenFeign声明式调用
- 超时配置、重试机制
- 熔断器:Hystrix、Resilience4j
- 负载均衡策略
5.3 分布式事务
- 事务模式
- 2PC两阶段提交
- TCC补偿模式
- Saga长事务模式
- 本地消息表模式
- Seata框架
- AT模式自动补偿
- TC、TM、RM角色
- 全局事务注解:@GlobalTransactional
- 分支事务注册
5.4 分布式锁
- 实现方式
- Redis分布式锁:SET NX EX
- Zookeeper分布式锁
- 数据库分布式锁
- 锁优化
- 可重入锁实现
- 锁续期机制
- 锁超时处理
- 死锁检测
5.5 可观测性
- 日志管理
- 结构化日志:JSON格式
- 日志级别:TRACE、DEBUG、INFO、WARN、ERROR
- 日志聚合:ELK Stack
- 分布式追踪:TraceId、SpanId
- 指标监控
- Micrometer指标收集
- Prometheus指标存储
- Grafana可视化
- 自定义指标:Counter、Gauge、Timer
- 链路追踪
- OpenTelemetry标准
- Zipkin、Jaeger
- 采样策略:固定采样、动态采样
- 跨服务追踪
阶段六:DevOps与部署
6.1 版本控制
- Git高级用法
- 分支策略:Git Flow、GitHub Flow
- 合并策略:Merge、Rebase、Squash
- 冲突解决
- 子模块:Git Submodule
- 代码质量
- Code Review流程
- 代码规范:Checkstyle、Spotless
- 静态分析:SonarQube
- 代码覆盖率:JaCoCo
6.2 构建工具
- Maven
- POM文件结构
- 依赖管理:scope、exclusion
- 生命周期:clean、compile、test、package、install、deploy
- Profile环境配置
- 插件使用:maven-compiler-plugin、maven-surefire-plugin
- Gradle
- build.gradle配置
- 任务定义:task
- 依赖管理:implementation、testImplementation
- 多项目构建
6.3 容器化
- Docker基础
- 镜像、容器、仓库概念
- Dockerfile编写:FROM、RUN、COPY、WORKDIR、EXPOSE
- 多阶段构建:multi-stage build
- 镜像优化:减小体积、安全扫描
- Docker Compose
- docker-compose.yml配置
- 服务定义:services、networks、volumes
- 环境变量配置
- 服务依赖:depends_on
- 容器编排
- Kubernetes基础概念
- Pod、Service、Deployment
- ConfigMap、Secret
- Ingress网络配置
6.4 CI/CD
- 持续集成
- GitHub Actions工作流
- Jenkins Pipeline
- 自动化测试:单元测试、集成测试
- 代码质量检查
- 持续部署
- 环境管理:dev、test、staging、prod
- 蓝绿部署
- 金丝雀发布
- 回滚策略
6.5 监控运维
- 应用监控
- JVM监控:内存、GC、线程
- 业务指标监控
- 告警配置:阈值、通知
- 基础设施监控
- 服务器监控:CPU、内存、磁盘、网络
- 数据库监控:连接数、慢查询
- 中间件监控:Redis、MQ
阶段七:前端协同开发
7.1 接口契约
- OpenAPI规范
- Swagger注解:@Api、@ApiOperation、@ApiModel
- 接口文档生成
- 前端代码生成:TypeScript类型、API客户端
- 接口测试
- Postman接口测试
- 自动化接口测试
- Mock服务:WireMock
7.2 跨域与Cookie
- CORS配置
- 跨域请求处理
- 预检请求优化
- 凭证传递:withCredentials
- Cookie管理
- SameSite属性:Strict、Lax、None
- Secure、HttpOnly属性
- 跨域Cookie共享
7.3 文件处理
- 文件上传
- MultipartFile处理
- 文件类型验证
- 文件大小限制
- 分片上传、断点续传
- 文件下载
- 流式下载
- 断点续传下载
- 文件预览
7.4 实时通信
- WebSocket
- @ServerEndpoint注解
- 消息广播
- 连接管理
- SSE服务器推送
- SseEmitter
- 事件流格式
- 连接保活
7.5 GraphQL(可选)
- GraphQL基础
- Schema定义
- Query、Mutation、Subscription
- Resolver实现
- Spring GraphQL
- @QueryMapping、@MutationMapping
- DataLoader批量加载
- 错误处理
7.6 BFF模式(可选)
- 面向前端的API
- 数据聚合
- 格式转换
- 缓存策略
- 微前端支持
- 模块联邦
- 独立部署
- 版本管理
学习资源推荐
📖 书籍
- Java基础
- 《Java核心技术》- Cay S. Horstmann
- 《Effective Java》- Joshua Bloch
- 《Java并发编程实战》- Brian Goetz
- Spring框架
- 《Spring实战》- Craig Walls
- 《Spring Boot实战》- Craig Walls
- 架构设计
- 《微服务架构设计模式》- Chris Richardson
- 《领域驱动设计》- Eric Evans
- 数据库
- 《高性能MySQL》- Baron Schwartz
- 《Redis设计与实现》- 黄健宏
🌐 在线资源
- 官方文档
- 技术博客
- 视频课程
- B站Java学习路线
- 慕课网Spring Boot实战
- 极客时间Java核心技术
🛠️ 开发工具
- IDE: IntelliJ IDEA Ultimate
- 数据库工具: DBeaver、Navicat
- API测试: Postman、Insomnia
- 版本控制: Git、SourceTree
- 容器: Docker Desktop
- 监控: Prometheus、Grafana
实践项目建议
🎯 阶段一项目:任务管理系统
技术栈: Spring Boot + JPA + MySQL + Redis 功能模块:
- 用户注册登录(JWT认证)
- 任务CRUD操作
- 任务分类管理
- 任务状态流转
- 任务搜索与分页
- 缓存优化
- API文档(Swagger)
- 单元测试覆盖
🎯 阶段二项目:文件管理系统
技术栈: Spring Boot + MyBatis + MySQL + MinIO 功能模块:
- 文件上传(分片上传)
- 文件下载(断点续传)
- 文件预览(图片、PDF)
- 文件分类管理
- 文件权限控制
- 文件分享链接
- 文件版本管理
- 存储空间统计
🎯 阶段三项目:电商订单系统
技术栈: Spring Cloud + MySQL + Redis + Kafka 服务拆分:
- 用户服务(注册、登录、个人信息)
- 商品服务(商品管理、库存管理)
- 订单服务(订单创建、状态管理)
- 支付服务(支付接口、回调处理)
- 通知服务(短信、邮件、站内信) 技术特性:
- 分布式事务(Seata)
- 消息队列异步处理
- 缓存策略优化
- 限流熔断保护
- 链路追踪监控
- Docker容器化部署
🎯 阶段四项目:实时聊天系统
技术栈: Spring Boot + WebSocket + Redis + MongoDB 功能模块:
- 用户在线状态管理
- 实时消息推送
- 群聊功能
- 消息历史存储
- 文件传输
- 消息加密
- 消息撤回
- 系统通知
📅 学习时间规划
8周学习计划
- 第1-2周: Java基础 + Spring Boot入门
- 第3-4周: Web开发 + 数据访问
- 第5-6周: 缓存 + 消息队列 + 安全
- 第7-8周: 微服务 + 部署运维
12周深入学习计划
- 第1-3周: Java基础 + 并发编程
- 第4-6周: Spring生态 + 数据库
- 第7-9周: 分布式 + 微服务
- 第10-12周: DevOps + 项目实战
✅ 学习检查清单
基础能力检查
- 能够独立搭建Spring Boot项目
- 掌握RESTful API设计规范
- 熟练使用JPA进行数据操作
- 理解事务管理机制
- 能够配置和使用Redis缓存
- 掌握JWT认证流程
- 能够编写单元测试和集成测试
进阶能力检查
- 能够设计微服务架构
- 掌握分布式事务处理
- 能够使用消息队列解耦
- 理解容器化部署流程
- 能够进行性能调优
- 掌握监控和日志管理
- 能够处理高并发场景
全栈能力检查
- 能够与前端团队协作开发
- 掌握前后端接口设计
- 能够处理跨域和安全问题
- 理解前后端分离架构
- 能够进行全栈项目部署
- 掌握CI/CD流程
- 能够进行系统架构设计
💡 学习建议:
- 理论与实践结合: 每学一个知识点都要动手实践
- 项目驱动学习: 通过实际项目巩固理论知识
- 持续学习: 技术更新快,保持学习习惯
- 社区参与: 加入技术社区,参与开源项目
- 代码审查: 定期review自己的代码,提高代码质量
🎯 目标: 通过系统学习,从前端开发者成长为全栈开发者,具备独立设计和开发完整系统的能力。