自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++ 八股文】(篇四)C++11 新特性

C++11 是 C++ 的分水岭:它把"现代 C++"需要的语法基础设施一次性补齐了——移动语义、Lambda、autonullptr、智能指针、无序容器。这篇按原文的 16 个考点整理,保留原有编号,修正了原文里的笔误和过时结论,所有可运行示例都用实际编译验证过。说白了就是:C++11 让 C++ 写起来更像现代语言,跑起来还更快。

2026-11-06 19:36:20 804 14

原创 【C++八股文】(篇三)从 HelloWorld 到 fork:11 道 C++ / 操作系统情景设计题

抽象层次:一行代码如何穿过用户态、内核、硬件(第 1、6、8 题)。对象生命周期:谁创建、谁拷贝、谁释放(第 2、5、7 题)。内存与 ABI:字节怎么排、参数怎么传、内存怎么重叠(第 3、4、9、10、11 题)。面试时不用背全文,但每条线至少要能顺着讲下去,遇到追问也知道该往哪个方向补。

2026-11-06 19:09:07 60 12

原创 【Git 系列指南(七)】企业级开发模型:Git Flow 分支规范的五个分支撑起一套开发流程

以上跟⼤家讲解的是企业级常⽤的⼀种Git Flow 模型。但要说的是,该模型并不是适⽤于所有的团队、所有的环境和所有的⽂化。如果你采⽤了持续交付,你会想要⼀些能够尽可能简化交付过程的东西。有些⼈喜欢基于主⼲的开发模式,喜欢使⽤特性标志。然⽽,从测试的⻆度来看,这些反⽽会把他吓⼀跳。关键在于站在你的团队或项⽬的⻆度思考:这种分⽀模型可以帮助你们解决哪些问题?它会带来哪些问题?这种模式为哪种开发提供更好的⽀持?你们想要⿎励这种⾏为吗?你选择的分⽀模型最终都是为了让⼈们更容易地进⾏软件协作开发。

2026-11-05 18:36:06 124 11

原创 【Git 系列指南(六)】《多人协作:分支、PR 与远程分支清理》---详解

是时候⼲最重要的⼀件事情了,实现多⼈协作开发!为了做这件事情,我们需要先做⼀些准备⼯作。我们之前已经将项⽬ clone 到了指定⽬录,如:在 Windows 环境下,再 clone 同一个项目仓库,来模拟和我们⼀起协作开发的另一名小伙伴:找一个新的文件夹 ,进入文件夹后右键:注意:这里是模拟了两个用户。

2026-11-05 15:20:35 257 10

原创 【Git 系列指南(五)】《理解、创建与操作:Git 标签全流程亲自带你一步步上手操作》

标签 tag ,可以简单的理解为是对某次 commit 的⼀个标识,相当于起了⼀个别名。例如,在项⽬发布某个版本的时候,针对最后⼀次 commit 起⼀个 v1.0 这样的标签来标识⾥程碑的意义。这有什么⽤呢?相较于难以记住的 commit id , tag 很好的解决这个问题,因为当我们需要回退到某个重要版本时,直接使⽤标签就能很快定位到。

2026-11-05 09:11:57 194 11

原创 《Git 系列指南(四):Git 远程操作全流程:仓库、克隆、推送与拉取》 -- 详解

我们⽬前所说的所有内容(⼯作区,暂存区,版本库等等),都是在本地!也就是在你的笔记本或者计算机上。⽽我们的 Git 其实是分布式版本控制系统!什么意思呢?可以简单理解为,我们每个⼈的电脑上都是⼀个完整的版本库,这样你⼯作的时候,就不需要联⽹了,因为版本库就在你⾃⼰的电脑上。既然每个⼈电脑上都有⼀个完整的版本库,那多个⼈如何协作呢?⽐⽅说你在⾃⼰电脑上改了⽂件A,你的同事也在他的电脑上改了⽂件A,这时,你们俩之间只需把各⾃的修改推送给对⽅,就可以互相看到对⽅的修改了。

2026-11-04 21:20:56 335 11

原创 【贪心算法专题】贪心算法入门:从“鼠目寸光”到两道经典例题(柠檬水找零 &将数组和减半的最少操作次数)

贪心策略是一种解决问题的策略:从局部最优推向全局最优。具体执行时可以拆成三步:把解决问题的过程分为若干步;解决每一步的时候,都选择当前看起来"最优"的解法;"希望"最终能得到全局最优解。这里的关键词是"希望"。贪心不像动态规划那样有明确的状态转移保证,它只是做了一个看起来很合理的选择,至于这个选择最终能不能通向全局最优,是需要单独证明的。

