我们为什么要学习开源框架源码?(一)微服务架构

1 前言

由于微服务的普及,越来越多的企业采用了SpringCloud微服务架构,而SpringBoot就是一个快速搭建微服务项目的工具。所以源码笔记以此为切入点,将SpringBoot作为我们源码分析的第一个开源项目,未来我们将对更多的开源项目进行源码分析。为了分析源码,笔者结合自己的经验跟大家说说为什么要学习源码,大家一起讨论学习。

我们的程序员每天在开发代码的时候都会用到别人写的框架,不管你是使用Spring生态的Spring核心、SpringMVC、SpringBoot和SpringCloud等框架,还是使用阿里的Dubbo、RocketMQ、Seata、Druid和其他中间件框架,或者如果你从事大数据,你正在使用Apache组织的Zookeeper、Hadoop、Hive、Spark等大数据组件框架。这些开源框架给我们的项目编码带来了极大的便利。 ,从而提高了我们的开发效率。是的,这些都是开源大神帮我们打造的轮子。我们可以直接使用,而且使用的时候bug很少,因为这些框架在流行之前一般都是经过测试的。

可能大多数人认为这些轮子已经造好了,我们可以直接使用它们。是的,这些开源框架对我们的使用是透明的,它们就像黑匣子。至于这些黑匣子里到底是什么东西,它们是如何构成的,不去探索这些黑匣子,我们永远都不会知道。但是,我们在开发过程中每天都在处理这些黑匣子。你不是很想知道这些黑匣子里有什么以及它们是如何构造的吗?难道你不想知道我们每天使用的黑匣子里有什么吗?

那么今天就和小伙伴们聊聊“为什么要学习开源框架源码?学习开源框架源码对我们有用吗?”。

2 为什么要研究源代码?花这么多时间学习源代码值得吗?

可能有同学会问:为什么要研究源码?花这么多时间学习源代码值得吗?

对于这个问题,很多朋友在阅读源码之前应该会深有感触。当时应该是这个概念。反正开源框架外的一些大牛给我们打包好了,我们可以开箱使用,不管里面有什么黑盒机制。应该是很多小伙伴也有这个概念,导致他们在开发项目的时候遇到bug什么都做不了,而且百度的很多解决方案都是无效的,所以浪费了很多时间。所以我决定研究一些常用框架的源码。可见,不需要学习源码的概念大概是最错误的概念,个人观点(仅供参考)。

我们研究源代码有几个原因:

1)开发项目需求所需

一方面,我们在开发项目时遇到错误是很正常的。比如一个工作项目,采用了SpringBoot、SpringCloud等Spring生态系列框架,当出现问题时,我们必须自己解决。如果我们不了解框架中的黑盒机制,当出现问题时,我们肯定会一头雾水。不知道怎么解决开源框架的问题,这个时候我们肯定会去百度,但是百度的文章质量参差不齐,最坏的结果可能是我们按照百度的方案一一尝试,但问题仍然没有解决。这是由于对框架的黑盒机制不熟悉所致。

另一方面,我们在开发项目时,有时开源框架并不能完全满足我们的业务需求。这时候,我们就需要对开源框架进行扩展甚至改造。比如我们使用的是dubbo框架。如果 dubbo 自带的负载均衡策略无法满足我们的业务需求。这个时候,我们是不是要更换或者扩展dubbo的负载均衡策略呢?好在dubbo提供了SPI接口供我们即插即用。这时候,我们可以不用研究dubbo中的黑盒就可以替换现有的负载均衡策略。如果有一天,我们想改造一个开源项目怎么办?这时候我们也需要了解一下开源框架的黑盒机制。如果不了解框架的黑匣子原理,这时候就不能下手了。

由于以上项目开发需要的原因,我们平时有时间还需要多学习源码,摸索里面的黑匣子机制,磨刀不误砍柴。

这就是为什么典型的项目开发需求促使我们研究开源框架的源代码机制。

图片[1]-我们为什么要学习开源框架源码?(一)微服务架构-老王博客

