自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++开发面经】全过程面试问题详解

目录1. C++ 多态的表现形式2. AVL 树和红黑树的区别3. 进程和线程的区别4. select 和 epoll 的区别

2025-11-15 17:27:08 379

原创 【C++开发面经】全过程面试问题详解

【代码】【C++开发面经】全过程面试问题详解。

2025-11-15 17:26:39 519

原创 【C++面经】全过程面试问题详解

摘要:本文涵盖7个C++并发编程核心主题:1)线程池实现及线程复用机制;2)C++垃圾回收方法(智能指针/资源池);3)动态多态原理(虚函数表);4)静态多态实现(函数重载/模板);5)指针与引用对比及右值引用应用场景;6)线程同步原因与方法(互斥锁/原子操作等);7)无锁同步技术(原子操作/无锁数据结构)。重点解析了多线程资源管理、多态实现机制、智能指针应用等关键技术,并对比了不同同步方案的适用场景。

2025-11-13 11:35:24 617

原创 【C++面经】全过程面试问题详解

【代码】【C++面经】全过程面试问题详解。

2025-11-13 11:11:33 1220

原创 【Linux面经】TCP协议,UDP协议主要考点

TCP提供可靠的数据传输服务,确保数据按顺序、无差错、不丢失、不重复地到达目的地。:TCP包含错误检测机制(如校验和),并能够通过重传丢失或损坏的数据包来恢复错误。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。UDP是一种无连接的、不可靠的、基于数据报的传输层通信协议。:UDP不保证数据包的顺序、完整性或到达。:由于UDP不需要建立连接和进行复杂的控制机制,它通常具有较低的延迟。:TCP提供可靠的数据传输服务,UDP则不保证数据的可靠传输。:TCP是面向连接的,而UDP是无连接的。

2025-11-11 14:18:31 219

原创 【Linux面经】OSI七层模型和TCP/IP四层体系结构

从应用层到物理层,数据依次被封装成应用层数据单元、表示层数据单元、会话层数据单元、传输层数据单元(TCP或UDP报文)、网络层数据单元(IP数据报)、数据链路层数据单元(帧)、物理层的比特流。还会问到“TCP和UDP的区别”,TCP是面向连接、可靠传输的,UDP是无连接、不可靠传输的。常见的问题有“IP协议的主要功能是什么”,答案是提供无连接的、不可靠的传输服务,以及路由选择。例如,面试官可能会问“物理层的主要职责是什么”,答案是传输原始比特流,包括定义物理接口的电气特性、机械特性等。

2025-11-11 13:51:45 474

原创 【MySQL面试】事务重点

事务是一组逻辑相关的 DML 语句(插入 / 更新 / 删除),要么全部执行成功(提交),要么全部执行失败(回滚),本质是为解决并发数据访问和异常场景下的数据一致性问题。脏读:读取到其他事务未提交的修改(如看到他人未最终确认的转账金额)。不可重复读:同一事务内,多次查询同一数据,结果因其他事务提交而不同(重点是 “修改 / 删除”)。幻读:同一事务内,多次执行同一查询条件,记录数因其他事务插入而不同(重点是 “新增”)。

2025-11-07 14:39:38 319

原创 【MySQL面试】索引重点

【代码】【MySQL面试】索引重点。

2025-11-07 14:35:54 397

原创 【C 语言面试】高频考点深度解析

大端存储:数据的 “高位” 存在内存的 “低地址”,低位存在内存的高地址(类似 “按顺序存储”)。比如 0x12345678,大端存储为:低地址→12 34 56 78→高地址。小端存储:数据的 “低位” 存在内存的 “低地址”,高位存在内存的高地址(更符合计算机读取习惯)。比如 0x12345678,小端存储为:低地址→78 56 34 12→高地址。抓核心:static、指针、内存对齐、编译过程是必考点,必须吃透原理 + 实战;记口诀。

2025-11-06 11:50:55 1066

原创 【Redis 】Redis 详解以及安装教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2025-10-28 17:57:50 1239

原创 【httplib 】httplib 详解以及安装教程

如果你的项目需要 HTTPS 或 WebSocket over TLS(WSS),需要额外安装 OpenSSL 或 mbedTLS 库,并在编译时链接。它的设计理念是 “简单、轻量、易用”,核心优势在于:仅需包含一个头文件,不依赖任何外部库,就能快速实现 HTTP 通信功能。如果输出 “请求成功,响应状态码:200”,说明 cpp-httplib 安装和运行正常。cpp-httplib 既能当客户端发请求,又能当服务端收请求,我们分别来看。头文件,将其放到你的项目目录中,然后在代码中。

