一、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相关推荐

  1. java bufferarray_如何使用Java的ByteBuffer.arrayOffset()方法

    Returns the offset within this buffer's backing array of the first element of the buffer (optional o ...

  2. 缓存框架(Java缓存)与框架缓存(介绍mybatis缓存)

    Java缓存主要分为三种: 1.FIFO 2.LRU 3.LFU 它们一般应用于浏览器中,使很多操作更加方便快捷. 1.FIFO: FIFO是按存入的顺序进行排序的,如果命中缓存中的任意一个数据,也不 ...

  3. 写缓存java,编写线程安全的Java缓存读写机制 (原创)

    一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...

  4. java框架缓存,缓存框架(Java缓存)与框架缓存(介绍mybatis缓存)

    Java缓存主要分为三种: 1.FIFO 2.LRU 3.LFU 它们一般应用于浏览器中,使很多操作更加方便快捷. 1.FIFO: FIFO是按存入的顺序进行排序的,如果命中缓存中的任意一个数据,也不 ...

  5. Map实现java缓存机制的简单实例

    缓存是Java中主要的内容,主要目的是缓解项目访问数据库的压力以及提升访问数据的效率,以下是通过Map实现java缓存的功能,并没有用cache相关框架. 一.缓存管理类 CacheMgr.java ...

  6. java缓存技术_java缓存技术

    最近在做java缓存,了解了一下. 以下仅是对map对方式讨论.没有对点阵图阵讨论. 作缓存要做以下2点: 1:清理及更新缓存时机的处理: . 虚拟机内存不足,清理缓存 .. 缓存时间超时,或访问次数 ...

  7. java 图片缓存工具,java缓存读取图片解决方案

    java缓存读取图片 老师布置了任务,需要把数据库中的图片一缓存的形式读出,不要说什么数据库中路劲,图片整体较大,在给别人使用时不现实. 关键代码:for(int i=0;i<1;i++){ d ...

  8. java.nio.ByteBuffer用法小结

    转载自  java.nio.ByteBuffer用法小结 在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入 ...

  9. javax.cache_新的Java缓存标准(javax.cache)

    javax.cache 这篇文章探讨了新的Java缓存标准:javax.cache. 它如何适应Java生态系统 该标准由JSR107开发,作者是共同规范负责人. JSR107包含在JSR342开发的 ...

最新文章

  1. 腾讯云详解宕机故障:光纤挖断后的150秒
  2. 逻辑回归算法c语言_逻辑回归算法背后的数学
  3. React(0.13) 定义一个动态的组件
  4. 彻底的卸载SQL Server2005
  5. matlab能做深度图像的识别吗,Matlab图像识别/检索系列(6)-10行代码完成深度学习网络之基于CNN的图像分类...
  6. JBoss BRMS 5.3 –添加了业务活动监视(BAM)报告
  7. SqlBulkCopy导入大数据
  8. PHP使用DES进行加密和解密
  9. 机器学习:过拟合问题与其正则化解决
  10. android自定义指针,Android实现HID鼠标的指针自定义
  11. cmd命令 复制文件夹里所有文件到另一个文件夹操作方式
  12. 第十四章:【UCHome二次开发】uchome通用方法
  13. 菜鸡程序员都是怎样写代码的?
  14. 【洛谷】P1878 舞蹈课
  15. linux开机故障,Entering emeryency mode. Exit the shell to continue.
  16. [分享]来自CSDN的精华网址
  17. AutoLeaders控制组——51单片机学习笔记(AD/DA、红外遥控)
  18. 有想法阿里系工作的么?各个事业群,都可以挑选。
  19. 尚硅谷在线教育项目的坑
  20. 机器学习基础(五):计算学习理论(PAC学习、有限假设空间、VC维、Rademacher复杂度、稳定性)

热门文章

  1. STC系列芯片的串口通信编程
  2. 【单片机】单片机各系列(51,PIC,AVR,MSP430/432,ARM)介绍
  3. oracle去掉0x00,ORACLE数据块转储及RDBA的转换
  4. ngzorro实现表格的rowspan合并
  5. CRectTracker(橡皮筋)类的使用
  6. 了解你的敌人:跟踪僵尸网络
  7. 商城项目 pc----商品详情页
  8. new RegExp的使用
  9. TFlearn learning
  10. 在快应用中集成华为AGC云存储服务