几种锁的对比
几种锁的对比好的,那我来详细对比一下 std::lock_guard 和 std::unique_lock 这两种常用的锁管理方式,以及它们与直接使用锁的区别。 1. std::lock_guard 定义 :std::lock_guard 是一个简单的锁管理器,用于管理互斥锁的锁定和解锁。它在构造时锁定互斥锁,在析构时自动释放锁。 特点 : 自动管理 :构造函数锁定锁,析构函数释放锁,确保锁的管理不会被遗忘。 不可移动、不可复制 :std::lock_guard 对象不能被移动或复制,这意味着锁不能在不同的作用域之间传递。 简单易用 :适用于简单的锁需求场景,不需要复杂的锁管理。 作用域绑定 :锁的生命周期与 std::lock_guard 对象的作用域绑定,一旦超出作用域,锁自动释放。 示例 : 1234567891011121314151617181920#include <iostream>#include <mutex>#include <thread>std::mutex mtx;void print_block(int n)...
网站管理
一句话结论“源码”和“生成的网页”是两件东西,要分开管: 源码(markdown、主题、配置)→ 用 git push 推到 源码仓库(可选,但强烈建议)。 生成的静态文件(public 目录)→ 用 hexo d 推到 GitHub Pages 仓库(brinjaul521.github.io)。 所以标准流程是: 12345678# 1. 保存源码git add .git commit -m "post: xxx"git push origin main # 推到源码仓库(如 Hexo-blog-source)# 2. 生成并发布网页hexo clean && hexo ghexo d # 自动把 public 目录推送到 brinjaul521.github.io 常见疑问 疑问 回答 我只想要网页上线,源码要不要备份? 最好备份,否则换电脑/误删就哭吧。 能不能直接把源码推到 brinjaul521.github.io? 不能,GitHub Pages ...
Qt思路
Qt开发对象树级联问题打印结果说明两个窗口 对象都活着,但 isVisible() == false,所以它们 根本没被 show() 成功。出现这种情况只有两种可能: 你调用 show() 的对象并不是你正在打印的对象(名字或指针指错了)。 调用了 show() 之后,代码又在同一函数里把窗口立刻 hide() 掉了(或把父窗口隐藏导致子窗口也被隐藏)。 🔍 现场排查 2 步① 确认打印的实例 == 你真正 show() 的实例在 showChildWindow() 里加一行: 12345qDebug() << "showChildWindow called on" << _childDialog;_childDialog->show();qDebug() << "after show:" << "visible" << _childDialog->isVisible() <&l...
网络编程笔记
网络编程笔记网络编程核心概念与流程详解 Socket 是什么?Socket(套接字) 是网络通信的 端点,类似于现实中的“电话”。它是操作系统提供的一种 抽象接口,允许程序通过 IP 地址 + 端口号(Port) 与其他设备进行通信。 作用:Socket 是网络数据传输的通道,负责 发送数据 和 接收数据。 类比: 电话:Socket 相当于一部手机,IP 地址相当于电话号码,端口号相当于分机号。 邮局:IP 地址是城市地址,端口号是具体收件人的门牌号。 为什么要创建 Socket? 唯一标识通信端点: 每个 Socket 绑定一个 IP + 端口,确保数据能准确发送到目标程序。 例如:Web 服务器通常绑定 80 端口,客户端通过 IP:80 访问它。 管理通信协议: Socket 支持不同的协议(如 TCP 可靠传输、UDP 快速但不可靠)。 操作系统资源管理: Socket 是操作系统管理的资源,创建 Socket 相当于向系统申请通信能力。 Socket 的工作流程(以 TCP 为例)1. 服务端流程步骤 1:创建 Sock...
MySql笔记
Mysql索引好的,这是一个非常重要且常见的面试话题。我会从原理到实践,为你彻底讲清楚 MySQL 索引。 一、索引是什么?(本质与原理)你可以把数据库索引想象成一本书的目录。 没有索引(目录):当你想在书中找到“索引失效”这个内容时,你只能一页一页地从头翻到尾(这叫做全表扫描),效率极低。 有索引(目录):你可以直接查看目录,快速定位到“索引失效”内容所在的页码,然后直接翻到那一页。这个“目录”就是索引,它通过建立一种高效的数据结构,避免了逐行查找。 技术本质:索引是一种排好序的快速查找数据结构。MySQL 中最常用的索引类型是 B+Tree(B+树)。 B+Tree 的特点(为什么选它): 矮胖树:层级低,通常只需要 3-4 次 I/O 操作就能从上亿条数据中定位到目标,查找效率极高。 有序存储:叶子节点存储数据并按顺序链接,非常适合范围查询(WHERE id > 100)和排序(ORDER BY)。 数据只存储在叶子节点:非叶子节点只存键值,使得每个节点能存放更多的关键字,让树更“矮胖”。 索引的代价: 空间代价:索引也是一张表,需要占用额外的磁...
C++ 面试题
睿联面试linux swap分区什么作用 在Linux中,swap分区(或swap文件)的作用是当系统的物理内存(RAM)不足时,将内存中不常用的数据暂时存储到硬盘上的swap空间中,从而释放物理内存供其他更紧急的任务使用。这个过程称为“交换出”(swapping out)。当需要再次访问这些数据时,再将其从swap分区读回内存,即“交换入”(swapping in)。swap空间可以被视为物理内存的扩展,但需要注意的是,硬盘的读写速度远低于内存,因此过度依赖swap会导致系统性能下降。 扩展虚拟内存:当物理内存(RAM)不足时,系统可以将不常用的内存页面移动到Swap空间中,从而释放RAM供更紧急的任务使用 内存管理:即使系统有足够的物理内存,内核有时也会将长时间未活动的内存页面移动到Swap中 休眠支持:当系统进入休眠状态时,会将RAM中的内容保存到Swap空间中,以便恢复时使用 避免内存不足:防止系统因内存耗尽而意外终止关键进程 Linux文件有几种权限,分别是什么Linux文件的基本权限类型Linux系统中,每个文件和目录都有三种基本的权限类型,每种权限类型对应三...





