自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【C++高并发内存池篇·容器特化】自定义 STL allocator,把 `list`、`map` 装上内存池涡轮

真实项目中可以根据需要决定:只给 node 容器换 allocator,string 还是用默认的也完全 OK。的节点更复杂一些,但对 allocator 来说没区别,因为容器内部的 node 类型最后都会走你提供的。升级一个简单的线程安全壳子,用 mutex 就够了(先保证正确,再考虑极致性能)。但这已经是第三篇、第四篇的内容了 😄,这一篇先把**“怎么挂到 STL”**讲清楚。C++ 标准对 allocator 的要求其实不少,但我们要“跑起来”只需要一版。这类容器默认就走我们的定长内存池。

2025-11-27 15:48:13 854

原创 【C++高并发内存池实战】从 new/malloc 升级到定长内存池,让分配像喝水一样快

定长内存池看起来只是个“小工具”,但在一些场景里它真的会变成你的核心基础设施高并发网络服务(连接对象、请求上下文);游戏服务器(子弹、技能、状态对象池);实时系统(必须控制延迟的内存分配)。不要一上来就造一整套“通用 allocator 框架”。先针对你项目里的“热点对象”做一两个定长池。支持多个 size class,类似一档档;把池包装成,和std::list等容器集成;做简单的统计接口(分配次数、命中率、失败次数等),便于线上排查。

2025-11-27 15:45:08 1080

原创 Nginx Handler 模块实现:从启动流程到多进程 slab 的完整链路

/ 访问计数在main配置结构里记一块。

2025-11-26 13:20:43 769

原创 Nginx 模块实战:用共享内存 + 红黑树实现一个简单限流模块

开发 Nginx 模块时,强烈建议:编译时加上。在nginx.conf里把 log 级别开到debug这样你在 error.log 里就能看到每个请求的限流计算过程,调问题会舒服很多。共享内存(shm_zone + slab):在多个 worker 间共享计数器和规则;红黑树(ngx_rbtree_t):在共享内存中高效按 key 查找 / 插入节点;队列(ngx_queue_t):实现 LRU / 过期淘汰;ACCESS 阶段 handler:在请求进入业务前拦截非法或超限请求。

2025-11-26 07:00:00 935

原创 从黑白名单到自定义过滤器:聊一聊 Nginx HTTP Filter 模块的实现思路

黑白名单实时更新从 MySQL / Redis / 内部管理平台动态下发按用户、业务线、API 进行精细控制做复杂的统计、限流、灰度等逻辑那就非常适合用自定义模块 + 过滤器 / ACCESS 阶段来实现。下面就以“自定义模块”的思路来展开。/* 往 ACCESS 阶段链表里 push 一个 handler */然后实现这个// 1. 拿到客户端 IP/URI 等信息// 2. 在你自己的黑名单结构里查一查// 直接返回 403。

2025-11-25 20:15:00 1012

原创 从网关到多进程内核:把 Nginx 反向代理和系统参数讲清楚

在你自己的项目里,只要你定义好服务注册和路由规则,Nginx 基本可以无缝充当“统一网关”。浏览器发起一个 HTTP 请求,打到 Nginx 暴露的端口(比如 80/443)。后端应用处理完,响应交回 Nginx;集群里有多台真实业务机器,这就是经典的“反向代理 + 负载均衡”。理解这些容器,有助于你看懂配置解析和模块初始化那一块的源码。这些都是为了让 Nginx 接得住更多连接、减少排队丢包。如果你自己写模块,实际上就是在这条链路里插一个“环节”。处理 HTTP 解析、反向代理、负载均衡、写响应等。

2025-11-25 14:10:05 2148 1

原创 用 QLocalSocket 给 Qt 程序“装一个大脑”:单实例 + 进程间通信实战

这对组合,其实就是 Qt 自带的本机 IPC 小工具单实例应用;多进程之间的简单指令、参数传递;主程序和小工具程序之间打个招呼:“我已经在跑了,你别再开我了”。主程序不能瞎开进程,要学会先“问问别人是不是已经在线了”(QLocalSocket);唤醒已有窗口的时候,要稍微温柔一点。

2025-11-24 23:00:00 891

