
netty
文章平均质量分 78
顽石九变
人生没有彩排,每一天都是现场直播,所以每一刻都要活得精彩。
展开
-
Netty实现类似dubbo的远程接口调用
Netty 是一个基于NIO的客户、服务器端的编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,例如:基于TCP和UDP的socket服务开发。本文通过完整示例代码,详细介绍netty实现类似dubbo的远程网络通讯。原创 2023-02-25 12:02:49 · 1100 阅读 · 4 评论 -
Netty常用核心类说明
ReplayingDecoder:继承自ByteToMessageDecoder,不需要检测缓冲区是否有足够的字节,但是ReplayingDecoder的速度略慢于ByteToMessageDecoder,而且并不是所有的ByteBuf都支持。ByteToMessageDecoder是一种ChannelInboundHandler,可以称为解码器,负责将byte字节流(ByteBuf)转换成一种Message,Message是应用可以自己定义的一种Java对象。可以在Handler中通过方法。原创 2023-02-23 17:14:21 · 496 阅读 · 0 评论 -
Netty核心模块
Bootstrap、ServerBootstrap1. Bootstrap意思是引导,一个Netty应用通道由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中Bootstrap类是服务端启动引导类Future、ChannelFuture1. Netty中所有的IO操作都是异步的,不能立刻得知是否被正确处理。但可以给Future和ChannelFuture注册一个监听,当操作执行成功或失败时,会自动触发监听事件原创 2022-04-02 18:11:13 · 924 阅读 · 0 评论 -
Netty线程模型
Netty抽象出两组线程池,BossGroup专门负责接收客户端的链接,WorkerGroup专门负责网络的读写原创 2022-03-31 15:10:37 · 1247 阅读 · 1 评论 -
Reactor模型
Reactor模型,是基于事件驱动的,通过一个或多个输入同时传递给服务端处理服务端程序处理传入的多个请求,并分发到相应的处理线程原创 2022-03-31 15:00:17 · 11170 阅读 · 1 评论 -
NIO与零拷贝
零拷贝指的是没有CPU拷贝,并不是不拷贝;减少上下文切换一、概念说明1、传统IO需要4次拷贝,3次上下文切换#mermaid-svg-gqsFxYvM0T0VRJbE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-gqsFxYvM0T0VRJbE .error-icon{fill:#552222;}#mermaid-svg-gqsFxYvM0T0VRJbE .er原创 2022-03-27 18:16:21 · 607 阅读 · 0 评论 -
Java NIO实现简易群聊功能
服务端代码开启ServerSocketChannel,设置为非阻塞,并声明为全局变量开启一个selector,并绑定客户端链接事件启动监听方法,循环监听事件,阻塞监听事件读取到客户端消息,并转发给其他客户端import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.*;import java.util.Iterator;原创 2022-03-27 15:06:45 · 798 阅读 · 0 评论 -
Java BOI和NIO示例介绍
Java BIO阻塞IO,每个客户端链接都需要一个独立的线程处理,客户端链接没关闭时,线程链接处于阻塞状态,直到客户端链接关闭如果客户端链接没有读取到数据,链接就会一直阻塞住,造成资源浪费#mermaid-svg-njujKMcgrexBjYo8 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-njujKMcgrexBjYo8 .error-icon{fill:#55原创 2022-03-27 15:05:11 · 512 阅读 · 0 评论