随笔分类 -  netty

摘要:鉴于netty权威指南上面的自定义协议实现部分不完整,为此本博主,将自定义协议这块补充了以下,以供大家参考,自定义协议主要采用长度进行粘包处理,编解码自定义实现,具体如下 工程分三个部分 1、common 主要包含实体,枚举,一些公用的编解码常量等 2、service 服务端 3、client 客户 阅读全文
posted @ 2020-09-08 10:03 醉逍遥_001 阅读(294) 评论(0) 推荐(0)
摘要:The parameters that we set using ServerBootStrap.option apply to the ChannelConfig of a newly created ServerChannel, i.e., the server socket which lis 阅读全文
posted @ 2019-05-13 14:59 醉逍遥_001 阅读(1720) 评论(0) 推荐(2)
摘要:JBoss Marshalling 是一个java序列化包,对JDK默认的序列化框架进行了优化,但又保持跟java.io.Serializable接口的兼容,同时增加了一些可调参数和附加特性,这些参数和特性可以通过工厂类进行配置。 一、开发环境准备 要用到JBoss Marsharlling编解码就 阅读全文
posted @ 2018-08-05 17:31 醉逍遥_001 阅读(419) 评论(0) 推荐(0)
摘要:首先我们来看一下protobuf的优点: 谷歌长期使用成熟度高; 跨语言支持多种语言如:C++,java,Python; 编码后消息更小,更利于存储传输; 编解码性能高; 支持不同协议版本的兼容性; 支持定义可选和必选字段; 接下来就让我们试用一下吧。 一、Protobuf开发环境搭建 下载Prot 阅读全文
posted @ 2018-08-04 21:07 醉逍遥_001 阅读(1321) 评论(0) 推荐(0)
摘要:编解码技术主要应用在网络传输中,将对象比如BOJO进行编解码以利于网络中进行传输。平常我们也会将编解码说成是序列化/反序列化 定义:当进行远程跨进程服务调用时,需要把被传输的java对象编码为字节数组或者ByteBuffer对象。而当远程服务读取到ByteBuffer对象或者字节数组时,需要将其解码 阅读全文
posted @ 2018-07-22 11:53 醉逍遥_001 阅读(1092) 评论(0) 推荐(0)
摘要:TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,通常采用以下4中方式: DelimiterBaseFrameDecoder——分隔符解码器,FixedLengthFrameDecoder——定长解码器 下面我们采用#为分隔符进行代码练习运行。 EchoServer服务端代码 服务端处理 阅读全文
posted @ 2018-07-21 14:48 醉逍遥_001 阅读(303) 评论(0) 推荐(0)
摘要:发生了粘包,我们需要将其清晰的进行拆包处理,这里采用LineBasedFrameDecoder来解决 LineBasedFrameDecoder的工作原理是它依次遍历ByteBuf中的可读字节,判断看是否有“\n”或“\r\n”,如果有,就以此为结束位置,从可读索引到结束位置区间的字节就组成一行,它 阅读全文
posted @ 2018-07-21 12:02 醉逍遥_001 阅读(205) 评论(0) 推荐(0)
摘要:TCP是个流协议,流没有一定界限。TCP底层不了解业务,他会根据TCP缓冲区的实际情况进行包划分,在业务上,一个业务完整的包,可能会被TCP底层拆分为多个包进行发送,也可能多个小包组合成一个大的数据包进行发送,这就是TCP的拆包和粘包。 产生问题的原因 应用程序write写入的字节大小大于套接字缓冲 阅读全文
posted @ 2018-07-21 10:51 醉逍遥_001 阅读(258) 评论(0) 推荐(0)
摘要:经过了前面的NIO基础知识准备,我们已经对NIO有了较大了解,现在就进入netty的实际应用中来看看吧。重点体会整个过程。 按照权威指南写程序的过程中,发现一些问题:当我们在定义handler继承ChannelHanderAdapter时候,发现在其接口中没有可以实现的channelRead方法和c 阅读全文
posted @ 2018-07-14 17:16 醉逍遥_001 阅读(802) 评论(0) 推荐(0)
摘要:NIO2.0引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。异步通道提供以下两种方式获取操作结果。 1、通过java.util.concurrent.Future 类来表示异步操作的结果; 2、在执行异步操作的时候传入一个java.io.channels。 Complement 阅读全文
posted @ 2018-07-08 17:15 醉逍遥_001 阅读(301) 评论(0) 推荐(0)
摘要:经过前面的铺垫,在这一节我们进入NIO编程,NIO弥补了原来同步阻塞IO的不足,他提供了高速的、面向块的I/O,NIO中加入的Buffer缓冲区,体现了与原I/O的一个重要区别。在面向流的I/O中,可以将数据直接写入或者将数据直接读到Stream对象中。下面看一些概念 Buffer缓冲区 而在NIO 阅读全文
posted @ 2018-07-08 10:55 醉逍遥_001 阅读(310) 评论(0) 推荐(0)
摘要:在上一节我们介绍了四种IO相关编程的各个特点,并通过代码进行复习了传统的网络编程代码,伪异步主要是引用了线程池,对BIO中服务端进行了相应的改造优化,线程池的引入,使得我们在应对大量客户端请求的时候不会导致虚拟机可贵的线程资源耗尽而宕机,在本小节,我们来看看伪异步代码。多注意引入的线程池代码。 伪异 阅读全文
posted @ 2018-07-07 18:23 醉逍遥_001 阅读(200) 评论(0) 推荐(0)
摘要:公司的一些项目采用了netty框架,为了加速适应公司开发,本博主认真学习netty框架,前一段时间主要看了看书,发现编程这东西,不上手还是觉得差点什么,于是为了加深理解,深入学习,本博主还是决定多动手,一方面记录一些总结性的思考性东西,另一方面也为日后复习查看留下一些东西。 那么废话少说,现在开始, 阅读全文
posted @ 2018-07-07 16:37 醉逍遥_001 阅读(177) 评论(0) 推荐(0)