背景 1.4版本之前JAVA对IO的支持不完善。 (1)缓冲区 (2)没有Channel,只有输入与输出流 (3)同步阻塞IO(BIO) UNIX的5种IO模型 (1)阻塞IO模型 (2)非阻塞IO模型 (3)IO复用模型 (4)信号驱动IO模型 (5)异步IO Older IO与New IO 异步 ...
分类:
Web程序 时间:
2018-11-25 10:14:39
阅读次数:
197
1. 图示 Nginx 服务处理请求简略过程 2. I/O 模型概述 2.1 同步/异步 同步:Synchronous,调用者等待被调用者返回消息,才能继续执行。 异步:Asynchronous,被调用者通过状态、通知或回调机制主动通知调用者自己的运行状态。 2.2 阻塞/非阻塞 阻塞:Blocki ...
分类:
其他好文 时间:
2018-11-03 11:15:57
阅读次数:
123
中间件负责接收/分发请求给相应的应用,让网站更层次化,也用于安全防控;更可用于负载均衡;支持海量并发。 中间件服务 代理服务 类似产品IIS GWS(google web server) httpd--apache基金会 io复用:解决并发问题,中间件 cpu亲和,绑定 sendfile工作机制使得 ...
分类:
其他好文 时间:
2018-10-23 01:12:10
阅读次数:
175
上文我们描述了五中IO类型。第一种同步阻塞模型我们我们称之为BIO(Blocking IO), 第三种IO复用模型我们称之为NIO(Nonblocking IO)。 上图我们可以很容易的发现 BIO会为每个socket请求创建一个线程,而NIO可以通过一个线程处理多个请求。当然,我们可以为BIO构建 ...
分类:
其他好文 时间:
2018-09-26 17:13:34
阅读次数:
210
最近在看有关IO复用方面的内容,自己也用标准c++库实现了select模型、iocp模型、poll模型。回过头来很想了解QT的socket是基于什么模型来实现的,所以看了QT关于TcpServer实现的相关源码,现在将所了解的内容记录下来,希望对感兴趣的朋友有所帮助。 1.我们先从QTcpServe ...
分类:
其他好文 时间:
2018-09-24 14:49:59
阅读次数:
174
本文来自:https://www.cnblogs.com/aspirant/p/6877350.html?utm_source=itdadao&utm_medium=referral,非常感谢。 如果面试问到IO操作,这篇文章提到的问题,基本是必问,百度的面试官问我三个问题 (1)什么是NIO(No ...
分类:
其他好文 时间:
2018-09-10 13:35:40
阅读次数:
216
I/O复用模型 I/O复用原理:让应用程序可以同时对多个I/O端口进行监控以判断其上的操作是否可以进行,达到时间复用的目的。在书上看到一个例子来解释I/O的原理,我觉得很形象,如果用监控来自10根不同地方的水管(I/O端口)是否有水流到达(即是否可读),那么需要10个人(即10个线程或10处代码)来 ...
分类:
编程语言 时间:
2018-09-06 12:28:21
阅读次数:
224
很详细的看了一下相关的源码和博客,还是记不住具体怎么实现的,还是先把整体框架给写出来吧。 首先,libevent是事件驱动的,也就是event,因此,所有这些都是围绕event展开的。libevent的事件分为普通IO事件,超时事件,和信号事件。 这么多事件,应该怎么管理呢,这个时候event_ba ...
分类:
其他好文 时间:
2018-08-25 14:02:17
阅读次数:
274
epoll是什么? epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些 ...
分类:
其他好文 时间:
2018-08-16 17:39:50
阅读次数:
202
5种IO模型分别如下: 1、阻塞IO模型 当上层应用app1调用recv系统调用时,如果对等方没有发送数据(缓冲区没有数据),上层app1将阻塞(默认行为,被linux内核阻塞)。 当对等方发送了数据,linux内核recv端缓冲区有数据后,内核会把数据copy给用户空间。然后上层应用app1解除阻 ...
分类:
其他好文 时间:
2018-08-03 01:04:44
阅读次数:
114