Ryan's Blog

说说netty的对象池技术?

说说 Netty 的对象池技术? 典型回答 Netty 内置了对象池,用于重复利用一些已经创建过的对象,避免频繁地创建和销毁对象,从而提升系统的性能和可靠性。 对象池是一种非常常见的设计模式,它在多线程的环境中特别有用,能够有效地减少线程的上下文切换和资源的浪费,同时也有利于避免内存泄漏等问题。Java中的字符串池,其实也就是一种对象池技术 当我们使用Netty编写一个网络...

能不能说一说netty的无锁化设计?

能不能说一说Netty的无锁化设计? 典型问题 在解决多线程的问题的时候,锁是最常用的方案,但是也是开销最大的一种方案,同时也会带来死锁的问题,所以,Netty为了避免这些问题引入了无锁化设计。 那么,不用锁的话,怎么解决并发的问题呢,Netty主要做了以下几个事情: 首先,Netty基于Reactor线程模式实现并发请求处理,避免了线程阻塞与锁的竞争。 Netty的线程模型是怎么...

为什么netty适合做网络编程?

为什么Netty适合做网络编程? 典型回答 Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty 主要用来做网络通信,一般可以用来作RPC框架的通信工具、实现即时通讯系统以及实时消息推送系统等。 相比于Java中自带的NIO来说,Netty有很多好处,比如开箱即用,...

Netty的零拷贝是怎么实现的?

Netty的零拷贝是怎么实现的? 典型回答 在操作系统中,零拷贝指的是避免在用户态(User-space)与内核态(Kernel-space)之间来回拷贝数据。 什么是零拷贝? 而Netty的零拷贝模型和操作系统中的零拷贝模型并不完全一样。他主要指的是在操作数据时, 不需要将数据 buffer从 一个内存区域拷贝到另一个内存区域。少了一次内存的拷贝,CPU 效率就得到的提升。 Ne...

Netty的线程模型是怎么样的?

Netty的线程模型是怎么样的? 典型回答 Netty 通过 Reactor 模型基于多路复用器接收并处理用户请求的。多路复用IO模型参考: 操作系统的IO模型有哪些? 多路复用就是首先去阻塞的调用系统,询问内核数据是否准备好,如果准备好,再重新进行系统调用,进行数据拷贝。常见的实现有select,epoll和poll三种。 Netty 的线程模型并不是一成不变的,它实际取决于用户的...

Netty有哪些序列化协议?

Netty有哪些序列化协议? 典型回答 Netty支持很多种序列化协议,基本上市面上常见的序列化协议他都支持的。如: Java原生序列化:Java原生的序列化协议,可以序列化所有实现了Serializable接口的对象。Java序列化虽然简单易用,但是序列化后的字节数较大,序列化性能较差,且不具备跨语言的能力,因此不太常用。 JSON序列化:JSON是一种轻量级的数据交换格式,易于阅...

Netty性能好的原因是什么?

Netty性能好的原因是什么? 典型回答 Netty作为一个高性能的网络通信框架,性能是他重要优势,Netty中主要做了以下事情来全方面的提升Netty的性能: 非阻塞IO模型:Netty采用了IO多路复用技术,让多个IO的阻塞复用到一个select线程阻塞上,能够有效的应对大量的并发请求 高效的Reactor线程模型:支持多种Reactor线程模型,可以根据业务场景的性能诉求...