2026-11-02 21:44:04 375 11

原创 【从零实现C++AI大模型接入SDK】(系列二)《用 C++ 写一个多厂商大模型统一接入SDK:ChatSDK 上手实现记录》

ChatSDK 这套设计最值得学的,不是某个具体 API,而是它的分层思想门面(ChatSDK)收口所有对外能力;抽象接口(LLMProvider / Config)隔离变化;具体实现(各家 Provider)各自为战;数据层(DataManager)负责持久化。上层只认抽象,下层随便换厂商——这就是多模型统一接入的正确姿势。

2026-11-02 14:44:31 377 14

原创 【动态规划算法专题】动态规划五部曲实战:泰波那契数、三步问题、最小花费爬楼梯

动态规划(Dynamic Programming,简称 DP)就是:把一个大问题拆成一串小问题,把每个小问题的答案存起来,用的时候直接拿,不再重新算一遍。听起来很抽象,其实生活里到处都是。比如爬楼梯时想问走到第 10 阶一共有多少种走法,你不需要真的把所有路线都走一遍——只要知道到第 8 阶有几种、到第 9 阶有几种,加起来就行了。而到第 8 阶有几种又可以由第 5、6、7 阶推出来……一层层往回推,最后站在地面,1 种走法,这种显然已知的答案上。这就是最朴素的动态规划。两个关键词:状态 + 转移。

2026-11-01 10:46:04 180 10

原创 【C++ 八股文】(篇二):类与数据抽象 & STL 容器与算法

面向对象里,类与类之间大致有三种关系:关系含义实现方式has-A包含关系,描述一个类由多个部件类构成用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类use-A一个类使用另一个类,通过类之间的成员函数相互联系定义友元,或者通过传递参数的方式来实现is-A继承关系,关系具有传递性公有继承一个类里面的数据成员是另一个类的对象,即内嵌其他类的对象作为自己的成员,这就叫组合(composition)。创建组合类的对象:首先要创建各个内嵌对象,难点在于构造函数的设计。

2026-10-30 20:11:02 259 11

原创 【C++ 八股文】 (篇一)之44 问:一篇文章啃完 C++ 语言基础

static 的作用是控制变量的存储方式和可见性。作用一:修饰局部变量。一般局部变量存放在栈区,生命周期在包含它的语句块执行结束时结束。用 static 修饰后,变量存放在静态数据区,生命周期延续到整个程序执行结束。但要注意,虽然生命周期和存储空间变了,作用域并没有改变,仍限制在语句块内。作用二:修饰全局变量。全局变量既可以在本文件中被访问,也可以在同一工程的其他源文件中被访问(添加extern声明即可)。用 static 修饰后,作用域由整个工程可见变为本文件可见。作用三:修饰函数。

2026-10-29 14:40:12 563 12

原创 【ProtoBuf】(篇二)在 Windows / Linux 安装 ProtoBuf 编译器(超详细教程小白也能轻松上手)

(我的建议是可以先扩大 3G,再执行 make check。如果还是报错,再扩大到 5G 重新执行 make check,如果 swap 分区为 0,就直接跳过这一步 make check),也就是:./configure,那么到这就可以正常使用 protobuf 了。这就说明在windows电脑下我们的protobuf安装成功。下载 ProtoBuf 前⼀定要安装依赖库。如果在执行 configure 时,这里我希望支持全部语言,所以选择。进入解压好的文件,执行以下命令。

2026-10-28 11:45:52 384 17

原创 【ProtoBuf】(篇一)初识 ProtoBuf

我们先用一张思维导图进行大致了解:a.序列化和反序列化b.什么情况下需要序列化c.序列化实现格式官方原文总结 ProtoBuf(Protocol Buffer)是结构化数据序列化方案,核心特点:ProtoBuf 使用步骤使用特点:

2026-10-28 08:17:31 177 11

原创 【Linux网络加餐】《HTTPS 协议原理》---详解

加密就是把明文(要传输的信息)进⾏⼀系列变换, 生成密文解密就是把密⽂再进⾏⼀系列变换, 还原成明⽂在这个加密和解密的过程中, 往往需要⼀个或者多个中间的数据, 辅助进⾏这个过程, 这样的数据称为密钥(正确发音 yue 四声, 不过⼤家平时都读作 yao 四声) .安全破解的成本远远大于破解的收益。例:现有原始数据a和密钥key,我们可以通过异或运算完成加密:密文b = a ^ key。

2026-10-23 18:00:13 608 23

原创 【Linux网络加餐】《HTTP 会话保持:Cookie 与 Session 原理及实验验证》---详解

