Netty 作为当前流行的 NIO 框架,在游戏、大数据通讯,云计算、物联网等领域都有广泛的应用,大家熟知的 Dubbo,底层用的就是 Netty。尤其在高性能 RPC 方面,Netty 更是必不可少。然而,想要将 Netty 真正掌握并精通难度却不小。一些学习者可能会遇到这些问题:
- 多线程编程、Socket 通信、TCP/IP 协议栈等知识掌握不扎实,学习过程比较吃力;
- 学习了不少理论知识,但真正跟具体项目结合在一起,解决实际问题时,又感觉比较棘手;
- 调用过程中遇到问题,不会定位,基本靠网上搜索,效率很低。
因此,如果没有一个好的学习方法,抓不住重点,只靠阅读源码,既耗时又很难吃透,很容易半途而废。
面试大厂经常出现的Netty问题
1.BIO、NIO 和 AIO 的区别?
2.NIO 的组成?
3.Netty 的特点?
4.Netty 的线程模型?
5.TCP 粘包/拆包的原因及解决方法?
6.了解哪几种序列化协议?
7.如何选择序列化协议?
8.Netty 的零拷贝实现?
9.Netty 的高性能表现在哪些方面?
10.讲讲NIOEventLoopGroup 源码?
最近整理了一份 Netty 相关的文档干货,讲解很系统。今天分享给大家。看完这份文档你将获得哪些收获?
理解当下火热的 Netty 框架、核心概念、开发流程;
手写 RPC 框架(聊天室、Tomcat等);
对照知识点进行查漏补缺,帮助扫除知识盲区、重构知识体系。
文档围绕“基于 Netty 手写 RPC 框架”的主题,从小试牛刀到高级应用,其中涉及到很多 Netty 编程中的设计难点,比如:
-
TCP 的拆包与粘包
-
Netty的概念及体系结构
-
读写空闲检测、心跳机制、WebSocket 长连接
-
Netty源码剖析
-
RPC底层通信原理
-
手写聊天室、 Tomcat
本文档共分为四大部分,具体内容如下:
第一部分Netty的概念及体系结构
- 第1章 Netty——异步和事件驱动
- 第2章 你的第一款Netty应用程序
- 第3章 Netty的组件和设计
- 第4章 传输
- 第5章 ByteBuf
- 第6章 ChannelHandler和 ChannelPipeline
- 第7章 EventLoop和线程模型
- 第8章 引导
- 第9章 单元测试
第二部分编解码器
- 第10章 编解码器框架
- 第11章 预置的ChannelHandler和编解码器
第三部分网络协议
- 第12章 WebSocket
- 第13章 使用UDP广播事件
第四部分案例研究
- 第14章 案例研究,第一部分
- 第15章 案例研究,第二部分
思考与感悟
其实整个备考的过程中,心态也是很重要的一部分,就好像我们当年高考的时候,心态一定要好。可能同学们经过很长的时间备考,然后投递了很多简历却没有面试机会。
首先要看一下是不是简历写得不好,一般没有机会大部分都是因为这个原因,可以找一下师兄姐聊一下如何修改简历。然后重新投递试试。或者有了面试机会却没有下轮面试了,那就是可能因为你的技术不够扎实,好好准备自己的基础,我推荐你:
写技术博客
不用自己去搭建一个博客(要是可以就更好了),选择一个平台,CSDN或者掘金都是不错的平台,然后就可以开始你的表演了。可以写一些最近的学习心得,面试技巧以及黑科技工具的使用等等。写博客的好处有很多,不仅可以锻炼的表达逻辑,还可以巩固你的知识体系。两全其美,何乐而不为?
另外就是可以多逛一下技术社区,了解前端的动态,多关注最近出了什么新技术、新框架、新八卦等等。试着去帮别人解答一些问题,别人也很愿意去听,但是不要抬杠。乐于分享的心态比技术本身更重要。
写项目
找一个idea,把之前所学的知识点用一下,或者用新的知识来重构一下旧的项目,都是一种产出的方法。如果你担心知识不够牢固可以上一下github找一些优质开源项目,看别人是怎么写的。项目中要把用到技术的那一块注释出来,不然过一个月都不知道是你写的。
交流心得
要是可以的话,可以找同学一起交流最近的学习成果。技术学习的路上是枯燥的,找到相同的学习伙伴很重要,能够给你一种学下去的动力,两个相互切磋相互进步也是一种产出的方法。
交流心得
要是可以的话,可以找同学一起交流最近的学习成果。技术学习的路上是枯燥的,找到相同的学习伙伴很重要,能够给你一种学下去的动力,两个相互切磋相互进步也是一种产出的方法。