前些天,一位带团队的敌人发来一条音讯:“你有时候学得多了,会不会感觉学无止境,而后就有点迷茫了?”。我说是的,而且这种感觉十分强烈。
敌人之所以收回这样的感叹是因为在面试,想看看本人的身价与能力。面试的后果就是被虐的很惨,于是开始恶补常识,在此期间才收回这样的感叹。
对于我而已,有这样强烈的感觉不是因为面试,而是因为在一直的学习新框架,同时还在浏览 Nacos 源码。学得越多发现自己不会的越多,源码浏览的越深,发现波及的知识面越多,本人不懂的越多。
常识是一个无底洞
自从我的项目中引入了 Spring Cloud,感觉进入了一个无底洞。如果你的我的项目只是在用 Spring Cloud,那倒是无所谓,网上的几篇文章就能够让你轻松集成任意组件。但如果你想把这些组件用的足够好,呈现问题可能顺利排查,理解它们实现的底层原理,这就是一个常识的无底洞。
当我的项目中引入了 Spring Cloud,那么你得顺次懂得:Spring Boot、Spring Cloud、注册核心(Nacos 或 Eureka)、Feign、Loadbalancer(或 ribbon)、链路追踪、日志治理(ELK)等等。在一些场景下还须要用到断路器、网关等。
而后咱们的我的项目属于物联网我的项目,打算把所有的我的项目和设施监控起来,此时发现又须要用到:Spring Boot Actuator、Prometheus、Grafana、InfluxDB、MQTT 等等。
此时,只能感叹,不继续学习又怎么能行呢?
浏览源码是测验技术能力的一项指标
有粉丝曾问我:来公司很久了,领导也不怎么给安顿活,感觉没什么可学的,该怎么办?我说:要么被动找领导沟通一下,让他给你安顿点活儿;要么钻研现有业务;要么就深入研究我的项目中应用的框架。
很多时候,咱们会感觉没什么事可干,业务逻辑的 CRUD 写的也很干燥,我的项目中的技术没啥可学的。真的没啥可学的吗?真的有读过任意应用框架的源码吗?
关注我公众号的敌人都晓得,我最近一有工夫就会读读 Nacos 的源码,感觉不错的点还会写写文章。而就在浏览源码的过程中,我才深深的有了开篇提到的那种“感觉本人菜的感觉”。不信你能够试试。
浏览源码通常有两个方向,第一个方向就是理解一个框架的外围业务逻辑和流程,或者说是设计思维。这也是最重要的。另外一个就是学习框架使用的技术点和设计思维。
以 Nacos 源码为例,我这边是刚刚浏览了服务注册、心跳机制、服务获取等性能的源码,曾经在其中看到了大量的知识点,比方:简略工厂模式、Java 反射机制、代理模式、门面模式、定时工作、事件机制、锁、gRPC 协定等。这还没钻研到集群相干的 CAP 准则、Raft 协定、Distro 协定等。
这里刚开始钻研到 gRPC 协定,马上发现还波及到了 RPC 协定、Protobuf 框架、Http 1.0、Http 2.0 等,当然你还能够延长到 TCP、网络分层等。
所以说,当你真感觉没什么可学的时候,浏览一个框架的源码,一直的拓展开来,会发现有有限的常识等着你。或者这对你是一个不错的抉择。
问题的解决
回头最开始的问题,面对有限的常识,越学越感觉本人菜该怎么办呢?
首先,如果纯正是为了学习,没有业务的羁绊,只是满足本人的好奇心,减少知识面。那么,自身就不必适度的迷茫,只用调整心态,继续的学上来即可。比方,我学习源码的目标就是减少知识面,把简略的常识构建成一个网,造成记忆。
在学第一个框架时可能会比拟难,但当你浏览学习一两个框架之后,你会发现根底的常识如同就那么多了。比方,设计模式常见的也不就是那 23 个吗?多见几次,不仅学的更透彻,对使用场景也更了若指掌。SPI 机制、动静代理、反射等等都是如此。
其次,如果是为我的项目使用而学习,那么就要摈弃掉知识点的学习,把握框架或技术栈的外围原理,它能解决什么问题,如何解决的,是否带来了副作用等等。比方 Nacos 这类框架,为了满足 CAP 准则中的 AP 准则,就会就义数据的一致性,你须要学习钻研的就是它的根本实现与原理,同时当服务曾经挂掉,客户端怎么及时发现并解决这里解决方案。
最初,无论是学习知识点或是学习场景解决方案,都须要在一个范畴内进行大量的积攒和积淀。其中学习知识点还不太显著,因为罕用的知识点是无限的,形成常识网之后,就越来越轻松了。而解决方案是有限的,不同的业务畛域,不同的场景可能就须要不同的技术栈和解决方案。这也就是为什么咱们在抉择职业的时不要轻易换行业的起因,因为大量的解决方案是须要跟行业常识和行业其余技术相配套应用的。
写在最初
学习的过程中迷茫是失常的,越学越感觉本人菜,阐明你正在在一直的提高。你的存量常识是一个圆,当这个圆很小的时候,圆周长很短,接触到圆之外的常识也少,你可能会感觉本人懂得很多。但当存量常识减少,圆周随之减少,未知的常识将成倍增加,感觉本人很菜就很失常了。正所谓,学而知有余,就是这个情理。
但不必放心,只有你在学习提高,常识的积攒会触发思维模式的进化。当某一刻,你看一眼代码就晓得它用了什么技术、什么设计模式、设计思维是怎么的,是不是很有成就感?这一刻,你也真正修炼胜利了。
博主简介:《SpringBoot 技术底细》技术图书作者,热爱钻研技术,写技术干货文章。
公众号:「程序新视界」,博主的公众号,欢送关注~
技术交换:请分割博主微信号:zhuan2quan