自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 资源 (2)
  • 收藏
  • 关注

原创 C++全局变量未初始的和已初始化的位置放在哪里?

摘要:C/C++中全局变量的存储位置由编译器决定,已初始化变量存储在.data段,未初始化变量存储在.bss段(默认初始化为0)。全局变量定义在头文件中会导致重复定义错误,违反ODR原则,应使用extern声明在头文件中,并在单一源文件中定义。替代方案包括静态变量、命名空间或单例模式。建议避免在头文件中直接定义全局变量,以提高代码可维护性并防止命名冲突。

2025-09-02 16:32:18 1020

原创 C++的迭代器和指针的区别

摘要:C++中迭代器和指针都用于访问元素,但存在显著差异。指针直接操作内存,灵活性高,适合底层控制和动态内存;迭代器是抽象化的指针,封装容器访问逻辑,提供统一接口,兼容标准库算法。指针优势在于性能和控制,迭代器优势在于封装性和通用性。选择依据:需要底层操作用指针,处理容器元素用迭代器。(147字)

2025-08-30 16:46:32 549

原创 C++有一些流行的网络框架,比如Boost.Asio、libhv、cpp-httplib、libcurl。这些框架各有各的优点。

摘要:C++主流网络框架对比,包括Boost.Asio(功能强大但复杂)、libhv(易用跨平台)、cpp-httplib(轻量HTTP)和libcurl(多协议支持)。各框架在性能、易用性、功能丰富度上各有优劣,需根据项目需求选择。事件驱动与多线程模型的差异影响开发复杂度,而异步I/O、跨平台支持和社区资源是选型关键因素。网络编程需权衡学习成本、系统资源和开发效率。(149字)

2025-07-29 19:43:47 1194

原创 Windows 系统分辨率切换** 与 **Qt4 无边框窗口管理机制** 的交互

摘要: Windows系统分辨率切换时,Qt4无边框窗口(Qt::FramelessWindowHint)可能出现窗口状态异常,如位置偏移、尺寸错误或界面卡死。原因在于: Qt4窗口管理缺陷:无边框窗口缺乏对分辨率变化的自动适配能力,全屏模式未保存原始状态; Windows消息处理不足:未正确响应WM_DISPLAYCHANGE消息; 全屏恢复机制缺失:直接调用showFullScreen()可能导致窗口无法还原。 解决方案建议: 监听WM_DISPLAYCHANGE并手动调整窗口; 使用setWindow

2025-07-28 15:38:12 1043

原创 C++ 返回值优化(Return Value Optimization, RVO)

摘要: C++的**返回值优化(RVO)**通过直接在调用者内存中构造返回对象,避免拷贝/移动操作,提升性能。其适用于返回局部变量或临时对象的场景,但受限于单一返回路径和非引用类型。NRVO(命名返回值优化)是其特例,针对命名局部变量。即使未触发RVO,移动语义仍可优化返回过程。开发者应优先返回局部对象,并确保类支持移动语义以最大化优化效果。编译器选项(如GCC的-fno-elide-constructors)可辅助验证优化行为。

2025-07-17 19:23:12 1157

原创 Qt 将触摸事件转换为鼠标事件(Qt4和Qt5及以上版本)

本文介绍了在Qt中如何将触摸事件转换为鼠标事件的方法。在Qt5及更高版本中,可以通过重写QWidget的event()方法手动处理触摸事件并生成对应的鼠标事件,或使用QML直接转换触摸事件。文章还提供了具体代码示例,包括在QWidget和QML中的实现方式。对于Qt4版本,虽然支持有限,但仍可通过类似方式在event()方法中捕获触摸事件并转换为鼠标事件。此外,还提到了Qt提供的内部工具QTouchEventConverter和QGraphicsView等替代方案,为不同场景下的触摸事件处理提供了多种解决方

2025-07-16 19:06:13 1378

原创 C++如何进行性能优化?

一般性能优化都是具体问题具体分析,但也可以总结出一些相对通用的小技巧。

2025-07-09 19:59:26 1107 1

原创 C++中如何使用使用线程局部存储?它的原理时什么?

