自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (1)
  • 收藏
  • 关注

原创 静态库和动态库的创建和调用方法

在移动交通项目上有许多设备需要使用,如在高速收费站往往需要多目相机、ETC、电子地秤和道闸等等设备,上层软件往往需要集成这些设备进行收费站软件项目方案的集成,每个地区指定的方案不同,采购的设备类型和指定的厂商往往不同,但是作为供应商针对不同的地区要求需要做好设备的接口适配这些需求,其中最常见的即采用动态库或静态库,通过上层软件指定的接口协议对设备功能进行封装,同时配合上层软件调试达成项目目的。

2025-07-19 08:47:11 208

原创 项目优化之开机自启动

摘要:本文介绍了在Windows系统中实现Qt程序开机自启动的方法。通过修改注册表HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Run路径实现自启动功能,并提供了使用QSettings操作注册表的具体代码示例。文章还强调了需要管理员权限才能访问注册表,以及在64位系统上32位程序可能遇到的注册表重定向问题。该方案特别适用于无人值守的停车管理系统等需要自动恢复运行的场景。

2025-07-18 13:57:38 290

原创 对象创建控制

在实际项目中对于一些对象需要在栈上创建,避免在堆上创建引起不要的内存泄露风险;同时一些对象由于生命周期在整个软件运行期,不适合在栈上创建只能在堆上创建;以下针对两种情况进行阐述和代码实践。

2025-07-17 10:33:56 164

原创 项目中PostGreSql数据库的维护

实际交通项目中PostGreSql数据库中的车辆相关数据每天不断更新增加,长此以往数据库的查询插入更新等效率会逐渐增加,相关数据库操作的TimeBenck也会频频爆出耗时日志。除此之外磁盘存储的坏道,数据的丢失,索引的损坏,数据库的断电崩溃等等也会引起数据库连接问题,对于一些大型商业停车场会带来较大的损失。以下记录实际中常用的一些排查维护方法。

2025-06-19 16:14:35 968

原创 项目开发中一些python测试脚本

在实际项目开发中由于排期和开发进度等和不具备测试环境等原因需要单独进行模拟测试;此时python撰写脚本进行测试环境模拟是一种比较方便的方式。以下是一些测试中常用的脚本总结。

2025-06-13 16:53:42 73

原创 MVC框架在项目数据处理中的应用

