Netty:用forEachByte遍历处理ByteBuf中的可读字节

news2024/11/27 14:43:32

说明

  • io.netty.buffer.ByteBuf的forEachByte(ByteProcessor processor)用指明的ByteProcessor 遍历ByteBuf中的可读字节。遍历的时候用升序遍历。
    -这个函数可以在ByteBuf中寻找某个字节首次出现的位置,或者首次不是某个字节的位置。

  • 如果已经遍历完了可读字节但还没有达到目标,返回-1。

  • io.netty.util.ByteProcessor这个接口中已经实现了一些ByteProcessor,例如:
    在这里插入图片描述

示例

假设要在ByteBuf中寻找字节的内容是22(十进制)首次出现的位置:

package com.thb;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.util.ByteProcessor;

public class Test {

	public static void main(String[] args) {
		// 创建一个ByteBuf
		ByteBuf buf = Unpooled.buffer();
		// 写入10个字节的数据
		for (int i = 0; i < 10; i++) {
			buf.writeByte(i);
		}
		// 写入1个字节的数据
		buf.writeByte(22);
		
		// 括号中用一个匿名类实现ByteProcessor接口
		int result = buf.forEachByte(new ByteProcessor() {
			private static final byte byteToFind = 22;			
			
			// 注意,process函数如果返回true,表示要继续处理ByteBuf中后续的字节
			@Override
			public boolean process(byte value) {
				return byteToFind != value;
			}
		});
		System.out.println("result = " + result);
	}
}

运行输出:

result = 10

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

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

相关文章

简单的基于SpringBoot的学生成绩管理系统java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 简单的基于SpringBoot的学生成绩管理系统 系统有2权限…

LeetCode面向运气之Javascript—第26题-删除有序数组中的重复项-99.18%

LeetCode第26题-删除有序数组中的重复项 题目要求 一个升序排列的数组nums &#xff0c;请你原地删除重复出现的元素&#xff0c;使每个元素只出现一次 &#xff0c;返回删除后数组的新长度。元素的相对顺序应该保持 一致 。然后返回 nums 中唯一元素的个数。 原地 说是一个…

领航优配:股市看盘的几个小技巧?

股市看盘是每个股民不可或缺的一项技能&#xff0c;它能够帮助股民更好地剖析股票的走势&#xff0c;从而做出更明智的出资决策。可是&#xff0c;股市行情千变万化&#xff0c;要想达到精准的猜测与判断&#xff0c;需求把握一些小技巧。本文将分享几个股市看盘的小技巧&#…

使用CANape查看blf数据

blf数据不像mf4那样自带信号数据库&#xff0c;因为它是记日志用的&#xff0c;一般情况下要尽可能的小&#xff0c;所以&#xff0c;解析blf数据要单独有个数据库文件&#xff0c;一般是dbc或者arxml&#xff0c;我这里用dbc做示范&#xff0c;解析之前要先加载dbc&#xff0c…

微服务Ribbon-负载均衡策略和饥饿加载

目录 一、负载均衡策略 1.1 负载均衡策略介绍 1.2 自定义负载均衡策略 二、饥饿加载 &#xff08;笔记整理自bilibili黑马程序员课程&#xff09; 一、负载均衡策略 1.1 负载均衡策略介绍 负载均衡的规则都定义在IRule接口中&#xff0c;而IRule有很多不同的实现类&…

HCIP-linux和kvm(ks配置文件自动化安装及console连虚拟机有问题)

1、linux linux安装教程参考&#xff0c;https://blog.51cto.com/cloudcs/5245337 yum源配置 本地yum源配置&#xff1a; 8版本配置&#xff1a;将光盘iso挂载到某个目录&#xff0c;/dev/cdrom是/dev/sr0软链接&#xff0c;# mount /dev/cdrom /mnt&#xff0c;# ls /mnt Ap…

siMLPe:Human Motion Prediction

Back to MLP: A Simple Baseline for Human Motion Prediction解析 摘要1. 简介2. Related Work2.1 基于RNN的人体运动预测2.2 基于GCN的人体运动预测2.3 基于 Attention 的人类运动预测2.4 总结 3. siMLPe3.1 离散余弦变换&#xff08;Discrete Cosine Transform (DCT)&#x…

使用go获取链上数据之主动拉取-连接数据库

上一篇文章&#xff0c;我们完成了基础环境的搭建&#xff0c;并通过viper完成了配置文件的读取&#xff0c;本章&#xff0c;我们将要完成使用gorm连接数据库&#xff0c;并插入一条数据 1、配置数据库连接 1.1、新建db.go 对数据库的操作&#xff0c;我们使用的是gorm类库&…

