Java SE部分

  1. 基础语法

    • 变量与数据类型:基本数据类型(byte、short、int、long、float、double、char、boolean),引用数据类型(类、接口、数组、字符串等),变量的声明、初始化和作用域。
    • 运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符等。
    • 流程控制:顺序结构、选择结构(if - else、switch - case)、循环结构(for、while、do - while),以及 break、continue 关键字的使用。
    • 方法:方法的定义、参数传递、返回值,方法的重载和递归调用。
    • 数组:一维数组和多维数组的声明、初始化、遍历和常用操作。
  2. 面向对象编程

    • 类与对象:类的定义,对象的创建和使用,构造方法,this 关键字。
    • 封装:访问修饰符(public、private、protected、默认),成员变量的封装和访问控制。
    • 继承:继承的概念,extends 关键字,方法重写,super 关键字,继承的层次结构和多态性。
    • 多态:对象的多态性,方法的动态绑定,向上转型和向下转型。
    • 抽象类与接口:抽象类的定义和使用,抽象方法,接口的定义和实现,接口的多实现和默认方法。
  3. 常用类

    • String 类:字符串的创建、操作(拼接、截取、替换等),字符串的比较,不可变特性。
    • StringBuilder 与 StringBuffer:可变字符串,两者的区别和适用场景。
    • 包装类:基本数据类型的包装类(Integer、Double、Boolean 等),自动装箱和拆箱。
    • Math 类:数学运算相关的方法,如随机数生成、三角函数、指数运算等。
    • Date 与 Calendar 类:日期和时间的处理,获取当前日期和时间,日期的格式化和解析。
    • File 类:文件和目录的操作,文件的创建、删除、读取、写入,目录的创建和遍历。
  4. 内部类和包装类

    • 内部类

      • 成员内部类:定义在另一个类的内部,作为外部类的一个成员,可以访问外部类的所有成员。
      • 静态内部类:使用 static 修饰的内部类,只能访问外部类的静态成员。
      • 局部内部类:定义在方法内部,只能在该方法内部使用。
      • 匿名内部类:没有显式的类名,通常用于创建一次性的对象,常用于实现接口或继承抽象类。
    • 包装类

      • 基本数据类型对应的包装类ByteShortIntegerLongFloatDoubleCharacterBoolean
      • 自动装箱和拆箱:Java 提供了自动将基本数据类型转换为包装类对象(装箱)和将包装类对象转换为基本数据类型(拆箱)的功能。
  5. 注解

    • 内置注解:如 @Override 用于标识方法重写;@Deprecated 用于标记已过时的元素;@SuppressWarnings 用于抑制编译器警告。
    • 元注解:用于定义注解的注解,如 @Retention 用于指定注解的保留策略(SOURCE、CLASS、RUNTIME);@Target 用于指定注解可以应用的目标元素类型。
    • 自定义注解:可以通过 @interface 关键字定义自己的注解,并使用元注解进行配置。
  6. 动态代理

    • 概念:在运行时动态创建代理类和代理对象,无需手动编写代理类的代码。
    • Java 中的动态代理实现
      • 基于接口的动态代理:使用 java.lang.reflect.Proxy 类和 java.lang.reflect.InvocationHandler 接口实现。
      • 基于类的动态代理:使用第三方库如 CGLIB 实现,它可以为没有实现接口的类创建代理。
  7. 枚举

    • 基本概念:枚举是一种特殊的类,用于定义一组固定的常量。
    • 枚举的定义和使用:使用 enum 关键字定义枚举类型,枚举常量默认是 public static final 的。
    • 枚举的方法:枚举类型可以有自己的构造方法、成员变量和方法,还可以实现接口。
  8. 集合框架

    • List 接口:有序、可重复的集合,常用实现类有 ArrayList、LinkedList,列表的添加、删除、查找等操作。
    • Set 接口:无序、不可重复的集合,常用实现类有 HashSet、TreeSet,集合的交、并、差等操作。
    • Map 接口:键值对形式的集合,常用实现类有 HashMap、TreeMap、Hashtable,映射的添加、获取、遍历等操作。
    • Queue 接口:队列,先进先出(FIFO)的数据结构,常用实现类有 LinkedList、PriorityQueue。
    • 迭代器(Iterator):用于遍历集合元素,统一的遍历方式,避免对集合内部结构的暴露。
  9. 异常处理

    • 异常体系:Throwable 类,Error 和 Exception 的区别,受检异常和非受检异常。
    • try - catch - finally 语句:捕获和处理异常,finally 块的作用,多个 catch 块的使用。
    • throw 与 throws 关键字:手动抛出异常,声明方法可能抛出的异常。
    • 自定义异常:创建自定义异常类,用于特定业务场景下的异常处理。
  10. 多线程

    • 线程基础:线程的概念,进程与线程的区别,线程的生命周期(新建、就绪、运行、阻塞、死亡)。
    • 创建线程的方式:继承 Thread 类,实现 Runnable 接口,使用 Callable 接口和 Future 获取线程执行结果。
    • 线程同步:synchronized 关键字,同步方法和同步块,解决线程安全问题。
    • 线程通信:wait ()、notify ()、notifyAll () 方法,生产者 - 消费者模型。
    • 线程池:Executor 框架,线程池的创建和使用,常见的线程池类型(如 FixedThreadPool、CachedThreadPool 等)。
  11. 并发编程

    • 原子操作:Atomic 类(如 AtomicInteger、AtomicBoolean 等),利用 CAS(Compare and Swap)实现原子操作。
    • 并发集合:ConcurrentHashMap、CopyOnWriteArrayList 等,支持高并发访问的集合类。
    • Lock 接口:可重入锁(ReentrantLock),读写锁(ReentrantReadWriteLock),用于更灵活的线程同步控制。
    • 并发工具类:CountDownLatch、CyclicBarrier、Semaphore 等,用于协调多个线程的执行。
  12. 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 性能。
  13. 反射机制

    • Class 类:获取类的 Class 对象,通过 Class 对象获取类的构造方法、成员变量、成员方法等信息。
    • 反射的应用:动态创建对象,调用对象的方法,访问和修改对象的成员变量,在框架开发和插件化开发中有广泛应用。
  14. 泛型

    • 泛型的定义:在类、接口、方法中使用类型参数,提高代码的复用性和类型安全性。
    • 泛型的通配符:?、?extends T、?super T 的含义和使用场景。
    • 泛型擦除:泛型在编译后的类型擦除机制,以及带来的一些限制和注意事项。
  15. 网络编程

    • HTTP协议:深入理解请求头/响应头结构、状态码、Cookie/Session机制
    • NIO进阶:Selector多路复用、ByteBuffer内存池优化、Netty底层原理
    • WebSocket:实现即时通讯功能,对比HTTP长轮询方案
    • 实战案例:开发简易HTTP服务器(支持GET/POST)、实现文件断点续传
  16. JUnit和断言

  17. 新特性

    • Java 8+:Lambda表达式、Stream API、Optional空安全处理
    • Java 11+:ZGC低延迟垃圾回收器、var局部变量类型推断
    • Java 17+:密封类(sealed class)、模式匹配(Pattern Matching)
    • 实战案例:用Stream重构集合处理代码,实现并行数据清洗

