随笔分类 -  C++

摘要:以下是一个简单的C++ 内存池实现示例,内存池的主要目的是提前分配一块较大的内存区域,然后在需要内存时从这块预分配的区域中分配,使用完毕后归还到池中,避免频繁地向操作系统申请和释放内存,从而提高内存分配和释放的效率,尤其适用于频繁进行小块内存分配和释放的场景。 #include <iostream> 阅读全文
posted @ 2025-01-02 18:23 MarsCactus 阅读(12) 评论(0) 推荐(0) 编辑
摘要:以下是一个较为完整的C++实现的类似QQ聊天协议的代码示例,涵盖了发送文字、表情、图片、音频、文件等多种消息类型,考虑了数据量超过UDP最大有效载荷时的处理方式,并且加入了相对完善的可靠性机制(如校验和、确认与重传、超时处理等)。代码中使用了之前介绍的内存池来优化内存分配与管理,提升性能(内存池部分 阅读全文
posted @ 2025-01-02 18:09 MarsCactus 阅读(20) 评论(0) 推荐(0) 编辑
摘要:当利用UDP输出文件且文件大小超过了UDP承载的最大有效数据量(受网络MTU等因素限制,如以太网中UDP数据部分通常不宜超过1472字节)时,可以通过以下方式来定义数据包协议: 1. 自定义首部 设计一个简单的应用层首部添加在UDP数据报的数据部分之前,用于描述文件相关信息,首部中可以包含以下关键字 阅读全文
posted @ 2025-01-02 17:08 MarsCactus 阅读(161) 评论(0) 推荐(0) 编辑
摘要:SQL(Structured Query Language,结构化查询语言)是用于管理关系数据库的标准语言,其中增删改查(CRUD)是最基本也是最常用的操作,以下分别对它们进行详细介绍: 1. 插入数据(INSERT) - 增 基本语法: 用于向表中插入新的数据行。基本格式如下: INSERT IN 阅读全文
posted @ 2024-11-10 00:29 MarsCactus 阅读(86) 评论(0) 推荐(0) 编辑
摘要:在 C++ 中,条件变量的等待操作主要通过std::condition_variable类来实现,其等待操作涉及到与互斥锁的配合使用,以下是详细的实现过程: 包含必要的头文件 首先需要包含<condition_variable>和头文件,因为条件变量std::condition_variable的使 阅读全文
posted @ 2024-11-09 18:18 MarsCactus 阅读(93) 评论(0) 推荐(0) 编辑
摘要:在使用条件变量进行多线程编程时,确实存在丢失通知的风险,以下是一些可以避免丢失通知的方法: 正确的等待条件设置 原理: 条件变量是基于特定条件来让线程等待或继续执行的。如果等待条件设置得不准确,可能会导致线程在不应该醒来的时候醒来,或者错过真正需要醒来的时机,从而出现通知丢失的情况。所以,要确保等待 阅读全文
posted @ 2024-11-09 18:11 MarsCactus 阅读(31) 评论(0) 推荐(0) 编辑
摘要:互斥锁(Mutex) 原理: 互斥锁用于保护共享资源,确保在同一时刻只有一个线程能够访问被保护的资源。当一个线程想要访问共享资源时,它首先尝试获取互斥锁。如果锁已经被其他线程持有,那么该线程会被阻塞,直到锁被释放。一旦获取到锁,线程就可以安全地访问共享资源,访问结束后再释放锁,以便其他线程能够获取锁 阅读全文
posted @ 2024-11-09 18:10 MarsCactus 阅读(143) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示