java:BIO, NIO
BIO面向流. 阻塞式
NIO面向缓冲区. 非阻塞式
channnel负责传输, buffer负责存储.
import java.nio.ByteBuffer;public class TestBuffer {public static void main(String[] args) {TestBuffer.test2();}public static void test2() {String str = "abcde";ByteBuffer buf = ByteBuffer.allocate(1024);buf.put(str.getBytes());buf.flip();byte[] dst = new byte[buf.limit()];buf.get(dst,0,2);System.out.println(new String(dst,0,2));System.out.println(buf.position());buf.mark(); // 标记buf.get(dst,2,2);System.out.println(new String(dst,2,2));buf.reset(); // 恢复到mark的位置System.out.println(buf.position());// 判断缓冲区中是否有剩余数据if(buf.hasRemaining()){// 获取缓冲区中可以操作的数量System.out.println(buf.remaining());}}public static void test1(){String str = "abcde";//1. 分配一个指定大小的缓冲区ByteBuffer buf = ByteBuffer.allocate(1024);System.out.println(buf.capacity());System.out.println(buf.limit());System.out.println(buf.position());// 2. 利用put()存入数据到缓冲区buf.put(str.getBytes());// 3. 切换到读取数据模式buf.flip();// 4. 利用get()读取缓冲区数据byte[] dst = new byte[buf.limit()];buf.get(dst);System.out.println(new String(dst,0,dst.length));//5. rewind():可重复读buf.rewind();// 6. clear清空缓冲区。但缓冲区中的数据依然存在。buf.clear();System.out.println(buf.capacity());System.out.println(buf.limit());System.out.println(buf.position());}
}
直接缓冲区域,非直接缓冲区
直接缓冲区域:通过allocate()方法分配缓冲区,将缓冲区建立再jvm的内存中。
非直接缓冲区:通过allocateDirect()方法分配直接缓冲区,将缓冲区建立在物理内存中。可以提高效率。
通道(channel)
channel本身不能直接访问数据,channel只能与buffer进行交互。
java:BIO, NIO相关推荐
- java BIO/NIO/AIO 学习
参考地址 https://www.cnblogs.com/diegodu/p/6823855.html 一.了解Unix网络编程5种I/O模型 1.1.阻塞式I/O模型 阻塞I/O(blocking ...
- java aio nio bio_3. 彤哥说netty系列之Java BIO NIO AIO进化史
你好,我是彤哥,本篇是netty系列的第三篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 上一章我们介绍了IO的五种模型,实际上Java只支持其中的三种,即BIO/NIO/ ...
- java BIO NIO AIO 理论篇
http://furturestrategist.iteye.com/blog/1463369 java中的IO主要源自于网络和本地文件 IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO. ...
- 【Java IO模式】Java BIO NIO AIO总结
一同步与异步阻塞与非阻塞 1同步与异步 2阻塞与非阻塞 3IO模式 二BIO 概念描述 特点 代码实现 三NIO 概念描述 特点 代码描述 四AIO 一.同步与异步.阻塞与非阻塞 1.同步与异步 同步 ...
- Java BIO NIO
IO 通信模型 网络通信的本质是网络间的数据 IO.只要有 IO,就会有阻塞或非阻塞的问题,无论这个 IO 是网络的,还是硬盘的.原因在于程序是运行在系统之上的,任何形式的 IO 操作发起都需要系统 ...
- Java BIO、NIO、AIO
同步与异步 同步与异步的概念, 关注的是 消息通信机制 同步是指发出一个请求, 在没有得到结果之前该请求就不返回结果, 请求返回时, 也就得到结果了. 比如洗衣服, 把衣服放在洗衣机里, 没有洗好之前 ...
- JAVA 中BIO,NIO,AIO的理解
[转自]http://qindongliang.iteye.com/blog/2018539 在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解.具体如下: 序号 问题 1 什么是同步? ...
- Java之IO,BIO,NIO,AIO
2019独角兽企业重金招聘Python工程师标准>>> 参考文献一 IO基础知识回顾 java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中I ...
- 也谈BIO | NIO | AIO (Java版--转)
http://my.oschina.net/bluesky0leon/blog/132361 关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BI ...
最新文章
- TVM 高效保护隐私 ML
- 三天打入CV大赛决赛圈!我是如何做到的?
- 打开方式中选择默认方式无反映_「Windows」得看,更改文件的默认应用,告别“打开方式”...
- React开发(203):react代码分割之React.lazy
- wxpython 基本的控件 (文本)
- 【金融基础设施建设01】金融基础设施建设概论(金融基础设施的定义、现状、国内外标准、基本特征、作用、风险)
- 深度学习框架江湖群侠传
- 基于Element组件下动态生成多级表头以及数据
- YDOOK:Pytorch : AI : torch.tensor.size() 与 torch.tensor.shape 的区别
- 地磁传感器还可以用于室内定位?
- 在联网状态下,有很多网页或者应用无法联网问题,如360安全卫士, Smartscreen筛选器无法访问, 部分网页无法访问等问题的解决方法
- Linux常用命令简介
- Flutter 实现原理及跨平台实践
- 今夕何年(模拟日期)
- 基于机智云平台的智能家居系统
- js二进制十六进制转换
- 基于spark的电影数据分析
- 鼠标触摸屏不能用, 键盘部分使用正常,利用向日葵解决问题
- 获取www.maigoo.com 景点爬虫,包括1A到5A级景点名称。景点地址,景点描述和景点经纬度
- EPERM npm ERR! syscall unlink npm ERR! path D:\vsws\mmp-web-mmp-web-dev\node_modules\.staging\antd-a