2025-10-28 17:56:57 1019

原创 【Etcd 】Etcd 详解以及安装教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2025-10-27 18:17:13 1150

原创 【spdlog 】spdlog 详解以及安装教程

如果你对默认的日志格式不满意,可以自定义格式,比如:// 自定义格式:[时间戳] [线程ID] [日志级别] 日志内容spdlog::info("自定义格式的日志");return 0;

2025-10-27 18:16:03 800

原创 【GTest 】GTest 详解以及安装教程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档。

2025-10-25 18:16:33 1027

原创 【gflags 】gflags 详解以及安装教程

在 gflags 中,参数需要先声明(告诉编译器有这个参数),再定义(指定参数的类型、默认值、帮助信息等)。这种设计让参数的作用域和生命周期更清晰,大型项目中也不会出现 “参数混乱” 的问题。

2025-10-25 18:14:19 733

原创 【ProtoBuf 】ProtoBuf 详解

ProtoBuf 通过 **.proto文件 ** 定义数据结构,语法类似接口定义语言(IDL)。比如定义一个 “用户信息” 结构:​// 指定版本为proto3(当前主流版本)// 字段编号1// 字段编号2// 重复字段(列表)​理论再牛,不如动手实战。我们以 “用户 - 订单” 系统为例,完整走一遍 ProtoBuf 的开发流程。创建,定义User和Order两个消息类型:​// 若用Go语言,指定生成代码的包路径// 若用Java,指定包名// 嵌套消息。

2025-10-23 17:52:10 1136

原创 【ProtoBuf 安装指南】Windows 与 Linux 双平台详细教程

ProtoBuf 编译器是实现数据序列化的核心工具。Linux 下安装 ProtoBuf 需编译源码,步骤稍多但逻辑清晰,我们分步拆解。之类的版本信息,说明 Linux 下 ProtoBuf 安装成功!的版本信息,说明安装配置成功!环境变量的作用是让系统在。

2025-10-23 17:47:02 1038

原创 【QObject 】QObject

是 Qt 信号与槽机制的基础。信号是对象状态改变时发出的通知,槽是响应这些信号的函数。这种机制允许对象之间进行松耦合的通信。是所有 Qt 对象的基类。它提供了事件处理、对象树管理和信号与槽机制等核心功能。支持对象树结构,其中每个对象可以有父对象和子对象。支持 Qt 的元对象编译器,它允许你在运行时查询对象的属性、方法和信号。提供了事件处理机制,允许对象响应各种事件,如鼠标点击、键盘输入等。提供了属性系统,允许你以声明式方式定义和访问对象的属性。提供了引用计数的内存管理,当对象不再被引用时自动删除。

2025-10-22 18:08:13 218

原创 【POST请求】POST请求——详解

请求是一种HTTP方法,用于向服务器发送数据。它是HTTP(超文本传输控制协议)中的一种请求方法,常用于向服务器提交数据或执行某些操作。例如,用户在网站上填写一个表单并点击提交,表单数据会通过。请求可以包含一个请求体(request body),其中包含要发送给服务器的数据。:在创建或更新服务器上的资源时,如创建新用户账户、上传文件或更新配置设置,:执行需要服务器上的操作,如启动一个进程或触发一个事件。请求的数据通常在URL中,这限制了可以发送的数据量。请求主要用于从服务器请求数据。在Qt中,你可以使用。

2025-10-22 18:07:01 358

原创 【Qt】Qt

是Qt中的一种布局管理器,它将窗口部件(widgets)按照水平方向排列。是另一种布局管理器,它将窗口部件按照垂直方向排列,即从上到下放置部件。在这个方法中,你可以执行一些清理工作,比如保存数据、释放资源等,然后再决定是否真正关闭窗口。时,你可以将多个部件添加到布局中,布局管理器会自动处理部件的大小和位置,以适应窗口的大小变化。是一个事件类,它在窗口关闭时被触发。当用户点击窗口的关闭按钮或者调用窗口的。方法,以处理窗口关闭事件。也负责管理部件的大小和位置,确保它们能够适应窗口的尺寸变化。

2025-10-15 18:01:02 322

原创 【Qt6】Qt6安装详细步骤