C++中的线程局部存储(TLS)机制允许每个线程拥有独立的变量副本,避免了多线程数据竞争。主要实现方式有两种:非标准的__thread关键字(GCC/MSVC支持)和C++11标准的thread_local关键字。TLS通过为每个线程分配独立存储区域实现线程安全,变量在首次访问时初始化,线程结束时销毁。适用于需要线程独立状态(如日志记录器)或避免全局变量加锁的场景。但需注意thread_local不能用于静态成员变量或引用类型,且变量生命周期与线程一致。推荐使用标准thread_local实现线程安全的数据

2025-07-02 11:01:37 611

原创 C++ spdlog 使用指南

spdlog是一个高性能C++日志库,支持多线程和异步日志记录。本文介绍了spdlog的安装配置、基本使用方法、日志器创建与管理、格式化输出、文件日志、高级特性(如异步日志和多接收器)以及性能优化建议。主要内容包括通过包管理器或源码头文件安装、不同日志级别的输出、创建控制台和文件日志器、自定义日志格式、滚动日志文件实现等。文章还提供了常见问题解决方案和完整使用示例,帮助开发者快速掌握spdlog的强大功能。

2025-07-01 13:51:51 1570

原创 C++中,线程同步机制的选择(锁 vs 原子变量)

C++线程同步机制的选择需根据具体场景权衡:锁适用于保护复杂数据结构或多步操作,提供更灵活的同步控制,但可能带来性能开销;原子变量则针对简单变量操作提供轻量级高效解决方案,但不支持复杂逻辑。性能测试表明原子操作在单变量场景下效率更高,而锁更适合需要整体保护的场景。开发者应根据数据结构复杂度、操作类型及性能需求合理选择同步方式,以平衡线程安全与执行效率。

2025-06-21 14:32:36 555

原创 职场打工人必备 deepseek搜索关键字:职场必备到自媒体创作,从学生党考试到个人成长,全方位提升你的 AI 使用效率。

《15个DeepSeek提示词助你玩转AI》 精选15个DeepSeek实用提示词,涵盖职场、自媒体、学习等多场景:职场人士可用周报生成、简历优化等指令提升效率;自媒体创作者可获取爆款标题、短视频脚本创作支持;学生党可快速完成文献综述等学术任务;个人成长方面提供情绪管理、项目管理等专业指导。还包含对比分析、多AI协作等高级功能,并附赠使用建议:明确需求、分阶段优化、指令简洁化。这些"拿来即用"的提示词模板,能显著提升AI使用效率,让用户快速掌握DeepSeek的核心功能。

2025-06-20 09:38:13 546

原创 C++中,std::async 一个用于异步编程的工具

摘要:本文介绍了C++中std::async的基本用法,通过两个示例展示了如何使用lambda表达式和普通函数进行异步编程。std::async可以配合std::launch策略控制任务执行方式,返回的std::future对象用于获取结果或检查状态。文章还解释了线程管理、异常处理等特性,并提醒注意线程安全和阻塞问题。使用std::async可以简化多线程编程,实现异步任务执行。

2025-06-19 19:45:20 563

原创 std::make_shared简化智能指针 `std::shared_ptr` 的创建过程,并提高性能(减少内存分配次数,提高缓存命中率)

std::make_shared 是 C++ 提供的智能指针创建工具,相比直接使用 new 具有三大优势: 安全性:避免手动 new 导致的异常泄漏风险,确保资源自动管理; 性能:合并控制块和对象的内存分配,减少次数并提升缓存命中率; 简洁性:代码更简短直观,如 auto ptr = std::make_shared<T>(args)。 现代 C++ 开发推荐优先使用 make_shared 创建 shared_ptr。

2025-06-12 14:57:10 945

原创 Qt 中实现文本截断(ellipsis)的功能。Qt 提供了此方法来处理过长的文本显示问题,例如在界面中限制文本长度并添加省略号(...)

