java 缓存ByteBuffer
一、ByteBuffer的创建
ByteBuffer创建缓存区常用的有两种方式:
1、使用allocate直接创建指定大小的空缓存区
ByteBuffer buffer=ByteBuffer.allocate(64);
position: 0 limit: 64 capacity 64
2、使用wrap创建一个具有内容的缓存区
ByteBuffer b2=ByteBuffer.wrap("12345678".getBytes());
position: 0 limit: 8 capacity 8
二、将数据存放如缓存区
ByteBuffer存放数据方法为put(),存放数据position会进行递增操作,position最大为capacity。超出大小将抛出异常
三、从缓存区读取数据
get(),读取内容为position与limit之间的内容,每次读取position将回进行递增操作。超出大小将抛出异常
注意:
clear:
清除此缓冲区。将位置设置为 0,将限制设置为容量,并丢弃标记
此方法不能实际清除缓冲区中的数据,但从名称来看它似乎能够这样做,这样命名是因为它多数情况下确实是在清除数据时使用
使用clear方法只是将buffer的几个标识位重置,并没有将缓存中的数据清除,在使用中千万注意
flip:
首先将限制设置为当前位置,然后将位置设置为 0。如果已定义了标记,则丢弃该标记
flip方法是将position位置设定为limit位置,将position设置为0
remaining:
返回当前位置与限制之间的元素数
compact:
将缓冲区的当前位置和界限之间的字节(如果有)复制到缓冲区的开始处。即将索引 p = position() 处的字节复制到索引 0 处,将索引 p + 1 处的字节复制到索引 1 处,依此类推,直到将索引 limit() - 1 处的字节复制到索引 n = limit() - 1 - p 处。然后将缓冲区的位置设置为 n+1,并将其界限设置为其容量。如果已定义了标记,则丢弃它
compact方法就是将position与limit之间的数据移动到0到limit() - 1 - p处,将position设置为后面可用位置,limit设置为初始大小
将缓冲区的位置设置为复制的字节数,而不是零,以便调用此方法后可以紧接着调用另一个相对 put 方法。
从缓冲区写入数据之后调用此方法,以防写入不完整。例如,以下循环语句通过 buf 缓冲区将字节从一个信道复制到另一个信道:
buf.clear(); // Prepare buffer for use while (in.read(buf) >= 0 || buf.position != 0) { buf.flip(); out.write(buf); buf.compact(); // In case of partial write }
java 缓存ByteBuffer相关推荐
- java bufferarray_如何使用Java的ByteBuffer.arrayOffset()方法
Returns the offset within this buffer's backing array of the first element of the buffer (optional o ...
- 缓存框架(Java缓存)与框架缓存(介绍mybatis缓存)
Java缓存主要分为三种: 1.FIFO 2.LRU 3.LFU 它们一般应用于浏览器中,使很多操作更加方便快捷. 1.FIFO: FIFO是按存入的顺序进行排序的,如果命中缓存中的任意一个数据,也不 ...
- 写缓存java,编写线程安全的Java缓存读写机制 (原创)
一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...
- java框架缓存,缓存框架(Java缓存)与框架缓存(介绍mybatis缓存)
Java缓存主要分为三种: 1.FIFO 2.LRU 3.LFU 它们一般应用于浏览器中,使很多操作更加方便快捷. 1.FIFO: FIFO是按存入的顺序进行排序的,如果命中缓存中的任意一个数据,也不 ...
- Map实现java缓存机制的简单实例
缓存是Java中主要的内容,主要目的是缓解项目访问数据库的压力以及提升访问数据的效率,以下是通过Map实现java缓存的功能,并没有用cache相关框架. 一.缓存管理类 CacheMgr.java ...
- java缓存技术_java缓存技术
最近在做java缓存,了解了一下. 以下仅是对map对方式讨论.没有对点阵图阵讨论. 作缓存要做以下2点: 1:清理及更新缓存时机的处理: . 虚拟机内存不足,清理缓存 .. 缓存时间超时,或访问次数 ...
- java 图片缓存工具,java缓存读取图片解决方案
java缓存读取图片 老师布置了任务,需要把数据库中的图片一缓存的形式读出,不要说什么数据库中路劲,图片整体较大,在给别人使用时不现实. 关键代码:for(int i=0;i<1;i++){ d ...
- java.nio.ByteBuffer用法小结
转载自 java.nio.ByteBuffer用法小结 在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入 ...
- javax.cache_新的Java缓存标准(javax.cache)
javax.cache 这篇文章探讨了新的Java缓存标准:javax.cache. 它如何适应Java生态系统 该标准由JSR107开发,作者是共同规范负责人. JSR107包含在JSR342开发的 ...
最新文章
- 腾讯云详解宕机故障:光纤挖断后的150秒
- 逻辑回归算法c语言_逻辑回归算法背后的数学
- React(0.13) 定义一个动态的组件
- 彻底的卸载SQL Server2005
- matlab能做深度图像的识别吗,Matlab图像识别/检索系列(6)-10行代码完成深度学习网络之基于CNN的图像分类...
- JBoss BRMS 5.3 –添加了业务活动监视(BAM)报告
- SqlBulkCopy导入大数据
- PHP使用DES进行加密和解密
- 机器学习:过拟合问题与其正则化解决
- android自定义指针,Android实现HID鼠标的指针自定义
- cmd命令 复制文件夹里所有文件到另一个文件夹操作方式
- 第十四章:【UCHome二次开发】uchome通用方法
- 菜鸡程序员都是怎样写代码的?
- 【洛谷】P1878 舞蹈课
- linux开机故障,Entering emeryency mode. Exit the shell to continue.
- [分享]来自CSDN的精华网址
- AutoLeaders控制组——51单片机学习笔记(AD/DA、红外遥控)
- 有想法阿里系工作的么?各个事业群,都可以挑选。
- 尚硅谷在线教育项目的坑
- 机器学习基础(五):计算学习理论(PAC学习、有限假设空间、VC维、Rademacher复杂度、稳定性)