自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(490)
  • 资源 (10)
  • 收藏
  • 关注

原创 C++_397_InputMethod 单例信号绑定未断开(InputMethod一直存在),切页面后触发已销毁的 NumEdit 回调导致 UI 卡死

如果你发给我 InputMethod 的 connect_signal / disconnect_signal 实现,我还能更精准确认。但 ✘ 不推荐,因为不同页面有不同的编辑框,逻辑上每个页面的 RsNumEdit 都需要响应 keyboardClosed。→ 调用 RsNumEdit_1 的回调(⚠ 已释放)→ crash。即使你没显式写过析构函数,你也可以加一个,这不会影响父类。这是最稳妥的方式,确保页面切换销毁后不保留无效连接。如果你要,我可以给你加入完整的。你每切一次页面,就会新构造。

2025-11-26 16:36:39 88

原创 C++_396_“修复 AbstractUserAuthenModel 中代理类AuthenModelProxy 静态 的 owner 指针未更新导致重复弹框 mErrorCount 异常问题”

第一次弹框正常:因为 proxy 刚创建,owner 是当前实例,初始化为 0。原来第二次弹框显示 -1:因为 proxy 是静态共享,owner 仍指向已析构或旧对象。修改后第二次弹框也正常:因为使用安全更新 owner 指向当前实例,确保访问的 mErrorCount 始终是有效对象的成员。💡核心结论问题的本质不是初始化,而是proxy 的 owner 指针指向了错误或已经析构的对象。你修改后,通过 setter 更新 owner,保证每次都指向正确实例,所以两次弹框都正常。画一张。

2025-11-26 14:14:56 16

原创 C++_395_所申请的内存比实际使用的内存要少,导致存在内存越界最终导致死机,其中要注意:对[结构体可变尾部]的应用Info[1],以及与柔型数组的区别

membCnt 计算错误(未把 group 成员计入)→ 导致分配空间不足 → 写入越界 → 死机。正确计算 membCnt在分配后显式初始化 Count写入前边界检查。并最好加上并发保护与溢出检查。你给出的修复版已经把最关键的两项(正确计算 & 检查)做了,是能够解决原来死机问题的。但仍建议按我上面给出的完整版再加强(显式Count=0、精确分配、索引边界检查、并发快照/锁)。项目说明问题原因内存分配时没有为每个分组的“组头信息”预留空间。现象实际访问比分配的内存多出每组1个单元,造成越界。

2025-10-24 12:59:07 29

原创 C++_394_tableWidget控件,两种模式,1、行显示模式 2、网格显示模式

