![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty
文章平均质量分 94
每天进步一......
这个作者很懒,什么都没留下…
展开
-
Netty 总结与补充(十)
Netty 是一个高性能、异步事件驱动的 NIO 框架,它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。网络传输方式问题。原创 2024-08-05 15:02:15 · 182 阅读 · 0 评论 -
Netty 进阶(九)—— WebSocket协议开发
Netty入门(六) WebSocket协议开发_websocketserverprotocolhandler-CSDN博客原创 2024-08-05 14:35:13 · 100 阅读 · 0 评论 -
Netty 进阶(八)—— HTTP协议的编解码器
Netty进阶 协议设计与解析 HttpServerCodec原创 2024-08-05 14:34:57 · 91 阅读 · 0 评论 -
Netty 进阶(七)—— 心跳机制
所谓 心跳, 即在 TCP长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线,以确定TCP连接的有效性。Netty是基于IdleStateHandler实现的,IdleStateHandler是ChannelDuplexHandler的一个实现类,可以对读写IO进行空闲检测。readerIdleTimeSeconds, 读超时. 即当在指定的时间间隔内没有从 Channel 读取到数据时, 会触发一个 READER_IDLE 的 IdleStateEvent 事件.原创 2024-08-05 13:54:06 · 540 阅读 · 0 评论 -
Netty 必知必会(六)—— 粘包拆包问题
当接收方的 SO_RCVBUF 被填充满时,此时 window size=0,发送方不能再继续发送数据,要等待接收方 ack 消息,以获得最新可用的 window size。TCP 是以字节流的方式来处理数据,一个完整的包可能会被 TCP 拆分成多个包进行发送,也可能把小的封装成一个大的数据包发送。,TCP 的全双工的工作模式以及 TCP 的滑动窗口便是依赖于这两个独立的 buffer 以及此 buffer 的填充状态。很好理解,在每一个你认为是一个完整的包的尾部添加指定的特殊字符,比如:\n,\r等等。原创 2024-08-02 22:29:57 · 576 阅读 · 0 评论 -
Netty 必知必会(五)—— 核心组件
Netty 框架中所有的 I/O 操作都为异步的,因此我们需要 ChannelFuture 的 addListener()注册一个 ChannelFutureListener 监听事件,当操作执行成功或者失败时,监听就会。如果服务器发出的消息称作“出站”消息,服务器接受的消息称作“⼊站”消息。那么消息的“出站/⼊站”就会产⽣。这个对象可以看作是⼀个异步操作的结果的占位符,它将在未来的某个时刻完成,并提供对其结果的访问。两者的区别在于,前者不会释放消息数据的引⽤,⽽后者会释放消息数据的引⽤。原创 2024-08-02 21:08:41 · 701 阅读 · 0 评论 -
Netty 必知必会(四)—— Channel-Pipeline 责任链
ChannelHandlerContext 提供了一系列 fireXXX 方法,用于将事件传播给链中的下一个处理器。例如:fireChannelRead(Object msg):当新的数据被读取时,调用这个方法将事件传递给下一个入站处理器。如果开发者在自定义的 ChannelHandler 中重写了某个事件处理方法,并且没有调用对应的 fireXXX 方法,那么事件的传播就会在该处理器处终止。Netty 的 Pipeline 管道的设计,就采用了责任链设计模式。负责保存处理器的状态,并且提供了方法来访问。原创 2024-08-01 20:45:44 · 614 阅读 · 0 评论 -
Netty 必知必会(三)—— ByteBuf
Java提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,旨在替代Java标准NIO库中的ByteBuffer。相较于ByteBuffer,ByteBuf引入了更高效的数据操作方式和更丰富的API支持。其核心优势在于支持,这些特性共同作用使得ByteBuf在数据处理方面的性能大大超越了传统的ByteBuffer。原创 2024-08-01 17:19:28 · 864 阅读 · 0 评论 -
Reactor 模型 和 Proactor 模型
在网络模型和模型。基于同步模式,基于异步模式。原创 2024-07-26 21:34:11 · 577 阅读 · 0 评论 -
Netty必知必会(二)—— I/O 模型和线程模型
决定着用什么样的通道将数据发送给对方,BIO、NIO 或者 AIO,IO 模型在很大程度上决定了框架的性能。决定着数据报如何读取?读取之后的编解码在哪个线程进行,编解码后的消息如何派发,Reactor 线程模型的不同,对性能的影响非常大。原创 2024-08-01 15:16:15 · 785 阅读 · 0 评论 -
最清楚的 BIO、NIO、AIO 详解!
为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为和。用户进程(应用程序)想要执行 IO 操作的话,必须通过来间接访问内核空间。原创 2024-07-26 21:10:05 · 584 阅读 · 0 评论 -
Netty必知必会(一)—— 零拷贝技术
直接内存也称为堆外内存,也就是不受JVM控制的内存。Netty 的接收和发送 ByteBuffer 采用 DIRECT BUFFERS,使用堆外直接内存进行 Socket 读写,不需要进行字节缓冲区的二次拷贝。如果使用传统的堆内存(HEAP BUFFERS)进行 Socket 读写,JVM 会将堆内存 Buffer 拷贝一份到直接内存中,然后才写入 Socket 中。相比于堆外直接内存,消息在发送过程中多了一次缓冲区的内存拷贝。原创 2024-08-01 10:41:54 · 893 阅读 · 0 评论