![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
NIO
文章平均质量分 75
方渐鸿
这个作者很懒,什么都没留下…
展开
-
Netty进阶——粘包/半包
TCP(Transmission Control Protocol)是一种面向连接的可靠传输协议,广泛应用于网络通信领域。在TCP协议中,数据被分割成一个一个的报文段进行传输。然而,由于网络传输的不可靠性,TCP协议会面临一些数据传输问题,如粘包和半包问题。在网络通信中,当发送方连续发送多个小数据包时,接收方可能会将它们合并成一个大的数据包,这就是粘包问题;而当发送方发送的数据包长度大于接收方的缓冲区长度时,接收方无法完整接收数据包,导致数据的接收不完整,这就是半包问题。原创 2023-06-29 16:53:06 · 904 阅读 · 1 评论 -
netty入门——组件2-Handler
打个比喻,每个Channel是一个产品的加工车间,Pipeline是车间的流水线,ChannelHandler就是流水线上的各道工序,而后面要讲的ByteBuf是原材料,经过很多工序的加工;先经过一道道工序入站工序,再经过一道道出战工序最终变成产品。ChannelHandler用来处理Channel上的各种事件,分为入栈,出栈两种。->h4->h5 出栈顺序是从后面往前执行,先执行h5再执行h4。} //只接收特定消息的handler。//把写入的内容转为string。//动态解码器handler。原创 2023-06-29 16:27:34 · 156 阅读 · 1 评论 -
netty入门篇——组件
1、EventLOoop事件循环对象EventLoop本质是一个单线程执行器(同时维护一个Selector),里面有run方法处理Channel上源源不断的事件。原创 2023-06-29 16:07:40 · 91 阅读 · 1 评论 -
Netty全面解读-----入门篇
Netty是什么Netty是一个异步(非异步IO)的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端原创 2023-06-29 15:56:42 · 124 阅读 · 3 评论 -
【2023】NIO从零到一入门学习——入门篇之-Channel & Buffer(2)
### 1、基本使用代码1. 向buffer写入数据,例如调用channelread(buffer)2. 调用flip()切换至**读模式**3. 从buffer读取数据,例如调用buffer.get()4. 调用clear() 或cornpact()切换至**写模式**原创 2023-07-05 17:59:15 · 112 阅读 · 0 评论 -
netty入门——ByteBuf
创建ByteBuf可以使用📢 调试日志工具方法通过配置环境参数:可以把池化功能去除UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeNoCleanerDirectByteBuf :直接内存UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf :堆内存PooledUnsafeDirectByteBuf :直接内存 PooledUnsafeHeapByteBuf :堆内存。原创 2023-06-29 16:45:15 · 199 阅读 · 1 评论 -
NIO入门篇——ByteBuffer
直接内存,读写效率高(少一次拷贝),不会受到GC的影响,分配的效率低。:分配的是是java堆内存,读写效率低,受到GC的影响。position移动到mark()标记的下标去;ByteBuffer分配内存,也可以使用*:压缩已有的空间,从写入到的位置继续写。ByteBuffer有以下重要属性。:从position 位置开始读;position 移动到0下标;:标记当前position 下标。可以使用 allocate。rewind():把。原创 2023-06-29 17:04:01 · 150 阅读 · 1 评论 -
【2023】NIO从零到一入门学习——网络编程Selector
**Selector事件**- accept :会在有连接请求时触发 `SelectionKey.*OP_ACCEPT` = 16*- connect :是客户端,连接建立后触发 `SelectionKey.`*`OP_CONNECT` = 8*- read : 可读事件 `SelectionKey.*OP_READ` = 1*- write : 可写事件 `SelectionKey.OP_WRITE` = 4原创 2023-07-05 18:55:45 · 89 阅读 · 0 评论 -
【2023】NIO vs BIO对比及 IO模型
、stream vs channel**通道(Channel)**:由 java.nio.channels 包定义 的。Channel 表示 IO 源与目标打开的连接。Channel 类似于传统的“流”。只不过 Channel 本身不能直接访问数据,Channel 只能与 Buffer 进行交互。(Channel本身不存储数据,因此需要配合缓冲区进行传输)原创 2023-07-05 18:34:48 · 99 阅读 · 0 评论