步骤说明1️⃣判断是否显示勾选框列(2️⃣获取用户选中的单元格区域3️⃣判断当前是“详细列表”还是“网格缩略图”显示模式4️⃣遍历选区中的每个行 / 单元格5️⃣根据选区找到对应文件索引,从mInfoList获取文件名6️⃣跳过..特殊目录7️⃣找到单元格内的复选框控件并设置8️⃣(缩略图模式下)再单独勾选当前焦点单元格mInfoList与表格单元格、CheckBox 的对应关系;是如何映射的。是否希望我画一下这个图?(非常直观,会让你一眼就看懂表格与索引对应关系。

2025-10-16 19:32:48 94

原创 C++_393_当可用解码内存不足以满足“本次计算出的新预览需求”时,计算应该销毁/重建哪些通道的解码以释放内存,结果通过 pDecMemoryOut[i](字节/标志数组)返回要销毁的通道索引。

当计划分配的解码内存小于之前已分配的内存时,必须销毁旧资源重新分配,原因是解码内存是连续块、与解码上下文绑定,无法直接缩减

2025-10-11 11:27:45 34

原创 C++_392_强类型枚举enum struct的好处

解析输入字符串 type,转成 config_type 的位掩码:"All" → 全部打开。"VideoSource" → 打开 VideoSource 位。"PTZ" → 打开 PTZ 位。其他 → 无效输入。根据掩码生成配置

2025-09-02 13:33:43 60

原创 C++_391_用 void* + 标记 封装不同类型,在需要时再解开。(用一个函数,实现n钟不同类型参数的获取、设置),这就是“变体包装 ” 或 “类型擦除”方法,是简化版本的IoVarian

现在用的 IoVariant 方法叫 “类型擦除的变体包装”(discriminated union)。本质:用 void* + 标记 封装不同参数类型,在需要时再解开。更现代安全的写法是用 std::variant,也实现了using IoVariant = std::variant<IOAlarmOutputJson_t*, IoAlarmJson_t*>;

2025-08-30 10:02:49 44

原创 C++_390_透传功能中,使用单例模式,管理session透传会话的生命周期,为每个会话记录报警读取状态,监控会话心跳状态,后台线程自动清理超时会话

这个类主要用于维护云透传会话的状态,确保长时间不活动的会话能够被自动清理,防止资源泄露。/API/Event/Check:更新 Session 状态,获取上次的报警读取位置,继续读取报警队列数据,读取完毕后保存进度

2025-08-13 10:21:06 127

原创 C++_389_定义一个禁用了赋值操作、具有线程同步资源保护的结构体,作为一些回调函数的参数,方便获取响应操作的结果等信息

具有唯一的系统标识,不能简单地通过内存拷贝来复制。赋值操作:obj1 = obj2拷贝构造:API_CALLBACK_T obj2(obj1)都被禁用,仅支持简单变量赋值

2025-08-05 14:46:43 81

原创 C++_388_为什么,以二进制模式打开源文件,以截断模式打开目标文件

源文件以二进制模式打开 - 确保精确读取每个字节;目标文件以截断模式打开 - 确保全新写入

2025-07-24 14:51:33 113

原创 C++_387_日志文件压缩后进行加密处理,使用C++文件流以二进制模式处理文件,使用128KB缓冲区分块读取文件

128KB缓冲区分块,进行异或加密,然后写入加密后的数据到目标文件

2025-07-24 14:43:23 56

原创 C++_386_一个简单的异或(^)加密操作,对压缩包文件进行加密

异或运算的重要特性:- `A ^ B ^ B = A`(两次异或同一个数会还原原始值)- 这个性质使异或可以用于简单的加密和解密

2025-07-24 14:34:40 103

原创 C++_385_当一个变量_sprvTcp管理着 resolver 对象的生命周期时,异步调用的时候,lambda表达式都需要捕获_sprvTcp 这个变量

| 为什么必须捕获 `_sprvTcp`? | 为了确保异步操作期间该对象不会被释放。 || 如果不捕获会怎样? | 可能导致访问已经析构的对象,引发未定义行为(如崩溃)。 || Lambda 如何延长生命周期? | 通过值捕获 `shared_ptr`,内部会增加引用计数。

2025-07-09 16:36:00 124

原创 384_C++_unit是4字节大小,能存储32位(bit)bool操作,[7][48]这里用于计划表的时间节点内,二维数组中每一位代表一种AI功能的开关状态

uint mScheduleData[7][48]是一个二维数组:第一维7表示一周7天第二维48表示一天24小时的每半小时时段(24*2=48)每个元素是一个uint(无符号整数,通常32位)

2025-06-10 13:29:54 114

原创 383_C++_一个unsigned char类型字节存储8个布尔值,uiMul 数组12位的每一位都可以表示一个特定类型。通过索引计算公式,从一维数组中获取对应的类型字符串

一个字节存储8个布尔值,uiMul 数组的每一位都可以表示一个特定类型是否存在。其中的索引计算公式,用来从一维数组中获取对应的类型字符串

2025-06-09 11:26:35 91

原创 382_C++_在用户会话结束时,检查是否有其他会话仍然来自同一个客户端 IP 地址,没有连接状态设置为断开,否则为连接

在用户会话结束时,检查是否有其他会话仍然来自同一个客户端 IP 地址([peer_ip]。如果没有其他会话,则进一步执行热备相关逻辑,比如断开主备关系、更新状态等。当某台设备作为热备设备时,如果其管理机(主设备)的连接断开且没有其他连接来自该管理机 IP,则认为主设备已离线,需要切换到独立模式。在补录过程中,如果工作机断开连接,需要中断补录任务并通知系统进行处理。

2025-05-08 16:43:33 177

原创 381_C++_decrypt解密数据、encrypt加密数据,帧头和数据buffer分开

使用一个std::vector<hl::buffer_view> ,将帧头、数据部分拼接起来即可

2025-04-15 19:26:13 94

原创 380_C++_[结合379]从连续内存地址中取出来的热力图图片data,转换为可视化的、带颜色的热力图像显示到界面(图像格式为RGBA)

RGBA图像每个像素占4个字节,其中的归一化处理是实现热力值到颜色平滑映射的关键步骤!!

2025-04-03 10:02:58 89

原创 379_C++_通过小时、天、月、年的地址偏移,上告的图片数据存储在不同的时间粒度位置;提取的时候按照同样的小时、天、月、年偏移,提取数据

数据保存在小时、天、月、年的时间颗粒度上;提取的时候需要对小时、周进行累加提取,天、月、年可以直接>>的方式提取

2025-03-20 17:25:13 99

原创 378_Python_python修改.xls表格,不改变表格原有样式,仅仅修改指定行、列的单元格内容

【代码】378_Python_python修改.xls表格,不改变表格原有样式,仅仅修改指定行、列的单元格内容。

2025-03-19 19:32:55 282

原创 377_C++_aes_256_gcm方式加密、解密图片

cloud_aes.h中要求KI至少是36位(KI本身32位,后面要拼接4位的初始iv),iv是8位(算法的要求是12位,制定的方案是4+8,4位由KI的后四位出,8位由发送时间出-发送的时间是8位,时间是unsigned long long类型)

2025-03-07 15:02:28 149

原创 376_C++_云透传,板端负责处理透传数据的API函数,用于实现客户端对设备内部接口的访问(VMS把数据直接传给板端内部)

通过云服务,外部客户端将信息,透传给板端,然后板端直接处理透传过来的data

2025-03-04 10:05:57 137

原创 375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码

扩展性好:添加新的告警类型只需要定义新的任务类型,实现对应的工厂函数,无需修改现有代码 且 lambda表达式参数传递灵活。

2025-02-25 10:05:16 123

原创 374_C++_升级等其他类型标签,使用将4字节字符串转换为无符号整数的定义方式

节省存储空间,4个字符压缩为一个整数,便于比较和判断,保持向后兼容性[这种方式在嵌入式系统中常用于 Magic Number 或文件标识等场景]

2025-02-13 15:21:21 102

原创 373_C++_后台监控线程,通过定期检查和更新来维护云服务的配置和订阅状态,确保系统的正常运行

1、定期检测 2、错误处理 3、休眠管理【在函数刚开始的时候,给`lt`、`oldlt`一个默认值,第一次休眠机制`while`循环不满足,会去进行订阅检测(订阅有没有到期)和常规配置检测(是否更新配置文件)。如果配置文件更新了,就同步更新`sleep_time`使用一天作为休眠时长,以便再次进行检测的时候,可以满足休眠机制,不去频繁去进行订阅检测和常规配置检测】

2025-02-12 12:52:50 105

原创 372_C++_当有多个通道,开启不同告警的同一种的开关时,限制该开关的打开数量(比如视频上传开关)

限制同时进行云上传的通道数量,避免带宽占用过高确保云上传通道在线可用自动清理无效的云上传配置保持配置的一致性

2025-02-11 13:21:17 274

原创 371_C++_任务队列TaskQueue的异步调用asyncCall,和CLcAsyncCall(包含分析)中io_service实现的asyncCall有什么区别?

一般的异步任务处理,需要保证执行顺序,无 IO 操作需求,性能要求不高的场景使用任务队列中的asyncCall;涉及高并发、I/O操作的场景再使用CLcAsyncCall中的异步

2025-02-11 09:44:28 69

原创 370_C++_bind回调中处理API请求和响应成功与否,pRep是一个指向AutoReply类的指针或普通变量时分别怎么使用

1、使用引用传递: 2、使用智能指针: 3、使用值捕获的lambda表达式: 4、使用std::function和拷贝构造:【推荐使用第1种或第2种方案】

2025-02-10 14:25:09 112

原创 369_C++_pthread_cond_timedwait 超时阻塞,必须先初始化绑定CLOCK_MONOTONIC 一下,显式设置时钟类型才能使得超时阻塞生效

默认情况下,pthread_cond_timedwait 使用 CLOCK_REALTIME 作为时钟源,这意味着超时会根据系统的实时时间(即当前时间)来计算。而如果系统时间发生跳变(例如,NTP 校时或手动修改系统时间),可能会影响计算出的超时时间,导致超时行为不符合预期

2025-01-08 13:41:37 430

原创 368_C++_文件的加密解密

加密过程 随机生成种子 rand_bytes,结合固定随机数和动态随机字节。 使用 rand_bytes 生成密钥 root_key,并附加到加密数据头部。 输出的密文包括随机种子和加密后的数据。解密过程 从密文中提取随机种子 rand_bytes,再结合动态随机字节重新生成密钥。 验证密钥与附加数据(AAD)是否匹配。 若匹配,解密并返回明文,否则返回空字符串。

2024-12-18 14:33:38 159

原创 367_C++_计算mouse移动过程中,视频框的右侧、底部边距,以及根据实时的右侧、底部边距计算—视频框的左上角位置

的作用是恢复 的位置,将其移动到父窗口或者指定矩形内的特定位置。主要逻辑:矩形选择计算目标位置移动到目标位置 的作用是响应鼠标移动事件,动态调整控件的位置,并更新与目标矩形的边距。主要逻辑:获取鼠标相对位置动态更新边距移动控件接受事件这段代码主要实现了一个 可拖动控件 的逻辑: 和 的值表示控件在父窗口坐标系中的左上角位置的横纵坐标。 的作用: 的作用: 和 :经过上述计算, 和 对应的是控件左上角的横纵坐标位置。在父窗口坐标系中,控件四个角的位置是:如果控件的宽度为 ,高度为 ,当前 是 :

2024-12-13 15:52:27 346 1

原创 367_C++_根据当前时间和预设时间间隔决定是否执行某些捕获任务

这段代码的核心是基于系统单调时间,通过检查时间间隔的到达情况,决定是否触发某种捕获类型的任务。如果时间未到,则根据最近的时间间隔进行延迟等待。高效利用系统时间,避免不必要的忙等。支持多种捕获类型并行判断。精细控制延迟时间,保障程序响应能力。每个捕获类型的条件是“与”&&捕获类型之间的条件是“或”||外层取反后,整个逻辑变成:如果所有捕获类型都不满足条件,则进入延时逻辑;如果至少有一个捕获类型满足条件,则跳过延时逻辑。

2024-12-10 09:54:28 105

原创 366_C++_SystemClock类,每1秒定时轮巡,需要不停在后台执行的任务,可以用这种方式

用于处理异步任务的队列

2024-11-08 14:09:11 116

原创 365_C++_setParm 函数的主要作用是将参数设置到前端设备。它会对设备进行分组操作(根据通道和实例化对象),并通过并行执行将参数设置到每个分组中,并返回每次设置的结果

创建多个线程并统计数量,每个线程执行完,数量减1,等总数归0的时候,解除阻塞,完成并行操作

2024-10-24 21:49:24 102

原创 364_C++_通过类型定义、数组、指针、std::vector和内存复制来管理多个通道的记录数据

指向数组的指针、unsigned char类型的数组、std::vector类型的变量_lkg,大小是maxChnCnt * BITS_2_BYTES(MAX_CHN_NUMPARA)、指向数组的指针数组

2024-10-11 18:53:21 136

原创 363_C++_配合360_负责读取和处理录像数据RecordReader类

AAA

2024-09-03 20:56:06 606

原创 362_C++_异步添加到队列中后(添加队列的任务数量限制30个),采用定时执行的任务,一个个顺序执行队列中的任务

并非全部一次性添加到队列,然后去执行一个个容器,而是一个个异步添加到队列,一个个执行(防止干扰到其他线程)

2024-09-02 21:27:46 270

原创 361_C++_在使用多数据的array、object类型的其中的JSON数据的时候,为何要额外进行一次CopyFrom拷贝操作

然而,在你的代码中,你可能想要修改这些对象(尽管在这个特定的例子中,你似乎没有直接修改它们,但你可能会在未来的代码版本中这样做)。线程安全和同步:虽然在这个特定的代码片段中,你已经在处理数组之前和之后都加上了读写锁(pthread_rwlock_wrlock 和 pthread_rwlock_unlock),但如果你打算在并行环境中使用这些 JSON 对象,或者你的应用程序的其他部分可能会修改。性能优化:虽然在这个特定的例子中,性能差异可能不明显,但在处理大量数据时,使用自定义的内存分配器(如。

2024-09-02 15:49:45 200

原创 360_C++_录像数据的缓存管理和读取处理.h部分 + 内存管理机制的cpp部分

录像数据的缓存管理和读取处理

2024-08-27 21:13:52 226

原创 359_系统参数检查

这段代码对系统参数进行了压缩、编码(如果有)、并最终写入Flash存储。它通过多个缓冲区和数据操作确保了参数数据的一致性和可靠性,提供了加密支持,并且通过压缩操作节省了存储空间。两次压缩分别针对不同的数据部分,保证了系统在写入Flash存储时能够有效地使用存储空间并确保数据写入的成功率。压缩操作不仅提高了存储的效率,还可能在一定程度上提高数据传输的速度。函数用于计算并更新结构体的CRC校验码,而函数则是实际执行CRC校验码计算的核心算法。通过这种方式,系统可以有效地监控和校验关键参数数据的完整性。

2024-08-15 21:51:25 133

(个人详解版本,非初始版) C++核心编程.pdf

(有截图展示)个人添加了对其中代码的理解注释,不然干巴巴的不好以后复习理解,和现有的pdf多了不少内容哈哈哈,适合新人

2020-08-30

316-C++-xml文件解析成map,可以放到表格上 + xml、xlsx文件互相解析

xml翻译文件,配合316编号文章

2024-04-12

316-C++-xml文件解析成map,可以放到表格上 + xml、xlsx文件互相解析

xml、xlsx翻译文件,配合316编号文章

2024-04-12

Source Insight 4.0暗黑系(护眼)主题下载与配置

Source Insight 4.0暗黑系(护眼)主题下载与配置

2024-01-31

在Linux下基于gtk制作的音乐播放器_分段汇总.zip

第一周项目,未分文件编写,难度一般般,附带各个步骤的解析

2021-07-30

注册+登录保存密码+表格+数据库.zip

注册+登录保存密码+表格+数据库.zip

2021-09-02

Qt_zuoye_01_27-登录界面、表格界面最终版本.rar

【基于QT实现】登录界面-复杂【登录、取消、修改+记住用户名密码】【增、删、改、查表格(显示查询数据)】【显示点击按键实时时间-显示在一个单独表格中】【隐藏放置时间表格】【界面1切换到界面0】

2021-09-02

串口操控_QT模仿串口界面而写.zip

【基于QT】模仿串口界面而写

2021-09-02

Qt开发环境的搭建.doc

Qt开发环境的搭建.doc

2021-05-08

第六版-中文版-C_Plus代码-总结

电子版

2020-08-30

文件程序(读取不同型号板子的文件信息).zip

文件类型的小集合,去读取各个类型板子的文件数据信息,可用且包含详细的注释解答

2021-02-19

14章-函数指针要点

14章-函数指针要点

2021-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除