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 · 686 阅读 · 0 评论 -
Netty中的解码器介绍
Netty中的解码器介绍LengthFieldBasedFrameDecoder解码器场景一场景二场景三场景四场景五场景六LineBasedFrameDecoder 换行符解码器DelimiterBasedFrameDecoder使用自定义标识符解码器FixedLengthFrameDecoder固定长度解码器在TCP传输中,由于拆包粘包的存在,会导致半包读写的问题。导致拆包粘包问题原因:1.应用程序写入的字节数大于套接字缓冲区的大小2.进行MMS(最大报文段长度)大小的TCP分段3.以太网帧的p原创 2020-05-16 12:25:09 · 918 阅读 · 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 · 143 阅读 · 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 · 268 阅读 · 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 · 696 阅读 · 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 · 319 阅读 · 0 评论