0.想找个理由出门逛gai…

关于NIO的底层实现、demo CSDN-方志朋
linux的zero-copy操作 by 公众号- 朱小厮的博客
各种IO的基础讲解 by 公共号-朱小厮的博客
BIO、NIO、AIO的大白话 by CSDN-涂有

java中的AIO、demo by CSDN-茅坤宝骏氹
IO设计模式:Reactor和Proactor对比 by segmentfault-大CC

1. zero-copy

一次IO中用户、内核进程


减少由内核到用户上下文的一次切换

借助偏移减少内核中buffer数据传输的效率(较copy)

减少一次“拷贝”中不必要的1次copy(内存中从内核空间到用户空间之间的上下文切换)
通过操作系统的支持(linux下的sendFile()),可以将文件不透过用户空间,直接传入到套接字
java针对zero-copy的支持即NIO相关API:XxxChannel.transferTo()

2. IO对比

BIO每个连接需要创建一条线程以轮询socket适合连接数较小
NIOnon-blocking io事件驱动的IO由单线程的selector(多路复用器)以间接的轮询socket适合多连接、小量数据
AIO有说法管他叫 —— NIO 2.0(较NIO多了异步,基于OS内核的支持实现)不需要轮询,内核中真正的IO一旦完成,将告知用户进程将数据的读写操作放到内核进程中完成,用户进程只做处理适合连接数多、数据量大

3. NIO

五种IO模型
IO阻塞的时机等待数据准备 (Waiting for the data to be ready)将数据从内核拷贝到进程中 (Copying the data from the kernel to the process)
socket阻塞process->socket线程各自recvfrom轮询->通知process
selector阻塞process->selector recvfrom轮询socket线程->通知process->可复用的IO

4. java关于NIO的api

Buffer针对用于缓冲数据的数组的一个封装
Selector单线程的处理多个channel的连接
Channel对比stream来说,channel是双向的(读/写)   包括 文件、UDP、TCP的IO

5. AIO

实现方式:将来式基于多线程实现(用户进程)回调靠的就一手OS的支持(内核线程)

将来式

回调

Java 随笔 IO相关推荐

  1. Java 的 IO 流

    接着上一篇的 "Java 的 File 类" 的随笔,在File类的基础上,我们就走进Java的IO流吧. 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的 ...

  2. Java中IO流,输入输出流概述与总结(转载自别先生文章)

    Java中IO流,输入输出流概述与总结 总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...

  3. Java输入输出(io)流详解、图解

    stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源.在Java的IO中,所有的stream(包括Inputstream和Out stream)都包括两种类型: (1)字节流 ...

  4. Java基础—IO流

    第一讲   IO概述 1. 流的概念 IO流即InputOutput的缩写,在Java中IO流用来处理设备之间的数据传输,Java对数据的操作是通过IO流的方式, 我们可以把IO流抽象的当作一根管道, ...

  5. Java 之 IO 异常的处理【了解】

    Java 之 IO 异常的处理[了解] 参考文章: (1)Java 之 IO 异常的处理[了解] (2)https://www.cnblogs.com/niujifei/p/11491359.html ...

  6. JAVA网络IO编程

    2019独角兽企业重金招聘Python工程师标准>>> JAVA网络IO编程(BIO NIO AIO) 一.传统的BIO编程 1.网络编程的基本模型是C/S模型,即两个进程间的通信. ...

  7. Java之IO,BIO,NIO,AIO

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

  8. java数据通道抽象为流_【java】IO流

    对于java的IO流的理解很长时间来都是很乱,包括学习其他的语言对这一块知识也都算是一个盲点.更多的时候一提到读取保存数据就是使用数据库.这一次学习了IO流,自己又解决了一个很大的盲点. IO流为我们 ...

  9. 【Java】IO Stream详细解读

    什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列. Java的I/O流提供了读写 ...

  10. 第15章-输入/输出 --- 理解Java的IO流

    (一)理解Java的IO流 JAVA的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出(键盘.文件.网络连接等)抽象表述为"流"( ...

最新文章

  1. MIT:睡眠不足会让你连路都走不好,但补觉还有救
  2. C++library Sort库排序的实现算法(附完整源码)
  3. iceberg对接flinksql测试
  4. SQL2008 SQLserver(express)服务不能启动
  5. Ubuntu(Debian)apt-get
  6. ‘utf-8‘ codec can‘t decode byte 0xb8 in position 0: invalid start byte
  7. 微软公布Netgear 固件严重漏洞详情,可盗取用户身份并攻陷系统
  8. python之helloworld
  9. python卸载_微软再出神器,这次终于对Python下手了!
  10. Eclipse中启动tomcat访问404解决及原因
  11. 微信小游戏 - 开发工具安装 - 官方 Demo 运行
  12. Linux安装redis(6.0.9)环境
  13. 深入解析数码相机CCD坏点及噪点检测!【图解教程】
  14. iOS蓝牙开发(三)实现外设功能
  15. 世界名牌大学课件下载地址
  16. R语言系统教程(六):描述统计量
  17. 计算机键盘时好时坏,电脑鼠标时好时坏的解决方法
  18. 写论文中怎么插入参考文献
  19. 测绘资质申请标准及好处
  20. Redirect 重定向

热门文章

  1. 记2015年的腾讯校招经历——状态篇
  2. 微信公众平台测试账号申请地址
  3. linux给文件夹图标,Linux 如何在启动器中自定义图标
  4. 许多大学生喜欢玩计算机游戏英语作文,英语作文:现在一些青少年沉迷于网络游戏...
  5. 25岁女生,转行学前端合适吗?
  6. html语言间距怎么设置,HTML文字的间距怎么设置
  7. this指向问题(箭头函数)
  8. R矩形树状图 treemap
  9. 做一个有意境的女人难上加难
  10. 【前端优化】在线图片压缩有这4个网站就够了(免费又好用)