1. 概述
无论我们是工作多久的工程师,我们总是在某一刻会大呼“学不动了学不动了”。
并且,我们是无可避免需要有大量加班,比较好的是 985 ,比较苦逼的是 996 。一旦陷入其中,我们可能就忘却了学习这个事情。
另外,我们还会有一个困扰,技术栈这么多,我们应该怎么学习呢?
艿艿的想法是:
- 点
- 线
- 面
- 立体
什么是点?我们平时会在技术社区、公众号、博客上,学习一些技术,但是大家普遍会觉得比较琐碎。
什么是线?当我们学习了同一个技术的多个点之后,我们会逐渐形成这个知识线,对这个知识会相对有整体的认识。
什么是面?当我们学习了多个技术之后,我们会逐步自己的知识面,脑海里会有一颗若隐若现的知识树。
什么是立体?当我们形成自己的知识面之后,我们肯定会惊呼“老子会很多东西,但是好像没有什么擅长的”。有木有?哈哈哈。这个时候,我们需要针对自己感兴趣的技术栈,做深入的理解,慢慢形成某几个技术的深度,这样,我们就开始立体了。当然,一定是几个技术的深入,而不是方块,而是一个锥子,一锥刺骨的那种,杀手锏。
当然,本文暂时先对这个泛泛而谈,本文的重心在于如何先形成自己的“点 -> 线 -> 面”。我们先来看一个图:
- 一切的核心,都是为了实战。
- 入门,是为了让我们能够实战。
- 原理,是为了让我们更好的实战。
- 源码,是为了让我们更具象的理解原理,从而更好的实战。
- 所以,一切的核心,都是为了实战。
也因此,一个技术栈的学习的逐步顺序是:入门 => 实战 => 原理 => 源码。
那么,这个和本文又有什么关系呢?我们再来看一张图:
- 1、可能胖友会懵逼,卧槽,要学习的有这么多。
- 2、可能胖友会说,为什么没有 Dubbo、Zookeeper 等等
- 3、可能胖友会说,怎么没有 AI、大数据呢?
这个路线图,我们定位是让业务开发工程师,有一条相对明确的学习路线,最终实现搭建自己的知识体系。
2. 路线图
下面,我们来分块来看看路线图。
第一步,单体应用
第一步,我们先要学习,能够搭建一个最基本的单体应用。如下图所示:
在这个过程中,我建议观看视频。
-
Java
《精尽 Java【基础】学习指南》 入门即可。
艿艿当前看的马士兵。
-
Servlet & JSP & JDBC
这个的视频资源,自己找,艿艿当前看的马士兵。
-
MySQL
《精尽 MySQL 学习指南》 入门即可。
-
MyBatis
《精尽 MyBatis 学习指南》 入门即可。
-
Spring MVC
《精尽 Spring MVC 学习指南》 入门即可。
-
Spring Boot
- 舍得花钱,就直接买小马哥的 《Java 微服务实践 - Spring Boot 系列》 。
- 当然,看看尚硅谷的《Spring Boot 视频教程》也是可以的。
-
Redis
《精尽 Redis 学习指南》 入门即可。
-
MongoDB
《精尽 MongoDB 学习指南》 入门即可。
-
Spring Security
TODO 待补充
-
Nginx
《精尽 Nginx 学习指南》 入门即可。
在这一步中,我们需要对每个技术点只要达到“入门”和“实战”两点。
第二步,微服务架构
第二步,我们要再学习,能够搭建一个微服务架构的应用。如下图所示:
在这个过程中,我建议以观看视频为主,同时能够认真看完 Spring Cloud 相关的书籍。
为什么要推荐开始看书?因为,到了这个阶段,我们要开始从被动的从视频学习,慢慢变成主动的观看书籍。
- 推荐的视频是,小马哥的 《Java 微服务实践 - Spring Cloud 系列》 。
- 推荐的书籍是,翟永超的 《Spring Cloud微服务实战》
- Eureka
- Hystrix
- Zuul
- Spring Cloud Config
- RabbitMQ
- Zipkin
那么,可能对微服务技术选型有一定的了解会问,为什么不是学习 Dubbo 呢?注意噢,我们是为了搭建知识体系,从这方面上来说,艿艿觉得 Spring Cloud 更适合达成这个目标,周边的书籍、资料更加完善。
当然,等未来回过头,艿艿还是建议大家去学习下 Dubbo 。
在这一步中,我们需要对每个技术点只要达到“入门”和“实战”和“原理”三点。
还有啊,其实每个类型的组件,还有其他的选择,胖友后续也要去学习下:
-
Eureka VS Zookeeper
TODO 待补充
-
Hystrix VS Sentinel
TODO 待补充
-
Zuul VS Spring Cloud Gateway
TODO 待补充
-
Spring Cloud Config VS Apollo
TODO 待补充
-
RabbitMQ VS RocketMQ VS Kafka
-
Zipkin VS SkyWalking
TODO 待补充
不要慌,知识这个东西,总是一通百通的。
还有噢,到了这个阶段的学习,我们要关注每个组件怎么实现高性能,怎么实现高可用。
第三步,其它中间件
第三步,我们还要学习,微服务架构需要的其他中间件。如下图所示:
在这个过程中,我建议以看书、看博客为主,以视频为辅助。
为什么不再以视频为主呢?我们要能够更加更加更加主动的学习能力。
-
Quartz 或者 Elastic-Job 或者 XXL-Job
TODO 待补充
-
Elasticsearch
TODO 待补充
-
Sharding Sphere
TODO 待补充
-
TCC Transaction
TODO 待补充
-
ELK
TODO 待补充
在这一步中,我们需要对每个技术点只要达到“入门”和“实战”和“原理”三点。
也就是说,在这一步中,我们已经不能简单的只会实战,要对原理有一定的认知。
关于工具
Maven、Git、Jenkins ,学会常用的即可。
关于运维
Linux 学会常用的命令即可。
Docker 和 Kuberante ,选择性,非必须。
关于基础
关于如下的基础:
-
Java 并发
-
NIO & Netty
-
设计模式
-
JVM
-
算法
TODO 待补充
实际上,? 我们更多使用到的是面试的时候,哈哈哈哈。
当然,我们希望成为一个有趣的程序员,35 岁不被淘汰,这些基本功肯定要去补的。
不过呢,艿艿个人的建议是,基础放在【第一步】【第二步】【第三步】学习完之后,在回过头来干。
补充说明
在我们搭建知识体系,请对着每个知识点,认真看每个技术对应的《精尽 XXX 学习指南》里面推荐的书,踏踏实实在把每个技术栈体系化学习下。
在我们搭建知识体系,请对着每个知识点,认真看每个技术对应的《精尽 XXX 学习指南》里面推荐的书,踏踏实实在把每个技术栈体系化学习下。
在我们搭建知识体系,请对着每个知识点,认真看每个技术对应的《精尽 XXX 学习指南》里面推荐的书,踏踏实实在把每个技术栈体系化学习下。
另外,为了验证学习的结果,以及将来有复习的可能性,请做好笔记,可以下载一个【印象笔记】应用,记录、狠狠的记录。
再另外,也可以看看每个技术栈对应的《精尽 XXX 面试题》,验证验证自己学习的咋样~
什么时候看源码?
艿艿一开始看源码,单纯觉得好玩。后来一想,对于一个有追求的工程师,每年看掉几套源码,那么工作 5 年之后,基本主流的源码,都已经看过了。虽然这个过程会比较痛苦,但是前几年确实是我们时间最多的时候。我们不需要考虑家人、孩子。
关于选择看什么源码的顺序,我建议从应用层到基础层。我举个例子:
- 先看 Spring MVC 源码,在看 Spring 源码。
- 先看 Dubbo 源码,在看 Netty 源码。
然后呢,如果胖友真的不知道看什么源码,我建议可以星球给艿艿留言。
如下,是艿艿自己经历的,看源码的顺序,可能不一定能成为参考:
- Spring Security
- Spring MVC
- Shiro
- RocketMQ
- MyCAT
- Sharding JDBC
- TCC Transaction
- Eureka
- Hystrix
- Spring Cloud Gateway
- SkyWalking
- Dubbo
- Netty
- Spring
- MyBatis
彩蛋
写的有点杂乱,但是想想,先出一个版本。省得自己的想法丢失。
万一的万一,对胖友有一些些帮助呢?
希望,我们至少能成为有趣的工程师,再然后,贪心一点,成为厉害的工程师。