自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 单例模式:懒汉式 vs 饿汉式

【代码】单例模式:懒汉式 vs 饿汉式。

2025-06-29 17:52:53 1115

原创 简单实现独占指针

 std::unique_ptr 

2025-06-15 20:33:11 246

原创 深入剖析 IO 多路复用:select、poll、epoll 原理与实践

无数量限制:只受系统最大文件描述符限制(可调整)。高效事件通知:内核主动维护就绪队列,无需遍历全量 fd,效率 O (1)。低拷贝开销:fd 注册后留在内核态,epoll_wait只需拷贝 “就绪事件”,而非全量 fd。灵活触发模式:LT/ET 适配不同场景,ET 适合追求极致性能的场景。从select的 “笨拙轮询”,到poll的 “小修小补”,再到epoll的 “事件驱动”,IO 多路复用的演进本质是“减少无意义的遍历和拷贝,让内核和用户态配合更高效”。追求跨平台 + 简单 →select。

2025-06-11 18:25:13 1155

原创 MySQL 内连接、左连接、右连接深度解析:原理与应用场景

内连接:仅包含两张表中满足连接条件的交集部分数据,不满足条件的都过滤掉。左连接:包含左表全部数据,以及右表中满足连接条件的数据;左表有数据但右表无匹配的,右表字段用NULL填充。右连接:包含右表全部数据,以及左表中满足连接条件的数据;右表有数据但左表无匹配的,左表字段用NULL填充。

2025-06-08 13:44:07 1208

原创 数据库事务的四大金刚:ACID 如何守护你的数据世界?

故障恢复保障:例如订单提交后,即使服务器突然断电,重启后订单依然存在,不会出现 "下单成功但记录消失" 的情况。业务信任基础:用户敢在网上支付,正是因为持久性确保交易记录不会丢失。下次当你点击 "提交订单" 或 "确认转账" 时,不妨想象一下:在数据库的底层,ACID 四大金刚正在各司其职 ——原子性确保操作要么全做要么全不做,一致性检查数据是否符合规则,隔离性防止并发事务互相干扰,持久性将你的操作永久刻入数据史册。这四位 "隐形守护者" 用看似简单的规则,构建了现代数据系统的基石。

2025-06-03 19:59:48 839

原创 HTTP和HTTPS有什么区别

HTTP:是一种无状态的应用层协议,用于在 Web 浏览器和服务器之间传输超文本(如 HTML 页面、图片、视频等),默认工作在 80 端口。HTTPS:是 HTTP 的安全版本,通过在 HTTP 基础上加入加密层(SSL/TLS 协议),确保数据传输的安全性,默认工作在 443 端口。HTTPS 在 HTTP 的基础上增加了安全机制,虽然会对服务器资源和加载速度产生一定影响,但在保护用户数据安全和提升网站信任度方面具有明显优势。

2025-05-29 20:04:21 408

原创 vector迭代器

每种容器都有 begin() 和 end() 成员函数, begin() 返回指向容器第一个元素的迭代器, end() 返回指向容器“末端元素的下一个”位置的迭代器(超出末端迭代器,不指向实际元素,仅作哨兵标识遍历结束 )。若容器为空, begin() 和 end() 返回的迭代器相等。这里 std::vector<int>::iterator 定义了一个能遍历 std::vector<int> 容器的迭代器类型, iter 是该类型的变量。// 解引用访问元素并修改值。

2025-05-26 08:45:38 771

原创 B树,B+树

B 树是一种自平衡的多路搜索树,常用于文件系统和数据库系统中,其主要目的是减少磁盘 I/O 操作。一棵 m 阶的 B 树具有以下特性:每个节点最多有 m 个子节点。除根节点和叶子节点外,每个节点至少有⌈m/2⌉个子节点。根节点至少有 2 个子节点(除非它是叶子节点)。所有叶子节点都在同一层。每个节点中的关键字按升序排列,并且每个关键字的左子树中的所有关键字都小于它,右子树中的所有关键字都大于它。B + 树是 B 树的一种变体,它在数据库和文件系统中使用得更为广泛。

2025-03-23 21:23:58 393