并不是 Qt 中的标准类名或功能名称,但根据你的描述,你可能是指方法。这是一个用于在 Qt 中实现文本截断(ellipsis)的功能。Qt 提供了此方法来处理过长的文本显示问题,例如在界面中限制文本长度并添加省略号(…)。以下是关于。

2025-06-04 15:41:02 577

原创 C++中,`assert`断言调式程序用法

C++中的assert宏用于调试时检查条件,定义在<cassert>头文件中。当条件为假时,程序会终止并报错。该宏仅在调试模式生效,发布模式会被忽略。典型用法包括检查变量范围、除数非零等。开发者需注意:assert仅用于调试,不应替代错误处理;避免在断言中使用有副作用的表达式。示例展示了用assert验证数组索引有效性的场景,若索引越界则终止程序。

2025-05-28 16:00:28 403

原创 C++中,`friend`关键字的使用

C++中的friend关键字用于授予特定函数或类访问另一个类的私有和保护成员的权限。友元声明可以是单向的,包括友元函数(如displaySecret()访问MyClass的私有成员)和友元类(如FriendClass访问MyClass的私有数据)。关键特性包括不改变原有访问权限、单向性以及不可继承。示例代码展示了友元类的实际应用,但需注意过度使用友元可能破坏封装性。友元关系不能传播,仅作用于直接声明的类之间。

2025-05-28 14:27:16 545

原创 C++11 中引入的`final` 关键字作用。

C++中的final关键字主要用于限制继承和重写行为。用于类时,表示该类不可被继承;用于虚函数时,表示该函数不可在派生类中被重写。该特性由C++11引入,能增强代码安全性、明确设计意图,并支持编译器优化。典型应用场景包括防止意外重写关键方法、避免复杂的继承层次结构等。final可与virtual、override等修饰符组合使用,提高代码可读性和健壮性。

2025-05-27 19:19:19 424

原创 在C++11及后续标准中,auto和decltype是用于类型推导的关键特性,它们的作用和用法。

在C++11及后续标准中,`auto`和`decltype`是用于类型推导的关键特性,它们的作用和用法有所不同。以下是详细说明:

2025-04-08 18:45:41 1035

原创 C++中为什么要使用nullptr而不是null

nullptr是 C++11 引入的一个更现代化、更安全的空指针表示方式,能够显著提高代码的可读性和安全性。相比之下,NULL或0的使用容易导致类型混淆和平台依赖问题。因此,在现代 C++ 编程中,推荐优先使用nullptr。最终结论:使用nullptr是因为其提供了更强的类型安全性、更明确的语义以及更好的跨平台兼容性。

2025-04-06 10:04:38 488

原创 C++11:应用constexpr和编译时计算优化代码性能.

通过使用constexpr,我们可以将一些计算任务转移到编译阶段完成,从而提高程序的执行效率。这在处理静态数据结构、模板元编程以及需要频繁访问的数据时特别有用。不过需要注意的是,过度使用constexpr可能会增加编译时间,因此在实际开发中应权衡利弊。

2025-03-02 18:57:14 325

原创 正则表达式用法及其示例:匹配、查找、替换文本中的模式,及QT下如何使用正则表达式。

当然!正则表达式是一种强大的工具,用于匹配、查找、替换文本中的模式。下面是一些常见的正则表达式用法及其示例。在 Qt 中使用正则表达式主要依赖于 `QRegExp` 和 `QRegularExpression` 类。这两个类都提供了强大的正则表达式匹配功能。下面是关于如何使用它们的一些基本示例。

2025-02-23 19:31:39 2016

原创 QString是 Qt 框架中的一个核心类,基本用法使用:创建、字符串拼接、截取、查找、替换、分割、大小写转换、比较。

QString是 Qt 框架中的一个核心类,用于处理字符串数据。它提供了许多功能来处理文本操作,包括但不限于字符串拼接、分割、大小写转换等。下面是一些QString。

2025-02-23 19:25:45 585

原创 C++11引入的一个重要特性:移动语义,提高程序性能和资源管理效率。

