Java基础之《netty(26)—netty其他常用编解码器》

news2024/9/27 21:18:21

一、解码器-ReplayingDecoder

1、函数声明
public abstract class ReplayingDecoder<S> extends ByteToMessageDecoder

2、ReplayingDecoder扩展了ByteToMessageDecoder类,使用这个类,我们不必调用readableBytes()方法。参数S指定了用户状态管理的类型,其中Void代表不需要状态管理。

3、使用ReplayingDecoder编写解码器,对前面的案例进行简化
MyByteToLongDecoder2.java

package netty.inboundhandlerAndOutboundhandler;

import java.util.List;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ReplayingDecoder;

public class MyByteToLongDecoder2 extends ReplayingDecoder<Void> {

	@Override
	protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
		System.out.println("MyByteToLongDecoder2 decode 被调用");
		//在ReplayingDecoder 不需要判断数据是否足够读取,它内部会进行处理和判断
		
		out.add(in.readLong());
	}

}

4、ReplayingDecoder使用方便,但它也有一些局限性
(1)并不是所有的ByteBuf操作都被支持,如果调用了一个不被支持的方法,将会抛出一个UnsupportedOperationException。
(2)ReplayingDecoder在某些情况下可能稍慢于ByteToMessageDecoder,例如网络缓慢并且消息格式复杂时,消息会被拆成了多个碎片,速度变慢。

二、其他编码器

1、LineBasedFrameDecoder
这个类在netty内部也有使用,它使用行尾控制字符(\n或者\r\n)作为分隔符来解析数据。

2、DelimiterBasedFrameDecoder
使用自定义的字符作为消息的分隔符。

3、HttpObjectDecoder
一个HTTP数据的解码器。

4、LengthFieldBasedFrameDecoder
通过指定长度来标识整包消息,这样就可以自动的处理黏包和半包消息。

三、其他编码器

1、ObjectEncoder

2、SocksMessageEncoder

3、LzfEncoder

4、ZlibEncoder

5、Bzip2Encoder

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/170204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】版本管理工具 Git

目录 一、什么是 Git 二、如何使用 Git 1、创建远程仓库 2、将远端仓库克隆到本地 3、将本地文件添加到仓库 3.1、三板斧第一招&#xff1a;文件添加 3.2、三板斧第二招&#xff1a;提交本地 3.3、三板斧第三招&#xff1a;提交远端 4、删除文件 5、删除仓库 一、什么是 Gi…

postman接口关联

有两种方法&#xff0c;使用json提取器实现接口关联&#xff0c;还有使用正则表达式提取器实现接口关联。方法一&#xff1a;使用json提取器实现接口关联第一个接口&#xff1a;//使用json提取器提取contractID、documentID//把返回的字符串格式的数据转换成对象的形式var resu…

SAP FICO 理解成本中心会计

成本中心会计 一、成本要素 管理会计&#xff08;CO&#xff09;的数据均来源于FI损益类科目&#xff0c;也就是说只有损益类科目才可以创建成本要素&#xff08;必须先创建损益类科目&#xff0c;后创建成本要素&#xff09;&#xff0c; 但是不一定所有的损益类科目都需要…

gma 气象气候函数包的简要介绍及运算过程主要问题说明(内存不足、出现 nan 等)及解决方法

0 概述 0.1 明确气候与气象的概念 气候(Climate)&#xff1a;是指一个地区大气物理特征的长期平均状态&#xff0c;具有一定的稳定性&#xff0c;且周期长。根据世界气象组织&#xff08;WMO&#xff09;的规定&#xff0c;一个标准气候计算时间为 30 年。 气象(Meteorology)&…

【论文笔记】一文读懂残差网络ResNet(附代码)

Residual Net论文笔记1. 传统深度网络的问题2. 残差结构和残差网络2.1 残差是什么2.2 残差模块 Residual Block2.3 基本模块BasicBlock和BottleNeck2.4 残差网络ResNet设计2.4.1 恒等映射与残差的连接3. Forward/Backward Propagation3.1 Forward propogation3.2 Back Propogat…

深信服行为感知命令执行漏洞

深信服行为感知命令执行漏洞1.深信服行为感知漏洞1.1.漏洞描述1.2.漏洞影响1.3.漏洞复现1.3.1.登录页面1.3.2.构建漏洞URL1.3.2.1.查询IP地址1.3.2.2.查询当前目录下文件1.深信服行为感知漏洞 1.1.漏洞描述 深信服 行为感知系统c.php远程命令执行漏洞&#xff0c;使用与EDR相同…

Docker搭建kafka集群

Docker搭建kafka集群集群规划镜像版本kafka为什么需要依赖zookeeper创建docker网络搭建zk集群新建文件docker-compose-zk.yml启动搭建kafka集群新建docker-compose-kafka.yml启动集群安装kafka-manager新建 docker-compose-kafka-manager.yml启动kafka-manager配置cluster修改k…

Pandas 数据结构 - DataFrame

Pandas 数据结构 - DataFrameDataFrame 是一个表格型的数据结构&#xff0c;它含有一组有序的列&#xff0c;每列可以是不同的值类型&#xff08;数值、字符串、布尔型值&#xff09;。DataFrame 既有行索引也有列索引&#xff0c;它可以被看做由 Series 组成的字典&#xff08…