原创 Qt 程序在 Ubuntu GNOME 下反复打开窗口,把 Dock 弄“假死”的一次排查记录

对窗口管理器来说就是一顿狂轰滥炸,非常容易把 GNOME 搞到怀疑人生。外面多进程 + 里面单实例,Dock 和 GNOME 夹在中间很崩溃。重点来了,历史记录程序每次收到 IPC 消息后,会调用一个。这就解释了为什么 Dock 里会出现一堆历史记录图标——如果你快速多次点“历史记录”按钮,就会不断触发这个函数,其它点击都是走 IPC,不再把 Dock 弄出一堆图标。正常逻辑是:点主界面的“历史记录”按钮,弹出。有时候不是系统太菜,而是我们搞得有点过分。,主程序不知道这回事,一直在外面狂。

2025-11-24 08:15:00 730

原创 一次 Qt 网络程序诡异崩溃排查:从 Breakpad 堆栈到 lambda 捕获悬空引用

表面现象:Qt GUI 程序在执行网络命令时偶尔 SIGSEGV 崩溃,堆栈指向 QtCore 内部和某个 lambda。根本原因里 lambda 捕获了函数局部变量的引用,在函数返回后被readyRead信号异步调用,访问悬空引用导致崩溃。修复办法使用管理的堆对象保存命令状态(是否收到响应、响应数据),lambda 捕获shared_ptr;等待循环改为检查;函数返回值也改为;同时在收到匹配响应后断开readyRead连接,避免多次触发。

2025-11-14 11:29:46 1056

原创 【现代C++】析构函数深度指南:默认/虚析构/异常规范与最佳实践(C++11–23)

/ 纯虚析构IFace::~IFace() {} // 仍需提供定义(链接期需要)// 纯虚inline IFace::~IFace() {} // 仍需定义。

2025-08-10 15:15:00 2061 2

原创 【C++对象诞生全解析】构造函数:从内存布局到高效初始化的终极指南

【代码】【C++对象诞生全解析】构造函数:从内存布局到高效初始化的终极指南。

2025-08-10 08:15:00 974

原创 gRPC for C++ 实战全流程 —— 从零搭建到同步/异步服务

定义了两个 RPC 接口:注册和登录。状态中创建新对象以处理后续请求。实现,有两种封装方式。

2025-08-09 16:37:48 887

原创 gRPC 全面解析与实战 —— 从原理到同步/异步开发全攻略

让我们像调用本地方法一样调用远程服务。gRPCGoogle 开发的开源、高性能、跨语言 RPC 框架基于HTTP/2协议使用作为序列化方案简单理解你写了一个函数,可以在另一台服务器上直接调用它,而不必关心底层 TCP 传输、序列化、网络延迟等细节,这就是 gRPC 带来的便利。gRPC 通过 HTTP/2 + Protobuf,在分布式通信中兼顾了高性能与跨语言特性。

2025-08-09 16:35:33 1481

原创 【C++性能攻坚】内存对齐:从硬件原理到极致优化的完全指南

内存对齐是C++高性能编程的隐形支柱,直接影响程序速度2-10倍!本文将深入剖析对齐的硬件原理,揭示C++中的对齐规则,并通过性能测试展示如何利用对齐优化关键代码。

2025-08-08 15:48:05 1189

原创 【C++空指针革命】nullptr:告别NULL的终极解决方案与底层实现剖析

/ 用户定义空指针。

2025-08-08 15:39:51 871

原创 【C++性能利器】inline内联函数:从原理到实战的深度指南

inline函数是C++性能优化的关键武器,但90%的开发者未能真正掌握其精髓。本文将深入剖析inline的底层机制,揭示编译器如何处理内联,并通过性能测试展示如何正确使用这一利器。

2025-08-07 15:30:37 415

原创 【C++核心解析】作用域限定符::的六大妙用与深层原理剖析

public:// 声明// 使用::连接类名和函数名double MathUtil::sqrt(double x) { // 实现// 牛顿迭代法实现i<10;++i){场景推荐用法避免用法类成员定义省略类名限定全局变量访问依赖局部作用域静态成员初始化在构造函数内初始化命名空间访问全局using namespace基类方法调用省略限定导致递归调用模板特化非特化版本实现特化功能作用域限定符是C++模块化设计的核心枢纽,精确控制其使用能让代码更健壮、更可维护。

