- 博客(473)
- 资源 (10)
- 收藏
- 关注
原创 380_C++_[结合379]从连续内存地址中取出来的热力图图片data,转换为可视化的、带颜色的热力图像显示到界面(图像格式为RGBA)
RGBA图像每个像素占4个字节,其中的归一化处理是实现热力值到颜色平滑映射的关键步骤!!
2025-04-03 10:02:58
4
原创 379_C++_通过小时、天、月、年的地址偏移,上告的图片数据存储在不同的时间粒度位置;提取的时候按照同样的小时、天、月、年偏移,提取数据
数据保存在小时、天、月、年的时间颗粒度上;提取的时候需要对小时、周进行累加提取,天、月、年可以直接>>的方式提取
2025-03-20 17:25:13
36
原创 378_Python_python修改.xls表格,不改变表格原有样式,仅仅修改指定行、列的单元格内容
【代码】378_Python_python修改.xls表格,不改变表格原有样式,仅仅修改指定行、列的单元格内容。
2025-03-19 19:32:55
159
原创 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
68
原创 376_C++_云透传,板端负责处理透传数据的API函数,用于实现客户端对设备内部接口的访问(VMS把数据直接传给板端内部)
通过云服务,外部客户端将信息,透传给板端,然后板端直接处理透传过来的data
2025-03-04 10:05:57
61
原创 375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码
扩展性好:添加新的告警类型只需要定义新的任务类型,实现对应的工厂函数,无需修改现有代码 且 lambda表达式参数传递灵活。
2025-02-25 10:05:16
74
原创 374_C++_升级等其他类型标签,使用将4字节字符串转换为无符号整数的定义方式
节省存储空间,4个字符压缩为一个整数,便于比较和判断,保持向后兼容性[这种方式在嵌入式系统中常用于 Magic Number 或文件标识等场景]
2025-02-13 15:21:21
32
原创 373_C++_后台监控线程,通过定期检查和更新来维护云服务的配置和订阅状态,确保系统的正常运行
1、定期检测 2、错误处理 3、休眠管理【在函数刚开始的时候,给`lt`、`oldlt`一个默认值,第一次休眠机制`while`循环不满足,会去进行订阅检测(订阅有没有到期)和常规配置检测(是否更新配置文件)。如果配置文件更新了,就同步更新`sleep_time`使用一天作为休眠时长,以便再次进行检测的时候,可以满足休眠机制,不去频繁去进行订阅检测和常规配置检测】
2025-02-12 12:52:50
42
原创 372_C++_当有多个通道,开启不同告警的同一种的开关时,限制该开关的打开数量(比如视频上传开关)
限制同时进行云上传的通道数量,避免带宽占用过高确保云上传通道在线可用自动清理无效的云上传配置保持配置的一致性
2025-02-11 13:21:17
211
原创 371_C++_任务队列TaskQueue的异步调用asyncCall,和CLcAsyncCall(包含分析)中io_service实现的asyncCall有什么区别?
一般的异步任务处理,需要保证执行顺序,无 IO 操作需求,性能要求不高的场景使用任务队列中的asyncCall;涉及高并发、I/O操作的场景再使用CLcAsyncCall中的异步
2025-02-11 09:44:28
19
原创 370_C++_bind回调中处理API请求和响应成功与否,pRep是一个指向AutoReply类的指针或普通变量时分别怎么使用
1、使用引用传递: 2、使用智能指针: 3、使用值捕获的lambda表达式: 4、使用std::function和拷贝构造:【推荐使用第1种或第2种方案】
2025-02-10 14:25:09
30
原创 369_C++_pthread_cond_timedwait 超时阻塞,必须先初始化绑定CLOCK_MONOTONIC 一下,显式设置时钟类型才能使得超时阻塞生效
默认情况下,pthread_cond_timedwait 使用 CLOCK_REALTIME 作为时钟源,这意味着超时会根据系统的实时时间(即当前时间)来计算。而如果系统时间发生跳变(例如,NTP 校时或手动修改系统时间),可能会影响计算出的超时时间,导致超时行为不符合预期
2025-01-08 13:41:37
151
原创 368_C++_文件的加密解密
加密过程 随机生成种子 rand_bytes,结合固定随机数和动态随机字节。 使用 rand_bytes 生成密钥 root_key,并附加到加密数据头部。 输出的密文包括随机种子和加密后的数据。解密过程 从密文中提取随机种子 rand_bytes,再结合动态随机字节重新生成密钥。 验证密钥与附加数据(AAD)是否匹配。 若匹配,解密并返回明文,否则返回空字符串。
2024-12-18 14:33:38
94
原创 367_C++_计算mouse移动过程中,视频框的右侧、底部边距,以及根据实时的右侧、底部边距计算—视频框的左上角位置
的作用是恢复 的位置,将其移动到父窗口或者指定矩形内的特定位置。主要逻辑:矩形选择计算目标位置移动到目标位置 的作用是响应鼠标移动事件,动态调整控件的位置,并更新与目标矩形的边距。主要逻辑:获取鼠标相对位置动态更新边距移动控件接受事件这段代码主要实现了一个 可拖动控件 的逻辑: 和 的值表示控件在父窗口坐标系中的左上角位置的横纵坐标。 的作用: 的作用: 和 :经过上述计算, 和 对应的是控件左上角的横纵坐标位置。在父窗口坐标系中,控件四个角的位置是:如果控件的宽度为 ,高度为 ,当前 是 :
2024-12-13 15:52:27
291
1
原创 367_C++_根据当前时间和预设时间间隔决定是否执行某些捕获任务
这段代码的核心是基于系统单调时间,通过检查时间间隔的到达情况,决定是否触发某种捕获类型的任务。如果时间未到,则根据最近的时间间隔进行延迟等待。高效利用系统时间,避免不必要的忙等。支持多种捕获类型并行判断。精细控制延迟时间,保障程序响应能力。每个捕获类型的条件是“与”&&捕获类型之间的条件是“或”||外层取反后,整个逻辑变成:如果所有捕获类型都不满足条件,则进入延时逻辑;如果至少有一个捕获类型满足条件,则跳过延时逻辑。
2024-12-10 09:54:28
58
原创 365_C++_setParm 函数的主要作用是将参数设置到前端设备。它会对设备进行分组操作(根据通道和实例化对象),并通过并行执行将参数设置到每个分组中,并返回每次设置的结果
创建多个线程并统计数量,每个线程执行完,数量减1,等总数归0的时候,解除阻塞,完成并行操作
2024-10-24 21:49:24
64
原创 364_C++_通过类型定义、数组、指针、std::vector和内存复制来管理多个通道的记录数据
指向数组的指针、unsigned char类型的数组、std::vector类型的变量_lkg,大小是maxChnCnt * BITS_2_BYTES(MAX_CHN_NUMPARA)、指向数组的指针数组
2024-10-11 18:53:21
97
原创 362_C++_异步添加到队列中后(添加队列的任务数量限制30个),采用定时执行的任务,一个个顺序执行队列中的任务
并非全部一次性添加到队列,然后去执行一个个容器,而是一个个异步添加到队列,一个个执行(防止干扰到其他线程)
2024-09-02 21:27:46
235
原创 361_C++_在使用多数据的array、object类型的其中的JSON数据的时候,为何要额外进行一次CopyFrom拷贝操作
然而,在你的代码中,你可能想要修改这些对象(尽管在这个特定的例子中,你似乎没有直接修改它们,但你可能会在未来的代码版本中这样做)。线程安全和同步:虽然在这个特定的代码片段中,你已经在处理数组之前和之后都加上了读写锁(pthread_rwlock_wrlock 和 pthread_rwlock_unlock),但如果你打算在并行环境中使用这些 JSON 对象,或者你的应用程序的其他部分可能会修改。性能优化:虽然在这个特定的例子中,性能差异可能不明显,但在处理大量数据时,使用自定义的内存分配器(如。
2024-09-02 15:49:45
160
原创 359_系统参数检查
这段代码对系统参数进行了压缩、编码(如果有)、并最终写入Flash存储。它通过多个缓冲区和数据操作确保了参数数据的一致性和可靠性,提供了加密支持,并且通过压缩操作节省了存储空间。两次压缩分别针对不同的数据部分,保证了系统在写入Flash存储时能够有效地使用存储空间并确保数据写入的成功率。压缩操作不仅提高了存储的效率,还可能在一定程度上提高数据传输的速度。函数用于计算并更新结构体的CRC校验码,而函数则是实际执行CRC校验码计算的核心算法。通过这种方式,系统可以有效地监控和校验关键参数数据的完整性。
2024-08-15 21:51:25
96
原创 358_C++_multimap容器允许健(key)重复,其中equal_range 成员函数,这个函数返回一对迭代器,这个对表示了所有与给定键相等的元素的范围
遍历[pr.first, pr.second)这个范围(注意是左闭右开区间),你可以访问所有键等于enCfgPage的元素
2024-08-13 09:40:33
95
原创 357_C++_同一个函数,拆分成多部分,使得调用者可以根据需要选择最合适的输入格式(同函数名,不同类型、数量参数)
虽然第二版sendMsg通过拆分和代码简化提高了可维护性和代码质量,但第一版在灵活性和内存管理上仍有其优势。特别是在处理大数据量、复杂 JSON 结构或者在内存受限的环境下,第一版可能会提供更好的性能和更小的内存开销。因此,第一版更适合需要精细内存控制和灵活调用的场景,而第二版更适合需要易于维护和代码简洁的场合。
2024-08-12 21:23:20
121
原创 356_lambda表达式,多段调用,A函数调用lambda-1,然后lambda-1中调用lambda-2
lambda表达式连续多段调用,另外:使用了std::regex和std::smatch来提取和匹配字符串中的数字,这是一个很灵活且强大的方法
2024-08-05 18:57:33
146
原创 355_C++_自动维护时间点计算,以天、小时(00:00-02:00、02:00-04:00 ......)来计算
通过设定维护时间段和周期,实现了设备在指定时间段内进行自动维护的功能。
2024-07-31 22:14:07
107
原创 354_C++异步写文件,检查数据段的索引和重试,且多段索引跟踪,最后更新索引和时间信息,继承自353的类CLcAsyncCall
int iIdx;fnAsyncCb是一个函数类型定义,用于表示异步回调函数,它接收三个参数(一个引用,一个int引用,一个引用)并返回一个bool。是一个结构体,用于存储异步写入的信息,包含索引、绝对时间和文件指针。public:makeAsync是两个静态方法,用于创建对象的共享指针,一个包含超时参数,一个没有。构造函数有两个重载,一个包含超时参数,一个不包含。析构函数用于清理资源。返回线程名称。writeFile。
2024-07-28 11:22:17
85
原创 353_C++_Boost.Asio库来处理异步操作
使用Boost.Asio库进行IO异步调用,并使用智能指针和线程同步技术来管理对象的生命周期和异步任务的执行
2024-07-22 21:28:55
277
原创 352_C++_管理用户登录计数器的类,其中有异步I\O控制定时器m_timer操作,定时修改【登录锁定时间】和【错误次数】
async_wait:boost::asio::steady_timer 的成员函数,启动一个异步等待操作,当定时器过期时调用指定的回调函数。这里指定的回调函数是 std::bind(&NetLoginCounter::on_timer, this) 创建的函数对象。异步操作:异步操作是指不阻塞当前线程,等待某个事件(例如定时器过期)发生时,通过回调函数通知主程序。Boost.Asio 提供了大量支持异步操作的工具。
2024-07-14 16:28:34
121
原创 351_C++_自定义list容器的sort排序规则sortFileName,函数调用运算符 operator() 的重载,它使得一个对象可以像函数一样被调用
bool operator()(const std::string& left, const std::string& right) 是一个函数调用运算符(function call operator)的重载。它使得一个对象可以像函数一样被调用。具体来说,这种类型的重载使得包含它的类或结构体的实例能够接受参数,并执行特定的操作
2024-07-14 15:31:57
103
原创 350_C++_函数指针数组,存储各种功能的检查函数 + 字符串数组,存储各种功能的提示字符串
在C++中,bool (RSChannel::*funcCheck[])() 这样的声明定义了一个函数指针数组,其中每个元素都是一个指向RSChannel类成员函数的指针,这些成员函数没有参数并返回一个bool值。如果您需要添加新的功能检查,只需在funcCheck和toolTips数组中添加新的元素即可,而无需修改循环或添加新的代码块。: 这里,funcCheck是一个数组,其元素是指向RSChannel类的成员函数的指针,这些成员函数没有参数并返回一个bool值。(即没有参数并返回一个bool值)。
2024-07-02 09:38:41
105
原创 349_JSON_将value组到hl::json::document中,补齐树状结构图,然后转成hl::json::string类型通过HTTP发送出去
关键在于'组合'这一步上
2024-06-24 10:25:53
159
原创 348_C++_find_if应用,查找过程是通过一个lambda表达式完成,查找容器中参数和[传入参数]有无相等参数
定义了一个类型别名PairList作为std::list的实例化,该std::list存储std::pair类型的元素。然后,它创建了一个PairList类型的变量_valuePairs,并使用这个列表通过 find_if 来查找一个特定的整数值对应的字符串
2024-06-14 15:49:54
142
原创 347_C++_BOOST_AUTO应用于:查找JSON字段、查找map容器中的key、推导list容器进行bit置位
【代码】347_C++_BOOST_AUTO应用于:查找JSON字段、查找map容器中的key、推导list容器进行bit置位。
2024-06-14 15:42:54
125
原创 346_C++_升级中的检测功能:共享升级锁、Txt文档转JSON【有分包下载操作】
一整套流程:URL、证书验证,通过http的curl方式连接外部info文件获取文件大小,然后http方式获取文件data,然后转成json形式,方便获取info中对应字段的value。
2024-06-11 20:52:20
117
原创 343_Python_读取视频帧中的负数编号,花屏帧
注意预防键值对被覆盖,使用 get 方法尝试获取 'minus' 、'frame_no'键的值,并检查它是否不是 None 并且小于0【读取一帧数据:14:29:53, type:P, encode_type:7, w:432, h:1536, real_no:34512, frame_no:1, frame_size:141, time:73770, pts:73770, hide:0, ref_frame:1, offset: 41, w-h:0-0, nal(1 )】
2024-05-24 11:29:14
130
原创 342_Python_读取字符串中逗号‘,‘分隔符,提取其中时间戳和每帧数据frame_size平均值、总大小、最大值、最小值
使用方法及用到知识点:写文件、列表、列表推导式、索引、字典中的键值对、查找字典中的key及value
2024-05-23 19:17:44
123
原创 341_C++_使用C++中的std::map容器查找键的时候,注意给个默认值,防止成员函数value()未查找到键,确保即使键不存在,你也能安全地获取一个值
当type这个键在mKeyMaps中不存在时,value()函数返回的默认值。这通常用于确保即使键不存在,你也能安全地获取一个值(尽管这个值可能不是你真正想要的)
2024-05-23 10:56:36
178
Qt_zuoye_01_27-登录界面、表格界面最终版本.rar
2021-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人