Qt是一个跨平台的应用程序和用户界面框架,广泛用于开发高性能的桌面、移动和嵌入式应用程序。本文将指导您如何安装Qt6,并展示如何更换为清华镜像源以加快下载速度,确保您能够快速、顺利地开始Qt开发之旅。

2025-10-15 18:00:00 1222

原创 【SDK】SDK二次封装

SDK(Software Development Kit)的二次封装通常指的是对已有的SDK进行进一步的包装和定制,以便更好地适应特定的应用需求或简化开发流程。加载和存储(load-and-store)、存储和加载(store-and-load)操作,这些操作保证在多处理器系统中的内存操作的原子性。是 C++11 引入的特性,如果你使用的是 C++11 或更高版本,那么推荐使用它来代替旧的原子操作函数(如。: 在进行二次封装之前,需要仔细阅读原始SDK的文档,了解它提供的功能和接口。

2025-10-13 18:08:44 464

原创 【SDK】SDK详解

还可能会遇到组件下载失败的情况,这时可以尝试手动下载缺少的组件。可以创建一个简单的安卓项目,使用 Android Studio 或命令行工具进行编译和运行。接着,在终端中运行 SDK Manager,它会自动下载必要的组件。,或者特定的命令)来验证 SDK 的安装是否成功。如果成功,命令行会显示 SDK 的版本号等相关信息。下载完成后,解压到指定的目录。命令)解压下载的 SDK 包。为了正确使用 SDK,需要配置相应的环境变量。文件,添加 SDK 的路径。解压 SDK 包通常解压到指定的目录,如。

2025-10-13 18:06:22 529

原创 【Google Test 框架】测试程序

使用 Google Test 框架编写的简单 C++ 测试程序。它包含一个测试用例great_than,用于验证一个整数是否大于另一个整数。

2025-10-09 12:16:34 282

原创 【SQLite 库】sqlite3_open_v2

是 SQLite 库中的一个函数,用于打开或创建一个数据库文件,并返回一个数据库连接对象。这个函数是 SQLite 3.5.0 版本引入的,它提供了更多的控制选项,比早期的函数更为灵活。

2025-10-09 12:14:33 438

原创 【Protocol Buffers】消息处理流程

这个流程图展示了一个典型的基于事件驱动的消息处理系统,其中 TcpClient 负责网络通信,ProtobufCodec 负责数据编解码,ProtobufDispatcher 负责消息分发,而具体的业务逻辑则由注册的回调函数处理。它将特定的 protobuf 消息类型与一个回调函数关联起来,这样当接收到该类型的消息时,就会调用相应的回调函数。这是一个回调函数,它根据接收到的不同 protobuf 消息类型调用不同的处理函数。这是一个处理函数,它接收解码后的 protobuf 消息,并对其进行进一步处理。

2025-09-28 18:11:18 216

原创 【高并发内存池——项目】page cache 回收内存

提示:高并发内存池完整项目代码,在主页专栏项目中。

2025-09-28 18:10:08 923

原创 【Qt】QWidget 详解

可以作为窗口部件的容器,其他窗口部件(如按钮、标签、文本框等)可以作为子部件添加到。是一个非常重要的基类,它提供了通用的容器功能,几乎所有的窗口部件和小部件都是从。类(你自定义的标签类)将作为子部件添加到这个窗口中。最后,显示窗口并启动 Qt 的事件循环。可以包含子部件,并且可以对它们进行管理,如添加、移除和查询。管理自己的尺寸和位置,并且可以设置为大小和位置相关的属性。类的实例,它创建了一个窗口,然后在这个窗口中添加了多个。以下是一个简单的例子,展示了如何创建一个。类创建了一个窗口,然后创建了一个。

2025-09-25 18:05:27 271

原创 【高并发内存池——项目】central cache 回收内存

提示:高并发内存池完整项目代码,在主页专栏项目中。

2025-09-25 18:03:58 773

原创 【Qt】信号和槽

在 Qt 中,信号和槽(Signals and Slots)机制是一种特殊的通信机制,用于对象之间可以通过信号和槽进行交互。这种机制允许对象在内部状态改变时通知其他对象,而无需了解接收对象的具体实现细节。信号和槽是 Qt 框架中事件处理的核心部分,广泛用于跨线程通信、对象间通信等场景。

2025-09-23 17:36:30 294

原创 【高并发内存池——项目】thread cache 回收内存

