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
转载于:https://www.cnblogs.com/yaboya/p/9172154.html
3.NIO_Buffer缓冲区相关推荐
- php 缓冲区,PHP的输出缓冲区
PHP的输出缓冲区 在PHP中有一个名为"输出缓冲区"「ob」的东西.PHP的输出流包含很多字节,通常是echo语句或者printf()函数输出的.这些东西的数据需要用到输出缓冲区 ...
- linux文件IO与内存映射:用户空间的IO缓冲区
文章目录 用户空间IO缓冲区产生 IO缓冲区 描述 IO缓冲区的写模式 自定义IO缓冲区 用户空间IO缓冲区产生 系统调用过程中会产生的开销如下: 切换CPU到内核态 进行数据内容的拷贝,从用户态到内 ...
- 缓冲区和数组的输入输出问题
最近编写程序的时候一直被数据的输入输出所困扰,由此写篇博文总结一下最近遇到的问题和解决方法,错误之处望指正. 1.数组使用的一些语法注意事项 (1)数组的定义 一维数组:类型名 数组名 [常量表达式 ...
- 一个简单的缓冲区溢出的思考
从大二开始真正接触技术开始,从最早的HTML,PHP,WEB开发.一直以为以后可能会从事开发的工作,碰巧大三上的时候和同专业的郭子,邹豪参加了南京的一个信息安全技能大赛,才真正找到了兴趣的方向,也从懵 ...
- C语言清空输入缓冲区的N种方法对比
C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...
- gprs发送信号对方如何接收_和接收缓冲区比较:Netty发送缓冲区是如何设计的,why?...
点击上方蓝字关注我吧! 本篇文章大概3300字,阅读时间大约10分钟 前面文章,透彻分析了Netty的接收缓冲区优化的套路和实现细节,以及写数据和刷新数据的宏观流程和细节: 从源码出发:在宏观上把握N ...
- 使用Linux进行缓冲区溢出实验的配置记录
在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等 ...
- socket编程缓冲区大小对send()的影响
1. 概述 Socket编程中,使用send()传送数据时,返回结果受到以下几个因素的影响: • Blocking模式或non-blocking模式 • 发送缓冲区的大小 • 接收窗口大小 本文档介绍 ...
- ros 消息队列与缓冲区_Spring Boot消息队列系统:RocketMQ初入门
前言 来啦老铁! 笔者学习Spring Boot有一段时间了,截至目前已实践.总结了26篇Spring Boot系列学习文章,感兴趣的同学可以关注专题一起学习吧! Spring Boot全家桶 在上一 ...
最新文章
- mysql分组和where条件查询_【MySQL】:分组查询where和having
- 底部菜单_css实现移动端底部导航菜单隆起效果
- 双11,如果数据中心断网断电会怎样?
- 读取excel文件错误
- procreate基本操作
- No error message available, result code: E_FAIL(0x80004005)
- Elastic-Job简介
- JDK并发包-同步控制
- [html] 页面的重绘和回流是什么?
- java3d曲面图开发_web三维图表的开发
- python输入成绩求总分和平均分_python脚本如何输入成绩求平均分?
- EF中关于TransactionScope的使用
- VB中输入函数InputBox的用法
- win7旗舰版梦幻主题补丁~完美你的桌面
- Qt 多语言切换——Qt语言家
- Go:HTTP长连接
- Android 输出word文件中插入图片
- iOS 开发AVFoundation系统原生二维码扫描实现
- 微信小程序-枯木学习笔记5-我的信息
- Edge出现无法访问此页面xxxxxx已拒绝连接。