NIO和Netty
不惧不惑
这个作者很懒,什么都没留下…
展开
-
Java零拷贝原理介绍
Java零拷贝原理介绍DMA 传输原理传统IO方式零拷贝方式用户态直接 I/Ommap+writeSendfileSendfile+DMA gather copyJava使用零拷贝基于内存映射(mmap)基于sendfileRocketMQ 和 Kafka 零拷贝使用对比 DMA 传输原理 在介绍IO方式前,先介绍以下DMA传输原理。DMA 的全称叫直接内存存取(Direct Memory Access),是一种允许外围设备(硬件子系统)直接访问系统主内存的机制。也就是说,基于 DMA 访问方式,系统主内存原创 2020-05-18 21:37:22 · 649 阅读 · 0 评论 -
Netty中的解码器介绍
Netty中的解码器介绍LengthFieldBasedFrameDecoder解码器场景一场景二场景三场景四场景五场景六LineBasedFrameDecoder 换行符解码器DelimiterBasedFrameDecoder使用自定义标识符解码器FixedLengthFrameDecoder固定长度解码器 在TCP传输中,由于拆包粘包的存在,会导致半包读写的问题。 导致拆包粘包问题原因: 1.应用程序写入的字节数大于套接字缓冲区的大小 2.进行MMS(最大报文段长度)大小的TCP分段 3.以太网帧的p原创 2020-05-16 12:25:09 · 878 阅读 · 0 评论 -
Java NIO API学习记录
Java NIO API学习记录Buffer原理将文件映射到内存直接内存访问 Buffer原理 java nio中有很多buffer ,最常用的ByteBuffer , 这些buffer包含三个指针指向byte数组: position limit capacity. position : 创建出来时为0 写模式下的写起始位置 , 读模式下的读开始位置 limit:写模式下最大可写位置 , 读模式下最大可读取的位置 capacity: 总容量大小 Buffer创建 ByteBuffer byteBuf原创 2020-05-15 23:00:12 · 124 阅读 · 0 评论 -
Netty开发入门示例
Netty开发入门示例服务端代码服务端启动代码服务端逻辑处理代码 Handler客户端代码使用解码器 服务端代码 服务端启动代码 import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.ni原创 2020-05-15 00:45:57 · 250 阅读 · 0 评论 -
Java NIO之多路复用示例
Java NIO之多路复用示例服务端代码客户端代码 服务端代码 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.*; import java.util.Iterator; import java.util.Set; public class MultiplexerTimeServer implements Runnable原创 2020-05-15 00:17:19 · 669 阅读 · 2 评论 -
java异步IO之AIO示例
java异步IO之AIO示例服务端开发服务端启动代码如下:服务端业务处理逻辑示例代码TimeHandler回调处理类 ReadCompletionHandler客户端代码原理 服务端开发 服务端启动代码如下: import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.AsynchronousServerSocketChannel; import java.util.concurrent.Ti原创 2020-05-15 00:07:15 · 291 阅读 · 0 评论