移动语义通过右值引用(&&)实现。右值引用是一种特殊的引用类型,它可以绑定到临时对象(也称为右值)。通过移动语义,我们可以将资源从一个对象转移到另一个对象,而不是进行复制。这样,源对象的状态会被设置为未定义状态(通常是默认构造的状态),而目标对象则拥有原本资源的所有权。移动语义是现代C++中的一个重要特性,它显著提高了程序的性能,特别是在处理大型数据结构时。通过合理地使用移动语义,我们可以避免不必要的资源拷贝,从而提高程序的效率和响应速度。

2025-01-19 13:35:54 259

原创 C++内联函数inline的使用:C++优化减少函数调用的开销。

内联函数(Inline Function)是一种在C++中使用的优化技术,用于减少函数调用的开销。通常情况下,编译器会在调用函数时生成相应的函数调用指令,这会增加额外的执行时间。而内联函数通过将函数体直接插入到调用该函数的地方,从而避免了函数调用的开销。

2025-01-12 18:41:03 526

原创 c++为什么需要虚析构函数?

将析构函数声明为虚函数是处理继承层次结构时的一个重要实践。它确保了即使通过基类指针删除派生类对象,也能正确地调用派生类的析构函数,从而避免资源泄漏和其他潜在问题。

2025-01-01 09:27:03 571

原创 c++字节对齐

字节对齐是一种重要的技术,用于确保数据在内存中的高效访问。通过理解对齐规则,并适当使用编译器提供的工具,可以更好地控制结构体的布局,从而优化程序的性能。

2025-01-01 09:04:26 526

原创 Qt 框架中的一个容器小部件QStackedWidget的基本使用

QStackedWidget 是 Qt 框架中的一个容器小部件,它允许你将多个子小部件(通常是 QWidget 对象)堆叠起来,但是每次只能显示其中一个。它类似于一个标签页式的界面,用户可以通过点击不同的标签来切换显示不同的内容。

2024-09-08 21:27:38 846

原创 在网线连接的情况下,获取对方的IP地址通常需要依赖于网络通信协议

在网线连接的情况下,获取对方的IP地址通常需要依赖于网络通信协议。在TCP/IP协议中,当两台设备通过网线连接并进行通信时,它们的IP地址通常在TCP三次握手过程中被确定。然而,直接从网络中获取对方的IP地址并不简单,因为这涉及到网络编程知识和可能的网络协议栈的深入理解。

2024-08-28 15:56:15 1250

原创 LINUX下C语言读取网卡IP

