Netty 是一个可以快速开发网络应用程序的 NIO 框架,它大大简化了 TCP 或者 UDP 服务器的网络编程。Netty 的简易和快速开发并不意味着由它开发的程序将失去可维护性或者存在性能问题,它的设计参考了许多协议的实现,比如 FTP,SMTP,HTTP 和各种二进制和基于文本的传统协议,因此 Netty 成功的实现了兼顾快速开发,性能,稳定性,灵活性为一体,不需要为了考虑一方面原因而妥协其他方面。Netty 的应用还是比较广泛的,比如阿里巴巴开源的 Dubbo 和 Sofa-Bolt 框架底层网络通讯都是基于 Netty 来实现的。
通过本文所说到的关于netty的学习问题和面试问题来说说如何学习高性能netty框架及一些重要知识点!
Netty基础相关问题
- 讲讲Netty的特点?
- BIO、NIO和AIO的区别?
- NIO的组成是什么?
- 如何使用 Java NIO 搭建简单的客户端与服务端实现网络通讯?
- 如何使用 Netty 搭建简单的客户端与服务端实现网络通讯?
- 讲讲Netty 底层操作与 Java NIO 操作对应关系?
- Channel 与 Socket是什么关系,Channel 与 EventLoop是什么关系,Channel 与 ChannelPipeline是什么关系?
- EventLoop与EventLoopGroup 是什么关系?
- 说说Netty 中几个重要的对象是什么,它们之间的关系是什么?
- Netty 的线程模型是什么?
粘包与半包和分隔符相关问题
- 什么是粘包与半包问题?
- 粘包与半包为何会出现?
- 如何避免粘包与半包问题?
- 如何使用包定长 FixedLengthFrameDecoder 解决粘包与半包问题?原理是什么?
- 如何使用包分隔符 DelimiterBasedFrameDecoder 解决粘包与半包问题?原理是什么?
- Dubbo 在使用 Netty 作为网络通讯时候是如何避免粘包与半包问题?
- Netty框架本身存在粘包半包问题?
- 什么时候需要考虑粘包与半包问题?
WebSocket 协议开发相关问题
- 讲讲如何实现 WebSocket 长连接?
- 讲讲WebSocket 帧结构的理解?
- 浏览器、服务器对 WebSocket 的支持情况
- 如何使用 WebSocket 接收和发送广本信息?
- 如何使用 WebSocket 接收和发送二进制信息?
Netty源码分析相关问题
- 服务端如何进行初始化?
- 何时接受客户端请求?
- 何时注册接受 Socket 并注册到对应的 EventLoop 管理的 Selector ?
- 客户端如何进行初始化?
- 何时创建的 DefaultChannelPipeline ?
- 讲讲Netty的零拷贝?
如何正确系统的学习Netty框架
要理解框架的底层的原理,要掌握的就是最常用的原理。框架就是辅助我们开发的已经完成的一部分代码,帮助我们实现了一部分的功能,我们主要掌握的其实就是框架的内部原理,也就是框架给我们规定的一些内部的规定,有了这些规定就可以高效的开发我们的代码,按照规定办事效率会有很大的提高。其实很多的时候我们并没有注意这些东西,一个功能可以用很多的方法来实现,但是我们按照框架给我们规定的规则去实现的话应该是我们比较正确的一种选择。因此分享一份系统学习Netty框架的知识思维导图给有需要的朋友,希望能对你们有所帮助!
最全Netty实战整理
关于Netty相关所以知识点有非常全面的讲解(建议可以看看)
- Neth的概令及体系结构
- 编解码器
- 网络协议
- 案例研究
Netty面试答案全解
Netty面试答案全解,大厂面试题答案整理
最后
面试答案核心文档
史上最全面试文档核心知识整合