摘要: 1 Selector介绍 选择器提供选择执行已经就绪的任务的能力,从底层来看,Selector提供了询问通道是否已经准备好执行每个I/O操作的能力。Selector 允许单线程处理多个Channel。Selector工作过程如下图; 选择器(Selector); Selector选择器类管理着一个被 阅读全文
posted @ 2019-05-02 22:01 会飞的喵星人 阅读(173) 评论(0) 推荐(0) 编辑
摘要: Buffer Java NIO中的Buffer用于和NIO通道进行交互,缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。缓冲区实际上是一个容器对象,更直接的说,其实就是一个数组,在NIO库中,所有数据都是 阅读全文
posted @ 2019-05-02 15:39 会飞的喵星人 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 1 Socket通道 所有的socket通道类(DatagramChannel、SocketChannel和ServerSocketChannel)都继承了位于java.nio.channels.spi包中的AbstractSelectableChannel。请注意DatagramChannel和S 阅读全文
posted @ 2019-05-02 13:26 会飞的喵星人 阅读(320) 评论(0) 推荐(0) 编辑
摘要: Channel概述 Channel是一个通道,可以通过它读取和写入数据,通道与流的不同之处在于通道是双向的,流是单向的;NIO中通过channel封装了对数据源的操作,通过channel 我们可以操作数据源,但又不必关心数据源的具体物理结构。在大多数应用中,channel与文件描述符或者socket 阅读全文
posted @ 2019-05-02 10:05 会飞的喵星人 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 1 NIO概述 1.1NIO(new IO)是一个可以替代java IO API的API,NIO提供了与标准IO不同的工作方式,标准IO是基于字节流和字符流进行操作的,而NIO是基于channel和Buffer进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写到通道中,方式如例图示,JAVA N 阅读全文
posted @ 2019-05-01 14:26 会飞的喵星人 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 1、概述 select,poll,epoll都是IO多路复用的机制。I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负 阅读全文
posted @ 2019-05-01 14:26 会飞的喵星人 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 反应器Reactor: 在事件驱动的应用中,应用中的请求总是通过事件(如CONNECTOR、READ、WRITE等)来表示,当多个请求同时到来时,这些请求最终还是会被序列化地处理,在序列化处理这些服务前,应用程序必须先分离和调度这些同时到达的事件,想要有效地做到这点,要做好如下四方面工作: 1、为了 阅读全文
posted @ 2019-05-01 09:04 会飞的喵星人 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 1 阻塞I/O(blocking IO) 应用程序调用一个IO函数,导致应用程序阻塞,如果数据已经准备好,从内核拷贝到用户空间,否则一直等待下去。一个典型的读操作流程大致如下图,当用户进程调用recvfrom这个系统调用时,kernel就开始了IO的第一个阶段:准备数据,就是数据被拷贝到内核缓冲区中 阅读全文
posted @ 2019-04-29 23:08 会飞的喵星人 阅读(3476) 评论(0) 推荐(1) 编辑
摘要: 1、概述 ArrayList是我们最常用的集合类,它支持随机访问,查询速度非常快,插入,删除则耗时较多,ArrayList支持存储重复性的数据,空数据;ArrayList是变长集合,它基于定长数组实现,在集合中数据达到数组的最大限,他会重新创建一个更大容量的数组,把原先数组中的数据复制到新的数组,a 阅读全文
posted @ 2019-04-16 21:13 会飞的喵星人 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 1散列的价值在于它的速度:散列使得查询变快,它将键key保存在某处,而我们知道存储一组数组最快的数据结构是数组,所以用它来表示键的信息(注意,数组保存的是键的信息,不是键本身),由于数组是固定的,当我们希望在Map中存放不确定数量的对象时,数组本身不保存键本身,而是通过键生成一个数字,将其作为数组下 阅读全文
posted @ 2019-04-14 18:12 会飞的喵星人 阅读(286) 评论(0) 推荐(0) 编辑