2)对技术充满热爱,不断深入研究黑盒机制

是的,除了项目需求开发需要研究源码外,很多小伙伴出于对技术的追求,还应该去研究开源框架的源码。为了不断提高自己的编码能力,他们不断地学习外面大牛们的优秀作品。是的,众所周知,可以说,闭门造车是不可能的。这时候就要向大牛们的优秀开源作品学习,学习他们如何使用面向对象编程,学习他们如何熟练使用设计模式。 ,学习他们如何设计界面等等,我们要学习的真的太多了。如果走技术路线,对技术有更高的追求,学习源码可以说是一条绕不开的路。因此,让我们行动起来,源代码开发完毕。我们只能不断的学习源码,以后再去阅读其他项目的源码。

3)有些人学习源码,可能是为了面试

当然,有些人研究源代码,也许是为了面试。因为现在很多面试都涉及到源码,如果面试官问的问题比较难,往往很多人不熟悉源码就挂了。因为一些小伙伴经常学习面试源码,但是往往这种学习面试源码的方法不如之前的项目驱动和技术追求的方法有效(个人观点,不喷就别喷了)不喜欢)。因为有些同学通常会在短时间内搜查源代码进行面试,针对某个面试问题背诵一些答案。由于大多死记硬背,这种方法往往无法深入源码的精髓。当然,无论目的是什么,都应该鼓励学习源代码,因为毕竟学习了源代码,就一定会进步,而且会迈出不同的一步。

3 学习源码,能得到什么?

是的,既然我们花了这么多时间学习源代码,研究源代码?我们获得了多少,我们又能得到多少回报?你可以先肯定的回答,当然还有丰厚的回报。前面说过,学习开源框架的源码可以帮助我们解决项目中遇到的bug,扩展我们的项目需求;通过学习源码,学习开源大师如何使用设计模式,然后应用到我们开发的项目中,让我们项目的模块更容易扩展;通过学习源代码,我们可以更高效地编写代码。为什么?如果我们熟悉一个开源项目的源代码,那么我们可以很容易地将这个项目的源代码应用到我们自己的项目中,对吧?简而言之,学习源代码有很多好处。这也是成为大牛的唯一途径。只有学习借鉴他人的优秀作品,才能自己创作出更好的作品。说到这里,不得不说RocketMQ。 RocketMQ 是来自阿里的优秀开源中间件。 RocketMQ之所以性能高,能经得起阿里双十一的考验,是因为它在很多方面借鉴了Kafka的设计。 另外,记住 Dubbo 的一个缓冲区类也是从 Netty 的 ByteBuf 类中借来的。

是的,要想创作出一些优秀的作品,就必须向别人的优秀作品学习。

4 想要不被淘汰,就必须学习源码

最后要说的是,为了不被淘汰,必须学习源码。

现在程序员越来越多,可以说竞争特别激烈。如果我们想不被淘汰,就必须始终保持竞争力,那么我们就必须永远学习,终身学习,与生俱来的事业和永无止境的学习。因为大家都知道CRUD源代码有什么用,所以要提高自己的技术能力,这个时候学习开源项目的源码就显得尤为关键。如果我们不想做 CRUD 工程师,对技术有更高的追求源代码有什么用,那我们就得有更高的要求。当然,学习开源项目源代码的目的,就是向大牛的优秀作品学习,最终学以致用。另外,个人观点:学习源码是提高编码能力的最佳途径。

如果我们走技术路线而不是管理路线,如果有更高的技术追求,那么学习源代码是我们绕不过去的捷径。真的,学习源代码真的很重要。

只要我们有更高的技术追求,也许你想成为技术专家,但学习源代码是成为大师的唯一途径。不是每个人都能成为大牛,但不学习源码也不能成为大牛,因为学习源码是提升自己的最好方法。不管什么时候,学习源码永远都不晚,大家互相鼓励!

你准备好了吗?

如果你喜欢,请给它一个大拇指。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论