nexus3 搭建maven私服

首先下载nexus3安装包 这里使用linux版, 需要win或mac版请自行百度 链接&#xff1a;https://pan.baidu.com/s/11Z_884pt11l04460ldUyVA?pwdycuo 提取码&#xff1a;ycuo 上传linux服务器进行解压缩 解压缩后的文件目录 进入到 nexus的执行目录 /nexus-3.31.1-01/bin 运行…

Qt 6.x中的信号和槽介绍及示例

信号(signals)和槽(slots)用于对象之间的通信&#xff0c;Qt使用信号和槽完成了事件监听操作。信号和槽机制是Qt的核心特性&#xff0c;可能也是与其它框架提供的特性最大的不同之处。信号和槽是通过Qt的元对象系统(Meta-Object system)实现的&#xff0c;Qt的元对象系统使信号…

【寒假每日一题】DAY.10 杨辉直角(等腰)三角

目录 一、杨辉直角三角 思路 按部就班 代码实现 二、杨辉等腰三角 注&#xff1a;由于VS不支持变长数组&#xff0c;这里我就用n4来写 一、题目名称 题目内容&#xff1a; 输入一个数n&#xff0c;在屏幕上打印n行n列的杨辉三角。例如&#xff1a;输入&#xff1a;4输出&am…

CSRF与XSS组合拳

目录 先介绍下这两个漏洞&#xff1a; CSRF XSS 实验&#xff1a; 环境&#xff1a; CSRF与反射型xss的第一拳 CSRF与存储型XSS的第二拳&#xff1a; 先介绍下这两个漏洞&#xff1a; CSRF CSRF是跨站请求伪造攻击&#xff0c;由客户端发起,是由于没有在关键操作执行时进…

美团滑块(1-18,js逆向)

网址&#xff1a;aHR0cHM6Ly9wYXNzcG9ydC5tZWl0dWFuLmNvbS9hY2NvdW50L3VuaXRpdmVsb2dpbg整体流程&#xff1a; 1、获取主页参数 2、逆向pwd、h5Fingerprint 3、请求page_data链接 4、逆向Authencation、behavior、token_ 5、最终请求验证一、获取主页参数 url_ "https:/…

信息论复习—信息论的基本概念

信息的概念&#xff1a;古代的信息技术&#xff1a;现代的信息技术信息与消息的关系&#xff1a;消息&#xff1a;用文字、符号、数据、语言、音符、图片、图像等能够被人们感觉器官所感知的形式&#xff0c;把客观物质运动和主观思维活动的状态表达出来就称为消息。信息&#…

Flink 实时计算DIM层实现方案

1 概述 DIM层设计要点&#xff1a; &#xff08;1&#xff09;DIM层的设计依据是维度建模理论&#xff0c;该层存储维度模型的维度表。 &#xff08;2&#xff09;DIM层的数据存储在 HBase 表中DIM 层表是用于维度关联的&#xff0c;要通过主键去获取相关维度信息&#xff0c;…

html2canvas移动端使用问题及解决

1、jsbridge重复调用问题现象&#xff1a;与移动端进行通信&#xff0c;通过<script>标签里的jsbridge.js来调用端上的接口&#xff0c;在调用接口之后&#xff0c;调用html2canvas来生成图片&#xff0c;发现刚才调用的接口又被调用了一次解决方案&#xff1a;在html2ca…

比YOLOv8还要强的YOLOv6 v3.0

论文地址&#xff1a;https://arxiv.org/pdf/2301.05586.pdf 开源地址&#xff1a;https://github.com/meituan/YOLOv6 YOLOv6 v3.0的主要贡献简述如下&#xff1a; 对检测器的Neck部件进行了翻新&#xff0c;引入BiC(Bi-directional Concatenation)提供更精确的定位信息&…

好看的vscode深色主题,搜索主题名称即可设置

1.watermelon-theme 西瓜颜色的主题&#xff0c;满满的夏天感&#xff0c;红色交替的温柔。 2.Kawaine Theme 好看的粉色系主题&#xff0c; 3. Feminine Color Theme 很适合女孩子的一个主题&#xff0c;好看如其名。 4.pinkFlower-theme 这个真的超粉&#xff0c;很好看的…

Python采集常用:谷歌浏览器驱动——Chromedriver 插件安装教程

人生苦短 &#xff0c;我用Python 趁放假&#xff0c;偷偷卷起来&#xff01;&#xff01;&#xff01; 我们经常要使用谷歌浏览器驱动&#xff0c; 今天分享下这个Chromedriver 插件的安装方法。 一、打开谷歌浏览器打开设置面板 二、查看当前谷歌浏览器版本号 三、点击插件…

计算机取证科普性基础

内容为美亚柏科公开课笔记。 1 Windows系统与取证 1.1 存储介质取证概述 专业名词 未分配空间文件残留区 物理大小逻辑大小文件大小物理大小-逻辑大小 临时文件 C:\Windows\Temp*.tmpC:\Documents and Settings\Username\Local Setting\Temporary Internet FilesC:\Documen…