本文介绍了MVC(Model-View-Controller)架构及其在Qt框架中的实现。MVC将数据与界面分离,Qt4引入的model/view架构简化了这一模式,通过模型索引访问数据,并使用委托处理用户输入和自定义渲染。文章详细说明了模型、视图和委托的交互方式,以及如何通过QAbstractItemModel和QAbstractItemView实现标准化接口。最后,以员工管理系统为例,展示了如何通过自定义委托(如SpinBoxDelegate和ComBoxDelegate)实现不同视图(列表、表格、树形

2025-05-06 17:11:11 123

原创 项目优化之串口通信

打个标,待整理。。。

2025-04-17 23:44:59 122

原创 项目优化中ini配置文件解析器

在停车管理项目中不同道闸口的终端配置可能不同,如靠近居民楼的道闸终端LED的语音播报音量和靠近马路的道闸门口不同;不同终端道闸锁闸时间也可能不同,诸如此类放在数据库中,不同的终端在启动时必须先连接到数据库才能加载,远没有本地配置文件方便,也不如配置文件方便技术支持修改方便,对于此类本地化配置的参数需要进行提取改写到本地配置文件中。

2025-04-17 23:42:20 651

原创 Qt 动画框架类以及在项目优化中使用

待续。

2025-03-21 16:55:12 109

原创 无锁编程在项目优化中的应用

待续。

2025-03-21 16:52:05 341

原创 Qt图形视图框架在项目中的应用

Qt图形试图框架是Qt库中用于创建2D图形用户界面的模块。它提供了丰富的绘图功能,支持绘制形状、文本、图像以及处理复杂的图形效果。通过使用Qt Graphics View框架,开发者可以构建交互式和动态的图形应用程序,如绘图软件、地图应用和数据可视化工具等。

2025-03-21 16:50:36 336

原创 提升客户端程序性策略

在停车项目中随着过车的增加,程序运行时间的累积,程序可能会越来越慢,降低过车效率,针对此进行一些优化,先打个标记待后续空闲进行记录。

2025-03-05 23:10:15 86

原创 C++ 内存序在多线程中的使用

C++11中的内存序(Memory Order)为开发者提供了工具,帮助控制多线程程序中不同线程之间的内存操作顺序,从而避免由于编译器或处理器优化导致的指令重排问题。这些内存序提供了从无序到严格一致的内存访问保证,让程序员能够在性能和安全性之间进行权衡。本文将详细介绍C++中的六种内存序,并通过实际例子补充说明它们的应用场景。

2025-03-05 23:06:05 1199

原创 提升C++项目编译速度

提高程序编译效率一方面从代码文件管理方面不断降低不同文件之间的依赖关系,另外一方面从代码的业务层面剥离剧烈变动的业务逻辑和相对稳固的代码框架,尽可能的将变化部分小范围可控,尽可能的降低耦合度,这方面设计模式的使用是一个不错的选择。此外一些编译器上的配置如开启多核编译等以及一些加速编译的工具也有一定的效果,此处不详谈这方面。https://blog.csdn.net/WSTONECH/article/details/143989953文章浏览阅读282次。

2025-02-22 23:16:32 1223

原创 QSplashScreen --软件启动前的交互

QSplashScreen 是 Qt 中的一个类,用于显示启动画面。它通常在应用程序启动时显示,以向用户显示应用程序正在启动的状态。启动画面可以是一个图片,也可以是一个包含了文本、图片等内容的窗口。//slots//protected 可以继承自绘。

2025-02-21 17:07:08 1047

原创 Qt程序退出相关资源释放问题

通过重写主界面的这个函数可在窗口关闭前执行一些自定义的操作,比如询问用户是否真的要关闭窗口,或者保存未保存的数据。如果该窗口是主窗口,且所有子窗口都已关闭,应用程序会退出,退出前会触发和aboutToQuit信号。• 当调用quit()时,它会退出主事件循环,触发QApplication::exec()返回,并关闭所有打开的窗口。• quit()通常用于在应用程序中实现“退出”功能,比如在菜单项的“退出”操作上绑定这个函数。• close()适用于关闭单个窗口或控件的场景,比如“关闭”按钮的操作。

2025-02-20 16:18:34 1200

原创 CRTP在项目优化中的使用

CRTP 全称,即奇异递归模板模式。是一种 C++ 编程技巧,使用模板类和继承的组合来实现。该模式的关键思想是:在模板类的定义中,模板参数是当前类自身(通常是派生类)。这个技巧通常用于实现编译时多态,优化性能,C++中std:: enable_shared_from_this 也是一种CRTP的实践。。

2025-02-19 21:45:26 863

原创 PostgreSql数据库执行统计

在实际项目中为了确保软件长时间正常运行,监控数据库的执行情况非常有必要,这个扩展可以帮助你识别最频繁运行的查询、哪些查询消耗的时间最长,以及系统的整体工作量,从而对性能瓶颈进行诊断和优化。PostgreSql的pg_stat_statements插件提供一种方法追踪一个服务器所执行的所有 SQL 语句的执行统计信息,可以用于统计数据库的资源开销,分析TOP SQL。

2025-02-17 16:48:21 249

原创 内存池和对象的使用

Boost.Pool 包含一些用于管理内存的类。虽然 C++ 程序通常用于 new 动态分配内存,但内存提供方式的详细信息取决于标准库的实现和操作系统。例如,使用 Boost.Pool,您可以加速内存管理,从而更快地为程序提供内存。Boost.Pool 不会更改操作系统的行为 new。Boost.Pool 会首先从操作系统请求托管内存 - 例如,使用 new .从外部来看,您的程序已经分配了内存,但在内部,内存还不是必需的,而是交给 Boost.Pool 来管理它。

2025-02-14 15:31:45 1024

原创 Qt中QApplication 类和uic、moc程序

这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。有时候新增的类,编译器由于某种原因一直生成不了moc_xxx.cpp文件,此时可以手动调用moc程序解决。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。,程序中真正是通过这个类去控制界面文件,而不会直接操作界面文件。的形式记录界面的控件、属性、位置和布局等等,而实际。管理图形用户界面应用程序的控制流和主要设置。文件生成相关类文件ui_xxx.h。应用程序的初始化和结束。

2025-02-14 09:53:17 539

原创 Qt事件机制

事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,如键盘事件等;另一些事件则是由系统自动发出,如计时器事件。Qt 程序需要在main()函数创建一个QApplication对象,然后调用它的exec()函数。这个函数就是开始 Qt 的事件循环。在执行exec()函数之后,程序将进入事件循环来监听应用程序的事件。当事件发生时,Qt 将创建一个事件对象。Qt。

2025-02-13 22:39:13 1107

原创 轻量级TinyXml2的应用

TinyXML2 是 simple、small、efficient 的基于DOM (Document Object Model,文档对象模型) 的开源 C++ XML文件解析库,可以很方便地应用到现有的项目中。目前,TinyXML1 开发已经停止,所有的开发都转移到了 TinyXML2。TinyXML2 适用于大部分 C/C++ 的项目,经得住考验,是最好的选择。较 TinyXML1 而言,TinyXML2 化繁为简,使用时,而 TinyXML1 需要包含 6 个文件,一般生成静态链接库供项目使用。

2025-02-13 19:50:03 399

原创 Qt元对象系统

元对象系统引用反射的基本思想。所谓反射,就是指对象成员的自我检查。使用反射编程(reflection programming),就可以编写出通用的操作,可对有各种不同结构的类进行操作。使用通用的值存储器QVariant,就可以按照一种统一的方式来对基本类型和其它的普通类型进行操作。​ 简而言之,所谓的反射模式,就是通过自己来查看所有的属性,通过自己的元对象属性来访问自己的全部属性,为什么不直接使用成员函数呢?使用成员函数过于繁琐,通过元对象对应的方法可以快速访问对象的属性 ​。

2025-02-09 22:59:46 1038

原创 C++四种类型转换

当进行上行转换,也就是把子类的指针或引用转换成父类表示,这种转换是安全的;当进行下行转换,也就是把父类的指针或引用转换成子类表示,这种转换是不安全的,也需要程序员来保证;允许将任何指针类型转换为其它的指针类型;特别是开辟了系统全局的内存空间,需要在多个应用程序之间使用时,需要彼此共享,传递这个内存空间的指针时,就可以将指针转换成整数值,得到以后,再将整数值转换成指针,进行对应的操作。2.用于基本数据类型之间的转换,如把int转换成char,把int转换成enum等等,这种转换的安全性需要程序员来保证;

2025-02-09 11:54:52 354

原创 Boost中几种有趣容器的应用

需要注意的是circular_buffer的迭代器不是循环的,指向或超过end()的迭代器也会引发断言异常,前面所说的到达末尾时自动循环使用容器的另一端空间指的是当达到容器的容量上限,继续push_back方法压入元素时,原来begin处的元素就会被覆盖,原来begin + 1处的元素成为新的begin。C++的STL的map和mutil_map可以把key映射到value,但是这种映射关系是单向的,然而实际项目中有一些场景,双射容器更合适。它实现了一个通用、与标准库的容器一致的接口,并且具有与。

2025-02-09 11:35:44 797

原创 c++可变参数和折叠表达式详解

在C++编程中,处理不确定数量的参数是一个常见的需求。为了支持这种需求,C标准库提供了<stdarg.h>头文件,其中定义了一组宏和类型,用于处理不定参数函数。C++继承了C语言的可变参数机制,使用了stdarg.h提供的宏来处理不确定数量的参数。其原理基于栈的推入和弹出过程,不需要明确参数数量。此外,C++提供了可变参数机制,让我们能够创建接收任意数量参数的函数。这一特性在许多实际应用中非常有用,比如日志记录、函数重载等。<stdarg.h>

2025-02-02 23:54:46 1560

原创 C++中提高代码稳定性和兼容性的语法

C++11中提升编程代码稳定性和兼容性的一些语法介绍和使用举例。

2025-02-01 22:18:10 782

原创 C++中提高代码易用性的语法

基于范围的for循环中,不需要再传递容器的两端,循环会自动以容器为范围展开,并且循环中也屏蔽掉了迭代器的遍历细节,直接抽取容器中的元素进行运算,使用这种方式进行循环遍历会让编码和维护变得更加简便。} // 没有参数, 参数列表省略不写。在遍历关联型容器时也会出现同样的问题,基于范围的for循环中,虽然可以得到一个std::pair引用,但是我们是不能修改里边的first值的,也就是key值。很多时候,lambda 表达式的返回值是非常明显的,因此在 C++11 中允许省略 lambda 表达式的返回值。

