C++
扳手的海角
这个作者很懒,什么都没留下…
展开
-
362_C++_异步添加到队列中后(添加队列的任务数量限制30个),采用定时执行的任务,一个个顺序执行队列中的任务
并非全部一次性添加到队列,然后去执行一个个容器,而是一个个异步添加到队列,一个个执行(防止干扰到其他线程)原创 2024-09-02 21:27:46 · 179 阅读 · 0 评论 -
361_C++_在使用多数据的array、object类型的其中的JSON数据的时候,为何要额外进行一次CopyFrom拷贝操作
然而,在你的代码中,你可能想要修改这些对象(尽管在这个特定的例子中,你似乎没有直接修改它们,但你可能会在未来的代码版本中这样做)。线程安全和同步:虽然在这个特定的代码片段中,你已经在处理数组之前和之后都加上了读写锁(pthread_rwlock_wrlock 和 pthread_rwlock_unlock),但如果你打算在并行环境中使用这些 JSON 对象,或者你的应用程序的其他部分可能会修改。性能优化:虽然在这个特定的例子中,性能差异可能不明显,但在处理大量数据时,使用自定义的内存分配器(如。原创 2024-09-02 15:49:45 · 112 阅读 · 0 评论 -
358_C++_multimap容器允许健(key)重复,其中equal_range 成员函数,这个函数返回一对迭代器,这个对表示了所有与给定键相等的元素的范围
遍历[pr.first, pr.second)这个范围(注意是左闭右开区间),你可以访问所有键等于enCfgPage的元素原创 2024-08-13 09:40:33 · 36 阅读 · 0 评论 -
356_lambda表达式,多段调用,A函数调用lambda-1,然后lambda-1中调用lambda-2
lambda表达式连续多段调用,另外:使用了std::regex和std::smatch来提取和匹配字符串中的数字,这是一个很灵活且强大的方法原创 2024-08-05 18:57:33 · 108 阅读 · 0 评论 -
350_C++_函数指针数组,存储各种功能的检查函数 + 字符串数组,存储各种功能的提示字符串
在C++中,bool (RSChannel::*funcCheck[])() 这样的声明定义了一个函数指针数组,其中每个元素都是一个指向RSChannel类成员函数的指针,这些成员函数没有参数并返回一个bool值。如果您需要添加新的功能检查,只需在funcCheck和toolTips数组中添加新的元素即可,而无需修改循环或添加新的代码块。: 这里,funcCheck是一个数组,其元素是指向RSChannel类的成员函数的指针,这些成员函数没有参数并返回一个bool值。(即没有参数并返回一个bool值)。原创 2024-07-02 09:38:41 · 74 阅读 · 0 评论 -
347_C++_BOOST_AUTO应用于:查找JSON字段、查找map容器中的key、推导list容器进行bit置位
【代码】347_C++_BOOST_AUTO应用于:查找JSON字段、查找map容器中的key、推导list容器进行bit置位。原创 2024-06-14 15:42:54 · 94 阅读 · 0 评论 -
345_C++_共享缓冲区管理类shared_buffer
定义了一个名为shared_buffer的类,用于管理共享缓冲区。原创 2024-06-09 17:09:24 · 119 阅读 · 0 评论 -
341_C++_使用C++中的std::map容器查找键的时候,注意给个默认值,防止成员函数value()未查找到键,确保即使键不存在,你也能安全地获取一个值
当type这个键在mKeyMaps中不存在时,value()函数返回的默认值。这通常用于确保即使键不存在,你也能安全地获取一个值(尽管这个值可能不是你真正想要的)原创 2024-05-23 10:56:36 · 117 阅读 · 0 评论 -
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 · 345 阅读 · 0 评论 -
339_C++_【分包】规定每次文件读取数据大小,多次传输,传输次数:data总大小(除以)单次读取大小
【代码】339_C++_规定每次文件读取数据大小,多次传输,传输次数:data总大小(除以)单次读取大小。原创 2024-05-20 15:28:27 · 164 阅读 · 0 评论 -
337_C++_内存对齐操作,内存分配、或其他需要数据对齐的场合中是很常见的操作
(srcSz + (alnSz - 1)) & (~(alnSz - 1)) :需要数据对齐的场合中是很常见的操作原创 2024-05-15 19:29:30 · 78 阅读 · 0 评论 -
335_C++_传入自定义数量参数,通过位移,生成唯一标识符key,通过函数返回值,看是占据32位还是64位
通过位移操作和按位或运算,我们将这些参数组合成一个64位或者32位的整数,作为唯一标识符key返回原创 2024-05-14 16:02:51 · 83 阅读 · 0 评论 -
334_C++_std::bind中使用shared_from_this()
通常是为了确保绑定的成员函数在被调用时,其所属的对象(即this指针所指向的对象)仍然有效。这是因为std::bind会创建一个新的可调用对象,该对象可能在其生命周期内`异步地`或在不同的上下文中被调用原创 2024-05-14 11:09:51 · 177 阅读 · 1 评论 -
332_C++_mmap 映射文件或设备到进程的地址空间,或者创建一个新的映射区域
提供了一种高效的方式来访问文件,特别是大文件,因为它们允许将文件的一部分或全部直接映射到进程的地址空间中,从而减少了传统读/写系统调用所涉及的内核和用户空间之间的数据拷贝.原创 2024-05-13 09:43:29 · 151 阅读 · 0 评论 -
331_C++_使用 poll 系统调用函数,用于监视文件描述符(fd)的状态,以确定它是否准备好进行读或写操作
使用 poll 系统调用的函数,监视文件描述符fd的状态,以确定它是否准备好进行读或写操作。函数 Select2 接受一个文件描述符 fd、一个布尔值 send 和一个超时时间 milliseconds 作为参数原创 2024-05-13 09:23:02 · 352 阅读 · 0 评论 -
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 · 97 阅读 · 0 评论 -
329_C++_JSON_字符串拼接成json格式,最外层包R“()“,R是原始字符串字面量的标识符
R"({"data":{)" 创建了一个原始字符串字面量,其中包含了 {、"、: 和 } 字符,而没有将它们解释为转义字符。这样做的好处是,在拼接字符串时,你不需要对每个反斜杠进行转义,从而简化了代码。原创 2024-05-07 20:04:51 · 144 阅读 · 0 评论 -
327_C++_C风格和C++风格写文件操作
std::ofstream \ fopen原创 2024-05-07 09:46:43 · 197 阅读 · 0 评论 -
326_C++_读文件data到buffer中,拷贝文件、删除文件及目录,都使用函数,不用cmd命令行
removeDir、CopyDirectory、CopyFile :自定义函数,fread、fwrite使用C函数原创 2024-05-06 14:15:23 · 105 阅读 · 0 评论 -
324_C++_HTTP_curl-post连接,设置TCP连接为长连接
HTTP的POST方法是一种用于向指定的资源提交数据,以请求服务器进行处理的方式。它是HTTP协议中的一种请求方法,与GET方法相比,POST方法主要用于发送数据到服务器,而不是从服务器检索数据原创 2024-04-30 16:32:38 · 105 阅读 · 0 评论 -
323_C++_QT_QProcess执行cmd解压、压缩、删除tar.gz等等其他压缩包文件到指定目录,不需要外部库,QT自带API的就行
通过 Qt 的 QProcess 类来执行外部命令。QProcess 允许你启动和与外部程序进行通信原创 2024-04-29 20:20:03 · 248 阅读 · 0 评论 -
322_C++_将“Key_lists“的第一项中的key提取出来进行base64解码得到用于加密的salt 使用salt、“iter“迭代次数以及用户密码 进行PBKDF2处理得到加密后的秘钥Enc
当执行两条API请求的时候,第一条API的作用就是获取二次请求的key,请求到的key进行base64编解码形成加密的slat后,给第二条API调用原创 2024-04-26 10:29:47 · 59 阅读 · 0 评论 -
321_C++_字符串流的高级使用法,提高文件读取性能,以高效的方式处理二进制文件、非文本文件(如图像、音频、视频等)或跨平台兼容的文件
通过`std::filebuf`的成员函数针对`底层文件流`高效操作,完成写文件数据到buffer中,后续可对buffer转base64,跨平台传输文件~原创 2024-04-26 10:03:02 · 214 阅读 · 0 评论 -
320_C++_一整段JSON赋值给C++string类型对象
【代码】320_C++_一整段JSON赋值给C++string类型对象。原创 2024-04-25 10:58:34 · 117 阅读 · 0 评论 -
318_C++_写入结构体的函数 + 仿函数,配合算法使用,忘记了,今日用到回忆一下
C++的结构体(struct)中可以包含成员函数。在C++中,结构体和类(class)在功能上是相似的,只是默认的访问权限不同。结构体中的成员默认是public的,而类中的成员默认是private的原创 2024-04-17 21:27:31 · 97 阅读 · 0 评论 -
317_C++_QT跨页面复制、粘贴,312编号无法跨页面进行粘贴,因为是成员变量
使用QClipboard类来实现剪贴板的功能是相对简单的。QClipboard提供了访问系统剪贴板的接口,允许你复制和粘贴文本、图像等各种数据原创 2024-04-16 09:46:40 · 56 阅读 · 0 评论 -
316_C++_xml文件解析成map,可以放到QT表格上, 且 xml、xlsx文件可以互相解析
【代码】316_C++_xml文件解析成map,可以放到表格上 + xml、xlsx文件互相解析。原创 2024-04-12 15:35:04 · 579 阅读 · 0 评论 -
306_C++_QT_创建多个tag页面,使用QMdiArea容器控件,每个页面都是一个新的表格[或者其他]页面
1、对ini文件内容的读取采用链表QList 的形式读取第一列和第二列数据,map会覆盖 2、对QMdiArea容器控件的使用 3、表格QTableWidgetItem的注意原创 2024-02-21 17:13:30 · 300 阅读 · 0 评论 -
304_C++_C风格,读取文件st_size大小数据到数组buf,然后对buf进行Base64编码【涉及C++中的字符串处理和Base64编码】
设计函数:open、fstat、read、sl::crypto::base64::encode、close文件描述符原创 2024-01-30 09:48:41 · 87 阅读 · 0 评论 -
303_C++_QT_使用boost::str(boost::format()); 拼接字符串,QT上打印是乱码的解决方式,记录一下,使用toLocal8Bit()转码一下
使用boost::str(boost::format());拼接字符串,QT上打印是乱码的解决方式,使用toLocal8Bit()转码一下。原创 2024-01-10 14:35:54 · 385 阅读 · 0 评论 -
302_C++_QT_QComboBox样式设置,由多个控件组合成一个整体,有5各部分,与button按键等控件有很大区别
参考链接地址-1参考链接地址-2原创 2024-01-02 10:43:53 · 403 阅读 · 0 评论 -
301_C++_字符串解析函数‘strcasestr‘
strcasestr 是一个字符串查找函数,它在不区分大小写的情况下查找一个字符串在另一个字符串中的位置原创 2023-12-21 21:13:02 · 556 阅读 · 0 评论 -
298_C++_【base64Decode ---> base64_64_to_bits函数】Base64编码的字符串转换为原始的二进制数据
base64Decode中包含base64_64_to_bits,字符串类型数据转成buf方便拷贝原创 2023-12-07 21:42:54 · 978 阅读 · 1 评论 -
296_C++_一个dialog对话框在执行exec向系统发送一个延后销毁事件时,另一个对话框立刻接管了上一个对话框的销毁事件,导致死UI
当函数退出时,栈上的局部变量会被销毁。因此,对话框的删除事件可能导致它的析构函数被调用,从而释放栈上的对象。关于"栈上的变量"的提到,可能是在上下文中提到了对话框对象是在栈上创建的,但与 WA_DeleteOnClose 属性本身无关。并且是栈上的变量,当关闭ptz的时候,diolog的exec结束会向系统发送延后销毁事件,此时退出ptz会弹出自动升级对话框,接管了。在这个过程中,由于对话框接管了事件循环,会调用前面对话框的删除事件。时,通过事件循环的控制权交接,可能导致栈上的对话框对象被删除的过程。原创 2023-12-03 16:08:06 · 513 阅读 · 0 评论 -
294_C++_报警状态bit与(&)上通道bit,然后检测置位的通道,得到对应置位通道的告警信息,适用于多通道告警,组成string字符串发送
适用于多通道告警,用bit位的置位来表示对应通道产生了告警,组成string字符串发送;其中结构体进行了多层嵌套,第二层中还要枚举+联合体原创 2023-11-16 22:02:59 · 357 阅读 · 0 评论 -
293_C++_告警类
它首先会检查指定读者是否存在,然后再根据读者的状态以及获取的位置信息进行最终的判断,最后返回相应的状态码表示获取的成功或失败。总体来说,这个函数的目的是根据传入的位置信息更新指定读者的读取位置和周期,但在更新之前会根据特定条件进行严格的检查。总体而言,该函数的目的是管理告警列表的位置和周期,当列表中的位置到达最大值时,它会将位置重置为0,并增加周期指示告警列表的新周期。总体来说,这个函数的作用是初始化告警列表的读取器,并将其添加到告警列表的读取器列表中,同时返回对应的读取器 ID。在这个特定的程序中,原创 2023-11-08 21:45:35 · 455 阅读 · 0 评论 -
292_C++_建立流连接,创建多个线程执行I\O异步操作
在一个结构体中while创建I\O线程,并且通过静态函数返回I\O容器中的某个io_context;原创 2023-10-29 20:24:54 · 210 阅读 · 0 评论 -
290_C++_截取的一部分FTP视频上传代码,任务信息中读取视频帧数据并将其提供给 libcurl 用于上传。
ReadCallback:这个回调函数用于处理上传数据的读取。它是必须的,因为在 FTP 上传中,您需要提供要上传的数据。这个回调的实现需要确保提供正确的上传数据。原创 2023-10-20 22:04:26 · 411 阅读 · 0 评论 -
289_C++_视频reader读取视频流的buffer,不断的回调获取视频buffer数据,通过判断关键帧 i 帧的时间戳,来觉得是否要保存到数据存储的容器中【未完成】
不同的多媒体框架和库可能使用不同的时间单位和时间刻度来表示 PTS,但其基本目的都是相同的:确保音视频同步和正确的播放顺序。在接下来的代码中,有一些条件检查和操作,这部分代码可能与特定的视频处理需求相关,例如处理解码速度慢的情况、缓存帧等等。,则执行一些操作,如检查最新视频帧的时间戳与当前帧之间的时间间隔,如果时间间隔过大,可能会清空当前读取数据的缓冲区,这似乎是用于处理一些特殊情况的逻辑。通过正确设置每个视频帧的 PTS,可以确保视频帧和音频帧在播放过程中按照正确的时间进行同步。原创 2023-10-18 20:55:15 · 123 阅读 · 0 评论 -
283_C++_对于在多线程环境中进行的,而且操作涉及到了共享数据结构 ‘mJsonParamBuff‘ 的修改从而导致的死机问题中的【竞态条件】的理解+多种解决方式
在您提供的代码中,有一个名为的二维数组,它用于存储不同类型和索引的 JSON 参数。根据您的代码,每个元素都有一个特定的大小,用于存储 JSON 参数的文本数据。这个大小通过调用.resize()和字符串操作来设置。nodeStr根据您的代码,您正在修改中的元素以存储新的 JSON 参数。如果您按照正确的方式分配了足够的内存,并确保没有发生缓冲区溢出,那么这个代码应该是安全的。strcpystrcpy此外,您的代码还包含了线程锁定操作(和),这表明该代码在多线程环境中使用。原创 2023-10-03 16:30:14 · 57 阅读 · 0 评论