- 博客(54)
- 收藏
- 关注
原创 IT 疑难杂症诊疗室:从现象到根因的排障方法论
本文提出“诊疗室”方法论,针对线上系统偶发慢、500错误、资源耗尽等难以复现的“IT疑难杂症”,借鉴医疗问诊流程,通过现象分诊、影响面判断、观测取证与假设验证,实现系统化定位。结合案例与工具链,强调标准化流程与知识沉淀,提升故障响应效率,核心在于用结构化思维应对信息缺失与不确定性。
2026-10-26 22:05:13
325
原创 ODB 与 MySQL:C++ 里的 ORM 实践(类即表、事务铁律与查询封装)
本文以 C++ 微服务脚手架中的点播系统为例,介绍如何用 ODB 在 C++ 里实现 ORM 式持久化。核心思路是让类定义成为表的唯一事实来源:给字段加上 #pragma db 标注,一条 odb 命令即可在构建期生成持久化代码与建表 SQL,业务侧只面对对象、不写一行 SQL。文章依次覆盖 pragma 标注与类型映射、事务铁律下的增删改查、查询表达式与多表视图,最后用「配置 + 工厂 + DAO」完成二次封装,并汇总了构建链路与 pragma 对齐上的常见坑。
2026-10-26 22:03:55
588
原创 Redis++ 缓存实战:五种数据结构、pipeline/事务/watch 与二次封装
本文基于redis-plus-plus实现C++缓存实践,通过五种数据结构(string、hash、list、set、zset)精准匹配不同业务场景,结合pipeline提升批量操作效率,利用事务保证原子性,以watch实现乐观锁防并发冲突。采用“配置+工厂”模式统一管理连接池,遵循缓存读取三段式(查、回源、回填),确保缓存命中率与数据一致性,有效缓解数据库压力。
2026-10-25 15:26:50
345
原创 FastDFS 实战:C++ 文件上传下载与 Client 封装
本文介绍如何使用FastDFS解决视频转码后文件存储与访问问题。通过tracker与storage的分工,实现文件上传、下载、删除的分布式管理。核心是file_id作为文件唯一标识,无需关心实际存储位置。封装Client类统一操作接口,避免头文件顺序陷阱,并利用连接池提升性能。相比自定义路径存储,FastDFS更易扩展,支持动态扩容且业务代码零改动。
2026-10-25 15:23:09
259
原创 AMQP-CPP 实战:Deferred 链式回调与死信队列延时消息
本文通过 AMQP-CPP 实现 RabbitMQ 延时消息,利用 x-message-ttl 与死信队列(DLX)达成零定时器的 5 秒延时效果。详解 Deferred 链式回调机制,强调声明操作必须嵌套在 onSuccess 中以保证顺序;揭示事件循环 ev_run 的必要性,并提醒消费端必须手动 ack 防止重复投递。最终封装成统一的 MQClient 类,实现生产消费解耦与可靠通信。
2026-10-24 20:24:08
330
原创 FFmpeg HLS 转码实战:用 libffmpeg 把 MP4 切成 m3u8 + ts
本文详解使用libffmpeg实现MP4到HLS分片的完整流程,通过九步操作完成从输入文件打开、流信息探测、输出上下文分配到数据搬运与尾部写入。核心在于设置五个字典项控制切片行为:每片时长、保留分片数、播放类型、独立分段及路径前缀。最终生成M3U8播放列表与TS分片文件,支持边下边播与多码率切换,适用于点播场景,依托HTTP静态服务器与CDN高效分发。
2026-10-23 16:19:12
364
原创 CMake 工程化
本文将前10篇独立轮子整合为统一构建项目,通过CMake实现“参数→日志→测试→数据→HTTP→RPC”服务链。详解CMake的配置与构建分离机制,强调目标属性(PRIVATE/PUBLIC/INTERFACE)的传递规则,以顶层、模块、示例三层结构实现configure → build → ctest全流程自动化。通过find_package与add_subdirectory合理接入依赖,彻底解决手动管理头文件与库路径的维护难题,实现跨平台、可复用、零修改迁移的工程化构建。
2026-10-23 16:15:17
118
原创 BRpc 二次封装:Channel 管理、服务管理与回调工厂
本文介绍如何通过四个核心类(SvcChannels、Channels、ClosureFactory、RpcServerFactory)封装 brpc 调用,实现节点管理、选路、异步回调与服务启动的统一。业务代码只需关注服务名、节点和业务逻辑,大幅减少样板代码,提升可维护性与安全性。
2026-10-22 21:53:38
180
原创 BRpc 搭建简单 rpc 服务器
本文以一个 .proto 文件为起点,完整演示了 brpc 框架的使用:定义 EchoService 并实现服务端逻辑,通过同步与异步客户端调用接口,最后在同一端口支持 HTTP 访问。文章详细讲解了 proto 生成、Service 实现、Server 启动及调用流程,强调 done 参数必须正确执行,并指出生成文件勿提交、接口变更应通过 proto 重生成。全篇聚焦原生用法,展现 brpc “一端口多协议、同步异步兼备”的工程优势。
2026-10-22 21:48:01
575
原创 Websocket 使用实践:把回声服务改成业务消息通道
本文通过“定目标→补协议→改服务端→写客户端→跑起来”五步,将简单的Echo服务升级为支持多用户实时聊天的WebSocket广播系统。核心改造包括:使用owner_less容器管理连接与昵称映射,服务端在OnOpen/OnClose中维护连接集合,并在OnMessage中遍历发送消息实现广播。浏览器端通过两个标签页即可实现互通,完整演示了从短连接到长连接、从单向通信到多方广播的演进过程。
2026-10-21 22:42:05
851
原创 WebSocket 教程:websocketpp 写 echo 服务端
本文通过“同端口双协议→握手→六步骨架→浏览器验证”四步,详解WebSocket在C++中的实现。以8888端口为例,演示如何用websocketpp构建支持HTTP升级的长连接服务,解析101状态码握手原理,实现双向通信,并通过30行JS代码在浏览器中验证。文章强调了握手流程、Boost依赖配置及makefile构建要点,帮助读者掌握从零搭建WebSocket服务的核心实践。
2026-10-21 20:49:42
227
原创 cpp-httplib 实战:单头文件写 HTTP 服务与客户端
本文通过“起服务→看请求→写客户端→跑通验证”四步,详解cpp-httplib的使用:服务端可同时提供接口与静态文件,支持路由匹配与正则捕获;客户端可发送带查询参数和请求头的GET请求。借助单头文件特性,无需复杂构建,快速实现C++程序的HTTP交互。重点解析Request六要素:方法、路径、主体、请求头、查询参数、正则匹配,助你掌握HTTP开发核心能力。
2026-10-21 20:48:12
434
原创 protobuf 实战:从 .proto 到 C++ 序列化的完整链路
本文以“写 .proto → 生成代码 → 读写消息 → 定协议”四步法,详解 C++ 中 Protobuf 的工程实践。通过对比 JSON,阐明其在体积、速度与契约一致性上的优势,适合服务间高效传输结构化数据。内容涵盖安装、首个 .proto 文件编写、代码生成与序列化流程,并强调字段编号的兼容性规则与语法要点,助开发者10分钟跑通原型,掌握 Makefile 自动化生成,避免手工拷贝。
2026-10-20 16:51:31
208
原创 jsoncpp 使用指南:编译链接、Json::Value 取值与高频坑
本文以「解析→取值→生成→踩坑」四步法详解 jsoncpp 的使用,帮助读者5分钟掌握C++读写JSON。内容涵盖安装配置、CMake链接技巧及常见错误(如未定义引用),重点讲解Json::Value安全访问嵌套结构,并揭示int64精度、浮点误差、注释支持与性能陷阱。适合老项目快速集成,强调“先跑通再优化”的工程实践。
2026-10-20 16:22:23
479
原创 gtest 教程:从第一个 TEST 到 CMake + ctest(附常见坑)
本文以“先跑通→再讲透→可复制”三步法,详解 gtest 在 C++ 工程中的实践应用。从单元测试必要性出发,介绍 gtest 的断言、夹具、参数化与死亡测试等核心能力,并通过最小 CMake 项目实现 10 分钟跑通首个测试用例。结合 ctest 与覆盖率工具,完整落地 CI 集成,助力代码长期维护与重构信心。
2026-10-20 16:18:03
297
原创 spdlog实战:日志分级、滚动与性能调优
本文以“先跑通→再拆解→后封装”三步法,详解 spdlog 的核心用法:5分钟实现异步彩色控制台日志,掌握7级日志、pattern格式与多sink配置,并提供可直接落地的单例封装方案(含宏定义、双sink、异步支持)。结合性能对比与实战场景,阐明 spdlog 在C++工程中“高性能、易用、可扩展”的优势,适合各类服务化项目快速集成。
2026-10-19 21:22:08
566
原创 谷歌gflags使用指南:高效管理命令行参数的实用技巧
本文介绍Google开源的C++命令行参数解析库gflags,通过声明式定义(如DEFINE_int32)替代手写argv解析,实现一键解析、类型安全与自动帮助。读者可快速上手:5分钟跑通首个程序,掌握6种参数类型、校验机制与帮助文档生成,并避开常见陷阱。支持跨平台、默认值配置及灵活扩展,核心流程为“注册→解析→读取”,推荐使用ParseCommandLineFlags(true)清理已处理参数,提升代码整洁度与可维护性。
2026-10-19 21:00:13
336
1
原创 算法基础篇 · 04 前缀和(C++ 题解)
本文系统讲解前缀和算法,涵盖一维、二维前缀和及最大子段和应用。通过模板题与经典例题(如激光炸弹),展示如何用预处理将区间求和从O(n)优化至O(1),并强调数据范围大时需使用long long,注意下标从1开始及容斥公式细节。核心思想为“用空间换时间”,适用于频繁区间查询场景,是算法竞赛基础必备技能。
2026-09-20 15:54:03
247
原创 算法基础篇 · 02 高精度(C++ 题解)
本文介绍高精度算法的核心思想:当整数过大无法用常规类型存储时,通过字符串读入、数组逆序存储,模拟列竖式进行加减乘除运算。重点讲解高精度加法、减法、乘法的实现思路与代码模板,强调逆序对齐、进位/借位处理及前导零消除等关键细节。适用于超大整数(如10⁵⁰⁰级)的计算,时间复杂度为O(n),是算法竞赛中处理大数运算的基础技能。
2026-09-16 22:13:59
307
原创 算法基础篇 · 01 模拟(C++ 题解)
本文介绍算法基础中的“模拟”思想,强调按题意逐项实现。通过三道典型题目:多项式输出(处理符号、系数、指数)、蛇形方阵(方向模拟填数)、字符串展开(多参数规则展开),展示如何将复杂逻辑分解为清晰步骤。代码实现注重细节处理,如首项符号、系数1的省略、越界判断、格式输出等。核心在于准确理解题意并忠实翻译为代码,是竞赛中“签到题”的常见类型,虽基础却需严谨思维。
2026-09-16 22:12:59
221
原创 模拟题,笔试里的“必拿分“
本文为《优选算法精品课》模拟专题第2篇,精选5道经典模拟题:替换问号、提莫攻击、N字形变换、外观数列与数青蛙。通过逐枚举、分情况讨论、找规律、双指针与状态机等五大手法,系统解析题目核心逻辑,强调读题细致与代码稳定性。从易到难层层递进,助力掌握笔试“送分题”解法,提升实战能力。
2026-09-15 21:44:40
276
原创 数据结构算法:位运算,为什么是刷题界的“性价比之王“?
本文精选5道经典位运算题,涵盖位图判重、异或消消乐、无进位加法、比特位计数与分组异或等核心技巧。从易到难,手写C++代码,附复杂度分析与面试易错点,助你一文吃透位运算精髓,轻松应对大厂笔试面试,实现“会者不难,难者不会”的高区分度突破。
2026-09-15 21:39:20
458
原创 库制作与原理 · 链接知识笔记
主要内容包括: 链接的基本概念和工作流程 静态库(.a)和动态库(.so)的区别与制作方法 动态库的PIC(位置无关代码)原理 ELF文件格式解析 完整的链接过程(符号解析和重定位) 程序加载与动态链接机制(GOT/PLT) 常用工具命令速查表
2026-07-19 16:59:04
388
原创 System V 共享内存(Shared Memory)IPC 原理分析
System V 共享内存与命名管道结合的进程通信示例 本项目演示了Linux下System V共享内存(Shared Memory)与命名管道(FIFO)结合的进程间通信机制
2026-07-19 11:39:14
336
原创 C语言库制作与原理 —— 从静态库到动态库的全面指南
C语言库制作与原理摘要 本文系统讲解了Linux下C语言静态库和动态库的制作方法与工作原理。主要内容包括: 静态库(.a)制作流程:编译目标文件→使用ar工具打包→链接时嵌入可执行文件 动态库(.so)制作要点:需使用-fPIC编译位置无关代码→通过-shared参数生成共享库 关键区别:静态库在编译时链接,代码被直接复制;动态库在运行时加载,多进程共享 技术原理:详细解析了ELF格式、符号解析、GOT/PLT机制和PIC实现原理 实践指导:提供了库的使用方法、路径设置技巧及调试手段
2026-07-13 11:45:21
335
原创 Ext系列文件系统课堂笔记
本文系统讲解了磁盘结构与文件系统核心原理。首先剖析磁盘物理架构,详解CHS/LBA寻址方式及换算公式,指出LBA通过线性化三维地址解决CHS容量限制。随后深入解析ext2文件系统设计:分区被划分为块组,通过超级块、位图、inode表管理文件属性与数据块映射,目录文件存储"文件名-inode"对应关系。最后对比软硬链接本质——硬链接共享inode减少空间占用但不跨分区,软链接独立inode存储路径实现灵活指向;文件=属性+内容
2026-06-22 22:47:30
221
2
原创 深入理解 Linux 基础 IO:从 C 库到系统内核
本文深入解析了Linux基础IO的底层原理,从文件概念到系统调用实现。主要内容包括: 文件本质:Linux下一切皆文件的设计哲学,文件=属性+内容的结构 IO接口对比: C标准库函数(fopen/fread等)是上层封装 系统调用(open/read/write等)是底层实现 核心机制: 文件描述符是进程访问文件的索引 重定向通过改变文件描述符指向实现 缓冲区机制(全缓冲/行缓冲/无缓冲)对IO性能的关键影响 典型问题分析: 重定向导致的输出异常 fork与缓冲区的交互问题 用户态与内核态两级缓冲体系
2026-06-22 22:09:08
546
2
原创 STL 之 vector 讲练结合
vector 是 C++ 标准库中提供的一个,它可以自动管理内存,根据需要动态扩容。:不需要预先指定大小,可以随时添加或删除元素:不需要手动 new/delete,避免内存泄漏:提供了大量便捷的操作方法:与数组一样,可以通过下标随机访问。
2026-06-15 17:02:09
185
原创 Linux进程控制学习总结(2/2)
本文介绍了一个基于Linux进程控制知识实现的简易Shell解释器项目。该项目完整复刻了bash的核心功能,包括: 支持外部命令(如ls、ps)通过fork+execvp执行 实现内建命令(如cd、export、echo)由Shell主进程直接处理 自定义环境变量管理,支持export/env功能 记录命令退出码,实现echo $?查询 模拟原生Shell的交互式提示符 项目通过五步循环机制(提示符、输入、解析、执行、回收)实现Shell核心逻辑,重点区分了内建命令与外部命令的执行差异:内建命令直接修改Sh
2026-06-08 22:26:18
252
4
原创 Linux进程控制学习总结(1/2)
本文深入讲解了Linux进程管理的核心知识和应用场景,主要包括以下内容: 进程创建 详细解析fork函数原理、返回值和写时拷贝技术 分析父子进程执行流程和资源管理机制 进程终止 介绍进程退出的三种场景和常见方法 对比exit、_exit和return的区别及适用场景 进程等待 阐述wait和waitpid函数的用法 讲解阻塞与非阻塞等待的实现方式 分析进程状态获取和资源回收机制 进程程序替换 详解exec函数族的使用方法和区别 提供环境变量处理的工程化实践方案 包含完整的示例代码和原理分析
2026-06-08 21:54:52
570
5
原创 Linux进程全面解析:从基础到高级管理(补充: 程序地址空间)
本文深入解析Linux进程地址空间管理机制,通过实验验证32位系统下程序内存布局规律(代码段→只读区→数据段→堆→栈→环境变量)。关键发现:1)父子进程相同虚拟地址可能映射不同物理内存,证实用户层操作的都是虚拟地址;2)内核通过mm_struct和vm_area_struct结构体分层管理虚拟地址空间,采用红黑树优化VMA查找效率。虚拟内存的核心优势在于:实现进程隔离(相同虚拟地址映射不同物理内存)、支持延迟分配(物理内存按需分配)、规范内存布局(离散物理内存呈现连续虚拟空间)。
2026-06-07 11:37:50
381
原创 Linux进程全面解析:从基础到高级管理(3/3)
本文深入解析Linux进程管理与环境变量机制。在进程管理部分,重点分析了Linux 2.6内核的O(1)调度算法,包括其双队列结构(活动队列和过期队列)、位图优化和指针交换机制,这些设计实现了恒定的调度时间复杂度。环境变量部分详细讲解了PATH、HOME等关键变量的作用机制,演示了环境变量的查看、设置方法,并区分了本地变量与全局环境变量的差异。文章还介绍了进程切换的底层原理(CPU上下文切换)和通过代码获取环境变量的三种方式(main参数、environ变量、getenv函数)。
2026-06-07 11:16:51
371
原创 Linux进程全面解析:从基础到高级管理(2/3)
1. 进程本质与结构:进程=内核数据结构(task_struct)+程序代码/数据,详细讲解PCB(进程控制块)的作用与task_struct内容分类;2. 进程操作:查看进程的两种方式(/proc目录和ps/top命令)、获取进程标识符(getpid/getppid)、fork创建进程的独特机制;3. 进程状态:详细解析7种进程状态(R/S/D/T/t/X/Z),重点说明僵尸进程的形成原因、危害及孤儿进程的处理机制;4. 进程优先级:讲解PRI与nice值的关系、调整方法等等
2026-06-06 19:34:34
438
2
原创 Linux进程全面解析:从基础到高级管理(1/3)
本文摘要:文章系统介绍了计算机基础架构与操作系统核心概念。首先阐述了冯诺依曼体系结构,强调内存作为核心中介的重要作用。然后详细解析了操作系统的定义、设计目标及核心功能,重点说明其"管理"本质:通过结构体描述对象,用数据结构组织对象。最后探讨了系统调用与库函数的关系,指出库函数是对系统调用的二次封装。全文揭示了操作系统对硬件和进程的统一管理逻辑,为理解计算机系统工作原理提供了清晰框架。(149字)
2026-06-06 18:58:13
397
3
原创 Qt初识,快速上手
本文介绍了Qt中QWidget的基本使用方法。首先展示了如何创建QLabel显示文本,包括代码实现和UI设计两种方式。接着演示了QPushButton的创建和文本设置方法。最后重点讲解了connect信号槽机制,实现按钮点击时文本切换功能:当按钮显示"helloworld"时点击变为"helloQt",反之亦然。文章通过代码示例和UI操作说明,完整呈现了从创建控件到实现交互功能的Qt开发流程。
2026-05-16 15:35:10
78
原创 Linux指令初识(实用篇)
本文介绍了Linux系统中常用的基础文件操作指令: cd - 切换工作目录(支持绝对/相对路径) ls - 查看目录内容(含-l显示详情、-a显示隐藏文件等选项) touch/mkdir - 分别创建文件和空目录 rmdir - 删除空目录(-p可递归删除父目录) rm - 强力删除(-r递归删除目录,-f强制删除) 重点说明了文件(-开头)与目录(d开头)的区别,并提供了实用组合指令如rm -rf。适合初学者通过实践快速掌握基础文件操作。
2026-05-14 22:39:48
370
原创 剖析“继承”,清晰易懂
本文系统讲解了C++继承机制的核心概念与应用。首先介绍了继承的基本概念,通过Person、Student和Teacher类示例展示了代码复用优势。重点剖析了派生类成员函数生成规则,包括构造/拷贝构造/赋值运算符/析构函数的调用顺序和实现要点。深入讲解了继承中的隐藏规则、友元关系限制和静态成员特性。针对复杂的多继承场景,详细分析了菱形继承带来的数据冗余和二义性问题,并提出虚继承解决方案。
2026-04-28 20:38:40
498
原创 C++ 模板初阶
泛型编程通过模板技术实现代码复用,避免函数重载的弊端。函数模板作为通用代码模具,在编译时根据参数类型自动生成具体函数实例,支持隐式和显式实例化。类模板则允许定义通用数据结构,实例化时需指定具体类型。模板技术显著提高了代码复用率和可维护性,是泛型编程的核心实现手段。
2026-02-13 23:01:17
500
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