- 博客(242)
- 收藏
- 关注
原创 Qt UI框架和Duilib UI框架差别
Qt以其强大的功能、广泛的平台支持和丰富的资源,适合长期发展和大型商业项目。而Duilib因其简易上手和开源特性,成为初学者的良好选择。开发者可以根据项目需求、团队技术背景和预算等因素,选择最适合的UI框架。
2025-04-05 02:01:57
93
原创 C++|GLog开源库的使用 如何实现自定义类型消息日志
就20250121搜集到的资料来看glog目前不支持自定义等级消息等级,但是可以通过添加标识符,宏定义,重写glog中的send函数实现。可以定义一个宏来封装日志记录操作,同时在宏中添加特定的标签或前缀。示例代码// 自定义日志接收器public:private:// 将日志内容包装为 std::string// 使用 stringstream 获取日志消息内容// 构造日志输出格式// 根据 severity 判断日志类型// 检查日志消息中是否包含特定标签。
2025-03-21 14:45:25
514
原创 我的创作纪念日
这些是我刚毕业的时候无法想象的,虽然目前在编程方面,对于架构,算法优化等多个层面来说,人工智能助手还不那么好用,但我是相信它会逐渐取代大部分工作和工种的,我也认为人类不应该囚禁在大量的重复劳动当中,但是未来人类靠什么谋生确实也是个问题吧,不过我没什么好担心的,普通人每天不会因为死亡而焦虑,所以也没必要因为一个自己控制不了且一定会发生并且正在发生的事情焦虑。每年都让我写初心,有什么初心,就是想当个笔记本,能帮到大家是顺便更好的事,能吸引来更多大佬一起学习交流更是更好的事。提示:在创作的过程中都有哪些收获。
2025-03-19 23:29:15
358
原创 GenICam GenTL 标准 ver1.5(1)GenICam简介与框架
GenICam(Generic Interface for Cameras)是一种工业相机接口标准,旨在为机器视觉行业提供一个统一的、标准化的相机接口。它允许不同制造商生产的相机能够通过一个通用的接口与各种图像采集软件和硬件进行交互。这种标准化的接口极大地简化了相机的集成过程,降低了开发成本,提高了系统的可扩展性和兼容性。GenICam标准涵盖了从相机硬件接口到数据传输协议的多个方面。
2025-03-18 21:15:00
895
原创 项目管理工具:提升团队效率的利器(以Jira和Trello为例)
Jira是一款由Atlassian公司开发的项目管理工具,最初是为敏捷开发团队设计的,但如今已广泛应用于各种类型的项目管理。它提供了强大的功能,支持敏捷开发方法(如Scrum和Kanban),同时也能满足传统项目管理的需求。Jira的核心优势在于其高度的可定制性和灵活性,能够适应不同规模和类型的团队。Trello是一款基于看板(Kanban)方法的项目管理工具,以简单直观的用户界面和操作方式而闻名。它通过看板和卡片的形式,帮助团队可视化任务和工作流程。
2025-03-18 21:15:00
897
原创 关系型数据库管理系统介绍
特性/数据库MySQLOracleSQL ServerPostgreSQLSQLite达梦数据库人大金仓数据库DB2MariaDBFirebirdInterbaseSybase ASE开源性开源,GPL许可证商业闭源商业闭源开源,PostgreSQL许可证开源,公共领域许可证商业闭源商业闭源商业闭源开源,GPL许可证商业闭源开源,MPL许可证商业闭源商业闭源开源,MPL许可证商业闭源性能高性能,适合Web应用高性能,适合大规模企业应用。
2025-02-09 11:29:45
1183
原创 代码模块化开发而不是全部代码写在构造函数里的优点
祝大家都能养成良好的代码编写习惯,拒绝屎堆代码!!!代码模块化开发是一种将程序分解为独立、可重用的模块或组件的开发方法。
2025-01-24 22:14:43
800
原创 算法|牛客网华为机试53-62C++
还可以接受一个可选的第四个参数,这是一个二元操作函数或函数对象,用于指定如何合并元素,而不仅仅是加法。动态规划,分两种情况,有空盘子和没有空盘子,递归到最后只有两种情况,0个盘子放n个苹果或者n个苹果放1个盘子。这个头文件提供了一些用于数值计算的函数模板,比如累加、累乘、部分求和等。头文件中定义的一个函数模板,它用于计算一个范围内所有元素的累加和。是一个迭代器类型,它可以指向任何支持递增和解引用操作的容器或数组的元素。是C++中的一个预处理指令,用于包含标准库中的。是累加结果的类型,也是初始值的类型。
2025-01-24 22:09:19
1027
原创 C++|开源日志库log4cpp和glog
如果需要高性能和高效的异步日志,可以选择spdlog或loguru。如果项目已经使用了BoostBoost.Log是一个非常合适的选择。如果需要更全面的功能,如日志分割、归档等,可以选择或。对于Qt项目,使用 Qt 自带的QDebug会是最方便的选择。如果需要一个轻量级的解决方案,MinLog或ZLog是不错的选择。根据你的需求(性能、功能、配置灵活性、平台支持等)来选择合适的日志库。
2025-01-21 11:14:56
1489
原创 C++|CRC校验总结
参考:Vector - CAPL - CRC算法介绍开发工具 > CRC校验工具循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种数据校验算法,广泛用于检测数据传输或存储过程中的错误。它通过计算数据的校验和来检测数据是否在传输过程中发生了错误。以下是几种常用的CRC校验算法:CRC-8CRC-16CRC-32CRC-64CRC算法特点CRC算法实现CRC算法通常通过位操作实现,包括位移、异或等操作。对于不同的多项式和数据长度,可以预先计算出一个查找表(lookup ta
2025-01-15 21:28:38
1113
1
转载 c++ 类之间的依赖问题:impl、代理模式
使用IMPL方式来较少类之间的依赖,减少编译时间变量可以使用指针,一大推变量使用结构体,类可以使用一个托管类,大致这三类型来实现减少依赖其实本质上来说,头文件之间就不应该有定义的依赖,所以java中统一使用了指针,实现cpp中才是真正包含所有具体定义,头文件是用来声明这个类长什么样子,实现cpp中用来实现这个类内部怎么实现的一个圆,圆内是你会的,圆外是你不知道的。而当圆越大,你知道的越多,不知道的也越多了。
2024-12-12 10:30:56
215
原创 Qt|绘制100万个图元大规模场景
工程总览:w.show();创建工程自带的QMainWindow,里面只创建了一个创建百万圆类:.hQ_OBJECTpublic:private:.cpp{}最关键的创建百万圆类:.hQ_OBJECTpublic:signals:// 场景初始化部分完成的信号// 场景初始化部分完成的槽函数private:// 场景// 视图// 线程池// 状态标签// 记录现在已经完成了多少个图元的创建.cpp。
2024-11-10 22:54:35
754
原创 算法|牛客网华为机试41-52C++
深度优先搜索一定要对递归过程有深入的理解,这样才能越做越顺,初做此类题型时不要盲目追求做题速度,多画一画递归树,了解了DFS运行机制以后,再去做同类题型就会得心应手。题目的意思就是找出字符串出现次数最多的字母,从26开始赋值,依次递减,出现次数第二多的为25…最后计算漂亮度总和最高的。俺也不知道47、49去哪了,写着写着就没了,就像很多公司让等着等着就没信了。string的substr()函数可以截取制定位置字符串。
2024-11-10 21:04:52
938
原创 算法|牛客网华为机试31-40C++
计算第5次落地后球经过的距离,除了第一次只经过一次,所以距离最后在减去初始长度,高度每次减去一半。for循环遍历一次,从后往前,如果是字符组成单词等遇到空格或者非字母输出。直接用sort函数就是按着ASCII码从小到大排序的。找每行每列的相加差1的数学规律,再每行输出。
2024-11-04 19:24:37
840
原创 C++|斐波那契数列
这个数列的前几项是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, …斐波那契数列可以通过多种方法计算,包括递归、迭代和动态规划。
2024-11-04 12:52:19
419
原创 算法|牛客网华为机试21-30C++
首先使用map将所有字母出现次数记录;第二步找出出现次数最少的次数,如果为1就是最少的;第三步找出所有出现次数最少的字母;最后排除所有出现次数最少的字母输出结果。将问题分解,首先整理出奇数数组和偶数数组,再查找每个偶数匹配哪个奇数,判断两数和是否是素数,使用find迭代获取匹配结果。首先利用和大小写字母A的差值,对应0-26,来将所有字母按顺序排好;可以接空瓶子,相当于每有两个空瓶就可以喝一瓶,结果直接除以2即可。使用动态规划,找到最长递增子序列+最长递减子序列;就是找I里是否包含R的子串,输出索引和值。
2024-10-30 19:44:01
1091
原创 C++|运算符优先级
C++中的运算符优先级决定了表达式中运算符的执行顺序。请注意,当表达式中包含多个具有相同优先级的运算符时,它们将从左到右进行计算。可以用来改变运算符的优先级,使得括号内的表达式首先被计算。
2024-10-30 11:58:33
1304
原创 算法|牛客网华为机试11-20C++
按空格将单个单词存入vector容器;将最后剩下的单词存入;如果为0直接输出,使用余数和除数自动省略小数点后特性,反向获取字符串并赋值给string。直接利用C++的bitset模板类,详见上方链接;直接用string索引值反向输出。尽力了实在不擅长动态规划问题;直接使用sort函数排序;用map加deque。
2024-10-27 19:00:06
1263
原创 C++|bitset模板类
如果你需要在容器中使用并进行排序,你可以定义一个比较函数或重载运算符。由于// 比较两个bitset// 使用自定义比较器进行排序// 打印排序后的bitsetsreturn 0;在这个示例中,我们定义了一个结构体,它重载了operator()来比较两个对象。然后我们使用std::sort对包含的进行排序。请注意,的比较是基于位集合的整数值进行的,而不是逐位比较。如果你需要逐位比较或其他复杂的比较逻辑,你需要在比较器中实现这些逻辑。
2024-10-22 19:51:54
912
原创 C++|sort函数
如果容器中的元素是自定义的类或结构体,你需要重载运算符来定义元素的比较逻辑。// 定义一个结构体int age;// 重载
2024-10-22 19:24:13
1827
原创 算法|牛客网华为机试1-10C++
题目描述:C/C++ 处理输入带空格的字符串的方法使用getline()方法读入整行内容。再从后往前遍历,遇到第一个空格就停止,此时遍历了最后一个单词,输出对应的遍历的次数即可。string s;=' ') {i--;size++;cout
2024-10-21 21:20:44
1302
原创 C++|std::stoi函数
是 C++11 引入的一个标准库函数,用于将字符串转换为整数。与 atoi() 不同,stoi() 提供了更强的功能,包括错误处理、支持指定进制等。,它存储了转换停止的位置,即字符串中 “123” 之后的字符 ‘a’ 的索引。的第一个参数,将字符串 “456” 转换为整数 456。,将字符串 “1a2” 视为十六进制数进行转换。如果转换失败(例如,字符串不包含有效的整数),是一个标准库函数,用于将字符串(在这个示例中,我们只使用了。在这个示例中,我们使用了。在这个示例中,我们使用了。
2024-10-21 20:14:44
2640
原创 WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析五
WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析五
2024-10-17 22:50:58
1259
原创 WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析四
WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析四
2024-10-17 10:19:05
1148
原创 WindowsAPI|每天了解几个winAPI接口之Iphlpapi.h网络配置相关文档详细分析三
WindowsAPI|每天了解几个winAPI接口之Iphlpapi.h网络配置相关文档详细分析三
2024-10-13 19:16:54
917
原创 WindowsAPI|每天了解几个winAPI接口之Iphlpapi.h网络配置相关文档详细分析二
WindowsAPI| 每天了解几个winAPI接口之Iphlpapi.h网络配置相关文档详细分析
2024-10-13 19:12:33
924
原创 C++|SHA-256、SHA-3或专门设计的密码哈希函数
在C++中,实现专门设计的密码哈希函数,如bcrypt、scrypt或Argon2,通常需要使用第三方库,因为这些算法比标准的哈希函数更复杂,包含了额外的安全特性。此外,密码哈希函数的使用应该遵循最新的安全最佳实践,包括适当的盐值生成和存储、密钥派生率的选择等。在C++中,你可以使用多种库来实现SHA-256哈希函数,其中比较流行的是OpenSSL库。确保你的OpenSSL库是最新的,因为旧版本可能不包含SHA-256函数。如果你的系统上的OpenSSL版本较旧,可能需要更新或安装支持SHA-3的版本。
2024-09-10 11:31:40
1338
原创 沟通技巧网课笔记
老虎型:表明自己的意见,同时表达你对上司的支持态度;猫头鹰型:先不表达自己意见,并向上司详细了解情况;难以轻信,慎重决策;考拉型:直接表达你的意见,无论是支持还是反对;孔雀型:先请上司谈意见,再谈个人的想法;不太当真,重在赞美;老虎型沟通策略:直捣黄龙,诱之以利;清晰表达,精准到位–让对方听懂明白,不要让对方误解,不偏离目标;陈述事实,有理有据–让对方认同接受,这是达成目标共识的基础;先处理心情,再处理问题;换一个角度说话,站在对方的角度去思考–换位思考;2)陈述我事之重要紧急行,让对方排序其列表中;
2024-09-10 11:18:36
471
原创 C++|MD5简介
将结构体的成员变量转换为字节流。使用MD5算法对字节流进行哈希计算。将计算出的哈希值转换为可读的格式(如十六进制字符串)。以下是一个简单的示例,演示如何对一个自定义结构体进行MD5哈希:首先,你需要一个MD5库。在C++中,你可以使用开源库如openssl来实现MD5。以下是使用openssl// 假设这是你的自定义结构体int a;float b;// 将结构体转换为字节流的函数// 以网络字节顺序(大端)写入数据const。
2024-09-10 11:16:14
2088
原创 常用数据存储介质
总结来说,SSD提供更快的速度和更好的耐用性,但成本较高;移动硬盘强调便携性,可以是SSD或HDD;而HDD则提供较大的存储容量和较低的成本,但速度较慢且更易受到物理损伤。用户在选择时需要根据自己的需求、预算和使用场景来决定。每种存储介质都有其特定的用途和优势,用户可以根据自己的需求选择合适的存储解决方案。
2024-08-30 20:58:15
894
原创 C++|初始化自定义结构体的几种方式
每种方法都有其适用场景,例如直接初始化和列表初始化是最简单直观的,而使用构造函数则提供了更多的灵活性和控制。在C++中,初始化自定义结构体有多种方式,每种方式都有其适用场景。操作符则适用于特定的性能优化场景或动态内存管理需求。选择哪种方法取决于具体的使用场景和需求。等则可以在初始化时提供更多的数据结构支持。
2024-08-30 20:57:11
1247
原创 应用软件初始化的优缺点,读写ini,json,xml...
读写 INI 文件和读写 JSON 文件是两种常见的数据存储方式,它们各自有不同的优缺点,适用于不同的应用场景。
2024-08-27 21:50:40
1001
原创 Mix|使用VS2017CMake构建Qt工程 仿照MVS(仅用于学习)
MVS下载链接:https://www.hikrobotics.com/cn/machinevision/service/download/?module=0。
2024-08-23 22:55:20
653
原创 Qt|实现数据同步又不阻塞主界面
创建子线程等待主线程调用,在主线程使用QEventLoop循环等待子线程返回执行结果,子线程内使用QWaitCondition,主要用于多线程编程,它提供了一种机制来同步线程间的操作,通过调用wakeOne()或wakeAll()方法唤醒等待的线程。主线程调用如下所示,先设置参数,后创建loop循环,该循环会一直等待子线程任务结束退出,保证了返回值的数据同步,同时不会阻塞主界面操作。子线程继承QThread类,在run函数内执行任务,执行完后发送信号给主线程。
2024-08-02 17:57:07
811
原创 《昇思25天学习打卡营第10天|初学教程/使用静态图加速》
AI编译框架分为两种运行模式,分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行,但也支持手工切换为静态图模式。
2024-08-01 09:06:43
998
原创 《昇思25天学习打卡营第9天|初学教程/保存与加载》
在训练网络模型的过程中,实际上我们希望保存中间和最后的结果,用于微调(fine-tune)和后续的模型推理与部署,本章节我们将介绍如何保存与加载模型。要加载模型权重,需要先创建相同模型的实例,然后使用load_checkpoint和load_param_into_net方法加载参数。MindIR同时保存了Checkpoint和模型结构,因此需要定义输入Tensor来获取输入shape。已有的MindIR模型可以方便地通过load接口加载,传入nn.GraphCell即可进行推理。
2024-07-31 20:12:38
177
原创 《昇思25天学习打卡营第8天|初学教程/模型训练》
从网络构建中加载代码,构建一个神经网络模型。nn.ReLU(),nn.ReLU(),超参(Hyperparameters)是可以调整的参数,可以控制模型训练优化的过程,不同的超参数值可能会影响模型训练和收敛速度。目前深度学习模型多采用批量随机梯度下降算法进行优化,随机梯度下降算法的原理如下:公式中, 𝑛 是批量大小(batch size), η 是学习率(learning rate)。另外, 𝑤𝑡 为训练轮次 𝑡中的权重参数, ∇𝑙 为损失函数的导数。
2024-07-31 19:52:15
1166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人