• 【JAVA】【NIO】5、Java NIO Scatter / Gather


    标题手段Java NIO该分散体浓缩
    Java NIO内置支持分散与收集。的概念主要用于信道分散聚集的读写。


    读出的分散体的一个通道被读多个数据buffer在。因此。数据分散到多个buffer中。
    对一个通道的集中写就是将数据从多个buffer中写到一个通道中。因此。通道从多个buffer将数据收集到一个通道中。
    分散收集经经常使用于对数据传输分开处理的场景。

    比方,一条消息由header和body构成,你须要将header和body保存在不同的buffer中。

    这样做就是的对header和body分开处理更加简单了。

    分散读取

    这里写图片描写叙述
    看一个样例:
    这里写图片描写叙述
    注意buffer是怎样插入到数组中的,以及数组作为參数传递给了channel.read方法。read方法从channel中取出数据,依照buffer数组中buffer的顺序将数据写入,一个满了。就会顺序写到下一个buffer中。
    其实,分散读取在移动到下一个buffer前会先填充满一个buffer,意味着这样的方式不适合消息大小动态变化的情况。

    换言之,假设你有一个header和body,然后header是固定大小的(比方:128字节),这样的情况,分散读取就能发挥的非常好。

    集中写

    这里写图片描写叙述
    这里写图片描写叙述

    注意:Buffer的flip方法调用

    buffer数组作为參数传递给write方法,将buffer的内容依照顺序写入通道。

    仅仅处于position和limit之间的数据才会写入。
    因此,假设一个buffer有128字节的容量。可是仅仅有58字节的内容,那么仅仅有58字节会写入通道中。所以。和分散读取相比。集中写对于消息大小不固定的处理会更好。

    下一节:【JAVA】【NIO】6、Java NIO Channel to Channel Transfers

  • 相关阅读:
    Python pandas 入门 05 JSON
    Python matplotlib 画图入门 07 散点图
    Python matplotlib 画图入门 06 绘制多图
    Python pandas 入门 04 CSV 文件
    Python pandas 入门 01 安装
    Python 入门示例系列 35 迭代器与生成器
    Python matplotlib 画图入门 03 绘图线
    Python pandas 入门 目录
    Python 零散知识点琐碎知识
    Python numpy 入门系列 目录
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4651594.html
Copyright © 2020-2023  润新知