当thread cache的某个自由链表过长时,我们实际就是把这个自由链表当中全部的对象都还给central cache了,但这里在设计PopRange接口时还是设计的是取出指定个数的对象,因为在某些情况下当自由链表过长时,我们可能并不一定想把链表中全部的对象都取出来还给central cache,这样设计就是为了增加代码的可修改性。当某个线程申请的对象不用了,可以将其释放给thread cache,然后thread cache将该对象插入到对应哈希桶的自由链表当中即可。:前n个节点,作为批量归还的单位。

2025-09-23 17:34:43 515

原创 【深度学习】模型

SVM 的优化目标是最小化以下函数: minw,b​21​∣∣w∣∣2+C∑i=1n​ξi​ 其中,w 是权重向量,b 是偏置,C 是正则项,ξi​ 是松弛变量,如果数据点在边界内则 ξi​=0。Gradient Boosting 的更新规则可以表示为: αt​=argminα​L(y,y^​−αt​ft​(x)) y^​=y^​+∑t=1T​αt​ft​(x)逻辑回归的损失函数(Log Loss)是: L(y,y^​)=−log(y^​) 其中,y 是实际标签(0或1),y^​ 是预测的概率。

2025-09-22 17:37:43 474

原创 【高并发内存池——项目】page cache 讲解

而page cache当中的span是没有被进一步切小的,因为page cache服务的是central cache,当central cache没有span时,向page cache申请的是某一固定页数的span,而如何切分申请到的这个span就应该由central cache自己来决定。page cache的哈希桶映射规则采用的是直接定址法,比如1号桶挂的都是1页的span,2号桶挂的都是2页的span,以此类推。现代很多的开发环境都是多核多线程,在申请内存的场景下,必然存在激烈的锁竞争问题。

2025-09-22 17:36:43 1070

原创 【redis】redis知识点

这种模型简化了 Redis 的设计,因为不需要处理多线程之间的同步问题,从而减少了程序的复杂性和潜在的错误。Redis 6.0 引入了多线程 I/O 处理,这使得 Redis 可以在处理网络请求时使用多个线程,从而提高了网络请求的处理能力。但是,即使在 Redis 6.0 之后的版本中,命令的执行仍然是在单个主线程中顺序执行的。总结来说,Redis 的单线程模型是指它在处理命令时是顺序执行的,但这并不妨碍它通过其他方式(如多线程 I/O 处理)来提高性能。

2025-09-19 18:05:40 434

原创 【高并发内存池——项目】central cache 讲解

public:static CentralCache* GetInstance() // 单例模式// 获取一个非空的span// 从中心缓存获取一定数量的对象给thread cacheprivate:// 跨度链表数组private:CentralCache() {} // 私有构造函数// 禁止拷贝// 单例实例CentralCache采用单例模式设计,确保整个进程中只有一个实例。它维护了一个SpanList数组,每个元素对应不同大小的内存块。

2025-09-19 18:04:31 868

原创 【Linux】Boost.Filesystem库

Boost.Filesystem库是Boost库集合中的一个组件,它提供了一系列函数和类来处理文件系统相关的操作。:Boost.Filesystem库在不同的操作系统上提供了一致的接口,包括Windows、Linux、macOS等。在使用Boost.Filesystem库之前,需要确保已经正确安装了Boost库,并且在编译时链接了相应的库文件。使用Boost.Filesystem库可以简化文件系统操作的代码,提高代码的可移植性和可维护性。:创建、删除、重命名目录,列出目录内容,以及检查目录是否存在。

2025-09-17 18:01:15 315

原创 【高并发内存池——项目】thread cache 讲解

public:// 申请和释放内存对象// 从中心缓存获取对象private:// 自由链表数组ThreadCache的核心是一个自由链表数组_freeLists,包含208个桶(NFREELIST),每个桶管理不同大小的内存块。这种设计类似于"超市",各种规格的内存块分门别类放置,申请时快速匹配。

2025-09-17 17:59:29 1388

原创 【深度学习】模型介绍

2025-09-15 17:32:54 447

原创 【高并发内存池——项目】定长内存池——开胃小菜

private:// 指向大块内存的指针// 剩余可用字节数// 空闲链表头指针。

2025-09-15 17:31:43 1116

原创 【Linux】线程池——详细讲解

cppprivate:// 任务队列// 工作线程集合// 互斥锁Cond _cond;// 条件变量// 线程池运行状态// 等待任务的线程数cpp// 任务类示例public:// 执行具体任务std::cout << "处理任务..." << std::endl;return "任务完成";

2025-09-11 17:20:41 950

空空如也

空空如也

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

TA关注的人

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