网站开发用什么seo是什么意思 seo是什么职位
BIO (Blocking I/O):
Block IO 同步阻塞式 IO ,传统 IO,特点是模式简单、使用方便,并发处理能力低。
同步阻塞 I/O 模式,数据的读取写入必须阻塞在一个线程内等待其完成,在活动连接数不是特别高(小于单机1000)的情况下,让每一个连接专注于自己的 I/O 并且编程模型简单,不过多考虑系统的过载、限流等问题。
线程池本身就是一个天然的漏斗,可以缓冲一些系统处理不了的连接或请求,当面对十万甚至百万级连接的时候,传统的BIO 模型是无能为力的,需要一种更高效的I/O 处理模型来应对更高的并发量
使用场景分析:
BIO 方式 适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,
并发局限于应用中,JDK1.4 之前的唯一选择,但程序直观简单易理解,如在Apache中使用。
NIO (New I/O):
Non IO 同步非阻塞 IO ,是传统 IO 的升级,客户端和服务器端通过Channel(通道)通讯,实现了多路复用。
同步非阻塞 I/O 模型,在Java 1.4 中引入了NIO 模型,对应java.nio 包,提供了Channel,Selector,Buffer等抽象。NIO 中的 N 理解为Non-blocking ,不单纯是New。它支持面向缓冲的,基于通道的 I/O 操作方法,提供了与传统 BIO 模型中的Socket 和 ServerSocket 相对应的SocketChannel 和 ServerSocketChannel 两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式。
阻塞模式使用就像传统中的支持一样,比较简单,但性能和可靠性都不好;
非阻塞模式与之相反。
对于低负载、低并发的应用程序,可以使用同步阻塞I/O 来提升开发速率和更好的维护性;
对于高负载、高并发的(网络)应用,应使用NIO 的非阻塞模式来开发
使用场景分析:
NIO 方式适用于连接数目多且连接比较短(轻操作)的架构,
如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4 开始支持,
如在Nginx、Netty中使用。
AIO (Asynchronous I/O):
Asynchronous IO 是 NIO 的升级,也叫 NIO 2 ,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。
在Java 7 中引入了NIO 的改进版 NIO 2,是异步非阻塞的 IO 模型,应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。
AIO 是异步 IO 的缩写,虽然NIO 在网络操作中,提供了非阻塞的方法,但是NIO 的IO 行为还是同步的,业务进程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行IO 操作,IO 操作本身是同步的,
使用场景分析:
AIO 方式适用于连接数目多且连接比较长(重操作)的架构,
如相册服务器,充分调用OS 参与并发操作,编程比较复杂,JDK7 开始支持,
在成长中,AIO 的应用还不广泛,Netty 之前尝试使用过 AIO ,不过又放弃了