2025-02-01 17:44:32 1074

原创 std::call_once的原理及使用

是 C++11 中引入的一个模版函数,实现多线程环境下实现单次调用,避免重复执行同一操作。

2025-02-01 16:22:08 763

原创 项目中enable_shared_from_this的使用

std::enable_shared_from_this是在内部保存一个对 this 的弱引用(例如 std::weak_ptr)。当 std::shared_ptr 的构造函数检测到无歧义且可访问的 enable_shared_from_this 基类时,如果内部存储的弱引用未被生存的 std::shared_ptr 占有,就会赋值新建的 std::shared_ptr。enable_shared_from_this 是个CRTP模板类,提供了一个可以返回一个shared_ptr的接口。

2025-01-27 20:37:08 158

原创 正则表达式以及Qt中的使用

匹配下标.indexIn 匹配长度 .matchedLength。正则由表达式+量词+断言组成。

2025-01-23 21:37:08 679

原创 项目优化之文件监控

QFileSystemWatcher 是 Qt 框架中提供的一个类,用于监视文件系统中的文件和目录的变化。它允许你在文件或目录发生变化时接收通知,并可以用于监视文件的创建、删除、重命名以及内容修改等操作。这对于需要实时监控文件系统变化的应用程序是非常有用的。

2025-01-23 17:09:03 238