是您想要获取IP地址的网卡名称。在不同的Linux系统中,网卡的名称可能不同(例如,可能是。这个程序首先创建了一个UDP套接字,并绑定到任何可用的IP地址和端口上。函数获取套接字的本地地址,这个地址就是当前使用的IP地址。此外,某些系统可能需要root权限来执行此操作。函数将IP地址从二进制格式转换为可读的字符串格式。请注意,这个程序假设。

2024-08-17 18:34:45 910

原创 C++适配windows和linux下网络编程TCP简单案例

TCP/IP(Transmission Control Protocol/Internet Protocol)协议是互联网的基础协议,包括了TCP(传输控制协议)和IP(互联网协议)等。TCP/IP协议族定义了网络中数据传输的规则,包括了数据包的封装、路由选择、数据传输、错误检测和校正等。

2024-08-17 18:20:45 912

原创 64位和32位对C++ 对long类型的使用造成程序崩溃、内存泄漏问题。

64位和32位对C++ 对long类型的使用造成程序崩溃、内存泄漏问题。

2024-05-31 21:41:54 665

原创 qt进阶2:windows下可执行程序崩溃生成dmp,定位崩溃问题。

qt编译的可执行程序在windows下崩溃可生成dmp文件,用于调试定位崩溃原因。

2024-04-11 21:33:25 1174

原创 qt调试日志文件生成

qt有固定的调试日志接口,可以通过终端去打印,但是仅适用在本地去调试,例如想长期放到测试台去检测, 可以采用生成日志文件的方式去监测.关键字:日志文件。

2024-04-08 22:17:09 844

原创 C++封装、继承(单继承)、多态详细分析。

多态性特征是 C++中最为重要的一个特征,熟练使用多态是学好 C++的关键,而理解多态的实现机制及实现过程则是熟练使用多态的关键。文章在分析多态性基本属性的基础上,结合具体程序实例重点分析了动态多态的实现机制,并结合虚函数和编原理分析了动态多态的实现过程。关键词:C++;多态性;虚函数多态性作为面向对象程序设计语言的 3 大要素之一,因其灵活性、伸缩性和复杂性而难以掌握。

2023-12-09 11:27:34 294

原创 C++11 新特性:智能指针的使用:shared_ptr、weak_ptr、unique_ptr的使用,使用案例说明。

C/C++ 为了实现对内存的细粒度的操作,没有设计垃圾收集器。因此,使用 C/C++ 编写项目时,开发人员需要格外注意内存的申请和释放。本文介绍了shared_ptr和weak_ptr源码,分析了它们对内存泄漏的检测方式,并指出它们所存在的不足。希望读者可以通过改进指针算法或 share_ptr 来规避内存泄漏,尽量不要写出连检测算法也无法处理的代码结构。提示:以下是本篇文章正文内容,下面案例可供参考weak_ptr是一种用于解决shared_ptr相互引用时产生死锁问题的智能指针。

2023-11-10 20:24:54 772

原创 回调函数的使用:案例一:c语言简单信号与槽机制。

了解回调函数的基本概念,函数指针的使用、简单信号与槽的实现机制;回调函数和普通函数的区别;函数指针的使用信号与槽的机制。

2023-07-26 16:54:45 702 1

原创 Linux下使用C语言实现进程间的通讯-消息队列

参考网上资源:https://www.bookstack.cn/read/linuxapi/docs-msgsnd-msgrcv.md该类型需要自己在编程时定义,用于存储消息的内容。下面给出一个范例,注意,里面的名称随意。消息类型必须要有,且不为0long mtype;//消息类型 char mtext [ 1 ];//数组大小编程时自己指定 };用于linux下进程间的通讯;了解在linux下使用命令创建、查看、删除消息队列,并修改其属性;使用c代码实现消息队列的创建等。

2023-07-06 22:37:56 958

原创 c语言全局变量(extern)和静态全局变量(static)的使用、拓展作用域(全局、局部等)

c、c++基本知识点:作用域、全局变量(extern)、局部变量等

2023-06-12 20:19:27 15478

原创 C++11多线程:windows临界区和Linux互斥锁、递归锁的区别与使用。

多线程windows临界区和Linux互斥锁提示:以下是本篇文章正文内容,下面案例可供参考(1)了解windows临界区;(2)了解linux递归锁和互斥锁;(3)了解基本函数的使用。

2023-05-14 20:22:13 1318

原创 C++11多线程:std::thread创建线程和std::async创建异步任务的区别,std::async创建异步任务后没有被推迟执行。

(1) thread创建新的线程;(2) async创建新的异步任务;有没有创建新线程立即执行还是延迟(没创建新线程)执行(3)std::thread和std::async的区别;(1)std::async的强制创建异步任务()与std::thread创建线程相似,容易系统崩溃。(2)std::async不带参数的创建异步任务,不会造成系统崩溃。

2023-05-06 20:40:40 1979

C++ spdlog引入头文件库下载

C++ spdlog日志

2025-07-01

华为 OD 综合分是指在华为公司的招聘流程中,根据面试、笔试、绩效考核等多个方面的综合评估,对应聘者进行综合排名和评分 这个评分会对最终录用结果产生一定的影响 华为 OD 机试通常每 6 个月可以参加

华为 OD 综合分是指在华为公司的招聘流程中,根据面试、笔试、绩效考核等多个方面的综合评估,对应聘者进行综合排名和评分。这个评分会对最终录用结果产生一定的影响。华为 OD 机试通常每 6 个月可以参加一次。如果第一次机试失败了,需要等待 6 个月才能再次参加机试。 《华为OD机考100题(真题)》从华为OD机考中精选100道经典题目,这些题目包括【5键键盘的输出】,【N进制减法】,【报数游戏】等等,并附上答案,很多是在网络上看到的,觉得不错上传出来,供大家一起共同分享学习。

2025-06-28

python进阶资料深Python的底层原理和高级特性;

. 简介 0 1. 序 0.1 2. 译后感 0.2 3. 原作者前⾔ 0.3 2. *args 和 **kwargs 1 1. *args 的⽤法 1.1 2. **kwargs 的⽤法 1.2 3. 使⽤ *args 和 **kwargs 来调⽤函数 1.3 4. 啥时候使⽤它们 1.4 3. 调试 Debugging 2 4. ⽣成器 Generators 3 1. 可迭代对象(Iterable) 3.1 2. 迭代器(Iterator) 3.2 3. 迭代(Iteration) 3.3 4. ⽣成器(Generators) 3.4 5. Map和Filter 4 1. Map 4.1 2. Filter 4.2 6. set 数据结构 5 7. 三元运算符 6 8. 装饰器 7 1. ⼀切皆对象 7.1 2. 在函数中定义函数 7.2 3. 从函数中返回函数 7.3 4. 将函数作为参数传给另⼀个函数 7.4 5. 你的第⼀个装饰器 7.5 1. 使⽤场景 7.5.1 2. 授权 7.5.2 3. ⽇志 7.5.3 6. 带参数的装饰器 7.6 1. 在函数中嵌⼊装饰器 7.6.1 2. 装饰器类 7.6.2 9. Global和Return 8 1. 多个return值 8.1 10. 对象变动 Mutation 9 11. __slots__魔法 10 12. 虚拟环境 11 13. 容器 Collections 12 14. 枚举 Enumerate 13 15. 对象⾃省 14 1. dir 14.1 2. type和id 14.2 3. inspect模块 14.3 16. 推导式 Comprehension 15 1. 列表推导式 15.1 2. 字典推导式 15.2 3. 集合推导式 15.3 1 Python进阶 17. 异常 16 1. 处理多个异

2025-06-20

初级经济师《经济基础知识和人力资源》思维导图

初级经济师《经济基础知识和人力资源》思维导图和思维导图-精华版

2025-06-17

2025年初级经济师《经济基础知识和人力资源》三色速记手册

2025年初级经济师《经济基础知识和人力资源》三色速记手册

2025-06-06

25年期货从业-法律法规-三色笔记

25年期货从业-法律法规-三色笔记

2025-06-03

【Python编程】多平台Python环境搭建指南:涵盖安装配置、首个程序编写及开发环境推荐

内容概要:本文详细介绍了 Python 环境的搭建流程,涵盖 Windows、macOS 和 Linux 三大主流操作系统。针对各系统提供了具体的安装步骤,包括下载安装包、运行安装程序、配置环境变量等关键环节。特别强调了在 Windows 系统中需勾选 "Add Python 3.x to PATH" 选项以避免手动配置环境变量。安装完成后,通过命令行验证 Python 和 pip 是否安装成功,并指导用户编写并运行第一个 Python 程序

2025-06-03

Git-2.49.0-64-bit

Git-2.49.0-64-bit

2025-06-03

Python学习暴力破解密码算法

Python学习暴力破解密码算法

2025-05-23

学习python抢票(示例大麦抢票)

自动登录(通常需要处理验证码,难点较大) 自动刷新页面、检测票务状态 自动点击购票、填写信息、提交订单 常用工具:Selenium(浏览器自动化)、Pyppeteer/Playwright(无头浏览器)、Mitmproxy(流量抓包分析) 学习型脚本参考(以Python+Selenium为例,验证码需人工处理或用平台打码) 只用于学习使用。

2025-05-23

Linux常用命令学习笔记.md

Linux常用命令学习笔记.md

2025-05-23

sqlite3.exe压缩包

用于解决svn中 clean up不成功,删除.svn目录下表数据用。

2022-12-02

javaweb文件上传和下载需要导入的包

javaweb文件上传和下载需要导入的包

2022-04-19

eclipse-java-2020-09-R-win32-x86_64.zip

java编译器与jdk

2021-02-22

空空如也

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

TA关注的人

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