三、框架源码
学习完 JDK 的源码 。我们就需要把我们常用的框架源码都弄清楚 。这样在遇到框架问题的时候 。我们才可以快速地排查问题 。
文章插图
上面的思维导图从上到下都是逐次递进的 。我们学习了 JDK 源码 。再学习 Web 框架就可以实现简单的 Web 项目 。而随着业务增长 。我们需要加入 RPC 服务化框架将其服务化 。而随着业务复杂化和井喷 。我们需要加入消息队列和缓存来进一步提高业务的稳定性 。
1、Web框架
Spring 和 MyBatis 可以说是 Java Web 开发者必学的两个框架了 。因此对这两个框架有必要做一个深入的了解 。
对于 Spring 来说 。其整个源码体系太过于复杂 。所以我们还是得抓住重点 。对于 Spring 来说 。最重要的是其 AOP 和 IoC 的实现 。以及其容器体系和常用的接口 。而对于 MyBatis 来说 。其体系相对没有 Spring 那么复杂 。所以可以稍微深入一些 。
2、RPC框架
在所有 RPC 框架中 。dubbo 可以说是最通用的一个了 。所以如果你所在的公司没有自研的 RPC 框架 。那么你不妨可以将 dubbo 作为你的学习框架 。
对于 RPC 框架来说 。其实无非就是封装对象代理 。最后通过与服务提供者进行网络通信 。但是如何进行封装 。如果进行负载均衡的实现 。这就考验一个框架设计者的功力了 。
3、一致性框架
对于分布式系统 。非常重要的一个组件就是一致性框架 。在这些框架中 。最常见的两个是 Zookeeper 和 Eureka 。Zookeeper 实现了 CAP 中的 CP(即注重强一致性) 。而 Eureka 则是实现了 CAP 中的 AP(即注重可用性) 。
虽然平常我们都将 Zookeeper 和 Eureka 作为服务化的协调组件 。基本上没有什么机会深入学习 。但是有机会还是可以深入了解一下的 。
4、消息队列
消息队列可以说是实现业务解耦以及突发流量的利器 。而在大型业务场景中 。最常用的就是 Kafka 和 RocketMQ 了 。因此弄懂这两个消息队列的原理基本上就足够用了 。
对于消息队列 。建议先选择一个深入研究 。先弄懂其基本原理 。之后再阅读源码验证想法 。因为 RocketMQ 是基于 Kafka 改进的 。所以建议先从 Kafka 入手研究 。Kafka 研究得差不多了 。RocketMQ 的研究也会进展飞速 。
5、缓存框架
缓存框架可以说是高并发下必用的一个框架了 。但我们经常只是使用它 。而不知道起内部的原理和构造 。因此找个时间深入学习下原理 。还是很有必要的 。
6、网络框架
对于一些网络项目 。例如聊天 IM 等 。就需要用到 Netty 等框架 。而 Netty 又是这类网络框架的佼佼者 。通过对其源码的研究 。可以学到不少知识 。
7、搜索框架
对于一些搜索功能的项目 。单纯的数据库 SQL 查询已经无法满足需求了 。这时候 ElasticSearch 的学习和研究就提上议程了 。有时间的话 。研究学习一下还是很有必要的 。
8、增量订阅框架
Canal 和 Otter 框架可以帮助你获得数据库的变化信息 。从而更方便地做业务扩展 。对于这类框架 。属于特定领域的细分框架 。有时间可以研究一下 。
总结
作为一个工作了 5 年的开发 。上面的知识体系还是未能完全消化 。只能说是对于部分有些掌握 。如果你也想构建自己的知识体系 。那么我建议你可以按照我列出的顺序去学习 。先研究学习 JDK 源码 。之后学习 JVM 原理 。最后再去研究学习框架源码 。而框架源码的研究也从该框架的常用程度排序 。对于 ElasticSearch 这类不常用的 。可以放在后面 。而对于 Spring 这些用得很多的 。则需要放在前面 。
【搞Java的年薪40W是什么水平?】今天也只是简略地提了一下整个知识体系 。后续有空闲时间会继续慢慢分享相关文章 。有兴趣的朋友不妨关注一下我 。这样能及时查看后续文章 。
推荐阅读
- 短视频混剪技巧有哪些,几个步骤带你飞
- 有哪些一句话的经典好句子呢?
- 新手怎么运营自己的抖音,如何做好抖音自运营
- 阿里P7完爆协和医院主治医师,有什么争议吗?
- “过好每一天,就是过好一辈子”,你对这句话怎么看呢?
- 怎么俏悄查看对方位置 设置定位跟踪手机教程
- 请问阿里P7/P7+工资多少值得去?
- 如果你是六十岁的人,你怎样过好每一天?
- 轩辕剑5外传汉之云白衣尊者怎么打_白衣尊者打法教程攻略