站长工具官网做公司网站需要什么程序

张小明 2026/1/19 22:34:30
站长工具官网,做公司网站需要什么程序,网站备案掉了什么原因,html5制作网站首页文章目录引言Select#xff1a;早期的探索Poll#xff1a;Select 的链表版Epoll#xff1a;Linux 的杀手锏Java和Go有什么需要了解的小知识#xff1f;总结引言 作为一个 Java 和 Go 后端开发者#xff0c;深刻理解 IO 多路复用是掌握高性能网络编程#xff08;如 Netty…文章目录引言Select早期的探索PollSelect 的链表版EpollLinux 的杀手锏Java和Go有什么需要了解的小知识总结引言作为一个 Java 和 Go 后端开发者深刻理解 IO 多路复用是掌握高性能网络编程如 Netty的基石。简单来说IO 多路复用是一种允许单个线程同时监视多个文件描述符FD, File Descriptor的技术。一旦某个 FD 就绪读/写就绪内核会通知应用程序进行处理。如果没有它处理 10,000 个并发连接可能需要 10,000 个线程资源消耗巨大或者使用非阻塞 IO 轮询空转烧 CPU。下面我将从底层原理对比select、poll和epoll进行说明。Select早期的探索select是最早期的 IO 多路复用实现。工作原理用户进程将需要监视的fd_set一个位图 bitmap拷贝到内核空间。内核遍历一遍所有的 socket如果有数据就标记为可读/可写。内核将fd_set拷贝回用户空间。用户进程再次遍历fd_set找到被标记的 socket 进行处理。缺点性能开销大每次调用都要把 FD 集合在用户态和内核态之间拷贝内核和用户态都需要遍历整个 FD 集合时间复杂度O ( n ) O(n)O(n)。连接数限制默认限制为1024个连接由FD_SETSIZE宏定义虽然可以改但效率会急剧下降。总的原因就是每次调用都需要拷贝fd_set而且需要进行线性循环。来个形象的比喻就是服务员需要挨个问客人你点好单了吗不用想都是效率十分低下。这张图展示了select低效的原因每次调用都需要在用户态和内核态之间拷贝整个文件描述符集合 (fd_set)并且内核和用户程序都需要进行 O(n) 的线性遍历。PollSelect 的链表版poll和select本质区别不大。工作原理它使用pollfd结构体的链表或数组而不是 bitmap 来传递 FD。改进点没有最大连接数限制受限于系统内存和文件描述符限制。缺点性能依然是瓶颈它和select一样内核需要线性遍历所有 FD 来检查状态用户态也需要遍历所有 FD 来查找谁就绪了。随着连接数增加性能线性下降最大的性能瓶颈并没有解决所以这个我们并不需要太了解。EpollLinux 的杀手锏epoll是为了解决 C10K 问题而生的它是目前 Linux 下高性能网络编程的核心。核心设计三个函数epoll_create在内核创建一个 epoll 对象内部结构是一棵红黑树和一个双向链表。epoll_ctl向红黑树中添加、删除或修改感兴趣的 FD。这也是O ( log ⁡ n ) O(\log n)O(logn)的效率比线性扫描快得多。epoll_wait等待事件。工作原理Callback 机制epoll不再轮询。它为每个 FD 注册一个回调函数。当网卡接收到数据中断程序会调用回调函数将该 FD 添加到就绪链表Ready List中。epoll_wait实际上只是在检查这个就绪链表是否为空。用户进程只需要处理就绪链表中的 FD不需要遍历所有连接。优点效率极高时间复杂度为O ( 1 ) O(1)O(1)严格来说是O ( k ) O(k)O(k)k 为活跃连接数。性能不会随总连接数增加而下降只与“活跃”连接数有关。内存拷贝少使用了 mmap内存映射技术或高效的内存管理减少了复制开销注现代实现主要是避免了像 select 那样每次调用都重复传入整个 FD 集合。两种触发模式LT (Level Triggered - 水平触发)默认模式。只要缓冲区还有数据内核就会一直通知你。ET (Edge Triggered - 边缘触发)高速模式。只有数据状态发生变化从无到有时通知一次。如果你不读完内核不会再通知这要求程序必须一次性把数据读完。Go 和 Nginx 使用的是 ET 模式的变种或思想来追求极致性能。不好理解来个比喻服务员再也不用去挨个问是否点好单而是由大堂经理将需要订单的顾客名单给服务员去通知后厨这张图展示了epoll高效的原因它使用红黑树来管理所有的文件描述符只需注册一次并采用事件驱动的机制。当网络设备有数据到达时通过回调函数直接将就绪的 FD 加入到“就绪链表”中应用程序只需要处理这个链表即可无需遍历所有连接Java和Go有什么需要了解的小知识作为后端开发了解这些对你理解语言底层至关重要Java (NIO / Netty):Java 的java.nio.channels.Selector是一个抽象层。在 Linux 上JDK 会自动映射到底层的epoll。Netty的核心 EventLoop 也就是在一个线程中不断轮询这个Selector即epoll_wait实现了高性能的 Reactor 模型。Go (Goroutine Netpoller):Go 的网络编程看起来是同步阻塞的比如conn.Read()但底层完全是异步非阻塞的。Go Runtime 包含了一个Netpoller网络轮询器。在 Linux 下Netpoller 封装了epoll。当你调用conn.Read()且没有数据时Go 调度器会将该 Goroutine 挂起Gopark并将 FD 注册到epoll中。当epoll通知数据就绪Go 调度器再唤醒该 Goroutine。这就是 Go 高并发的核心秘密用同步的代码逻辑享受了 epoll 的异步性能。总结这就是全部内容下面是一个小结表格。特性SelectPollEpoll底层数据结构Bitmap (数组)链表 / 数组红黑树(存储FD) 双向链表(存储就绪FD)时间复杂度O ( n ) O(n)O(n)O ( n ) O(n)O(n)O ( 1 ) O(1)O(1)(与活跃数有关)最大连接数1024 (默认)无限制无限制 (受系统内存限制)IO效率随连接数增加而显著下降随连接数增加而显著下降不随总连接数线性下降数据拷贝每次调用都需要拷贝全部 FD每次调用都需要拷贝全部 FDFD 仅在注册时拷贝一次如果觉得我讲的好就给我点赞收藏关注吧这是我更新的最大动力❤️
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站基本教程设计一个网站需要多久