Java进阶部分

  1. 高并发

    • 并发工具进阶
      • LongAdder vs AtomicLong性能对比
      • StampedLock乐观锁实现高吞吐量场景
    • 并发模式
      • Fork/Join框架实现分治算法
      • Disruptor无锁队列在金融交易系统中的应用
    • 实战案例:设计百万级QPS的抢购系统(库存防超卖)
  2. 分布式

    • 一致性协议:Raft选举机制、ZAB协议在ZooKeeper中的应用
    • 分布式存储:Ceph对象存储原理、MinIO私有云部署
    • 实战案例:基于Paxos算法实现分布式锁服务
  3. 微服务

    • Service Mesh:Istio流量管理、链路加密(mTLS)
    • Serverless:Spring Cloud Function实现无服务器架构
    • 实战案例:将单体应用改造为Serverless微服务集群
  4. JVM

    内存分析

    • MAT工具分析堆内存泄漏
    • JProfiler定位CPU热点方法

    GC调优

    • G1回收器Region划分策略
    • 大对象分配优化(-XX:PretenureSizeThreshold)

数据库部分

关系型数据库:MySQL PostgreSQL

NoSQL:MongoDB Redis

缓存:

搜索引擎:

  • Elasticsearch

Web前端部分

  1. 前端基础 HTML/ CSS/ JavaScript AJAX jQuery

    有精力可以学一下 TypeScript 很像js

  2. 前端框架

    • React:组件化开发、Hooks、状态管理(Redux/Context API)27。
    • Vue.js:Vue 3组合式API、Pinia/Vuex状态管理37。
  3. 工程化工具

    • Webpack模块打包、Babel转译、NPM/Yarn依赖管理8。
  4. 前后端协作:

    • RESTful API设计
      • 使用Swagger/OpenAPI生成文档,Postman调试接口8。
    • SSR与静态站点
      • 学习Next.js(React)或Nuxt.js(Vue)实现服务端渲染57。

JavaEE与Web后端部分

J2EE基础

  1. Servlet
  2. Tomcat(Web服务器)
  3. JSP /
  4. Nginx

常用框架

  1. Spring部分
  2. MyBatis
  3. Netty
  4. 工作流
  5. 实用工具类库

高性能和高可用

  1. CDN
  2. 消息队列
  3. 负载均衡

DevOps与云原生

1. 容器化与编排

  • Docker:镜像构建、Docker Compose多容器管理28。
  • Kubernetes:Pod部署、Service暴露、Ingress路由管理710。

2. CI/CD与监控

  • Jenkins/GitLab CI:自动化构建、测试与部署流水线810。
  • 云服务:AWS EC2/S3、阿里云容器服务,实现弹性伸缩与负载均衡28。

其他内容

构建工具

  1. Maven

  2. Gradle

版本控制

  1. Git
  2. Github

测试部分

Linux与服务器部分

远程调用

设计模式

Java 后端学习路线概览-1

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

  • 核心目标:构建安全认证体系
  • 学习路径
    1. 基础认证:内存认证 → JDBC认证 → 自定义UserDetailsService
    2. 表单登录 vs JWT认证:实现无状态认证(搭配JJWT库)
    3. 权限控制:方法级安全(@PreAuthorize)、ACL权限模型
    4. 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模式实现
  • 实践项目:拆解博客系统为微服务架构(用户服务/内容服务/评论服务)

按照这个路径学习,建议每完成一个阶段就进行知识图谱绘制(如用XMind整理技术点关联),遇到问题优先查阅官方文档,同时结合Github优质开源项目(如spring-petclinic)进行对比学习。