Channel~scatter and gather
*介绍
---GatheringByteChannel和ScatteringByteChannel接口,实现对有序字节数组的读取,使得协议数据和固定数组内容的处理更加方便.
---实现类
DatagramChannel,SocketChannel,FileChannel,SinkChannel
---GatheringByteChannel,long write(ByteBuffer[] srcs, int offset, int length)
srcs,数据来源; offset,srcs数组的偏移量; length,获取最大srcs的个数.
long,返回写入的个数.
---ScatteringByteChannel,long read(ByteBuffer[] dsts, int offset, int length)
dsts,要写入的数组; offset,开始使用的buffer位置; length,使用的最大buffer数
*示例,
ChannelGatherTest示例/*** Feb 23, 2011 by dzh*/ package channel;import java.io.File; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.channels.FileChannel;/*** @author dzh* 协议,name[名字]|sex[性别],分隔符"|"* 获取数据,去除分割符,写入person.txt文件*/ public class ChannelGatherTest {private static final String SEPERATOR ="\\|";private static final String ENCODING ="utf-8";private static final String DATA ="戴忠|男"; //源数据private static final String TPATH ="/home/dzh/gather.txt"; //文件路径public static void main(String[] args) throws Exception {ByteBuffer[] bufs =scatterData();gatherData(bufs);}private static void gatherData(ByteBuffer[] bufs) throws Exception{File file =new File(TPATH);if(!file.exists())file.createNewFile();FileOutputStream fos =new FileOutputStream(file);FileChannel fc =fos.getChannel();while(fc.write(bufs)>0){//do others};fos.close();}private static ByteBuffer[] scatterData() throws Exception{String[] data =DATA.split(SEPERATOR);ByteBuffer nameBuf =ByteBuffer.wrap(data[0].getBytes(ENCODING));ByteBuffer sexBuf =ByteBuffer.wrap(data[1].getBytes(ENCODING));return new ByteBuffer[]{nameBuf,sexBuf};}}
转载于:https://www.cnblogs.com/bronte/articles/1962188.html
Channel~scatter and gather相关推荐
- Pytorch中scatter与gather操作
文章目录 数据发散scatter 带聚集的发散scatter_add_ onnx中scatterND 数据聚集gather 数据发散scatter 函数原型pytorch官方文档scatter_: s ...
- 我的并行计算之路(三)MPI集合通信之Scatter和Gather
集合通信对比点对点通信来说,确实要方便许多,基本上不需要考虑各个进程该怎么发送,该怎么接收的问题,只要是使用一个通信子,函数接口自己就完成了.从进程的角度考虑,集合通信在分配任务量的时候更加平均,使各 ...
- java组件介绍_Java组件介绍 - osc_wws45aot的个人空间 - OSCHINA - 中文开源技术交流社区...
1.String string对象的不变性.被final关键字修饰. 使用charat方法替代startwith/endwith方法(提高性能) 使用buffer(方法同步,性能较差)和builder ...
- NIO - Scatter/Gather
1.Scatter 从一个Channel读取的信息分散到N个缓冲区中(Buufer). 2.Gather 将N个Buffer里面内容按照顺序发送到一个Channel. Scatter/Gather ...
- JavaNIO - Scatter Gather
Scatter & Gather指在多个缓冲区上实现一个简单的 I/O 操作.减少或避免了Buffer间的拷贝和系统调用. Channel Write操作 Write操作 Channel Re ...
- Java NIO之Channel(通道)
**Java高级特性增强-NIO 本部分网络上有大量的资源可以参考,在这里做了部分整理并做了部分勘误,感谢前辈的付出,每节文章末尾有引用列表~ 写在所有文字的前面:作者在此特别推荐Google排名第一 ...
- NIO核心之Channel,Buffer和Selector简介
在NIO的API中,Channel就是实现非阻塞的组件,而事件分发(Dispatcher)使用的是Selector组件,在传统的I/O流(Stream)是有方向的,而NIO支持双向读写,这样就需要将流 ...
- Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O
I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...
- elasticSearch6源码分析(6)http和transport模块
1.http模块概述 The http module allows to expose Elasticsearch APIs over HTTP.The http mechanism is compl ...
- java nio 对消息分片_Java NIO:应用
Java NIO 是一种非阻塞的.面向块而非字节的 IO 方式.虽然 Java 的传统 IO 也进行了一些基于 NIO 的改造,NIO 仍然能够带来许多优势. 面向流的 IO 方便我们一个字节一个字节 ...
最新文章
- IE6使用png透明图片的方法
- maplet, power set, domain subtraction,
- IDEA---SpringBoot同一个项目多端口启动
- mysql如何抛出错误信息_如何捕获并重新抛出MySQL中的所有错误
- SignalR与自托管Windows服务
- MySQL MHA切换失败一例
- 权重计算方法三:变异系数法(Coefficient of Variation)
- 数据库中常见mdf 、ndf 、ldf 、文件
- 526个儿童游戏APP应用音效游戏声音集合音效素材 Kids Game Sound Effects
- 如何反编译微信小程序前端,30分钟教你学会
- 最大子列和问题(PTA)
- MAC如何将[搜狗输入法]设置为默认输入法
- 算法题目打卡:Ques20201008
- uni-app数据缓存
- 惠农网_破译反爬虫_使用代理IP爬取数据(源码)_一蓑烟雨任平生
- CSS 定位(position)
- 智能制造MES系统框架
- 一款基于安卓的观看漫画的app,有漫画排行榜、漫画目录、收藏夹、历史记录、漫画搜索、更新推送服务等
- turtle八边形绘制
- java 将ftl文件作为模板导出word文档