HTTP是无状态协议,无法自动保持用户会话。为实现登录状态持久化,引入Cookie机制:服务器通过Set-Cookie响应头下发身份标识,浏览器自动在后续请求中携带该Cookie,实现会话保持。Cookie分为会话型(内存存储,关闭失效)和持久型(磁盘保存,长期有效)。为提升安全性,敏感信息不直接存于Cookie,而是使用SessionID配合服务端存储的Session数据进行身份验证。结合HttpOnly、Secure等属性及HTTPS加密,可有效防范劫持与跨站攻击。实际应用中,Cookie与Sessio

2026-10-23 16:14:17 282 20

原创 【递归算法专题】三层递进理解 + 三步写法,递归刷题完整指南

一句话:递归就是函数在解决主问题时,调用自己去解决结构相同的子问题。初学阶段,递归主要出现在两个地方:C 语言数据结构三条缺一不可:没有出口会无限递归;没有结构相同的子问题,就是在硬凑递归。

2026-10-19 18:34:38 392 19

原创 【C++】《带你一文吃透位图:原理剖析、C++ 手写实现与海量数据经典面试题》---详解

给 40 亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这 40 亿个数中。遍历 40 亿个数,时间复杂度为 O(N)。但每次查询都要把约 16 GB 的数据读一遍,只适合查询次数极少的场景。先排序,快排平均 O(N log N),再利用二分查找 O(log N)。但快排需要随机访问,得把 16 GB 数据全部载入内存才快;内存不够时只能做外排序,而磁盘上的二分代价很高(见下文(b))。把数据放进 set / unordered_set 中,再查找 key 在不在。

2026-10-18 17:52:54 550 19

原创 【仿 RabbitMQ 项目】发布订阅消息队列 (篇十):《队列消息管理模块 —— 从逻辑分析到代码实现再到测试》---详解

/ mq_msg.proto —— 消息队列的消息类型定义// 生成 C++ 代码:// 会得到:// mq_msg.pb.h (声明)// mq_msg.pb.cc (实现,编译时必须一起链接!//// 文件名建议统一(下面按 mq_msg.proto 命名)。// 如果实际文件叫 message.proto,改一下 protoc 的输入即可,内容不变。// proto3 语法:字段默认值 = 0 / "" / false,且不能自定义默认值// 生成的类都在 bitmq 命名空间里。

2026-10-15 21:41:16 637 18

原创 【算法】专题四之位运算:看懂只出现一次的数字 II:从小学数学思路到位运算代码

给你一个整数数组nums,其中恰好有一个元素只出现一次,其余每个元素都恰好出现三次。找出那个只出现一次的元素。要求:线性时间复杂度,且。

2026-10-15 19:48:25 495 14

原创 【仿 RabbitMQ 项目】发布订阅消息队列 (篇九):队列数据管理,内存镜像 + SQLite 持久化实现

打个比方 ——

2026-10-13 19:29:10 449 13

原创 【仿 RabbitMQ 项目】发布订阅消息队列 (篇八):交换机数据管理模块,分层类设计、SQLite 回调原理与代码实现

a. 交换机名称b. 交换机类型c. 是否持久化标志d. 是否自动删除标志e. 其他参数。

2026-10-13 13:19:37 275 14

原创 【软件测试】(测试分类篇)《多维度梳理黑盒白盒、单元集成、冒烟回归、αβ 测试,搭配案例与面试考点,笔试面试速记》---万字详解

为什么要对软件测试进⾏分类软件测试是软件⽣命周期中的⼀个重要环节,具有较⾼的复杂性,对于软件测试,可以从不同的⻆度加以分类,使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试的分类⽅法。

2026-10-12 19:48:43 186 14

原创 【软件测试】(用例篇)测试用例完整教程:等价类、边界值、场景法等六大设计方法,讲解用例粒度与评价

试环境、操作步骤、测试数据、预期结果等要素。注意:测试用例本身。执行结果是运行用例之后才得到的,编写测试用例阶段不存在执行结果。测试用例必须定义预期输出 / 预期结果。即使不熟悉业务的人员,也可以根据用例快速开展测试。(会涉及到测试用例的要素)(不会涉及到测试用例的要素)为什么需要测试用例呢,不写测试用例可以进行测试吗?测试用例的出现就是解决以上这些问题。另外,测试用例的作用还可以避免测试人员被迫背锅。实际中产品出现问题,第一责任人首先想到的是测试为什么没有测到?

2026-10-11 11:58:21 407 13

原创 【C++ 标准项目】发布订阅消息队列 (篇七):项目创建与基础工具模块搭建