原创 深入理解哈希冲突:原因、解决方案及实战示例

理想情况下,不同的键应映射到唯一的索引,但现实中,哈希值的范围(例如0-99)往往远小于键的范围(如 millions 个不同的键),这就像用100个座位招待1000位客人,冲突不可避免。插入键 22 时,若 h1(22) = 2 冲突,则计算 h2(22) = 7 - (22%7) = 6 ,将键存入位置6。插入键 22 ,哈希值也为 2 ,位置2被占用,探测位置3。若仍被占用,继续探测位置4,依此类推。规则:将哈希表分为基本表和溢出表,无冲突的键存入基本表,冲突的键统一存入溢出表。

2025-03-18 15:42:15 518

原创 c++多线程与线程池

线程池是一种管理线程的机制,它预先创建一定数量的线程,这些线程处于等待任务的状态。任务完成后,线程不会被销毁,而是继续等待下一个任务。线程池的优点在于可以减少线程创建和销毁的开销,提高性能。线程是操作系统能够进行运算调度的最小单位,多个线程可以并行执行不同的任务,从而提升程序的性能与响应速度。多线程能够让程序同时执行多个任务,而线程池则是对多线程的一种高效管理方式,可减少线程创建和销毁的开销。类表示线程池,其构造函数会创建指定数量的线程,这些线程会不断从任务队列中取出任务并执行。

2025-03-14 16:45:10 241

原创 计算机网络体系结构

在计算机网络发展早期,网络通信十分复杂,涉及到多种不同的硬件设备、通信协议以及各种功能实现,为了降低网络设计、实现与维护的复杂性,便于标准化,人们引入了分层的思想。即将整个网络通信功能划分为多个层次,每个层次负责特定的功能任务,并且只与相邻的层次进行交互,就像分工明确的流水线一样,使得各部分可以独立开发、升级,只要遵循统一的接口标准,就能保障整个网络系统的正常运行。

2025-01-08 17:05:43 1661

原创 数据库的三范式

这三个范式是层层递进的关系,一般来说,数据库设计尽量满足第三范式,这样可以使数据库结构更加合理,数据质量更高。但在某些特定情况下,为了提高查询性能等原因,可能会适当牺牲一些范式要求,进行反范式化设计。· 数据库的三范式(3NF)是设计关系型数据库时需要遵循的规范,主要目的是减少数据冗余、增强数据完整性和避免数据更新异常(如插入异常、删除异常和更新异常)。

2024-12-22 21:44:58 413

原创 在QT中使用SHA256加密密码

不过需要注意的是,为了进一步提高安全性,还可以考虑添加加盐(salt)等操作,即在密码中添加随机生成的字符串一起进行哈希计算,并且在验证密码时按照相同的加盐规则进行处理,同时也要确保数据库存储等环节能适配加密后密码长度等变化情况。对密码加密后,若加密结果十六进制表示长度不足 32 位则进行适当填充,若超过则进行截断处理,使其满足密码长度要求为 32 位的设定。并填充数据时,对密码使用加密后的结果进行填充,并且调整拷贝长度等操作以适配加密后的密码长度等情况。同样在该函数中对密码进行加密处理后再放入。

2024-12-19 18:49:11 684

原创 C++动态绑定与内存管理

1) C++ 中面向对象编程如何实现动态绑定?2) C++如何管理内存?

2024-12-16 11:32:28 1732

原创 LeedCode 56.合并区间

区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。

2024-12-09 14:52:19 221

原创 纯虚函数与抽象类

1) 什么是纯虚函数?2) 纯虚函数和抽象类在面向对象编程中的意义是什么?

2024-12-09 13:49:04 655

原创 c++多态

多态性(Polymorphism)是面向对象编程中的一个重要概念,它指的是同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。简单来说,就是 “一个接口,多种方法”。例如,在图形绘制系统中,“绘制” 这个操作对于圆形、矩形和三角形等不同图形对象,其具体的绘制方法是不同的,但它们都可以通过同一个 “绘制” 函数来调用,这就是多态性的体现。

2024-12-07 16:05:52 240

空空如也

空空如也

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

TA关注的人

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