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

  1. java BIO/NIO/AIO 学习

    参考地址 https://www.cnblogs.com/diegodu/p/6823855.html 一.了解Unix网络编程5种I/O模型 1.1.阻塞式I/O模型 阻塞I/O(blocking ...

  2. java aio nio bio_3. 彤哥说netty系列之Java BIO NIO AIO进化史

    你好,我是彤哥,本篇是netty系列的第三篇. 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识. 简介 上一章我们介绍了IO的五种模型,实际上Java只支持其中的三种,即BIO/NIO/ ...

  3. java BIO NIO AIO 理论篇

    http://furturestrategist.iteye.com/blog/1463369 java中的IO主要源自于网络和本地文件 IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO. ...

  4. 【Java IO模式】Java BIO NIO AIO总结

    一同步与异步阻塞与非阻塞 1同步与异步 2阻塞与非阻塞 3IO模式 二BIO 概念描述 特点 代码实现 三NIO 概念描述 特点 代码描述 四AIO 一.同步与异步.阻塞与非阻塞 1.同步与异步 同步 ...

  5. Java BIO NIO

    IO  通信模型 网络通信的本质是网络间的数据 IO.只要有 IO,就会有阻塞或非阻塞的问题,无论这个 IO 是网络的,还是硬盘的.原因在于程序是运行在系统之上的,任何形式的 IO 操作发起都需要系统 ...

  6. Java BIO、NIO、AIO

    同步与异步 同步与异步的概念, 关注的是 消息通信机制 同步是指发出一个请求, 在没有得到结果之前该请求就不返回结果, 请求返回时, 也就得到结果了. 比如洗衣服, 把衣服放在洗衣机里, 没有洗好之前 ...

  7. JAVA 中BIO,NIO,AIO的理解

    [转自]http://qindongliang.iteye.com/blog/2018539 在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解.具体如下: 序号 问题 1 什么是同步? ...

  8. Java之IO,BIO,NIO,AIO

    2019独角兽企业重金招聘Python工程师标准>>> 参考文献一 IO基础知识回顾 java的核心库java.io提供了全面的IO接口.包括:文件读写.标准设备输出等.Java中I ...

  9. 也谈BIO | NIO | AIO (Java版--转)

    http://my.oschina.net/bluesky0leon/blog/132361 关于BIO | NIO | AIO的讨论一直存在,有时候也很容易让人混淆,就我的理解,给出一个解释: BI ...

最新文章

  1. TVM 高效保护隐私 ML
  2. 三天打入CV大赛决赛圈!我是如何做到的?
  3. 打开方式中选择默认方式无反映_「Windows」得看,更改文件的默认应用,告别“打开方式”...
  4. React开发(203):react代码分割之React.lazy
  5. wxpython 基本的控件 (文本)
  6. 【金融基础设施建设01】金融基础设施建设概论(金融基础设施的定义、现状、国内外标准、基本特征、作用、风险)
  7. 深度学习框架江湖群侠传
  8. 基于Element组件下动态生成多级表头以及数据
  9. YDOOK:Pytorch : AI : torch.tensor.size() 与 torch.tensor.shape 的区别
  10. 地磁传感器还可以用于室内定位?
  11. 在联网状态下,有很多网页或者应用无法联网问题,如360安全卫士, Smartscreen筛选器无法访问, 部分网页无法访问等问题的解决方法
  12. Linux常用命令简介
  13. Flutter 实现原理及跨平台实践
  14. 今夕何年(模拟日期)
  15. 基于机智云平台的智能家居系统
  16. js二进制十六进制转换
  17. 基于spark的电影数据分析
  18. 鼠标触摸屏不能用, 键盘部分使用正常,利用向日葵解决问题
  19. 获取www.maigoo.com 景点爬虫,包括1A到5A级景点名称。景点地址,景点描述和景点经纬度
  20. EPERM npm ERR! syscall unlink npm ERR! path D:\vsws\mmp-web-mmp-web-dev\node_modules\.staging\antd-a

热门文章

  1. HDU 5693 D Game 区间dp
  2. bzoj1196 [HNOI2006]公路修建问题
  3. 使用pngquant来压缩png资源缩小apk
  4. IE11与Cognos怪谈
  5. 收集常用的正则表达式
  6. ASP调用sql server 存储过程详解-附带实例-
  7. 再来一次的C语言贪吃蛇小游戏(三)
  8. Dev的关于XtraGrid的使用2
  9. 延迟加载图片并监听图片加载完成
  10. 2015-05-26