在正式编写项目功能模块代码前,需要预先定义消息类型。消息需要持久化存储,涉及数据序列化与反序列化,因此采用 protobuf 生成消息类型代码。定义消息类型,本质就是编写 proto 描述文件,并编译生成对应的程序代码。A. 交换机类型a. DIRECTb. FANOUTc. TOPICB. 消息投递模式a. UNDURABLE:参考 RabbitMQ,取值为 1b. DURABLE:取值为 2直接看代码:用到的接口汇总。

2026-10-10 20:57:51 565 19

原创 【算法】专题三:二分查找到底怎么学?底层原理 + LeetCode 多道题目实战,搞定边界坑点

二分查找最难的不是原理,而是边界的细节。

2026-10-09 18:28:04 1083 14

原创 【C++ 标准项目】发布订阅消息队列 (篇六):消息队列整体框架、模块功能详细设计与架构图解

服务端发布客户端订阅客户端。

2026-10-08 21:22:47 467 12

原创 【软件测试】(BUG篇)从生命周期到 Bug 管理,测试新手入门的核心知识框架

软件测试贯穿于软件的整个⽣命周期,针对这句话我们⼀起来看⼀下软件测试是如何贯穿软件的整个⽣命周期。是指测试流程,这个流程是按照⼀定顺序执⾏的⼀系列特定的步骤,去保证产品质量符合需求。在软件测试⽣命周期流程中,每个活动都按照计划的系统的执⾏。每个阶段有不同的⽬标和交付产物。需求分析测试计划测试设计与测试开发测试执行测试评估。

2026-10-08 14:10:53 469 11

原创 【Linux网络编程】四十九.《Reactor 模式详解:基于 epoll ET 实现反应堆 Tcp 服务器实战开发》---详解

Reactor 模式(反应器模式,也称 Dispatcher 分发器模式)是一种事件驱动的设计模式: 它通过 I/O 多路复用(select / poll / epoll)同时监听多个句柄,当某个句柄上的事件就绪时,把事件分派给事先注册好的处理程序(回调)去处理。基于 IO 多路转接,当检测到事件就绪后,通过回调函数执行业务逻辑的编程模型,叫做反应堆(Reactor)模式。上面代码中的 TcpServer 就是一个反应堆实例,而每一个 Connection 对象代表一个事件。文件描述符独立缓冲区。

2026-10-07 21:44:32 1000 13

原创 【C++ 标准项目】发布订阅消息队列 (篇五):C++11 异步编程,手写线程池,async/promise/packaged_task/future 实战

当我们在多线程编程中使用异步任务时,std::future 可以帮助我们在需要的时候获取任务的执行结果。std::future 的一个重要特性是能够阻塞当前线程,直到异步操作完成,从而确保我们在获取结果时不会遇到未完成的操作。std::async 是一种将任务与 std::future 关联的简单方法。它创建并运行一个异步任务,并返回一个与该任务结果关联的 std::future 对象。

2026-10-07 11:09:41 446 22

原创 【C++ 标准项目】发布订阅消息队列(篇四):sqlite 与 gtest 断言框架介绍及实战应用

SQLite 是一个进程内的轻量级数据库,它实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,我们不需要在系统中配置。不像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接,SQLite 直接访问其存储文件。C/C++ API 是 SQLite3 数据库的一个客户端,提供一种用 C/C++ 操作数据库的方法。1.查看当前数据库在编译阶段是否启动了线程安全// 0-未启用;1-启用。

2026-10-06 19:59:07 537 22

原创 【Linux】四十八.《Linux :IO 多路复用,poll 与 epoll 原理、代码实战与惊群问题解析》---详解

命令,查看当前epoll服务器的文件描述符的使用情况。文件描述符 0、1、2 是默认打开的,分别对应的是标准输入、标准输出和标准错误,3 号文件描述符对应的是监听套接字,4 号文件描述符对应 epoll 句柄,5 号和 6 号文件描述符分别对应访问服务器的两个客户端。在这里阻塞是非常严重的,就比如博客写的服务器都是单进程的服务器,若 recv 被阻塞住,并且此后该数据再也不就绪,那么就相当于服务器挂掉了,因此在 ET 工作模式下循环调用 recv 函数进行读取时,必须将对应的文件描述符设置为非阻塞状态。

2026-10-04 10:35:33 973 21

原创 【C++标准项目】发布订阅式消息队列(篇三):C++ 第三方库实战:基于 muduo 库函数实现 protobuf 协议的通信

