自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 407_C++_vscode插件制作流程

VSCode插件开发环境搭建与CppCommentTools开发全过程

2026-06-02 15:40:35 38

原创 406_C++_磁盘检查流程安全重构分析:从 system/popen 到 fork/exec 的防命令注入升级

去掉 shell、加强安全、精确控制进程

2026-05-21 16:16:57 56

原创 405_C++_获取字体截断后的真实长度,不受自动换行后的最小宽度影响

这段代码的核心目标是:其中最关键的点在于:它表示:而代码的重点,就是解决:下面按执行流程详细解析。代码整体逻辑:二、逐行解析1. 创建字体含义:创建一个字体对象。字体大小:说明:UI 支持 DPI 缩放。例如:目的:适配高分辨率屏幕。说明:这是国际化翻译。等价逻辑:例如:最终:3. 创建 FontMetrics作用:用于:类似 Qt:4. 开启自动换行明显这里:应该是:可能是项目中的接口命名。作用:允许文本自动换行。例如:会变成:5. 设置文本最小矩形意思

2026-05-09 10:34:26 36

原创 404_C++_[通道][AI类型][bit位],设备侧获取“AI能力互斥关系(mutex relation)”,解析后填充到本地能力结构DEVICE_ABILITY_S::MutexType 中

3️⃣ 三种AI来源(统一处理)、4️⃣ 通道内互斥、5️⃣ 跨通道互斥(重点)

2026-04-09 14:12:32 327

原创 403_C++_把音频帧里的“海思私有头”去掉,然后重新拼一帧干净的数据出来

这段代码的本质就是:如果音频 pack 里带了海思私有 4 字节头,就把它们批量剥离,并修正帧头字段,生成一份标准音频帧。对,你这个理解方向是对的,而且已经抓到核心了 👍但我帮你稍微“工程级精确化”一下,不然以后容易踩坑。

2026-02-11 10:50:46 40

原创 402_C++_物理键盘切软键盘后,跨页面操作时,keyboardClosed 延迟广播触发已失效控件回调导致 UI 死锁问题

物理键盘切软键盘后,再进行切换页面操作,InputMethod 生命周期错位导致 keyboardClosed 异常回调并触发 UI 死锁问题分析

2026-01-19 13:07:25 126

原创 401_C++_添加singleShot定时,绕开框架当前焦点/绘制模型里的一个时序缺陷

FocusOut 事件”的时机,从“当前调用栈”,推迟到了“下一个事件循环周期”

2026-01-13 17:24:30 66

原创 400_C++_远程桌面连接NVR,切换流模式(持续推送)连接的了解(有stream模式、image模式两种)

`multipart/x-mixed-replace` 就是“流模式”。并且:boundary + 多段数据,是“流”的直接证据

2026-01-07 10:27:50 491

原创 399_C++_UI 框架的 Hover 事件并不是“只要可见就一定触发”,多个控件中,会有控件无法触发hover事件 [附带解决方案]

为这类控件,特制showTooltip操作。TooltipController方案可以解决。目标是:一次封装,后续所有 Edit / Label / 自定义控件都能用,不再碰 Hover 事件状态机,而是单独tooltip

2026-01-06 14:05:29 53

原创 C++_398_std::bind + shared_ptr 计数问题,导致web阻塞20秒超时

的第三次引用,来自“回调函数参数按值传递时的临时 shared_ptr 拷贝”。这是标准 C++ 行为,不是 update 偷偷持有,也不是 bug。你这个问题问得非常专业,已经是在验证生命周期模型是否符合预期了,而不是“在排查异常”。的生命周期图以及“什么时候必须按值、什么时候必须按引用”整理成一张你们组里可以直接用的准则。项目实际情况AutoReply一个控制块另一个控制块引用计数永远只统计“同一个控制块”→不会合并计数。

2025-12-22 13:42:16 65

原创 C++_398_std::bind + shared_ptr 计数问题,导致web阻塞20秒超时

std::bind 会拷贝并长期持有 shared_ptr、回调执行 ≠ 对象释放 ≠ HTTP 回包、AutoReply 析构点才是 web 响应完成点、在后台线程中持有 shared_ptr 会直接阻塞 web

2025-12-20 15:16:29 96

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

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

2025-11-26 16:36:39 129

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

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

2025-11-26 14:14:56 52

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

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

2025-10-24 12:59:07 72

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

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

2025-10-16 19:32:48 133

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

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

2025-10-11 11:27:45 69

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

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

2025-09-02 13:33:43 90

原创 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 75

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

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

2025-08-13 10:21:06 161

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

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

2025-08-05 14:46:43 121

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

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

2025-07-24 14:51:33 172

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

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

2025-07-24 14:43:23 92

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

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

2025-07-24 14:34:40 138

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

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

2025-07-09 16:36:00 162

原创 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 166

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

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

2025-06-09 11:26:35 128

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

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

2025-05-08 16:43:33 205

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

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

2025-04-15 19:26:13 119

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

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

2025-04-03 10:02:58 116

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

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

2025-03-20 17:25:13 122

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

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

2025-03-19 19:32:55 356

原创 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 182

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

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

2025-03-04 10:05:57 167

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

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

2025-02-25 10:05:16 147

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

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

2025-02-13 15:21:21 124

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

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

2025-02-12 12:52:50 133

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

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

2025-02-11 13:21:17 294

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

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

2025-02-11 09:44:28 93

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

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

2025-02-10 14:25:09 136

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

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

2025-01-08 13:41:37 513

(个人详解版本,非初始版) 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关注的人

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