NIO(一)缓冲区
I/O的基本概念
- 同步和异步的概念:
所谓的同步就是在发出一个请求的时候,如果没有得到结果,就不返回。即调用者主动等待返回结果。
所谓的异步:调用之后直接返回结果,一般通过回调函数来处理这个应用。 - 阻塞和非阻塞的概念:
阻塞:在调用没有得到结果之前,当前线程会被挂起。调用线程得到结果之后才会返回。
非阻塞:不能得到结果之前,改调用不会阻塞住当前的线程。
缓冲区
缓冲区其实就是一块数组,然后对这一块数组进行一系列的操作,它包括以下几个常用的方法:
1分配空间给缓冲区
2.往缓冲区中添加数据调用put方法
3.调用flip方法切换为读状态
4.读取完毕调用clear方法重新设置位置为0。
常用方法解析
1.clear方法不清除数据,只是改变当前limit值
public final Buffer clear() {
position = 0;
limit = capacity;
mark = -1;
return this;
}
2.flip方法允许输出
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
3.rewind方法使posotion方法置为0
public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}
4.判断两个缓冲区是否相等的方法,代码如下:
public boolean equals(Object ob) {
if (this == ob)
return true;
if (!(ob instanceof CharBuffer))
return false;
CharBuffer that = (CharBuffer)ob;
if (this.remaining() != that.remaining())
return false;
int p = this.position();
for (int i = this.limit() - 1, j = that.limit() - 1; i >= p; i--, j--)
if (!equals(this.get(i), that.get(j)))
return false;
return true;
}
要满足几下条件才能算相等。
1、对象要相同
2、剩余的空间要相同
3、从position到limit区间的数据要相等才能确认数据是否相等。
NIO(一)缓冲区的更多相关文章
- NIO 之 缓冲区(Buffer)
缓存区是java nio的核心部分,所以必须熟悉它的一些操作. 实现类型: nio中实现了除布尔型(boolean)外的其他7种基本数据类型的buffer(ByteBuffer,CharBuffer, ...
- Java NIO 之缓冲区
缓冲区基础 所有的缓冲区都具有四个属性来 供关于其所包含的数据元素的信息. capacity(容量):缓冲区能够容纳数据的最大值,创建缓冲区后不能改变. limit(上界):缓冲区的第一个不能被读或写 ...
- Java NIO之缓冲区Buffer
Java NIO的核心部件: Buffer Channel Selector Buffer 是一个数组,但具有内部状态.如下4个索引: capacity:总容量 position:下一个要读取/写入的 ...
- Java NIO——2 缓冲区
一.缓冲区基础 1.缓冲区并不是多线程安全的. 2.属性(容量.上界.位置.标记) capacity limit 第一个不能被读或写的元素 position 下一个要被读或写的元素索引 mark ...
- Java NIO Buffer缓冲区
原文链接:http://tutorials.jenkov.com/java-nio/buffers.html Java NIO Buffers用于和NIO Channel交互.正如你已经知道的,我们从 ...
- NIO之缓冲区
NIO引入了三个概念: Buffer 缓冲区 Channel 通道 selector 选择器 1.java.io优化建议 操作系统与Java基于流的I/O模型有些不匹配.操作系统要移动的是大块数据(缓 ...
- NIO buffer 缓冲区 API
package bhz.nio.test; import java.nio.IntBuffer; public class TestBuffer { public static void main(S ...
- NIO之缓冲区(Buffer)的数据存取
缓冲区(Buffer) 一个用于特定基本数据类行的容器.有java.nio包定义的,所有缓冲区都是抽象类Buffer的子类. Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道 ...
- NIO的缓冲区、通道、选择器关系理解
Buffer的数据存取 一个用于特定基本数据类行的容器.有java.nio包定义的,所有缓冲区都是抽象类Buffer的子类. Java NIO中的Buffer主要用于与NIO通道进行交互,数 ...
- Java NIO ———— Buffer 缓冲区详解 入门
引言缓冲区是一个用于特定基本类型的容器.由java.nio 包定义,所有缓冲区都是 Buffer 抽象类的子类. Java NIO 中的 Buffer ,主要用于与NIO 通道进行交互.数据从通道存入 ...
随机推荐
- Java核心技术 卷1 基础知识-第一天
基本数据类型 java是一种强数据类的的语言 共有8种基本数据类型 其中: 整型4种 int(4字节) short(2字节) long(8字节) byte(1字节) java中整型的范围与机器无关 长 ...
- Qt Console Application
代码编译完生成的.o文件(又称对象文件,是可执行文件)和链接.o文件形成的.exe可执行文件都保存在“build-Project-Desktop_Qt_5_8_0_GCC_64bit-Debug”中. ...
- Windows环境下 Hadoop Error: JAVA_HOME is incorrectly set. 问题
最近尝试在windows开发MR程序并且提交Job,在解压缩好Hadoop,配置好环境变量后, 打开cmd 输入hadoop version 的时候出现以下错误: Error: JAVA_HOME i ...
- Linux 静态库(.a)转换为动态库(.so)
Linux 静态库转换为动态库 参考 http://blog.csdn.net/moxuansheng/article/details/5812410 首先将.a文件转为.so文件是可以实现的 原因是 ...
- Struts2学习第三课 Action
action VS Action类 action:代表一个Struts2的请求 Action类:能够处理struts2请求的类. 属性的名字必须遵守与JavaBean属性名相同的命名规则. 属性的 ...
- bash字符串匹配
#!/bin/shfoo(){ local basedir=$1 local all_entries=`ls -c` for entry in $all_entries do ...
- 开源库ActiveAndroid + gson使用
ActiceAndroid的简介 ActiveAndroid是一个活跃的记录风格的ORM(对象关系映射)库.ActiveAndroid可以让您保存和检索的SQLite数据库记录而没有写一个SQL语句. ...
- 超级台阶 (NYOJ—76)
很简单的高中数学题,写出来主要是提醒自己,写完递推公式(尤其是公式)一定要检查多遍. #include<stdio.h> #include<string.h> int M; i ...
- asp.net刷新本页面的六种方法总结
第一: private void Button1_Click( object sender, System.EventArgs e ) { Response.Redirect( Reque ...
- 更改数据,ExecuteNonQuery()
using (mycon) { mycon.Open(); string MyTime; DateTime dtDate; MyTime = textBox1.Text.ToString(); str ...