- 博客(457)
- 资源 (10)
- 收藏
- 关注
原创 365_C++_setParm 函数的主要作用是将参数设置到前端设备。它会对设备进行分组操作(根据通道和实例化对象),并通过并行执行将参数设置到每个分组中,并返回每次设置的结果
111
2024-10-24 21:49:24 18
原创 364_C++_通过类型定义、数组、指针、std::vector和内存复制来管理多个通道的记录数据
指向数组的指针、unsigned char类型的数组、std::vector类型的变量_lkg,大小是maxChnCnt * BITS_2_BYTES(MAX_CHN_NUMPARA)、指向数组的指针数组
2024-10-11 18:53:21 69
原创 362_C++_异步添加到队列中后(添加队列的任务数量限制30个),采用定时执行的任务,一个个顺序执行队列中的任务
并非全部一次性添加到队列,然后去执行一个个容器,而是一个个异步添加到队列,一个个执行(防止干扰到其他线程)
2024-09-02 21:27:46 197
原创 361_C++_在使用多数据的array、object类型的其中的JSON数据的时候,为何要额外进行一次CopyFrom拷贝操作
然而,在你的代码中,你可能想要修改这些对象(尽管在这个特定的例子中,你似乎没有直接修改它们,但你可能会在未来的代码版本中这样做)。线程安全和同步:虽然在这个特定的代码片段中,你已经在处理数组之前和之后都加上了读写锁(pthread_rwlock_wrlock 和 pthread_rwlock_unlock),但如果你打算在并行环境中使用这些 JSON 对象,或者你的应用程序的其他部分可能会修改。性能优化:虽然在这个特定的例子中,性能差异可能不明显,但在处理大量数据时,使用自定义的内存分配器(如。
2024-09-02 15:49:45 127
原创 359_系统参数检查
这段代码对系统参数进行了压缩、编码(如果有)、并最终写入Flash存储。它通过多个缓冲区和数据操作确保了参数数据的一致性和可靠性,提供了加密支持,并且通过压缩操作节省了存储空间。两次压缩分别针对不同的数据部分,保证了系统在写入Flash存储时能够有效地使用存储空间并确保数据写入的成功率。压缩操作不仅提高了存储的效率,还可能在一定程度上提高数据传输的速度。函数用于计算并更新结构体的CRC校验码,而函数则是实际执行CRC校验码计算的核心算法。通过这种方式,系统可以有效地监控和校验关键参数数据的完整性。
2024-08-15 21:51:25 69
原创 358_C++_multimap容器允许健(key)重复,其中equal_range 成员函数,这个函数返回一对迭代器,这个对表示了所有与给定键相等的元素的范围
遍历[pr.first, pr.second)这个范围(注意是左闭右开区间),你可以访问所有键等于enCfgPage的元素
2024-08-13 09:40:33 49
原创 357_C++_同一个函数,拆分成多部分,使得调用者可以根据需要选择最合适的输入格式(同函数名,不同类型、数量参数)
虽然第二版sendMsg通过拆分和代码简化提高了可维护性和代码质量,但第一版在灵活性和内存管理上仍有其优势。特别是在处理大数据量、复杂 JSON 结构或者在内存受限的环境下,第一版可能会提供更好的性能和更小的内存开销。因此,第一版更适合需要精细内存控制和灵活调用的场景,而第二版更适合需要易于维护和代码简洁的场合。
2024-08-12 21:23:20 97
原创 356_lambda表达式,多段调用,A函数调用lambda-1,然后lambda-1中调用lambda-2
lambda表达式连续多段调用,另外:使用了std::regex和std::smatch来提取和匹配字符串中的数字,这是一个很灵活且强大的方法
2024-08-05 18:57:33 121
原创 355_C++_自动维护时间点计算,以天、小时(00:00-02:00、02:00-04:00 ......)来计算
通过设定维护时间段和周期,实现了设备在指定时间段内进行自动维护的功能。
2024-07-31 22:14:07 74
原创 354_C++异步写文件,检查数据段的索引和重试,且多段索引跟踪,最后更新索引和时间信息,继承自353的类CLcAsyncCall
int iIdx;fnAsyncCb是一个函数类型定义,用于表示异步回调函数,它接收三个参数(一个引用,一个int引用,一个引用)并返回一个bool。是一个结构体,用于存储异步写入的信息,包含索引、绝对时间和文件指针。public:makeAsync是两个静态方法,用于创建对象的共享指针,一个包含超时参数,一个没有。构造函数有两个重载,一个包含超时参数,一个不包含。析构函数用于清理资源。返回线程名称。writeFile。
2024-07-28 11:22:17 61
原创 353_C++_Boost.Asio库来处理异步操作
使用Boost.Asio库进行IO异步调用,并使用智能指针和线程同步技术来管理对象的生命周期和异步任务的执行
2024-07-22 21:28:55 235
原创 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 90
原创 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 79
原创 350_C++_函数指针数组,存储各种功能的检查函数 + 字符串数组,存储各种功能的提示字符串
在C++中,bool (RSChannel::*funcCheck[])() 这样的声明定义了一个函数指针数组,其中每个元素都是一个指向RSChannel类成员函数的指针,这些成员函数没有参数并返回一个bool值。如果您需要添加新的功能检查,只需在funcCheck和toolTips数组中添加新的元素即可,而无需修改循环或添加新的代码块。: 这里,funcCheck是一个数组,其元素是指向RSChannel类的成员函数的指针,这些成员函数没有参数并返回一个bool值。(即没有参数并返回一个bool值)。
2024-07-02 09:38:41 80
原创 349_JSON_将value组到hl::json::document中,补齐树状结构图,然后转成hl::json::string类型通过HTTP发送出去
关键在于'组合'这一步上
2024-06-24 10:25:53 131
原创 348_C++_find_if应用,查找过程是通过一个lambda表达式完成,查找容器中参数和[传入参数]有无相等参数
定义了一个类型别名PairList作为std::list的实例化,该std::list存储std::pair类型的元素。然后,它创建了一个PairList类型的变量_valuePairs,并使用这个列表通过 find_if 来查找一个特定的整数值对应的字符串
2024-06-14 15:49:54 111
原创 347_C++_BOOST_AUTO应用于:查找JSON字段、查找map容器中的key、推导list容器进行bit置位
【代码】347_C++_BOOST_AUTO应用于:查找JSON字段、查找map容器中的key、推导list容器进行bit置位。
2024-06-14 15:42:54 101
原创 346_C++_升级中的检测功能:共享升级锁、Txt文档转JSON【有分包下载操作】
一整套流程:URL、证书验证,通过http的curl方式连接外部info文件获取文件大小,然后http方式获取文件data,然后转成json形式,方便获取info中对应字段的value。
2024-06-11 20:52:20 83
原创 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 97
原创 342_Python_读取字符串中逗号‘,‘分隔符,提取其中时间戳和每帧数据frame_size平均值、总大小、最大值、最小值
使用方法及用到知识点:写文件、列表、列表推导式、索引、字典中的键值对、查找字典中的key及value
2024-05-23 19:17:44 86
原创 341_C++_使用C++中的std::map容器查找键的时候,注意给个默认值,防止成员函数value()未查找到键,确保即使键不存在,你也能安全地获取一个值
当type这个键在mKeyMaps中不存在时,value()函数返回的默认值。这通常用于确保即使键不存在,你也能安全地获取一个值(尽管这个值可能不是你真正想要的)
2024-05-23 10:56:36 138
原创 340_C++_std::vector和set::list有什么区别?哪个更好,更能减少运行内存?以及存储的元素类型SnapInfo *、std::shared_ptr有什么优劣?
std::vector可能会因为连续的内存布局而浪费一些空间(例如,为了保持连续性而预留额外的空间),而std::list则因为每个元素都需要存储指向下一个和上一个元素的指针而增加了一些额外的开销。std::vector<SnapInfo *> 和 std::list<std::shared_ptr> 在C++中用于不同的目的,并且它们在内存使用和性能方面有不同的特性。使用std::shared_ptr会增加每个元素的内存开销,因为每个std::shared_ptr都需要存储引用计数和指向对象的指针。
2024-05-20 16:02:42 359
原创 339_C++_【分包】规定每次文件读取数据大小,多次传输,传输次数:data总大小(除以)单次读取大小
【代码】339_C++_规定每次文件读取数据大小,多次传输,传输次数:data总大小(除以)单次读取大小。
2024-05-20 15:28:27 174
原创 338_Python_检索指定路径下所有文件中的中文字符,并保存到指定文件中(可以是xlsx、CSV、txt类型的文件)
2、main中判断路径存在否,不存在直接退出,存在,判断保存文件名存在否;指定的保存文件名不存在,创建默认文件名,存在开始执行读路径下全部文件操作。3、遍历指定目录,显示目录下的所有文件名,目录路径 root 和文件名 file 需要拼接成文件的完整路径,然后开始读取当前文件内容。双引号字符开头的,是把字符组成字符串,然后判断是不是中文字符+有没有保存过,最后才是正式保存。5、findChinaStr中文字符保存函数中,同样需要判断,判断是不是。的直接跳过,然后才开始对每行中的中文字符进行保存。
2024-05-17 15:20:00 299
原创 337_C++_内存对齐操作,内存分配、或其他需要数据对齐的场合中是很常见的操作
(srcSz + (alnSz - 1)) & (~(alnSz - 1)) :需要数据对齐的场合中是很常见的操作
2024-05-15 19:29:30 89
原创 336_C++_ImageBuffer类管理ImagesCache类,ImagesCache负责在进程地址空间中映射给定大小区域,处理较大数据的缓存和缓冲
ImagesCache 类负责管理图像数据的缓存节点, ImageBuffer 类则作为图像的缓冲区。它隐藏了缓存实现的细节,只暴露必要的接口,通过将缓存管理和缓冲管理分离到不同的类中,可以更容易地修改或扩展其中一个类,而不会影响另一个类的功能。
2024-05-15 11:39:00 114
原创 335_C++_传入自定义数量参数,通过位移,生成唯一标识符key,通过函数返回值,看是占据32位还是64位
通过位移操作和按位或运算,我们将这些参数组合成一个64位或者32位的整数,作为唯一标识符key返回
2024-05-14 16:02:51 96
原创 334_C++_std::bind中使用shared_from_this()
通常是为了确保绑定的成员函数在被调用时,其所属的对象(即this指针所指向的对象)仍然有效。这是因为std::bind会创建一个新的可调用对象,该对象可能在其生命周期内`异步地`或在不同的上下文中被调用
2024-05-14 11:09:51 204 1
原创 333_C++_【分包】编写一个go函数每次从文件中读取固定大小数据,且go作为回调,传递给其他函数中,多次调用,完成逐块传输数据
m_filesize是数据总大小,每次fread固定sizeof(m_databuf)大小,len得到每次读取字节数,读取后m_filesize -= len,当m_filesize
2024-05-13 15:54:07 113
原创 332_C++_mmap 映射文件或设备到进程的地址空间,或者创建一个新的映射区域
提供了一种高效的方式来访问文件,特别是大文件,因为它们允许将文件的一部分或全部直接映射到进程的地址空间中,从而减少了传统读/写系统调用所涉及的内核和用户空间之间的数据拷贝.
2024-05-13 09:43:29 161
原创 331_C++_使用 poll 系统调用函数,用于监视文件描述符(fd)的状态,以确定它是否准备好进行读或写操作
使用 poll 系统调用的函数,监视文件描述符fd的状态,以确定它是否准备好进行读或写操作。函数 Select2 接受一个文件描述符 fd、一个布尔值 send 和一个超时时间 milliseconds 作为参数
2024-05-13 09:23:02 363
原创 330_C++_HTTP_登录login使用CURLOPT_HEADERFUNCTION获取头数据token和cookie,用于下次API调用curl中CURLOPT_HTTPHEADER的使用
CURLOPT_HEADERFUNCTION是libcurl库中的一个选项,用于设置自定义的header处理函数。libcurl是一个功能强大的库,用于在网络上进行各种类型的传输,包括HTTP、FTP等1。当libcurl发送HTTP请求时,它会将请求头发送到服务器。CURLOPT_HEADERFUNCTION选项允许你自定义处理这些header数据的方式,例如解析、修改或记录它们1。
2024-05-10 15:49:50 109
原创 329_C++_JSON_字符串拼接成json格式,最外层包R“()“,R是原始字符串字面量的标识符
R"({"data":{)" 创建了一个原始字符串字面量,其中包含了 {、"、: 和 } 字符,而没有将它们解释为转义字符。这样做的好处是,在拼接字符串时,你不需要对每个反斜杠进行转义,从而简化了代码。
2024-05-07 20:04:51 169
原创 328_C++_HTTP_HTTP协议传输data数据,为什么要进行base64编解码操作?
HTTP协议是基于文本的。这意味着它主要处理字符数据,而不是二进制数据。发送二进制数据时,将其转换为文本格式,数据就可以作为文本在HTTP协议中传输。
2024-05-07 11:24:43 351
原创 326_C++_读文件data到buffer中,拷贝文件、删除文件及目录,都使用函数,不用cmd命令行
removeDir、CopyDirectory、CopyFile :自定义函数,fread、fwrite使用C函数
2024-05-06 14:15:23 125
原创 325_C++_QT_QMessageBox 对话框定时关闭,使用QTimer::timeout、timer->start(xxx)
【代码】325_C++_QT_QMessageBox 对话框定时关闭,使用QTimer::timeout、timer->start(xxx)
2024-05-06 13:46:59 197
Qt_zuoye_01_27-登录界面、表格界面最终版本.rar
2021-09-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人