- 语法版本(必须在第一行)<- 命名空间└── 四个 message} 1 字段} 1 字段2 字段} 1 字段声明使用 protobuf3 版本语法,proto3 默认值规则简化,不需要required/optional修饰。命名空间 bit,protoc 编译生成 C++ 代码后,所有消息类都放在 bit:: 命名空间下,防止类名冲突。C++ 里使用:bit::TranslateRequest req;客户端发给服务端的翻译请求消息。

2026-10-03 16:07:11 497 20

原创 【C++标准项目】发布订阅式消息队列(篇二):C++ 第三方库实战:Protobuf 与 Muduo 从原理到上手

消息(message)就是我们要传输的结构化对象。在网络里,双方必须先"定制协议"——说白了就是约定结构体长什么样;PB 用message来承载这件事,并据此帮你生成类和方法。message 消息类型名 {命名规范:驼峰命名,首字母大写。// 定义联系人消息字段类型 字段名 = 字段唯一编号;字段名:全小写,多个单词用连接(snake_case字段类型:分为标量数据类型(int32 / string …)和特殊类型(枚举、其他 message 等);字段唯一编号:用来标识字段,

2026-10-02 23:12:30 535 19

原创 【C++标准项目】C++基于protobuf的发布订阅式消息队列(篇一):项目概述+环境搭建

代码块。

2026-10-02 01:37:54 648 23

原创 【Redis初阶】(篇二)《一文吃透 Redis:特性、应用场景、版本演进与安装配置全解析》

假如现在有人问 Redis 的作者都有谁在使用 Redis,我想他可以开句玩笑的回答:还有谁不使用 Redis,当然这只是开玩笑,但是从 Redis 的官方公司统计来看,有很多重量级的公司都在使用 Redis,如国外的 Twitter、Instagram、Stack Overflow、Github 等,国内就更多了,如果单单从体量来统计,新浪微博可以说是全球最大的 Redis 使用者,除了新浪微博,还有像阿里巴巴、腾讯、搜狐、优酷土豆、美团、小米、唯品会等公司都是 Redis 的使用者。

2026-09-29 15:12:24 463 12

原创 【Redis】《一文走完服务端高并发架构演进:从单机架构到 K8S 容器编排》

应用服务和数据库服务共用一台服务器。

2026-09-29 13:57:57 462 11

原创 【Linux网络编程】四十七.《Linux IO 模型详解:阻塞 IO、非阻塞 IO 与 IO 多路转接(select)》

因此在以非阻塞方式读取数据时,如果调用 read 函数时得到的返回值是 -1,此时还需通过错误码进一步进行判断,如果错误码的值是 EAGAIN 或 EWOULDBLOCK,说明本次调用 read 函数出错是因为底层数据还没有就绪,因此后续还应该继续调用 read 函数进行轮询检测数据是否就绪,当数据继续时再进行数据的读取。为方便举例,假设 fd_set 占用 1 字节,fd_set 里的每一个比特位对应一个文件描述符 fd,那么 1 字节长度的 fd_set 最多可以管理 8 个 fd。

2026-09-28 21:27:11 995 13

原创 【Redis初阶】(篇一)《小白也能轻松上手,用ubuntu22.04搭建redis环境》---详解

初学者建议安装 Redis 5.0 或更高稳定版本(如 Redis 6/7)。Redis 官方仅支持 Linux 环境。建议在 Linux 虚拟机(CentOS 或 Ubuntu)上。这有助于理解 Redis 的目录结构、配置文件位置及启动流程。当学习到或时,建议切换到环境。利用 Docker 可以快速模拟多节点环境,避免繁琐的配置冲突。本机直接安装,熟悉基本命令。结合 Docker 技术(参考 Docker 相关课程),搭建分布式集群环境。

2026-09-28 17:26:59 405 11

原创 【Python】(篇七)《使用Python库》 -- 详解

库就是别人已经写好的代码,我们可以直接拿来使用。。这里所说的,就是指这门语言是否拥有足够丰富的库,用来应对各类开发场景。实际开发中,不会所有代码都从零手写,而是充分利用现成的库,以此简化开发流程。

2026-09-27 16:00:17 758 17

原创 【Python】(篇六)《基础语法(函数、列表和元组、字典、文件)》---详解

def 函数名(形参列表):函数体return 返回值# def:define定义# 形参列表中可以有多个形参,多个形参(形式参数)之间用逗号分隔# 函数体要带有一定的缩进(带有缩进的代码才是函数内部的语句)# 函数执行到 return 就意味着执行完了,return 后面的值就是函数的返回值。

2026-09-27 13:51:37 345 14

空空如也

空空如也

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

TA关注的人

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