unique_ptr自定义删除器
unique_ptr 自定义删除器:从入门到精通 在 C++11 引入的智能指针中,std::unique_ptr 因其高效的性能(零开销抽象)和明确的独占所有权语义而备受推崇。默认情况下,unique_ptr 会使用 delete 运算符来释放资源。然而,在实际开发中,我们管理的资源往往不仅仅是堆内存,还可能是文件句柄、网络连接、数据库连接或操作系统特定的句柄。这时,默认的 delete...
unique_ptr 自定义删除器:从入门到精通 在 C++11 引入的智能指针中,std::unique_ptr 因其高效的性能(零开销抽象)和明确的独占所有权语义而备受推崇。默认情况下,unique_ptr 会使用 delete 运算符来释放资源。然而,在实际开发中,我们管理的资源往往不仅仅是堆内存,还可能是文件句柄、网络连接、数据库连接或操作系统特定的句柄。这时,默认的 delete...
在软件工程中,虽然《设计模式》(GoF)一书列出了23种模式,但在实际开发中,最常用、最核心的通常只有7-8种。 掌握这几种模式,能解决80%以上的常见架构问题。本文将介绍一个C++设计模式实战项目,帮助你深入理解这些核心设计模式。 项目链接:design-patterns-cpp 项目简介 这是一个专注于C++设计模式实现的项目,包含了最常用的设计模式的实际代码示例。每个模式都配有...
深入解析 C++11 线程池的实现原理,通过代码实战讲解 std::thread, std::mutex, std::condition_variable 的协同工作机制,以及如何优雅地管理任务队列和线程生命周期。
背景:被校园网“劝退”的 GitHub 之旅 作为一名开发者,长期以来受限于校园网的网络环境,我在访问 GitHub 时常常遇到连接超时、克隆失败等问题。为了规避这些麻烦,我不得不将许多项目托管在 Gitee(码云)上。虽然 Gitee 在国内速度飞快,但失去了 GitHub 庞大的开源生态和国际交流机会,始终是一种遗憾。 最近,我尝试重新将工作流迁移回 GitHub,却在第一步就遭遇了...
导读:从零开始学习 Linux 下的 C++ Socket 网络编程,通过完整的 TCP 客户端与服务器代码示例,掌握网络编程的核心概念与实践技巧。 🎯 前言:为什么学习 Socket 编程 Socket 是网络通信的基石,几乎所有网络应用都建立在 Socket 之上: Web 服务器 → Socket 微信/WhatsApp → Socket 在线游戏 → ...
MySQL插入数据 insert into table_name(col_name, ...) values(value1, value2, ...) 如果插入所有列可以省略列名 insert into table_name values(value1, value2, ...) 插入多行 insert into table_name(col_name, ...) ...
在现代多线程编程中,异步任务处理是提高程序性能的关键。本文将通过几个简单的示例,展示如何使用 C++ 中的 std::promise, std::future, 和 std::async 来实现高效的任务并行化。 一个可拆解的任务 假设我们需要计算从 [1, N) 范围内所有数字的总和。为了演示目的,我们将这个大任务拆分为两个子任务,分别由主线程和工作线程执行。 #include &l...
并发编程是指在多线程或多进程环境下,协调多个执行流对共享资源的访问,以避免数据竞争(data race)和状态不一致。在 C++ 中,我们通常使用互斥锁(std::mutex)来保护临界区,确保同一时刻只有一个线程能访问共享资源。 std::mutex 与 RAII 锁管理 #include <iostream> #include <thread> #incl...
C++中的函数模板和类模板被广泛应用,其中函数模板只支持重载和全特化,而C++类模板支持偏特化,以下是一个例子,用于记录类模板偏特化。 一个tuple打印器 tuple_print 实现tuple数据打印 template<int IDX, int MAX_SIZE, typename ...Args> struct tuple_print { void ope...
侯捷老师(J.J. Hou)作为 C++ 教育领域的权威,以深入浅出、哲理与技术并重的授课风格著称。他在《C++ 面向对象高级开发》《STL 源码剖析》《深度探索 C++ 对象模型》等课程和著作中留下了许多广为流传、发人深省的“金句”。以下是他常说的一些听起来很有道理、被广泛引用的话语,按主题分类整理: 🧱 一、关于学习态度与根基 “勿在浮沙筑高台。” —— 强调基础不牢,地动山...