logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

epoll 学习记录:ET 都“只通知一次”了,为什么还必须设置非阻塞?

摘要: ET(边缘触发)模式的核心特性是"只通知一次",要求必须一次性处理完所有可用数据。但关键在于必须配合非阻塞IO,原因在于: ET模式下,若未读空缓冲区,可能丢失后续通知 非阻塞IO通过EAGAIN错误码标识"读空"状态 阻塞模式下read/accept会卡死线程,无法实现"读空即停" 正确做法是:设置O_NONBLOCK标志,循环

#学习#网络#服务器
Linux `epoll` 学习笔记:从原理到正确写法(含 ET 经典坑总结)

本文总结了Linux epoll的核心知识点与常见误区。首先对比了epoll与select/poll的性能差异,指出epoll通过内核维护就绪队列实现高效事件通知。接着详细解析epoll三大API的正确用法,包括epoll_create1参数设置、epoll_ctl操作和epoll_wait使用。重点分析了LT与ET模式的区别,强调ET模式必须配合非阻塞IO,必须循环读取直到EAGAIN。文章还提

#linux#服务器#c++ +2
epoll 学习踩坑:`fcntl` 设置非阻塞到底用 `F_SETFL` 还是 `F_SETFD`?

摘要: 在使用epoll的ET模式时,必须正确设置文件描述符为非阻塞(O_NONBLOCK)。常见错误是误用fcntl的F_SETFD参数(用于设置文件描述符标志如FD_CLOEXEC)而非F_SETFL(用于设置文件状态标志如O_NONBLOCK)。错误操作会导致程序阻塞或事件丢失。正确写法应通过F_GETFL/F_SETFL设置非阻塞,并通过循环读取直到EAGAIN确保ET模式正常工作。推荐封

#tcp/ip#网络#服务器 +2
大端、小端与网络字节序:你必须真正弄懂的底层知识

摘要: 字节序(Endianness)指多字节数据在内存中的排列方式,分为大端(高位在前)和小端(低位在前)。不同CPU架构(如x86小端、PowerPC大端)的字节序差异会导致网络通信数据解析错误。为确保兼容性,IETF规定网络字节序统一为大端。因此,网络编程中必须使用htons/htonl将本机整数转换为大端发送,接收时用ntohs/ntohl转回本机字节序。字符串IP无需转换,仅整数类型受影

#网络#linux#服务器 +3
彻底理解大端字节序、小端字节序与网络字节序

摘要: 字节序指多字节数据在内存中的存储顺序,分为大端(高位字节在低地址)和小端(低位字节在低地址)。网络通信统一采用大端字节序(网络字节序)以确保跨平台兼容。实际应用中,需通过htonl、ntohl等函数转换主机序与网络序。字节序影响网络编程、二进制文件处理及数据解析,理解其原理(如小端仅字节顺序反转)是避免数据错乱的关键。记忆口诀:“小端低字节先存,大端高字节先存”。

#网络#linux
一文吃透 Linux 进程:从 PID、PCB 到僵尸回收、fork/exec、守护进程

本文全面介绍了Linux进程管理的核心概念与实践技巧。主要内容包括:进程基本概念(PID/PPID/PCB)、进程状态与生命周期管理(fork/exec/exit/wait)、僵尸进程的成因与解决方案、信号处理与环境变量操作、I/O重定向与管道通信、守护进程创建的关键步骤,以及进程调度优先级相关的nice值和实时调度策略。文章还提供了常用监控工具(如ps/top/strace/lsof)和最佳实践

#linux#服务器#ubuntu +2
Qt 中工具窗体与普通窗体在任务栏中的区别

普通窗体(Main Window)普通窗体是应用程序的主要窗口,通常是用户与应用程序交互的主要界面。Qt 提供了类,用于创建和管理应用程序的主界面。菜单栏:通常包含应用的文件、编辑、视图等菜单项。工具栏:包含常用的工具按钮。状态栏:用于显示应用的状态信息(如进度条、提示信息等)。主工作区域:显示应用程序核心功能的区域。普通窗体的特点是它通常占据大部分屏幕,并且是用户操作的核心界面,具有完整的窗口控

文章图片
#qt#开发语言
C++错误总结

string x;//品种 float y;//重量 float j;//长度 };"草鱼" };return 0;}这是报错的源代码,编译器没有任何报错,但是一编译就出问题,我看了半天才发现原来是struct中的string 前面没有加std::以为我在mani函数前加了using namespace std;但是我定义struct的时候定义在了using namespace std;前面,所以

文章图片
#c++
到底了