做为技术人,大家最担心的一点,就是自己学习的节奏跟不上新技术发展的步伐,内心很是焦虑。很多小伙伴都会感慨,平时工作这么忙,成家了为人父母了,回家也没法像单身那样有时间学习了,另外一方面,发现各种新技术满天飞,目不暇接。那么问题来了,我们技术人,应该如何学习一门新技术框架呢?今天我就按照我过去学习Netty的思路来和大家做一个分享,希望对大家有所帮助。
1. 先搞明白这个框架具体是什么
例如, Netty 是什么?
我们即刻Google 一下,得到以下答案:
Netty 是一个基于 JAVA NIO 类库的异步通信框架。找出关键词“ NIO” 和 “异步”,这就是Netty最重要的特性,另外它处于网络层。提炼出的这些关键词的作用就是用来确定自己是否已清楚所有基础知识点。框架处于哪一层决定了
下一步了解该框架的应用场景。
如果发现自己还不懂什么是IO与NIO, 那么就直接看下图
2. 明确该框架能做什么
知道这些框架都是提供了什么样的底层服务,我们可以利用这个框架做什么事情。
对于Netty,可以开发异步、非阻塞的 TCP/ UDP 网络应用程序;开发异步 HTTP 服务端和客户端应用程序;Netty提供了对多种编解码框架的集成、Java 序列化、压缩编解码、XML 解码、字符串编解码等。看到这里,我们可以初步感觉到,Netty可以帮我们拆分应用进行服务化,作为基础通信组件被我们的 RPC 框架使用,以提高开发和维护效率。
3. 了解该框架的应用场景
在应用层面上知道如何使用,通过前人的经验,明确这个框架是如何融入进去的,避免走弯路。
比方说,对于Netty, 明显的一个应用场景就是dubbo,服务提供者和服务消费者之间,服务提供者、服务消费者和性能统计节点之间就是使用 Netty 进行异步/同步通信。
4. 清楚框架被发明的原因
准确的说,框架不是一门新的技术,而是帮我们将底层的操作和通用的操作流程通过类库的方式封装起来,提供相应的API和方法,帮助我们解决快速的解决应用层面上问题。所以我们在学习一门新框架的时候,必须要明白这些被封装起来的东西是什么。
比方说,我们都知道JDK提供了NIO的类库,那为什么我们还要用Netty呢?
回答这个问题前,我们需要看一看 JDK NIO 客户端的通信时序图
看过这张图,大家能立刻明白,如果自己写,要实现一套NIO程序要写多少代码了吧。这就无形增加了使用NIO的成本,加上调试,抓包查问题等环节, 要从头搞一套异步的NIO程序并不省心。
反过来,Netty的基础开发和应用非常简单,开发一个 Echo 服务端只需要 20,30行代码,开发对应的 Echo 客户端只需要 20-30代码。
5. 实战使用该框架,并反复总结
光了解上面这4点是远远不够的,学技术不能纸上谈兵,在实战中使用后,对框架会有更多准确的把握,根据自己掌握的情况,查漏补缺,然后像做迭代项目一样,不断的深入下去,最终就能站得更高的位置来审视框架的全局。
总结
关于学习框架的方法论,可以总结到我下面这张图:
互联网时代,需要我们快速开发,跟上业务的发展节奏和需求,那最好的捷径就是站在别人的肩膀上,用前人智慧的结晶来帮助我们自己,善于学习新的类库和框架,搞清楚框架中一些设计的原理和细节,搞清来龙去脉,学会“术”进而应用到日常的工作中去。另外一方面,我们应用团队也要不断反馈和“激励”我们的中间件和框架开发同学,共同推进技术体系的发展和建设。
扫描二维码或手动搜索微信公众号: ForestNotes
欢迎转载,带上以下二维码即可