zoukankan      html  css  js  c++  java
  • 3.NIO_Buffer缓冲区

     1.缓冲区(Buffer)

      一个用于特定基本数据类型的容器。由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类,任何时候访问 NIO 中

    的数据,都是通过缓冲区进行操作

      在 Java NIO 中负责数据的存取。缓冲区就是数组。用于存储不同数据类型的数据,据数据类型不同(boolean 除外) ,有以

    下 Buffer 常用子类:

      

      上述缓冲区的管理方式几乎一致,通过 allocate() 获取缓冲区:

    1.1.缓冲区的基本属性 

      

      标记、位置、限制、容量遵守以下不变式: 0 <= mark <= position <= limit <= capacity

    1.2.缓冲区的常用方法:

      

    1.2.缓冲区的数据操作:

      Buffer 所有子类提供了两个用于数据操作的方法:get() 与 put() 方法  

      

      

    1.3.直接缓冲区和非直接缓冲区:

      非直接缓冲区:通过 allocate() 方法分配缓冲区,将缓冲区建立在 JVM 的内存中

      
         直接缓冲区:通过 allocateDirect() 方法分配直接缓冲区,将缓冲区建立在物理内存中,可以提高效率

      

      NIO技术省去了复制的过程

      @Test
      public void test3(){
        //分配直接缓冲区
        ByteBuffer buf = ByteBuffer.allocateDirect(1024);
        System.out.println(buf.isDirect());
      }

      字节缓冲区是直接缓冲区还是非直接缓冲区可通过调用其 isDirect() 方法来确定。提供此方法是为了能够在
    性能关键型代码中执行显式缓冲区管理

      直接字节缓冲区还可以通过 FileChannel 的 map() 方法 将文件区域直接映射到内存中来创建。该方法返回
    MappedByteBuffer

      

       


      

  • 相关阅读:
    nyoj 230/poj 2513 彩色棒 并查集+字典树+欧拉回路
    nyoj 211 Cow Contest
    nyoj 203 三国志 dijkstra+01背包
    nyoj 170 网络的可靠性
    nyoj 120 校园网络
    nyoj 115 城市平乱 dijkstra最短路
    nyoj 42 一笔画问题 欧拉路径
    nyoj 38 布线问题
    hdu 2089 不要62--数位dp入门
    nyoj 712 探 寻 宝 藏--最小费用最大流
  • 原文地址:https://www.cnblogs.com/yaboya/p/9172154.html
Copyright © 2011-2022 走看看