随笔分类 -  Netty

摘要:一、序列化算法拓展 序列化接口 public interface Serializer { /** * 序列化 * @param object 被序列化的对象 * @param <T> 被序列化对象类型 * @return 序列化后的字节数组 */ <T> byte[] serialize(T ob 阅读全文
posted @ 2021-10-26 10:56 上官兰夏 阅读(133) 评论(0) 推荐(0)
摘要:一、ByteBuf ByteBuf是netty自创的一个数据读写类,解决了原有的ByteBuffer的一些缺点。ByteBuf通过ByteBufAllocator选择allocator并调用对应的buffer()方法来创建的,默认使用直接内存作为ByteBuf,容量为256个字节,可以指定初始容量的 阅读全文
posted @ 2021-10-26 10:56 上官兰夏 阅读(699) 评论(0) 推荐(0)
摘要:一、粘包与半包 粘包 现象:第一次发送abc,第二次发送def,接收abcdef。 原因:1、应用层,接收方 ByteBuf 设置太大(Netty 默认 1024) 2、传输层,滑动窗口,假设发送方 256 bytes 表示一个完整报文,但由于接收方处理不及时且窗口大小足够大(大于256 bytes 阅读全文
posted @ 2021-10-26 10:56 上官兰夏 阅读(173) 评论(0) 推荐(0)
摘要:一、EventLoop EventLoop 本质是一个单线程执行器(同时维护了一个 Selector),里面有 run 方法处理一个或多个 Channel 上源源不断的 io 事件。继承自 j.u.c.ScheduledExecutorService 因此包含了线程池中所有的方法,除此之外,继承自n 阅读全文
posted @ 2021-10-26 10:55 上官兰夏 阅读(72) 评论(0) 推荐(0)
摘要:一、先看服务端的入门示例代码 public class MyServer { public static void main(String[] args) throws InterruptedException { //第一步 创建bossGroup 接受数据然后转发给workerGroup,是一个 阅读全文
posted @ 2021-10-26 10:53 上官兰夏 阅读(52) 评论(0) 推荐(0)
摘要:一、ServerBootstrap的初始化 ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.group(bossGroup, workerGroup) .channel(NioServerSocketC 阅读全文
posted @ 2021-10-26 10:53 上官兰夏 阅读(22) 评论(0) 推荐(0)
摘要:一、简介 NIO的三大组件Channel,Buffer,Selector,Buffer我们已经以ByteBuffer讲述过了, Channel常见的有如下四种: FileChannel:用于文件传输 DatagramChannel:UDP传输 SocketChannel:TCP传输,客户端 Serv 阅读全文
posted @ 2021-10-26 10:52 上官兰夏 阅读(163) 评论(0) 推荐(0)
摘要:一、简介 数据的传输不是按照原有的磨样进行的,是经过一定的转换的,我们经常用到的也就是ByteBuffer,除此之外还有ShortBuffer、IntBuffer、LongBuffer、FloatBuffer、DoubleBuffer、CharBuffer。Bytebuffer还有一些子类Mappe 阅读全文
posted @ 2021-10-26 10:51 上官兰夏 阅读(184) 评论(0) 推荐(0)