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

  

   

  

转载于:https://www.cnblogs.com/yaboya/p/9172154.html

3.NIO_Buffer缓冲区相关推荐

  1. php 缓冲区,PHP的输出缓冲区

    PHP的输出缓冲区 在PHP中有一个名为"输出缓冲区"「ob」的东西.PHP的输出流包含很多字节,通常是echo语句或者printf()函数输出的.这些东西的数据需要用到输出缓冲区 ...

  2. linux文件IO与内存映射:用户空间的IO缓冲区

    文章目录 用户空间IO缓冲区产生 IO缓冲区 描述 IO缓冲区的写模式 自定义IO缓冲区 用户空间IO缓冲区产生 系统调用过程中会产生的开销如下: 切换CPU到内核态 进行数据内容的拷贝,从用户态到内 ...

  3. 缓冲区和数组的输入输出问题

    最近编写程序的时候一直被数据的输入输出所困扰,由此写篇博文总结一下最近遇到的问题和解决方法,错误之处望指正. 1.数组使用的一些语法注意事项 (1)数组的定义 一维数组:类型名  数组名 [常量表达式 ...

  4. 一个简单的缓冲区溢出的思考

    从大二开始真正接触技术开始,从最早的HTML,PHP,WEB开发.一直以为以后可能会从事开发的工作,碰巧大三上的时候和同专业的郭子,邹豪参加了南京的一个信息安全技能大赛,才真正找到了兴趣的方向,也从懵 ...

  5. C语言清空输入缓冲区的N种方法对比

    C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...

  6. gprs发送信号对方如何接收_和接收缓冲区比较:Netty发送缓冲区是如何设计的,why?...

    点击上方蓝字关注我吧! 本篇文章大概3300字,阅读时间大约10分钟 前面文章,透彻分析了Netty的接收缓冲区优化的套路和实现细节,以及写数据和刷新数据的宏观流程和细节: 从源码出发:在宏观上把握N ...

  7. 使用Linux进行缓冲区溢出实验的配置记录

    在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...

  8. socket编程缓冲区大小对send()的影响

    1. 概述 Socket编程中,使用send()传送数据时,返回结果受到以下几个因素的影响: • Blocking模式或non-blocking模式 • 发送缓冲区的大小 • 接收窗口大小 本文档介绍 ...

  9. ros 消息队列与缓冲区_Spring Boot消息队列系统:RocketMQ初入门

    前言 来啦老铁! 笔者学习Spring Boot有一段时间了,截至目前已实践.总结了26篇Spring Boot系列学习文章,感兴趣的同学可以关注专题一起学习吧! Spring Boot全家桶 在上一 ...

最新文章

  1. mysql分组和where条件查询_【MySQL】:分组查询where和having
  2. 底部菜单_css实现移动端底部导航菜单隆起效果
  3. 双11,如果数据中心断网断电会怎样?
  4. 读取excel文件错误
  5. procreate基本操作
  6. No error message available, result code: E_FAIL(0x80004005)
  7. Elastic-Job简介
  8. JDK并发包-同步控制
  9. [html] 页面的重绘和回流是什么?
  10. java3d曲面图开发_web三维图表的开发
  11. python输入成绩求总分和平均分_python脚本如何输入成绩求平均分?
  12. EF中关于TransactionScope的使用
  13. VB中输入函数InputBox的用法
  14. win7旗舰版梦幻主题补丁~完美你的桌面
  15. Qt 多语言切换——Qt语言家
  16. Go:HTTP长连接
  17. Android 输出word文件中插入图片
  18. iOS 开发AVFoundation系统原生二维码扫描实现
  19. 微信小程序-枯木学习笔记5-我的信息
  20. Edge出现无法访问此页面xxxxxx已拒绝连接。

热门文章

  1. Makefile_07:Make 的工作方式
  2. 解析XML时,需要校验节点是否闭合,如必须有与之对应,用()数据结构实现比较好?
  3. C++中mutable、volatile关键字
  4. Hystrix 熔断降级
  5. springmvc十四:请求处理
  6. JavaEE进阶知识学习-----SpringCloud(六)Ribbon负载均衡
  7. javaweb回顾第二篇tomcat和web程序部署
  8. [K/3Cloud]K3Cloud平台开发之Python插件
  9. 浏览器显示XML文档
  10. Android的数据存储