- 博客(13)
- 收藏
- 关注
原创 QT-TCP(QTcpSocket)保活机制(无需复杂心跳,直接调用函数)
TCP 是面向连接的协议,双方要经过三次握手建立连接。一旦连接建立,如果应用层一直没有数据收发,TCP 本身不会主动探测对方是否还存活。在很多场景下,连接可能“看似存在”,但实际上已经失效:对方主机掉电/重启网络中间设备(防火墙、NAT、路由器)清除了连接状态网络链路断开(物理或逻辑)这样,应用层还以为“连接正常”,直到下一次真正发数据时才发现超时或错误。TCP 保活机制最初由 RFC 1122 定义,主要为了解决:检测死连接如果一方已经掉线或不可达,长时间保持一个假连接会浪费系统资源。保活探测能帮助内核及
2025-09-19 13:51:57
811
原创 正则表达式里 (), +, $, \, \\ 的含义和区别
本文介绍了正则表达式中的几个关键符号及其用法:1)小括号()用于捕获组和分组;2)加号+作为量词表示前元素至少出现1次;3)美元符号$表示字符串结尾锚点;4)反斜杠\用于转义特殊字符;5)在C++中需使用双反斜杠\表示正则中的\。文章还提供了记忆口诀,并举例说明了这些符号在C++和正则表达式中的不同写法。这些基本概念是正则表达式入门的重要内容。
2025-08-20 14:10:40
723
原创 JlCompress解压docx模板更改xml生成新的docx文件,libreoffice转pdf失败,打开显示文件受损,换QuaZip文件正常分析
C++导出Word文件,转成PDF注意事项,在解压缩和压缩docx文件的时候尽量避免使用JICompress,而是使用QuaZip进行解压和压缩
2025-04-24 14:00:26
382
原创 C++/Qt导出动态数据生成Word、PDF报表文件
C++/Qt使用QuaZip、libreoffice,配合自定义Word模板生成Word文件和Pdf文件
2025-04-10 10:40:47
1682
原创 QPointer 和 QSharedPointer区别
QPointer:主要用于 QObject 对象,避免访问已销毁对象,不负责内存管理,适合用于 QObject 的父子关系中,轻量级。:负责内存管理,通过引用计数来控制对象生命周期,适用于多个对象共享同一资源的情况,线程安全。选择哪个智能指针取决于你的需求:如果需要管理对象生命周期并共享所有权,使用;如果只是需要避免悬空指针并确保对象销毁时指针无效,使用QPointer。
2024-11-27 14:09:59
1745
原创 failure in QCoreApplication:sendEvent: “Cannot send events to objects owned by a different thread
使用会将QTimer的生命周期交由QObject和双重管理,容易导致析构时的冲突。会使全权管理对象生命周期,更加安全。推荐避免在需要共享智能指针管理的对象上使用 Qt 的父子关系机制,保持单一的内存管理策略。
2024-11-21 17:39:45
447
原创 MVC设计模式-实践理解
一个Qt项目有这个类、界面类、响应动作类,所有界面只通过响应动作类和这个类进行信号和槽响应,以及参数互取,初始化顺序和包含关系最好怎么设计?
2024-11-11 10:09:16
276
原创 mongocxx教程
mongocxx是 MongoDB 的官方 C++ 驱动,用于 C++ 应用中连接和操作 MongoDB 数据库。以下是一个简明教程,涵盖安装、基本操作、查询和更新等内容。
2024-11-01 17:56:57
665
原创 打开 MongoDB Compass 的原因是 MongoDB 服务器(mongod)需要启动后,MongoDB Compass 才能连接到数据库。
命令用于手动启动 MongoDB 服务器,使得 MongoDB Compass 能够连接到数据库。你可以通过将 MongoDB 配置为服务,避免手动启动服务器的步骤。
2024-10-24 18:07:28
1045
原创 在遍历 QMap 时,it.value() 可能会触发一些操作,使得 Map 的元素被删除,从而导致迭代器失效。
在遍历QMap时,可能会触发一些操作,使得的元素被删除,从而导致迭代器失效。
2024-10-24 10:03:11
291
原创 QObject::killTimer: Timers cannot be stopped from another thread QObject::~QObject: Timers cannot be
错误信息:QObject::killTimer: Timers cannot be stopped from another thread QObject::~QObject: Timers cannot be stopped from another thread D:\Project\FPTN256\x64\Debug\FPTN256.exe (进程 4584)已退出,代码为 -1073741819。按任意键关闭此窗口. . .解答:这个错误信息表明你在使用或者QObject。
2024-10-23 18:01:36
2414
原创 C6262 错误提示说明你的函数在栈上分配了太多内存。在 C++ 中,函数的局部变量默认是分配在栈上的,而栈的大小是有限的。栈上过多的内存分配会导致栈溢出,尤其是对于较大的数组或缓冲区
栈上的内存有限,通常不能分配过大的数组或缓冲区。大块内存应该分配到堆上。可以使用new动态分配内存,也可以使用智能指针或标准容器(如)来更好地管理内存,避免内存泄漏和栈溢出问题。通过动态内存分配,可以有效解决C6262这个问题。
2024-10-10 14:33:27
845
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