出处: Java NIO浅析 NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。 那么NIO的本质是什么样的呢?它是怎样与 ...
分类:
编程语言 时间:
2019-10-28 23:48:43
阅读次数:
136
epoll(2) 使用及源码分析的引子 本文代码取自内核版本 4.17 epoll(2) I/O 事件通知设施。 epoll 是内核在2.6版本后实现的,是对 select(2)/poll(2) 更高效的改进,同时它自身也是一种文件,不恰当的比方可以看作 eventfd + poll。 多路复用也是 ...
分类:
其他好文 时间:
2019-10-26 17:39:45
阅读次数:
88
三种IO复用类型 #include<sys/select.h> int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* execptfds,struct timeval* timeout); #nfds表示监听的文件描述符总数; ...
分类:
其他好文 时间:
2019-10-26 13:35:27
阅读次数:
103
Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engineX”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器.Nginx是由俄罗斯人IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发.Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是Ngin
分类:
其他好文 时间:
2019-10-25 09:53:20
阅读次数:
100
处理链接 1:首先内核经过请求的三次握手成功后通过操作系统的负载均衡算法选择一个监听的worker进程 2:worker进程通过epoll事件机制epoll-wait方法返回一个链接句柄 3:事件模块epoll分配链接内存池 connection_pool_size:512字节 4:事件模块回调Ht ...
分类:
Web程序 时间:
2019-10-24 09:31:45
阅读次数:
117
众所周知Redis是单进程单线程的应用,在如今多核横行的时代,我们不免有疑问,单线程的redis怎么就成了高性能的代表 当有多个线程同时调用redis的时候,那么单线程的redis是怎么处理的呢,这里就不得不说redis内部的IO模型 首先要提到几个概念,阻塞IO,非阻塞IO,同步IO,异步IO,多 ...
分类:
其他好文 时间:
2019-10-22 18:25:23
阅读次数:
83
网络部分 1、tcp/udp区别 2、tcp 三次握手/ connect/ accept 关系, read返回0 3、select/ epoll ET/LT 在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBL ...
分类:
其他好文 时间:
2019-10-20 13:21:12
阅读次数:
77
句柄与指针的区别 学习C++的人都知道句柄和指针,而且我发现很多人在句柄与指针之间直接划等号,对我们来说两者都是地址,我觉的这也造成很多人将句柄和指针划等号的直接原因。 首先说指针吧。通俗一点就是地址,他是内存的编号,通过它我们可以直接对内存进行操作,只要地址不变,我们每次操作的物理位置是绝对不变,... ...
分类:
编程语言 时间:
2019-10-20 01:09:43
阅读次数:
108
select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048。不过 epoll则没有这个限制,它所支持的fd上限是最大可以打开文件的数目,这个数字一般远大于2048,一般来说内存越大,fd上限越大,1G内存都能达到大约10w左右。 select的轮询机制是系统会去查 ...
分类:
其他好文 时间:
2019-10-18 16:03:50
阅读次数:
86
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时 ...
分类:
其他好文 时间:
2019-10-17 15:41:46
阅读次数:
145