原创 项目优化之文件监控

在停车项目中对于场内的僵尸车程序每天都会进行统计输出一个excel表格记录到指定文件,同时定期通过邮件的方式进行发送到管理员的邮箱中,从而进行人为干预;但是对于一些车场僵尸车较多,可能存在人为删除或篡改僵尸车日报,导致客户以为程序有问题从而引起客诉。

2025-01-23 17:03:59 205

原创 项目优化中文件压缩

在停车收费项目中,一些车流量大的车厂日志信息文件增加的很快,虽然采用spdlog根据大小限制了每一份日志的大小,但是往往这种车流量大的车厂是一些大型商场,各种类型车辆收费不同,不同时间往往有不同的优惠,且跟车严重会带来不少各种各样的问题;日志需要保存的时间就更久一些,因此对于日志按照时间尺度进行打包压缩是一个很好的方案,先mark以下,待后续空闲补充该部分内容。

2025-01-21 22:00:54 201

原创 excel表格的读写

项目中产生的数据除了可视化处理经常也需要以excel的形式导入导出,如停车收费项目中月租车数据、账单数据和过车数据等经常需要从软件中检索导出备份或做账目统计,也有必要将导入的数据可导入软件,以便恢复数据。

2025-01-21 21:52:24 150

原创 项目优化中加密算法的使用

本文系统介绍了数据安全通信中的加密算法及签名技术,重点分析了对称加密(AES、DES、3DES、SM4)和非对称加密(RSA)算法的原理与实现。对称加密采用相同密钥加解密,非对称加密使用公钥私钥对,RSA算法通过数学运算实现密钥生成与加解密流程。文章详细阐述了RSA的密钥生成、加密解密步骤,以及OpenSSL库的具体实现代码。同时介绍了数字签名技术(MD5、SHA系列)的应用场景及安全性比较。全文通过理论讲解与代码示例相结合的方式,为开发者提供了数据加密与签名的完整技术方案。

2025-01-21 21:41:00 170

原创 项目中数据库链接池使用

项目中数据库的增删查改及其频繁,连接的创建和销毁会很消耗资源,从而拖慢程序;初始创建连接池很有必要,先mark后续空闲整理这部分优化内容。

2025-01-21 21:35:31 255

原创 软件源码SVN版本号追溯

工作中软件开发过程中根据需求变更、缺陷修复、不同人员定制功能等等实际现场使用的软件会有不同的版本,若出现问题难以进行源码追溯,排查问题困难。

2025-01-14 16:22:33 441

原创 fmt 字符串格式化在项目中的使用

fmt 库是一个开源的 C++ 格式化库,它提供了一种简洁、安全和方式来进行字符串格式化,headonly全部头文件实现,直接引入项目即可。该库的设计目标是提供与 Python 的语法类似的功能,同时保持 C++ 的类型安全性和性能,在C++20中引入标准。

2025-01-08 21:05:57 638

原创 工作日志记录

记录工作中细碎的感悟和经验,持续补充中。

2025-01-08 20:20:26 296

OFDM信道估计与均衡 ZF MMSE RLS LMS

LMS_plot设为1和0分别运行线性均衡(ZF MMSE)和自适应均衡(LMS RLS)

2017-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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