IO类
挑战不可能,努力
这个作者很懒,什么都没留下…
展开
-
io、nio、netty进化史
传统IO(BIO)在传统IO中,服务端会首先创建一个serverSocket对象,然后新建一个接收新连接的线程(此线程死循环,需要不停接收新连接),当接收每一个新连接后,就会为新连接创建一个线程(此线程也为死循环,目的是为了不断监测这条连接上是否有数据可读),用于读取数据。最后读取数据以字节流的形式。从这样一个服务端逻辑可以出看出一下问题:1.线程资源受限:线程资源十分宝贵,同一时刻有...翻译 2018-09-27 21:48:24 · 262 阅读 · 0 评论 -
非阻塞和同步矛盾吗?NIO并不是真正的异步的!
异步I/O 是指用户程序发起IO请求后,不等待数据,同时操作系统内核负责I/O操作把数据从内核拷贝到用户程序的缓冲区后通知应用程序。数据拷贝是由操作系统内核完成,用户程序从一开始就没有等待数据,发起请求后不参与任何IO操作,等内核通知完成。 同步I/O 就是非异步IO的情况,也就是用户程序要参与把数据拷贝到程序缓冲区(例如java的InputStream读字节流过程)。 同...翻译 2018-09-27 22:05:19 · 596 阅读 · 0 评论 -
Linux下IO复用:epoll和select浅薄认识
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据;通过write,我们可以往流写入数据。现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务...原创 2018-10-04 22:22:53 · 160 阅读 · 0 评论