怎样创网站,做网站教学视频,嘉定网站建站,网站开发 质量管理从历史进程来看可能会比较好早期计算机性能较差的情况下反正你同时也没法同时处理很多io#xff0c;不如开一个就阻塞在那边#xff0c;程序员编程也省事#xff0c;别的花里胡哨的骚操作还未必有这种方式性能高#xff0c;这个叫做bio后面cpu内存性能上去了#xff0c;磁…从历史进程来看可能会比较好早期计算机性能较差的情况下反正你同时也没法同时处理很多io不如开一个就阻塞在那边程序员编程也省事别的花里胡哨的骚操作还未必有这种方式性能高这个叫做bio后面cpu内存性能上去了磁盘还那样磁盘io成瓶颈了就弄了新api出来扫描出传输完毕数据就绪的io句柄进行操作这里因为早期cpu核心数少所以扫描出就绪的io句柄都是同步一个个执行的这个叫nio再后来cpu核心数多了发现这种按模式就是一核有难3核围观就使用空间复杂度更高的实现方式把处理就绪io句柄异步分发到线程池里执行这个叫做aio同期互联网用户的量上来了然后网络通信占用的连接数指数增加然后发现linux最早提供的把所有io句柄放在一个list里scan就绪io句柄的实现在1w链接情况下因为o(n)时间复杂度变成了性能瓶颈于是就提供了一个基于二叉树实现的发现就绪句柄的api叫做epoll再后来程序员把网络这块的性能反复挖掘发现每次网络io数据都要从网卡拷贝到操作系统然后操作系统再拷贝到应用内应用内自身可能又被反复拷贝来拷贝去做处理于是就弄出来各种框架有用于应用内零拷贝的封装实现(netty的bytebuffer)有直接访问操作系统数据的零拷贝实现(堆外内存映射)甚至有框架直接旁路了操作系统在应用层直接访问网卡数据(dpdk)各种api基本上就是个填坑史