
C++
文章平均质量分 78
69岁老同志程序员
这个作者很懒,什么都没留下…
展开
-
多线程编程中什么时候使用锁和原子操作
都可以用来保证线程安全,但它们的适用场景不同。,如无锁队列(lock-free queue)或无锁栈(lock-free stack),可能导致**缓存一致性(cache coherence)**问题,而。如果代码逻辑较复杂,需要执行多个步骤,使用。尽管原子操作效率更高,但在以下情况下,如果数据结构较复杂,且多个线程需要同时。,如果无法保证数据完整性,再考虑。、指针等),并且这些操作可以用。所以,在实际应用中,先尝试用。能减少线程同步的开销,避免。上面代码是错误的,因为。在一起更新的原子性。原创 2025-03-23 17:03:24 · 769 阅读 · 0 评论 -
C++ 中为什么使用 Lambda 可以避免变量污染?
在 C++ 多线程编程中,我们经常会看到一种写法:将主逻辑封装在一个 lambda 表达式中,然后立即调用它。这种写法不仅提升了代码的可读性,还有效地避免了**变量污染(Variable Pollution)**的问题。变量污染指的是:临时变量或局部变量在当前作用域中被不必要地保留,影响了其他逻辑的实现。在 C++ 的 循环或 循环中,如果直接声明变量,这些变量会被保留在整个函数的作用域中,可能被后续代码误用或意外覆盖,导致难以排查的 Bug。🎯 问题分析: 和 是循环内的临时变量,但它们的作原创 2025-03-17 17:07:37 · 303 阅读 · 0 评论 -
CRC32校验
是一种用于检测数据传输和存储中错误的校验方法。它通过对数据进行多项式除法运算,生成一个32位的校验码。CRC32 可以有效检测多种类型的错误,包括单比特错误、多比特错误、奇数比特错误、块错误和循环移位错误。CRC32 校验是一种高效的错误检测方法,通过使用预生成的查找表和特定的生成多项式,可以快速计算数据的CRC校验码。上述代码展示了生成CRC32表、初始化和更新CRC值以及最终计算CRC值的具体实现过程。生成多项式0x04C11DB7的选择是经过理论分析和实践验证的结果,确保了其高效的错误检测能力。原创 2024-08-05 10:59:08 · 1895 阅读 · 0 评论 -
C++11新特性-可变参数模板
C++11 的可变参数模板是一个强大的特性,使得模板能够处理任意数量的参数。它允许定义函数和类模板来处理各种参数,支持递归调用和参数包展开,极大地增强了模板的灵活性和表达能力。在实际编程中,它被广泛用于实现通用的函数库、处理可变参数列表等场景。原创 2024-08-04 11:02:46 · 454 阅读 · 0 评论 -
C++11新特性-lambda表达式
Lambda 表达式在 C++ 中提供了一种方便的方式来定义临时的匿名函数对象。它们在需要简洁、局部的函数逻辑时非常有用,尤其是在 STL 算法、事件处理、回调函数、自定义比较、生成函数对象等场景中。使用 Lambda 表达式可以使代码更加清晰、可维护。原创 2024-08-04 10:37:24 · 704 阅读 · 0 评论 -
C++11-智能指针全面总结
C++11 引入了几种智能指针,包括, 和,用于简化动态内存管理,避免内存泄漏和悬挂指针问题。以下是每种智能指针的详细介绍及其使用方法。智能指针类型:独占所有权,不能复制,只能移动。:共享所有权,通过引用计数管理对象生命周期。:不控制对象生命周期,用于解决循环引用问题。推荐的初始化方法(C++14 引入):推荐用于。:推荐用于。常用 APIreset():释放对象并置空。release()(仅适用于):释放控制权并返回裸指针。get():返回裸指针。(适用于和):返回引用计数。原创 2024-08-03 16:16:09 · 912 阅读 · 0 评论 -
C++17新特性
C++17是C++标准中的一个重要版本,它在语言核心和标准库中引入了许多新特性和改进,使得C++编程更加现代化和高效。、内联变量、新的标准属性以及文件系统库。是一个标准库类型,用于表示一个可能包含值也可能不包含值的对象,这在需要返回可能无效的结果时非常有用。结构化绑定允许将结构体、数组、元组等的成员解构到独立的变量中,简化了代码书写和提高了可读性。是一个类型安全的联合体,可以存储多个类型中的一种,并确保在访问时进行类型检查。是一个类型安全的容器,可以存储任意类型的值,类似于一个类型擦除的容器。原创 2024-06-20 23:20:53 · 902 阅读 · 0 评论 -
C++17新特性
C++17是C++标准中的一个重要版本,它在语言核心和标准库中引入了许多新特性和改进,使得C++编程更加现代化和高效。、内联变量、新的标准属性以及文件系统库。是一个标准库类型,用于表示一个可能包含值也可能不包含值的对象,这在需要返回可能无效的结果时非常有用。结构化绑定允许将结构体、数组、元组等的成员解构到独立的变量中,简化了代码书写和提高了可读性。是一个类型安全的联合体,可以存储多个类型中的一种,并确保在访问时进行类型检查。是一个类型安全的容器,可以存储任意类型的值,类似于一个类型擦除的容器。原创 2024-06-02 16:54:13 · 1126 阅读 · 0 评论 -
C++14新特性
C++14作为C++11的增量更新,包含了许多对语言和标准库的改进和修正。本文将详细介绍C++14的新特性,并通过代码示例来展示这些特性的应用。通过这些示例,希望你能更好地理解和应用C++14的新特性,从而提升你的编程能力和项目质量。C++14通过引入这些新特性,使得代码更简洁、更具表现力和安全性。在C++14中,可以使用二进制字面量来定义整数,这对于嵌入式编程和底层操作非常方便。C++14允许编译器自动推导函数返回类型,减少了显式声明返回类型的需要。为了提高大数字的可读性,C++14引入了单引号(原创 2024-06-02 16:52:39 · 724 阅读 · 0 评论 -
C++11-独占指针unique_ptr原理实现
unique_ptr提供了一种安全的、自动的内存管理方式,确保对象不会被多个指针共享。它通过禁止复制和允许移动操作实现独占所有权。使用删除器在unique_ptr销毁时释放对象内存,防止内存泄漏。UniquePtr确保对象在同一时间只有一个所有者,防止多个指针共享。通过移动语义,可以将所有权从一个UniquePtr转移到另一个。UniquePtr自动管理对象生命周期,当智能指针超出作用域时自动释放资源。原创 2024-05-25 17:43:16 · 1434 阅读 · 0 评论 -
C++11-共享指针shared_ptr使用注意事项
【代码】C++11-共享指针shared_ptr使用注意事项。原创 2024-05-25 15:04:58 · 619 阅读 · 0 评论 -
C+八股补充Record
C++提供了四种强制类型转换运算符,分别用于不同的转换场景,以增强代码的清晰度和安全性。原创 2024-03-28 14:21:55 · 1077 阅读 · 2 评论 -
项目以及实习问题
通过定时器可以实现给服务器注册定时事件,这是服务器上经常要处理的一类事件,比如3秒后关闭一个连接,或是定期检测一个客户端的连接状态。定时事件依赖于Linux提供的定时机制,它是驱动定时事件的原动力,目前Linux提供了以下几种可供程序利用的定时机制:alarm()或setitimer(),这俩的本质都是先设置一个超时时间,然后等SIGALARM信号触发,通过捕获信号来判断超时套接字超时选项,对应SO_RECVTIMEO和SO_SNDTIMEO,通过errno来判断超时。原创 2024-04-02 22:06:13 · 1039 阅读 · 0 评论 -
按斤称的C++散知识
原子操作(Atomic operations)是在计算机科学中的一种操作,指的是不能被中断、分割或交错执行的操作。在多线程或并发环境中,原子操作是为了防止竞态条件(Race Condition)和数据竞争(Data Race)而设计的。竞态条件指的是多个线程在访问共享资源时的不确定性行为,数据竞争则是多个线程在访问内存位置时引发的未定义行为。原子操作保证了操作的执行是不可分割的,即使在多线程环境下也不会被其他线程的操作干扰。这种操作通常是在硬件级别实现的,使用特定的机器指令或锁机制。原创 2023-08-18 18:36:46 · 1114 阅读 · 0 评论 -
VS2015配置Qt
安装教程原创 2022-06-21 10:27:50 · 392 阅读 · 1 评论