java nio学习笔记1
来源:互联网 发布:手机淘宝怎么投诉盗图 编辑:程序博客网 时间:2024/06/05 21:55
这篇文章首先介绍Buffer。Buffer有四个非常重要的属性:position,limit,capacity,mark
position:表示当前缓冲区指针指向的位置,是一下个读取或者写入的元素的索引,会被put()和get()刷新
limit:表示当前缓冲区元素的个数,或者说是第一个不能被读或写的元素
capacity:表示缓冲区的容量,只能在初始化的时候被设定,不能被更改,有两种方式
第一种方式:直接初始化申请一定容量的缓冲区,并从堆内从隐含的分配了一个capacity大小的数组。作为备份存储器来储存capacity大小的变量。
第二种方式:直接申明一个capacity大小的数组,然后将这个数组wrap到缓冲区中,同时此数组中任何改动都会影响到缓冲区中的元素。
常用API操作
记录几个概念不容易理解的(都是我个人理解):
duplicate,slice,asReadOnly。这三个api都是操作原缓冲区生成新缓冲区的操作,不过有一点很重要,看下面代码
这时候在dup里面不会有原来的元素,但是dup拥有与buffer一样的position,limit,capacity,但是这三个值以后确实相互独立的,也就是说dup和buffer可以拥有不一样的position,limit,capacity。
补充一点,如果在上面一段代码后面添加buffer(dup).put(anything),buffer和dup会同时更改缓冲区的内容,而buffer会保留以前的缓冲区内容。
slice和asReadOnly也拥有同样的特性
1.duplicate():创建一个新缓冲区,在创建的同时,将原缓冲区的position,limit,capacity赋予新缓冲区,当以后相互独立,在创建前,源缓冲区的内容不会跟随进入新缓冲区。
2.asReadOnly跟duplicate一样,只是创建的新缓冲区只读,如果想修改这个只读缓冲区的内容,可以修改原缓冲区。
3.slice:创建一个新缓冲区,position=0,limit=capacity=原缓冲区的limit-position。
总结一下,缓冲区的操作其实相对比较简单,但是在缓冲区与硬件交互的时候,牵涉到操作系统的知识各种不懂,期待以后继续学习。
- java nio学习笔记1
- JAVA NIO学习笔记1
- Java Nio学习笔记
- Java NIO学习笔记
- java NIO 学习笔记
- Java NIO学习笔记
- java nio学习笔记
- Java NIO学习笔记
- Java NIO学习笔记
- Java NIO学习笔记
- java nio编程学习笔记(1)--初步了解nio
- JAVA NIO学习笔记1 - 架构简介
- Java NIO、NIO.2学习笔记
- Java NIO、NIO.2学习笔记
- NIO学习笔记1
- java.nio学习笔记(2)
- Java NIO 学习笔记 - SocketChannel
- Java NIO 学习笔记 - ByteBuffer
- 【程序员的自我修养】第1章 温故而知新
- 创建进程,调用Rscript运行相关算法[基于本公司的底层,可以修改,完全去掉依赖这个底层]
- 软件测试容易遗漏的地方
- linux书籍推荐(6本)
- Ubuntu12.10硬盘安装
- java nio学习笔记1
- request和response学习
- VPN介绍--虚拟网络
- #西柚姨妈体#蹿红微博 流行体之风重袭网络
- MFC创建一个非模态对话框
- 为什么要使用“var me=this”这样的写法
- 循环队列和队列
- ios学习之UITextField特性
- mysql查询类型转换