- 博客(18)
- 收藏
- 关注
原创 【C++网络编程】epoll实现简易服务器的基本流程
epoll在高并发场景下具有更卓越的性能。首先,epoll 在内核层面采用基于事件回调的高效机制。当应用程序通过 epoll_ctl()注册文件描述符时,内核会为其建立回调关系:当某个 fd 的状态发生变化(如接收到数据),网络设备驱动程序会主动通知内核回调函数,直接将就绪的 fd 加入就绪链表。而 select/poll 则采用轮询机制,每次调用都需要全量扫描所有监控的 fd,消耗 O(n) 时间。此外,epoll 通过内存映射(mmap) 技术。
2025-08-08 20:47:41
210
原创 【C++网络编程】poll实现简易的服务器流程
select通过维护一个bitmap来检查是否有事件就绪,使得最大连接数限制在1024。poll通过维护一个包含多个pollfd结构体的集合来检查是否有事件就绪,解除了这个限制。int fd;// 监控的文件描述符// 监视的事件类型(输入参数)// 实际发生的事件(输出参数)在工作时,首先将pollfd数组的指针和长度从用户空间传递给内核空间,内核轮询监控数组中的fd是否就绪,时间复杂度为O(n)。如果就绪则将revents设置为实际发生的事件,并且将就绪事件个数加1。最后返回就绪的fd的个数。
2025-08-08 17:21:38
282
原创 【C++网络编程】select实现简易服务器的流程
select是实现I/O多路复用的一种方式,其它常见复用技术还有poll、epoll。select通过一个系统调用监控多个文件描述符。在工作时,首先将需要监听的fd_set(包括读、写、异常三种事件集合,代码示例只监听了读集合)从用户空间完整地拷贝到内核,内核会遍历fd_set检查是否有就绪的fd,若没有就阻塞,时间复杂度为O(n)。如果有事件发生,就将fd_set又完整地从内核拷贝到用户空间。用户通过遍历,对就绪的fd进行处理,时间复杂度为O(n)。
2025-08-08 16:14:22
257
原创 C++异常
异常(Exception)是指程序运行过程中发生的错误或意外情况,通常是指那些导致程序不能继续正常执行的问题。在 C++ 中,异常是通过 try、throw 和 catch 语法来处理的,允许程序在运行时捕捉到这些错误并做出响应,从而避免程序崩溃。你可以定义自己的异常类来表示特定类型的错误。通常,这些异常类应该继承自 std::exception 类,并重写 what() 函数来提供异常信息。public:try {// 抛出自定义异常// 捕获并打印自定义异常。
2025-06-21 21:57:57
947
原创 STL排序函数sort和qsort
类型安全: sort 是类型安全的,而 qsort 不是。性能: sort 通常比 qsort 更快,因为它可以在编译时优化。通用性:qsort 更为通用,适用于任何类型的数据,只要提供了正确的比较函数。容器支持: sort 是STL的一部分,专门用于C++容器和数组,而 qsort 更多地用于C风格的数组。
2025-06-20 21:11:36
289
原创 C++ 容器类 <list>
是 C++ 标准模板库(STL)中的一个序列容器,它允许在容器的任意位置快速插入和删除元素。与数组或向量不同, 不需要在创建时指定大小,并且可以在任何位置添加或删除元素,而不需要重新分配内存。
2025-06-18 20:20:18
136
原创 Anti-UAV 反无人机大赛数据集处理脚本(3)YOLO结果转提交格式
【代码】Anti-UAV 反无人机大赛数据集处理脚本(3)YOLO结果转提交格式。
2025-06-16 21:36:01
391
原创 Anti-UAV 反无人机大赛数据集处理脚本(1)标签转换为YOLO格式
【代码】Anti-UAV 反无人机大赛数据集处理脚本(1)标签转换为YOLO格式。
2025-06-16 21:33:25
400
原创 C++继承
个人C++学习笔记。继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),以前我们接触的函数层次的复用,继承是类设计层次的复用。
2025-06-16 21:28:07
914
原创 TransVisDrone无人机检测
记录了论文的大致内容,方便快速回顾论文。会议:2023 IEEE International Conference on Robotics and Automation (ICRA)
2025-06-09 12:20:19
552
原创 二分查找学习
当区间为左闭右开时,循环条件为while(start < end) ,下标更新 start = mid + 1,如果不+1,那么下次循环仍会检查target和nums[mid]的值,可能造成死循环。以下面的代码为例,初始化end时就已经定义了你选定的区间。如果初始化end为数组长度,那么区间为左闭右开;如果初始化end为数组长度-1,那么区间为左闭右闭。同理,当区间为左闭右闭时,循环条件为while(start <= end) ,下标更新 start = mid + 1,end = mid -1。
2025-06-07 17:24:20
222
原创 无人机检测与跟踪方法EDTC
为了快速回忆论文的大概内容做的笔记。论文名称为《Evidential detection and tracking collaboration: New problem, benchmark and algorithm for robust anti-uav system》。
2025-06-05 23:17:21
1012
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