5 Java NIO Scatter 与Gather-翻译
Java NIO开始支持scatter与gatter。scatter与gatter用于实现从Channel读数据和向通道写数据。
scatter从一个通道读取数据并写入到多个Buffer中。因此,scatter实现将通道中的数据写入到多个Buffer中去。
gatter负责将多个buffer中的数据写入到一个channel。因此,gatter实现将多个buffer中的数据聚集到一个channel中去。
scatter和gatter经常用于将需要传输的数据分开处理的场合,例如,如果一条消息由消息头跟消息体组成,你经常需要将消息头与消息体放在不同的buffer中,这样你可以更加方便地处理消息头跟消息体。
Scattering Reads
"scattering read"是将一个Channel的数据读入到多个Buffer中。下图说明了这个原则。
下面是一个scatter read的一个例子。
ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);ByteBuffer[] bufferArray = { header, body };channel.read(bufferArray);
复制代码
注意到buffer首先被插入到数组,然后将数组作为参数传递给channel.read()方法。read方法按照buffer在数组中的顺序依次读取。当一个buffer满了以后,就往下一个buffer中写数据。
scattering reads在移动到下一个buffer之前会先写满当前buffer。这意味着它不适合动态消息体的情况。换句话说,如果你有一个消息头和消息体,并且消息头的长度是固定的,那么scattering read将会非常适合。
Gathering Writes
"gathering write"是从多个buffer中写入数据到单个channel。如下图描述:
下面的代码是gathering write的一个例子。
ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);//write data into buffersByteBuffer[] bufferArray = { header, body };channel.write(bufferArray);
复制代码
buffer数组会传递给write方法,它会按照buffer在数组中的顺序依次写入到channel。只有在position和limit之间的数据才会被写入。因此,如果一个buffer的长度为128个字节,但只包含58个字节内容,只有58个字节的内容会被写入到channel。因此,与scattering reads相反,gathering write非常适合动态长度的消息体。
5 Java NIO Scatter 与Gather-翻译相关推荐
- 【java】关于Java NIO的一切
1.概述 概述:关于Java NIO的『一切』 建议看原文 太长了 本文译自Jakob Jenkov的Java NIO.注意,并非逐字翻译,删除了原文中碎碎念的部分,有些地方也加入了自己的理解. Ja ...
- Java NIO Introduction
2019独角兽企业重金招聘Python工程师标准>>> Java NIO (New IO) is an alternative IO API for Java (from Java ...
- 海纳百川而来的一篇相当全面的Java NIO教程
目录 零.NIO包 一.Java NIO Channel通道 Channel的实现(Channel Implementations) Channel的基础示例(Basic Channel Exampl ...
- 【Java NIO的深入研究6】JAVA NIO之Scatter/Gather
Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道)中读取或者写入到Channel的操作. 分散(s ...
- Java NIO系列教程(四) Scatter/Gather
转载自 Java NIO系列教程(四) Scatter/Gather 译文地址 作者:Jakob Jenkov 译者:郭蕾 Java NIO开始支持scatter/gather,scatte ...
- java nio 系列教程 四_Java NIO系列教程(四) Scatter/Gather
作者:Jakob Jenkov 译者:郭蕾 Java NIO开始支持scatter/gather,scatter/gather用于描述从Channel(译者注:Channel在中文经常翻译为通道) ...
- NIO - Scatter/Gather
1.Scatter 从一个Channel读取的信息分散到N个缓冲区中(Buufer). 2.Gather 将N个Buffer里面内容按照顺序发送到一个Channel. Scatter/Gather ...
- 万字长文:助你攻破 JAVA NIO 技术壁垒
本文来源:https://honeypps.com/java/java-nio-quick-start/ 现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,J ...
- Java NIO之Channel(通道)
**Java高级特性增强-NIO 本部分网络上有大量的资源可以参考,在这里做了部分整理并做了部分勘误,感谢前辈的付出,每节文章末尾有引用列表~ 写在所有文字的前面:作者在此特别推荐Google排名第一 ...
最新文章
- 买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划
- [leetcode-515-Find Largest Value in Each Tree Row]
- 130 道 Kubernetes + Docker + DevOps 大厂面试题及知识点详解
- Java中二维数组的用法(不定长二维数组)
- 会议交流 | CNCC2021中国计算机大会 —— 知识图谱赋能数字化转型论坛
- ubuntu下手动安装jdk6
- 今年iPhone 11有3款,索然无味!
- 485. 最大连续1的个数
- php mysql 跨库_PHP使用PDO进行跨数据库操作
- PSCC2014前端切图小方法(不断补充)
- 三款适合HDMI信号分配的分配器芯片
- WEB自动化测试学习进度
- 如何确定直流电机驱动的 PWM 频率
- r语言是高级编程语言_什么是R编程?
- 10019---层次选择器
- 策略性发疯_如何使自己的房屋“智能”而不发疯
- 上楼梯问题+不死兔子
- HDU-6555-The Fool(整除分块)
- 念数字 字符串操作系列2
- 泛娱乐新玩法背后的“黑科技”
热门文章
- JFinal Web开发学习(一)开启HelloWorld
- Leetcode796.Rotate String旋转字符串
- jQueryEasyUI应用 – datagrid之CRUD应用
- pycharm——常用快捷键操作
- 阻止默认事件event.preventDefault();
- 常用MIME类型(Flv,Mp4的mime类型设置)(转载)
- POI导入数据的过程中,遇到读取以科学计数法显示的数据
- CV学习笔记-浅述CV方向
- vb子程序未定义怎么改怎么办_vb中总提示子程序或函数未定义
- php 转发请求及参数,php – Symfony 2转发请求传递GET / POST参数