2025-08-07 15:25:42 394

原创 【C++核心精讲】函数重载:编译时多态的艺术与实战指南

函数重载是C++静态多态的核心技术,让代码更简洁高效。本文将深入剖析函数重载的原理与应用,助你掌握这一提升代码表现力的关键特性。

2025-08-06 10:47:14 635

原创 【C++ STL深度探索】stack容器:从入门到精通基础操作指南

安全第一:操作前用empty()检查栈状态选择底层容器:根据场景选择deque(默认)、vector或list利用RAII:使用局部栈自动管理资源优先emplace:C++11以上使用emplace避免拷贝禁止遍历:栈设计上不支持遍历操作内存管理:大容量栈预先分配内存线程安全:多线程环境需自行加锁(STL stack非线程安全)

2025-08-06 10:34:22 475

原创 gRPC C++ 从 0 到 1 → 到线上:**超详细** 环境搭建、编码范式、性能调优与 DevOps 全攻略

等高危漏洞已在 1.63.2+ 修复,应定期镜像扫描。([OpenCVE][2])Callback API 在 4C8T 服务器上能轻松跑到。挂到专门线程,每 N 小时注入新证书。) 无需真正监听端口,测试飞快。,Sync 仅 ~20k。

2025-08-04 09:56:46 2032

原创 Docker 容器编排全指南:从 Compose 到 Swarm,一文吃透实践与原理

对比 K8s,需要写 Deployment/Service/YAML;Swarm 几乎零学习成本即可上线。的技术集合,包括生命周期管理、资源调度、网络互联、配置与密钥分发等功能。,Compose 文件会自动转为 Swarm service,不需要任何改动。GitLab Runner 内置 Docker 执行器,兼顾向前兼容与 Swarm 支持;观察生成的低阶 JSON,利于故障排查。字段可直接拉起数据库做集成测试。> ⚠️ v2 已集成为。可并存,但官方建议迁移。:在 Swarm 里执行。

2025-08-04 09:41:55 944

原创 【C++深度解析】类的六大默认成员函数(上):构造函数的终极指南

> 摘要:构造函数是对象诞生的第一声啼哭,是C++对象生命周期管理的起点。本文将全方位剖析构造函数的原理与应用,助你彻底掌握对象初始化的核心机制。

2025-07-27 09:45:00 608

原创 【C++从入门到精通】类和对象:初识面向对象编程的核心

> 摘要:面向对象编程是C++的核心特性,而类和对象则是构建程序的基石。本文将带你深入理解C++中类和对象的基本概念与使用方法,掌握面向对象编程的入门钥匙。

2025-07-27 08:00:00 331

原创 【C++底层探秘】basic_string内部架构完全剖析:成员变量与函数全解析

在C++中,string看似简单却暗藏玄机,掌握其底层实现是写出高性能代码的关键。本文将带你深入basic_string的心脏,揭秘字符串操作的性能奥秘。

2025-07-26 21:00:00 1007

原创 【C++高效编程】STL queue深度剖析:从底层原理到高级应用

> 在C++并发与异步编程领域,queue是构建高性能系统的核心组件,每秒处理百万级消息的秘密武器。

2025-07-26 20:30:00 958

原创 【C++避坑指南】vector迭代器失效的八大场景与解决方案

> 迭代器失效是C++开发中的"隐形炸弹",90%的vector崩溃都源于此。本文将揭示其背后的原理并提供实用解决方案。

2025-07-25 18:19:48 864

原创 【C++必知必会】STL list完全解析:从零掌握链表核心操作

在C++标准库中,list是唯一真正的双向链表容器,它提供了高效的插入删除操作,是解决动态数据处理的利器。

2025-07-25 18:17:43 386

原创 【C++造轮子】手撕list容器:从零实现STL链表架构

/ ...private:哨兵节点的精妙:统一处理边界条件双向链表的核心操作:指针操作的对称性异常安全的重要性:资源管理的严谨性STL的设计哲学:效率与泛型的平衡_M_prev/_M_next的压缩存储(在64位系统节省8字节)_M_size的缓存(O(1)时间复杂度获取大小)节点内存池优化(提升频繁插入删除性能)

