- 博客(26)
- 收藏
- 关注
原创 Qt信号与槽机制实现原理
Qt 信号和槽的实现依赖元对象系统的反射能力、moc 生成的胶水代码,以及高效的事件分发机制。其核心设计在保证灵活性的同时,通过编译时类型检查(Qt5)和线程安全的异步调用,兼顾了性能与可靠性。理解这一机制有助于编写高效且松耦合的 Qt 应用程序。Qt 的信号和槽机制是其核心特性之一,用于实现对象间的松耦合通信。
2025-03-06 08:46:29
382
原创 C++ 无锁编程
无锁编程(Lock-Free Programming)是一种并发编程范式,其核心目标是避免使用传统互斥锁(如mutex),通过原子操作和内存顺序保证线程安全。它要求至少一个线程能够在有限步内完成操作,从而避免死锁和优先级反转等问题。与基于锁的编程相比,无锁设计通常能提高并发性能,尤其在低竞争场景下。无锁编程通过原子操作和精细的内存控制提升并发性能,但代价是更高的复杂性和调试难度。在需要极致性能的场景下合理选择,并借助工具和现有库降低风险。对于多数应用,基于锁的抽象(如std::mutex。
2025-03-04 17:45:13
454
原创 Python的 shutil 模块
Python 的shutil模块(shutil是 “shell utility” 的缩写)提供了一系列用于高级文件和目录操作的函数,它可以让你完成许多与文件系统相关的任务,以下是shutil。
2025-02-20 10:43:55
441
原创 top命令
是Linux系统管理的“瑞士军刀”,适用于实时监控、故障排查和性能分析。掌握其交互操作和参数组合,能快速定位资源瓶颈,提升运维效率。对于更友好的界面,可尝试替代工具。,用于动态查看系统资源使用情况和进程运行状态。它提供了系统概览(如CPU、内存、负载等)和进程列表,支持交互式操作和命令行参数,是排查性能问题的常用工具。仍是大多数Linux系统的默认选择。
2025-02-19 17:52:14
308
原创 traceroute命令
通过灵活使用参数和场景化分析,tracert能有效帮助用户理解网络结构、定位故障节点,是网络运维中的必备工具。若某节点频繁超时(显示请求超时),可结合ping或pathping进一步验证是否为永久性故障。vs Pathping:Pathping结合路径追踪与丢包统计,适合长期质量评估,但耗时较长。用于分析数据包在复杂网络中的实际路径,例如检测是否绕行不合理节点,优化CDN配置。某节点延迟突增(如从20ms升至200ms),可能为网络拥塞或设备性能问题。-d:禁用DNS解析,直接显示IP地址(提升执行速度)
2025-02-19 13:49:15
502
原创 QString和std::string 之间转换
在Qt/C++中,QString和之间的转换需要特别注意编码问题,因为它们使用不同的字符编码。
2025-02-18 10:09:34
1305
原创 VS2019查看程序内存使用情况
会记录下此时的内存使用情况和对比上次快照的内存增长情况。在程序需要查看内存使用或增长情况的地发设备断点。启动调试,在每次命中断点时,点击。
2025-02-13 17:54:55
413
原创 std::set最大可以存储多少个数据
例如,在典型的实现中,一个红黑树节点可能包含三个指针(父、左、右)、一个颜色标志(可能用一位,但实际可能占用一个字节或者更多,因为对齐的原因),以及元素本身。假设在64位系统中,每个指针是8字节,颜色标志占用1字节,加上元素的大小。比如,假设每个元素的大小是T类型的大小,比如int是4字节,那么存储N个int类型的元素大约需要N*4字节的内存。随着元素的不断插入和删除,可用内存可能变得碎片化,导致无法分配大的连续内存块,尽管红黑树的节点通常是动态分配的,每个节点单独分配,因此不需要连续的存储空间。
2025-02-13 16:20:16
453
原创 tcpdump命令
tcpdump是一个在Unix/Linux系统上常用的网络抓包工具,用于捕获网络数据包并将其显示或保存到文件中。它可以捕获网络流量,支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来筛选信息。tcpdump抓取到的数据包可以保存为pcap文件格式,然后可以使用Wireshark等图形界面工具进行进一步分析和查看。
2025-02-10 18:23:01
356
原创 lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具。在Linux环境下,任何事物都以文件的形式存在,通过文件不仅可以访问常规数据,还可以访问网络连接和硬件。lsof命令能够列出某个进程打开的文件、某个用户打开的文件,甚至是系统上打开的所有文件。它既可以查看普通文件,也可以查看目录、网络连接(如TCP和UDP套接字)、管道等,大大方便了系统管理员和开发人员对系统的日常管理和诊断工作。
2025-02-10 17:56:27
485
原创 netstat命令
netstat是一个用于显示网络连接、路由表、接口统计信息、伪装连接、多播成员等网络相关信息的命令行工具。它在 Linux 系统中广泛用于网络故障排查和监控。
2025-02-09 20:42:15
352
原创 C++ 智能指针
智能指针是C++中的一种对象,它通过封装原始指针并管理其生命周期,自动释放内存,从而避免内存泄漏和悬空指针等问题。智能指针的核心思想是资源获取即初始化(RAII),即在对象构造时获取资源,在对象析构时释放资源。智能指针是C++中管理动态内存的强大工具,能够有效避免内存泄漏和悬空指针等问题。适用于单一所有权的场景,适用于共享所有权的场景,而则用于解决循环引用问题。在实际开发中,应优先使用和来创建智能指针,以提高代码的安全性和可读性。
2025-02-09 20:28:58
757
原创 C++ 模板
模板是C++中用于创建泛型代码的机制,它可以根据不同的数据类型或对象进行实例化。通过使用模板,可以做到只编写一次代码,但让它适用于多种数据类型,而无需为每种类型重写相同的逻辑。要使用模板,必须对模板进行实例化,即用具体的参数去替换模板中的模板参数。函数名和参数列表使用了模板参数T,实际使用时会根据调用函数时传递的参数类型自动推导出T的类型。定义了模板,其中T是模板参数,可以是任意类型。偏特化允许对模板的一部分参数进行特化,提供比全特化更灵活的定制方式。函数模板是通用的函数定义,用于生成处理不同类型的函数。
2025-02-07 23:28:06
414
原创 1. 编译VTK-9.3.1
编译好后,通过生成INSTALL执行安装,发现Release和Debug模式的文件会安装到一起。需要修改cmake_install.cmake中CMAKE_INSTALL_PREFIX的值开区分安装目录。
2024-08-25 14:24:26
589
原创 Qt元对象系统
宏,该宏用于启动元对象特性,然后便可使用动态特性、信号和槽等功能了。的扩展,因此使用传统的编译器是不能直接编译启用了元对象系统的 Qt。注意:新文件不会“替换”掉旧的文件, 而是与原文件一起编译。对象间通信的信号和槽机制、运行时类型信息和动态属性系统等。宏的类的声明,则会生成另外一个包含了 Q_OBJECT。程序之前,需要把扩展的语法去掉,该功能就是 moc。包含到类的源文件中,要么被编译键接到类的实现中(的子类,提供实现了元对象特性所必须的代码。Qt 的元对象系统是。,这个新的源文件要么被。
2023-08-20 18:35:45
179
原创 [笔记]QT5.14+VS2022配置MSVC2017
背景:本地安装了Qt5.14勾选了MSVC2015 、MSVC2017、 MinGW64和Visual Studio2022。前提是本地安装了MSVC2017的相关开发套件。4,在项目工程中选用MSVC2017编译。1,设置编译器MSVC2017。本地没有安装cdb.exe的需。2,设置调试器cdb.exe。
2023-07-30 17:00:41
2631
1
原创 C++单例数据共享类实现
//sharedataclass.hclass ShareDataClass : public QObject{private:ShareDataClass() = default;ShareDataClass(const ShareDataClass&) = deault;ShareDataClass &operator=(const ShareDataClass&) = deault; ...
2021-10-18 17:14:31
83
原创 C++简单日志函数
//日志函数//.h文件int WriteLog(const char* fmt, ...);//.cpp文件#include <string>#include <stdio.h>#include <tchar.h>using namespace std;......int XXX::WriteLog(const char * fmt, ...){ char Logbuffer[300]; va_list aptr; ...
2020-09-09 09:05:02
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人