面向现代数据栈的Python数据预处理工程实践:从管道设计到生产部署 引言:超越pandas.read_csv()的预处理新时代 在数据科学和机器学习项目的生命周期中,数据预处理通常占据70%以上的时间和精力。然而,大多数教程仍停留在使用pandas…

张小明 2026/1/17 22:56:02 网站建设

网站转化路径开发网站和application

还在为网易云音乐下载的NCM格式文件无法在其他设备上播放而烦恼吗?ncmdumpGUI作为一款专业的C#开发工具,能够高效处理NCM格式,将您的音乐收藏转换为通用的音频格式,实现真正的跨平台音乐自由。 【免费下载链接】ncmdumpGUI C#版本…

张小明 2026/1/17 22:56:04 网站建设

建设的网站如何让用户注册h5框架做网站

数据结构与算法:从基础到应用 1. 图的节点着色与最短路径搜索 在处理图数据结构时,节点着色和最短路径搜索是两个重要的问题。 1.1 节点着色 节点着色是指为图中的所有节点分配颜色(用数字表示),同时要遵循相邻节点不能使用相同颜色的规则,并且使用的颜色数量应尽可能…

张小明 2026/1/17 22:56:05 网站建设

暗网做网站广州 网站开发 公司电话

PyTorch-CUDA-v2.7镜像中训练中文BERT模型的实践 在当今中文自然语言处理任务日益复杂的背景下,如何快速构建一个稳定、高效且可复现的深度学习训练环境,已经成为研究者和工程师面临的首要问题。尤其是在使用像 BERT 这样的大规模预训练模型时&#xff0…

张小明 2026/1/17 22:56:06 网站建设

正规的网站制作服务商自己切片做网站

特性工作输入电压范围:1.6V至5.5V固定输出电压:0.8V、0.9V、1.0V、1.05V、1.1V、1.2V、1.3V、1.35V、1.5V、1.8V、1.85V、2.1V、2.2V、2.3V、2.5V、2.6V、2.7V、2.8V、2.85V、2.9V、3.0V、3.1V、3.3V、3.6V、4.2V、4.4V和5.0V输出电压可从0.8V调节至5.0V…

张小明 2026/1/17 22:56:06 网站建设

网站会员营销南宁学做网站

Markdown表格对齐技巧:Miniconda-Python3.10中pandas输出美化方案 在撰写技术文档、实验报告或项目复盘时,你是否曾遇到这样的尴尬?精心分析的数据结果,一粘贴到 Markdown 文档里,表格就“散架”了——列宽错乱、数字没…

张小明 2026/1/19 17:18:11 网站建设