![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IO
五山口老法师
腾讯后台开发工程师
展开
-
IO: BIO ? NIO ? AIO?
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝...原创 2018-12-19 23:30:57 · 192 阅读 · 0 评论 -
IO:IO知识点
一、概览Java 的 I/O 大概可以分成以下几类:磁盘操作:File 字节操作:InputStream 和 OutputStream 字符操作:Reader 和 Writer 对象操作:Serializable 网络操作:Socket 新的输入/输出:NIO二、磁盘操作File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。递归地列出一个目录下所有文件:...原创 2019-01-15 20:43:34 · 771 阅读 · 0 评论 -
NIO : selector、channel、buffer的实例
不同的SelectableChannel所支持的操作是不同的。例如ServerSocketChannel代表一个ServerSocket,它就只支持OP_ACCEPT操作;当Selector上注册的所有Channel都没有需要处理的IO操作的时候,select方法将会被阻塞,调用该方法的线程被阻塞。int select();//默认阻塞int select(long timeout);...原创 2018-11-18 21:46:56 · 257 阅读 · 0 评论 -
NIO:channel、buffer、状态变量、socket、charset
在开始之前关于本教程新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所无法做到的。在本教程中,我们将讨论 NIO 库的几乎所有方面,从高级的概念性内容到底层的...原创 2019-01-15 22:39:35 · 2366 阅读 · 0 评论 -
IO:同步,异步,阻塞,非阻塞
IO - 同步,异步,阻塞,非阻塞都是老生常谈的东西,多通读几遍,理解透彻! 实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是否完成。 异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。同步和异步针对应用程序来,关注的是程...原创 2019-01-16 21:15:33 · 270 阅读 · 0 评论 -
IO:select、poll、epoll
一、什么是IO?我们都知道unix世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流,不管socket,还是FIFO、管道、终端,对我们来说,一切都是文件,一切都是流。在信息交换的过程中,我们都是对这些流进行数据的收发操作,简称为I/O操作(input and output),往流中读出数据,系统调用read,写入数据,系统调用write。二、文件描述符那么计算机中这么多流,我们...原创 2019-01-16 22:41:15 · 293 阅读 · 0 评论 -
IO:Reactor设计模式
reactor设计模式reactor设计模式,是一种基于事件驱动的设计模式。这个模式的结构图如下:图中的handle对应的是操作系统提供的句柄,例如I/O句柄,Event_Handler类持有这些句柄,(其实就是事件,可以看成是Type)Handles:表示操作系统管理的资源,我们可以理解为fdSynchronous Event Demultiplexer:同步事件分...原创 2019-01-16 22:46:23 · 311 阅读 · 0 评论 -
IO:Reactor和Proactor的区别
系统I/O 可分为阻塞型, 非阻塞同步型、阻塞异步型以及非阻塞异步型。阻塞型I/O意味着控制权只到调用操作结束了才会回到调用者手里。同步非阻塞是会立即返回控制权给调用者的。调用者不需要等等,它从调用的函数获取两种结果:要么此次调用成功进行了;要么系统返回错误标识告诉调用者当前资源不可用,你再等等或者再试度看吧。比如read()操作, 如果当前socket无数据可读,则立即返回E...原创 2019-01-16 22:50:24 · 209 阅读 · 0 评论 -
Proactor设计模式
主动器ProactorProactor模式结构Proactor主动器模式包含如下角色Handle 句柄;用来标识socket连接或是打开文件;Asynchronous Operation Processor:异步操作处理器;负责执行异步操作,一般由操作系统内核实现;Asynchronous Operation:异步操作Completion Event Queue:完成事件队列...原创 2019-03-06 20:33:30 · 1346 阅读 · 0 评论