个人理解Java的浅克隆与深克隆

浅克隆 浅克隆只会克隆基本数据属性&#xff0c;而不会克隆引用其他对象的属性&#xff0c;String类型除外。&#xff08;String对象是不可修改的对象&#xff0c;每次修改其实都是新建一个新的对象&#xff0c;而不是在原有的对象上修改&#xff0c;所以当修改String属性时其…

vue2.7如何使用vue-i18n

版本&#xff1a; vue&#xff1a;2.7.0 vue-i18n&#xff1a;8.28.2 一、下载 npm i vue-i18n8.28.2二、新建 新建一个文件&#xff0c;例如&#xff1a;lang&#xff0c;项目结构如下&#xff1a; index.js&#xff1a; import Vue from vue import VueI18n from vue-i18n…

函数的递归

1、什么是递归&#xff1f; 程序调用自身的编程技巧称为递归。 递归作为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法&#xff0c;它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解&#x…

最强自动化测试框架Playwright-操作指南(3)-PO模式

playwright支持PO模式 创建页面对象 class SearchPage:def __init__(self, page):self.page pageself.search_term_input page.get_by_role("searchbox", name"输入搜索词")def navigate(self):self.page.goto("https://bing.com")def searc…

《人脸识别技术应用安全管理规定(征求意见稿)》,需要关注三个焦点

目录 严防人脸信息采集与滥用 规范人脸识别信息的处理 保障人脸识别技术的安全 人脸识别主要有三类风险 近日&#xff0c;国家互联网信息办公室发布《人脸识别技术应用安全管理规定&#xff08;试行&#xff09;&#xff08;征求意见稿&#xff09;》公开征求意见的通知。 …

甄品焕新|燕千云服务请求预警功能上线,燕小千AIGC能力再升级

​ 燕千云数智化业务服务平台发布了1.23.0版本&#xff0c;此次版本上线了服务请求预警功能&#xff0c;增加呼叫中心服务场景中的通话质检功能&#xff0c;提高了企业IT服务效率。此次还升级了燕小千AIGC能力&#xff0c;不仅可以实时预估文档学习时间&#xff0c;还可以一键分…

multi-head_seft-attention(多头自注意力)

对比 相比于single-head&#xff0c;multi-head就是将 q i q^i qi分成了 h h h份 multi-head_seft-attention的计算过程 将 q i q^i qi分成了 h h h份 计算过程 对于每个Head&#xff0c;我们可以提取出他的 b 11 b_{11} b11​到 b m 1 b_{m1} bm1​&#xff0c;以 H e…

Spring 事务管理

目录 1. 事务管理 1.1. Spring框架的事务支持模型的优势 1.1.1. 全局事务 1.1.2. 本地事务 1.1.3. Spring框架的一致化编程模型 1.2. 了解Spring框架的事务抽象&#xff08;Transaction Abstraction&#xff09; 1.2.1. Hibernate 事务设置 1.3. 用事务同步资源 1.3.1…

第十四届中国大学生服务外包大赛圆满落幕,合合信息助力人才发展消除市场“信息差”

老年人存在记账难题&#xff0c;如何通过技术手段处理&#xff1f;已经上线多年的软件产品&#xff0c;如何优化才能更符合现代人群的“胃口”&#xff1f;这些微小却关键的问题颇具社会价值&#xff0c;青年学子们的参与或许能够打开新的产品构建维度。 近日&#xff0c;“中…

Golang struct 结构体指针类型 / 结构体值类型

struct类型的内存分配机制 结构体变量之间的赋值是值拷贝。 type stu struct {Name stringSlice []stringMap1 map[string]string }func main() {s : stu{}s.Slice make([]string, 6)s.Slice[1] "ssss"s.Slice[2] "xxxx"s.Map1 make(map[string]stri…

必备 | SQL语句的封装操作大全

在封装SQL语句之前&#xff0c;我们得知道什么是DAO封装与实体类以及JDBC工具类的封装与连接数据库的具体流程。 封装SQL语句的好处&#xff1a; 封装SQL语句后就可以导包&#xff0c;给其他的工程使用&#xff0c;大大降低开发的强度&#xff0c;减少代码的冗余。如何导包给…

MFC第二十九天 CView类的分支(以及其派生类的功能)、MFC六大关键技术

文章目录 CView类的分支CEditViewCHtmlViewMainFrm.h CMainFrame 类的接口CMainView .h CListCtrl与CListView的创建原理 CTreeViewCTreeCtrl类简介CTreeCtrl类的原理以及常用功能 MFC六大关键技术视图和带分割栏的框架开发与消息路由CLeftView.cppCRightView.hCRightView.cppC…