一、三大类 1、Channels 2、Selector与SelectionKey 3、Buffer及其子类 说明:所有的Channel都需要和Buffer类结合使用,通过Buffer类实现缓冲区 直接通过Channels即可实现同步非阻塞io,SelectableChannel类co...
分类:
编程语言 时间:
2015-10-14 19:33:31
阅读次数:
273
总的来说,java中的IO和NIO主要有三点区别:IONIO面向流面向缓冲阻塞IO非阻塞IO无选择器(Selectors)1.面向流与面向缓冲JavaNIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它...
分类:
编程语言 时间:
2015-09-18 15:37:57
阅读次数:
219
转载自http://www.cnblogs.com/fanzhidongyzby/p/4098546.html服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的...
分类:
其他好文 时间:
2015-09-16 17:54:06
阅读次数:
232
描述IO,我们需要从两个层面:编程语言实现原理底层基础从编程语言层面BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),本文只从Java角度入手。BIO,同步阻塞式IO,简单理解:一个连接一个线程NIO,同步非阻塞IO,简单理解:一个请求一个线程AIO,异...
分类:
编程语言 时间:
2015-09-11 23:23:38
阅读次数:
210
然后借鉴下《Unix网络编程卷》中的理论: IO操作中涉及的2个主要对象为程序进程、系统内核。以读操作为例,当一个IO读操作发生时,通常经历两个步骤: 1,等待数据准备 2,将数据从系统内核拷贝到操作进程中 例如,在socket上的读操作,步骤1会等到网络数据包到达,到达后会拷贝到系统内核的...
分类:
编程语言 时间:
2015-09-01 19:51:14
阅读次数:
193
在开始之前关于本教程新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所...
分类:
编程语言 时间:
2015-09-01 19:46:54
阅读次数:
230
一、阻塞io操作和非阻塞io操作
对于阻塞io操作:当cpu得不到需要的文件数据的时候,则将自己挂起,直到有了数据,才能执行下面的操作。
非阻塞io: 当cpu得不到文件时候,其一直在轮询cpu,直达得到数据。
二、文件描述符
对于内核而言,所有打开的文件,都用文件描述符来引用。所有的文件操作都是由内核态完成的,当一个用户的进程创建一个文件时候,内核会给其返回一个文件描述符。
...
分类:
其他好文 时间:
2015-08-29 21:50:15
阅读次数:
219
会阻塞的函数:connect,accept,send/recv/sendto/recvfrom等读写函数.不会阻塞的函数:bind, listen,socket, closesocket.linux网络通信模型有:阻塞IO模型(同步),非阻塞IO模型(拷贝同步),IO复用模型(多线程同步),信号驱动...
分类:
系统相关 时间:
2015-08-19 00:28:26
阅读次数:
206
谈到IO,阻塞、非阻塞,异步、同步是绕不开的话题。说实话,我也没搞清楚,网上查了许多资料,大家众说纷纭,一种比较靠谱的说法是:”在处理 IO 的时候,阻塞和非阻塞都是同步 IO,使用使用了特殊的API才是异步IO“。知乎的回答相对来说可信度高点,大家姑且可以先看着:http://www.zhihu....
分类:
其他好文 时间:
2015-08-02 00:54:05
阅读次数:
130
Libevent is a library for writing fast portable nonblocking IO. libevent是一个为编写快速可移植的非阻塞IO程序而设计的。libevent组件 libevent包括了以下组件: 1.evutil Generic fun...
分类:
其他好文 时间:
2015-07-31 21:47:25
阅读次数:
167