2025-07-24 17:40:38 1119

原创 512天:从第一篇QML异步加载到代码路上的持续探索

512天,一个充满“程序员浪漫”(2^9)的数字。创作,最初是解决问题的副产品,如今已成为我技术生涯中不可或缺的一部分——它记录思考,沉淀知识,连接同道,也见证成长。即使步履匆匆,偶尔停更,那份想要分享、想要记录、想要让技术变得更清晰易懂的冲动,那份初心,依然鲜活如初。代码之路漫长,创作之旅亦未停歇。保持热爱,持续输出,下个里程碑再见!

2025-07-24 12:25:01 656

原创 ZeroMQ源码深度剖析:网络机制与性能优化实战

深入探索ZeroMQ的网络模型、高并发设计与性能优化策略,解密百万级消息吞吐的核心实现

2025-07-23 13:33:14 1183 5

原创 ZeroMQ源码深度解析:高性能网络库的架构设计与性能优化

eroMQ作为高性能异步消息库,其精妙的设计哲学(如“智能端点,笨网络”)与高效实现(无锁队列、零拷贝)值得深入学习。通过源码可掌握:

2025-07-23 11:33:09 1027

原创 【C++进阶】揭秘list迭代器:从底层实现到极致优化

在STL容器中,迭代器如同神经网络般连接数据与算法,而list迭代器更是链式存储的精密"导航系统"。

2025-07-22 15:33:34 748

原创 揭秘list反向迭代器:STL设计中的精巧艺术

当我们逆向遍历链表时,反向迭代器提供了与正向迭代器完全一致的接口,这种对称性设计正是STL的精髓所在:

2025-07-22 15:30:35 884

原创 ZeroMQ 无锁队列极致性能剖析 —— 从 `yqueue_t` 到 `ypipe_t`

单写单读场景**下,ZeroMQ 采用“Chunk 链表 + 两阶段提交 + 共享原子指针”方案,把跨线程争用控制在 *唯一一次 CAS*,内存占用随流量平稳波动;在百万 QPS 以上仍能保持纳秒级延迟。

2025-07-21 17:04:09 902

原创 深入理解 消息队列 与 ZeroMQ

消息队列(Message Queue,MQ)** 本质是一个满足 *FIFO* 规则的队列,队列元素是 *message*,用于进程 / 线程 / 服务之间的异步通信。引入 MQ 的根本目的

2025-07-21 16:38:59 2388

原创 Linux进程管理全景解析:从PCB内核结构到调度器实现深度剖析

在Linux系统中,进程是资源分配和执行调度的基本单位。本文将深入揭示从进程控制块(PCB)到内核调度机制的全栈实现原理,带您走进Linux进程管理的核心世界。

2025-07-13 12:00:00 699

原创 深入剖析fork():从内核原理到高并发实践的进程创建艺术

在Linux系统中,`fork()`系统调用是进程创建的基石,其精妙设计支撑着整个操作系统的并发能力。本文将带您深入理解这个看似简单却蕴含复杂性的核心机制。

2025-07-13 08:15:00 753

原创 Linux命令探秘:whereis的精准定位与高级应用指南

在Linux的庞大命令生态中,`whereis`犹如一个精准的导航仪,能快速定位二进制程序、源代码和手册页的位置。本文将深入解析这个被低估的高效工具。

2025-07-12 11:15:00 914

原创 Ubuntu系统管理实战:深度解析端口占用与系统状态监控

>在Linux服务器运维和开发中,掌握系统状态监控和端口分析是每个工程师的必备技能。本文将全面解析Ubuntu环境下高效诊断系统状态的核心工具链。

2025-07-12 08:30:00 1255

原创 掌握C++动态内存分配:从基础到实战的核心技能

内存管理是C++开发者的基本功,而动态内存分配则是其中最关键也最容易出错的环节。本文将带你彻底掌握这一核心技能。

2025-07-11 10:53:09 561

在qtC++Android使用jni调用示例

如何使用jni调用java方法完成java回调c++调用java等

2024-08-23

qt桌面端和qtC++Android串口源码

qt桌面端和qtC++Android串口源码

2024-08-23

QTC++Android使用JNI调用java方法实现串口通信

串口通信java包

2024-08-22

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

TA关注的人

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