作为一个有志于成为Java程序员的你,或许正处在技术生涯的起点,或许已经走过了入门的道路,期待跨越进阶的门槛?
无论处于哪个阶段,一条明确的学习路线都至关重要,通过向众多行业大佬请教、反复探索和实践,总结出一套适用于零基础自学者大学四年Java学习路线,也同样适用于从初级到研发专家的学习路线。
以下是这条路线的详细规划,希望能帮助你启动这段旅程,并在随后的几年中不断进步。?
Q1 - 能否自我介绍下?
嗨,大家好,我是 小 明 (小明java问道之路),互联网大厂后端研发专家,2022博客之星TOP3/博客专家/CSDN后端内容合伙人、InfoQ(极客时间)签约作者、阿里云签约博主、全网5万粉丝博主。
一个8年开发经验的老兵,专注于面试/后端/源码/架构/算法,擅长面试高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。
如果你觉得本文对你有用的话,欢迎关注、收藏、点赞~
Q2?- Java全栈知识体系总览
Q3 - 适合什么样的人群学习?
- 求职者:帮助快速建立知识体系,系统性突击更快拿offer
- 面试官:有助于快速识别候选人才
- 初学者:建立知识体系,赢在起跑线上
- 在职人员 / 想要在公司提升 / 计划跳槽:多年的发展还没建立知识体系,
Q4?- 知识脑图【内容较多,建议先收藏再看】
计算机体系结构与C语言
- 计算机体系结构:计算机组成原理、计算机体系结构(ISA指令集、intel开发手册)、CSAPP (深入理解计算机系统)、汇编语言、编译原理(ELF、汇编器)、操作系统
- C语言:指针、结构体、汇编语言下的C语言(编译原理、指令)
数据结构与算法
- 数据结构:链表、队列、栈、hash表、树、图、字符串、单调栈、字典树、线段树、并查集
- 算法:排序、选择、字符串API、 贪心、dfsbfs、 递归、回溯、动态规划、穷举、迭代、双指针
Java语言特性
- Java基础语法:数组、面向对象编程、类的高级特性、异常处理、常用数据结构API
- Java高级特性:Lambda、Stream、流式编程、函数式编程、反应式编程、异步编程、网络编程 AIO/BIO/NIO
- Java线程:Thread、ThreadLocal、Synchronized、Runable、java.util.concurrent、Lock、Executor、ConcurrentHashMap、LinkedBlockingDeque、Java线程和Linux线程的联系
JVM
- HotSpot:HotSpot内核、HotSpot启动、HotSpot系统初始化、HotSpot Oops模块、Klass框架、对象标识机制
- JVM规范:OOM(OutOfMemoryError)、StackOverflowError、垃圾回收算法、垃圾回收器、指令集、解释器、JIT、字节码指令集、字节码执行引擎、对象内存布局、类加载、链接、初始化、创建对象的过程、运行时数据区(程序计数器、jvm栈、本地方法栈、堆、方法区、运行时常量池、直接内存)
- 虚拟机监控工具(优化实战):Attach、Heap Dump、jhat、jstack
- Java内存模型与线程:JMM、线程实现、线程调度、状态转换、线程安全、锁优化
MySQL
- MySQL基础:MySQL数据类型、锁机制、事务、MVCC(多版本并发控制)、存储引擎(Innodb、MyISAM)
- MySQL高级特性:MySQL语句性能分析、索引(唯一、覆盖、聚簇...)、索引数据结构、优化SQL性能、分区表、视图、游标、字符集、全文索引、分布式事务、缓存
- MySQL实战:数据分布、负载均衡、备份与恢复、故障切换、主从复制、监控、分库分表
框架
- SpringBoot:SpringBoot启动器原理、核心源码、自动配置
- Spring、SpringMVC:Spring核心流程、Spring工作常用注解、循环依赖及Bean定义解析、IOC容器源码、AOP源码、声明式事务源码解读、tomcat的SPI机制加载springmvc容器、RequestMappingInfo和HandlerMethod映射关系、handlerMapping和HandlerAdapter关系、HandlerInterceptor的前置、中置、后置过滤器原理、HandlerAdapter的参数解析原理springmvc的调用流程梳理、响应式编程-WebFlux
- SpringCloud alibaba:Nacos-Discovery服务发现、配置中心Nacos-Config;SkyWalking链路跟踪概述、AssemblyPlugin、Sentinel限流、熔断器、Seala分布式事务
- SpringCloud Netflix:Zuul路由网关详解及源码探析、Ribbon客户端负载均衡原理、Feign声明式服务调用、Eureka注册中心、Config配置服务中心与svn、git集成、Hystrix服务熔断及服务降级、Bus/Sleuth/Stream、微服务日志、自定义分布式配置中心
- MyBatis:配置使用、执行流程、源码分析、连接池
- Dubbo:Dubbo架构原理和内核、Dubbo SPI原理、Dubbo I0C和AOP原理、Dubbo动态编译、服务发布原理、服务引用原理、集群容错设计、服务降级设计、网络通信架构、网络通信编码解码
- Zookeeper:Zookeeper指令、zkclient、curotor、集群选举、分布式锁
中间件
- Redis:Redis缓存雪崩、缓存击穿、缓存预热、热点key、缓存降级、短链接、分布式锁秒杀、预减库存、堆外缓存+Redis架构设计、Redis动态刷新、Redis和DB双写一致性、过期删除策略、集群数据倾斜
- Redis核心源码解读、String/Hash/List/Set/ZSet数据结构、Kernel与Epoll多路复用机制
- RabbitMQ、RocketMQ、Kafka,消息发布与消费权衡、消息拒绝、应用解耦实战、集群化与镜像队列实战
- RocketMQ:消息存储机制、多种消息模式、高可用性机制、provider与consumer负载均衡机制、消息过滤TAG/SQL及类过滤模式
- Kafka:Kafka的生产者和消费者及高级特性、集群。实战:如何处理消息重试(顺序/无序/死信队列)、解决项目中常遇到的消费幂等性问题、可靠数据传递集群搭建、削峰填谷、与Spring整合、镜像队列
- ngnix:Nginx进程模型及配置、location规则、rewrite解析等动静分离、反向代理及跨域
- tomcat:HTTP请求解析与处理流程、Tomcat核心组件、类加载机制及源码解析、BIO/NIO源码、Tomcat集群与会话复制方案
- 分库分表:mycat:实现MySQL读写分离、数据库切分、全局表、ER表、 分片机制分析;sharding-jdbc:引擎原理与数据分片、读写分离、编排治理、分布式事务、数据脱敏
- kubernetes(K8S):Kubernetes集群管理方案实战
- docker:基础操作、Docker File、网络存储、DockerCompose、微服务与Docker集成实现动态扩容
- Elastic:ElasticSearch:原理、分布式CRUD、索引管理、分片、搜索优化;elastic-job
?架构
- 系统设计:高可用、高并发、高性能、高伸缩、高安全、防资损
- 架构设计:选型、负载均衡、限流、熔断、降级、集群、故障转移、容灾备份、监控日志、数据安全
- 监控:Grafana、CAT、Kibana、LoadRunner、Logstash、Pinpoint、ZipKin、JMeter
- 集成:Nginx、DNS、Kubernetes、Docker、Tomcat、JenKins、Maven、JBOSS、Gradle、Git、SVN、阿里云、华为云、腾讯云
?软技能
- UML使用
- PPT汇编、演讲、技术设计文档撰写、需求理解、需求沟通、架构文档撰写
- 专业术语的使用、向上管理、面向绩效/领导编程
?总结
看起来很多,但是初步了解可能几个月就够了,当然了,这只是一个大概的路线图,每个人的学习节奏和兴趣点都会有所不同,在这个学习过程中,要了解它是干嘛的,知道怎么去使用它,了解他的底层原理,了解他的常见问题,熟悉问题的解决方案等等。
絮叨一下,无论处于哪一阶段,都要保持对技术的好奇心与热情,主动去探索和实践新的技术领域,勇于尝试和坚持不懈是通向顶峰的必备品质。