<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lion_Long的博客]]></title><description><![CDATA[一个热爱分享高新技术开发知识的博主]]></description><link>https://blog.youkuaiyun.com/Long_xu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Long_xu]]></copyright><item><title><![CDATA[C++ 如何优雅解决类的循环依赖？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/155324135</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/155324135</guid><author>Long_xu</author><pubDate>Fri, 04 Sep 2026 09:00:00 +0800</pubDate><description><![CDATA[C++循环依赖导致编译错误，因编译器单遍扫描需完整类型。解法是前置声明、类内只声明函数，类外延后实现。编译器允许不完整类型用作指针、引用及函数原型，待完整定义后填充实现。但仅为语法解耦，更优做法是引入共享状态中间层，消除双向强耦合与生命周期隐患。]]></description><category></category></item><item><title><![CDATA[C++ 虚表：3种工具带你直观透视 C++ 虚表结构]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/155136524</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/155136524</guid><author>Long_xu</author><pubDate>Wed, 02 Sep 2026 09:00:00 +0800</pubDate><description><![CDATA[<think>我们只需要根据内容生成≤150字的摘要。内容是关于C++虚表原理，用工具透视虚表结构，解释多态、vptr、vtable。摘要应简洁概括核心。</think>本文通过图解与工具透视C++虚表机制，揭示多态本质：对象首部藏vptr，指向类共享的vtable（函数指针数组）。虚函数调用即查表跳转，派生类通过覆盖表项实现多态，新增函数追加表尾，静态绑定vs动态绑定一目了然。]]></description><category></category></item><item><title><![CDATA[C++20 Coroutine 与 Golang Goroutine：一场关于并发未来的深度对话]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/154907892</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/154907892</guid><author>Long_xu</author><pubDate>Tue, 25 Aug 2026 09:00:00 +0800</pubDate><description><![CDATA[文章摘要： C++20 Coroutine 与 Golang Goroutine 是两种轻量级并发模型，设计理念与实现机制差异显著。Goroutine 基于 CSP 模型，通过 Channel 通信，内置运行时调度器，开箱即用，适合高并发服务开发；而 C++ Coroutine 是无栈协程，提供底层异步编程工具，需结合第三方库实现调度，追求极致性能与控制力。Goroutine 以易用性见长，适用于网络服务、微服务等场景；C++ Coroutine 则更灵活，适合高性能网络库、游戏引擎等底层开发。两者各具优势]]></description><category></category></item><item><title><![CDATA[基于 Google C++ Style 的现代 C++ 编码规范]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/154745986</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/154745986</guid><author>Long_xu</author><pubDate>Wed, 19 Aug 2026 09:00:00 +0800</pubDate><description><![CDATA[本文摘要介绍了基于Google C++ Style的现代C++编码规范，重点强调可读性至上、一致性、简洁设计和性能权衡等核心原则。规范涵盖文件结构、命名空间管理、代码格式等内容，并提供具体示例说明头文件保护、包含顺序等最佳实践。文章还对比了其他主流C++编码规范，指出Google C++ Style因其大型项目验证和广泛社区影响力而成为行业标准。全文旨在通过统一规范提升代码质量、可维护性和团队协作效率。]]></description><category></category></item><item><title><![CDATA[C++引用与指针：深入理解其本质、区别]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/154544949</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/154544949</guid><author>Long_xu</author><pubDate>Thu, 06 Aug 2026 09:00:00 +0800</pubDate><description><![CDATA[C++引用和指针的内在本质、核心差异，在何种情况优先选择引用，又在何种情况必须用指针。]]></description><category></category></item><item><title><![CDATA[C++ 函数参数：深入理解传值与传常量引用]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/154203604</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/154203604</guid><author>Long_xu</author><pubDate>Fri, 31 Jul 2026 09:00:00 +0800</pubDate><description><![CDATA[C++函数参数传递中，const引用（常量引用）因其避免拷贝开销和保证数据不变性被广泛使用，但需注意潜在问题。本文从三方面分析其优势与陷阱： 优势 性能优化：避免大型对象的构造/拷贝/析构开销 安全性保障：通过const限定防止意外修改 灵活性：可同时接受左值和右值参数 典型陷阱 悬垂引用风险：临时对象生命周期问题 与移动语义冲突：可能阻碍编译器优化 预期外修改：通过非const指针间接修改 最佳实践 小型内置类型直接传值 大型对象优先const引用 明确函数是否需参数副本 注意对象生命周期管理 通过典型案]]></description><category></category></item><item><title><![CDATA[C++ shared_ptr：为什么应该用 make_shared 而不是 new？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/154143077</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/154143077</guid><author>Long_xu</author><pubDate>Tue, 28 Jul 2026 09:00:00 +0800</pubDate><description><![CDATA[摘要： 本文对比了C++中std::shared_ptr的两种创建方式：直接使用new与std::make_shared。分析表明，make_shared通过单次内存分配同时存储对象和控制块，相比new的两次分配具有显著优势：1) 减少内存碎片；2) 提升缓存局部性；3) 避免因异常导致的内存泄漏风险；4) 更高内存效率。绝大多数情况下推荐使用make_shared，仅在需要自定义删除器或控制块分离等特殊场景才考虑new方式。]]></description><category></category></item><item><title><![CDATA[深入解析 C++ stdvector：为何 push_back可以的，而 emplace_back却报错？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/154031479</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/154031479</guid><author>Long_xu</author><pubDate>Thu, 23 Jul 2026 09:00:00 +0800</pubDate><description><![CDATA[**摘要：C++ 中的 std::vector 容器在添加元素时，push_back({1,2}) 能正常编译，而 emplace_back({1,2}) 却会报错。这是因为 push_back 接受已构造对象或可隐式转换的参数（如 std::initializer_list），而 emplace_back 通过完美转发直接在容器内构造元素，但无法推导初始化列表的类型。解决方法包括显式构造 std::initializer_list（如 emplace_back(std::initializer_list<]]></description><category></category></item><item><title><![CDATA[精选高质量 C++ 单头文件库推荐]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/153980711</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/153980711</guid><author>Long_xu</author><pubDate>Thu, 16 Jul 2026 09:00:00 +0800</pubDate><description><![CDATA[C++单头文件库精选推荐 本文介绍了18个高质量的C++单头文件库，它们以极简集成、高性能和跨平台著称。这些库覆盖了多种用途：STB系列提供图像/音频处理（如stb_image、stb_truetype）；GLM专注图形数学计算；Dear ImGui用于轻量级GUI开发；TinyOBJLoader简化3D模型加载；json.hpp处理JSON数据；doctest实现单元测试；concurrentqueue优化多线程队列；cpp-httplib支持HTTP通信。]]></description><category></category></item><item><title><![CDATA[C++ for循环中 ++i 与 i++ 的性能之谜：真的有区别吗？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/153927916</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/153927916</guid><author>Long_xu</author><pubDate>Wed, 01 Jul 2026 09:00:00 +0800</pubDate><description><![CDATA[这篇文章比较了C++中前缀增量(++i)和后缀增量(i++)操作符的性能差异。对于内置数据类型，现代编译器会优化掉两者的区别，生成相同的机器指令。但对于自定义类型，前缀增量直接修改对象并返回引用，而后缀增量需要创建临时副本，导致额外开销。因此，在自定义类型的循环中应优先使用前缀增量以获得更好的性能。]]></description><category></category></item><item><title><![CDATA[为什么C++是软件世界的“造轮者”，而非“调包侠”？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/153873885</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/153873885</guid><author>Long_xu</author><pubDate>Mon, 22 Jun 2026 09:00:00 +0800</pubDate><description><![CDATA[本文探讨了C++语言"造轮子"文化背后的驱动力及其独特地位。C++凭借极致的性能和细粒度硬件控制能力，成为构建高性能系统、底层基础设施的首选语言。通过手动内存管理、指针操作等特性，C++可直接优化内存布局和缓存命中，满足游戏引擎、HPC等严苛场景需求。作为系统级语言，C++能直接与硬件交互，被广泛用于操作系统、编译器、虚拟机等核心软件开发。虽然标准库覆盖面有限，但这种底层构建传统使其成为计算机科学的基石：Python解释器、JVM、V8引擎等高级语言运行环境都由C++实现，TensorFlow等高性能计算库]]></description><category></category></item><item><title><![CDATA[C++设计模式的“隐形”哲学：除了单例，我们到底在哪里用到了它们？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/153787846</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/153787846</guid><author>Long_xu</author><pubDate>Mon, 15 Jun 2026 09:00:00 +0800</pubDate><description><![CDATA[C++设计模式的“隐形”哲学：语言特性对经典模式的简化与替代 摘要：本文揭示了C++设计模式看似“隐形”的现象背后，实则是现代C++语言特性对传统模式的优雅替代。RAII机制和智能指针取代了代理模式的手动资源管理；std::function和Lambda表达式简化了策略模式和命令模式的实现；模板元编程在编译期完成了装饰器模式和桥接模式的功能。这些特性让C++开发者能以更简洁、高效的方式实现模式的设计意图，使得复杂模式结构“消隐”在语言特性中。文章指出，理解这种“隐形”本质，才能更精准地在需要真正设计复杂性的]]></description><category></category></item><item><title><![CDATA[性能的坚守与现代化的蜕变：解读 C++ 2006-2020 的复兴之路]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/153642379</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/153642379</guid><author>Long_xu</author><pubDate>Mon, 08 Jun 2026 09:00:00 +0800</pubDate><description><![CDATA[摘要： 21世纪初，C++因内存管理复杂、缺乏现代特性面临被Java、Python等语言取代的危机。2006年后，C++通过标准化加速（C++11/14/17/20）和坚守“零开销抽象”原则实现复兴。C++11引入智能指针（unique_ptr/shared_ptr）、移动语义、Lambda表达式等特性，显著提升安全性与表达力，同时保持性能优势；C++17进一步强化编译期计算和语法简化。通过适配多核硬件和异构计算需求，C++在系统编程、高性能计算等领域巩固地位，证明其现代化与性能并重的复兴路径。]]></description><category></category></item><item><title><![CDATA[递归斐波那契的性能陷阱：为什么是 O(2^n) 而不是 O(n)？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/153211172</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/153211172</guid><author>Long_xu</author><pubDate>Fri, 05 Jun 2026 09:00:00 +0800</pubDate><description><![CDATA[本文探讨了斐波那契数列递归实现的性能问题及其优化方案。标准递归实现的时间复杂度为指数级O(φ^n)（φ≈1.618），原因是存在大量重复计算。通过绘制递归树和数学分析，揭示了子问题重复计算的本质。为解决这一问题，提出了两种优化方法：记忆化搜索（自顶向下）和动态规划（自底向上），将时间复杂度降至线性级O(n)。记忆化搜索通过缓存已计算结果避免重复计算，动态规划则通过迭代方式逐步构建解。两种方法均显著提升了算法效率，其中动态规划的空间复杂度可进一步优化为O(1)。这些优化策略体现了动态规划的核心思想，为解决类似]]></description><category></category></item><item><title><![CDATA[C++ function 和函数指针的深度对比]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/152946266</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/152946266</guid><author>Long_xu</author><pubDate>Mon, 01 Jun 2026 09:00:00 +0800</pubDate><description><![CDATA[本文对比了C++中函数指针和std::function的特性与适用场景。函数指针是C语言遗留机制，直接存储函数地址，具有零开销、高性能和跨语言兼容性等优势，但无法处理有状态的可调用对象。C++11引入的std::function通过类型擦除技术，能够统一包装函数指针、Lambda表达式和函数对象等各类可调用实体，提供类型安全的通用接口，但会带来轻微运行时开销。两者分别适用于需要极致性能的底层场景和强调灵活性的高阶编程场景。开发者应根据具体需求在性能与通用性之间权衡选择。]]></description><category></category></item><item><title><![CDATA[函数式编程该怎么学？一份系统性的 FP 学习路线图]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/152724065</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/152724065</guid><author>Long_xu</author><pubDate>Thu, 21 May 2026 09:00:00 +0800</pubDate><description><![CDATA[函数式编程核心概念与实践指南 函数式编程(FP)是一种基于数学函数概念的编程范式，强调无副作用和不可变性两大原则。FP要求函数像数学公式一样纯净——给定相同输入永远返回相同输出，这种特性使代码更易测试和维护。 FP的核心概念包括：纯函数(无副作用、输入决定输出)、高阶函数(以函数为参数或返回值)、函数组合(串联多个函数)、柯里化(分解多参数函数)和不可变数据结构。实践FP的关键在于思维模式转变，从命令式的"如何做"转向声明式的"做什么"。 ]]></description><category></category></item><item><title><![CDATA[为什么分布式KV的全是LSM树+Raft，可以用B+树加Raft吗？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/152330420</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/152330420</guid><author>Long_xu</author><pubDate>Mon, 18 May 2026 09:00:00 +0800</pubDate><description><![CDATA[分布式KV存储的主流架构采用LSM树+Raft组合，主要解决单机存储性能和多机数据一致性问题。LSM树通过顺序写入和日志结构设计实现高写入吞吐量，与Raft的WAL机制天然契合。相比之下，B+树+Raft存在写入性能差、双重持久化开销等问题，因此未被广泛采用。当前主流系统如TiKV、HBase等都基于LSM树架构，而OceanBase则采用LSM与B+树混合方案。该架构特别适合高并发写入场景，通过内存缓冲和分层存储实现高效数据管理。]]></description><category></category></item><item><title><![CDATA[WSL如何升级最新版本的Linux内核，只要一步！]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/152277861</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/152277861</guid><author>Long_xu</author><pubDate>Fri, 15 May 2026 09:00:00 +0800</pubDate><description><![CDATA[本文介绍了两种升级WSL2内核的方法。第一种使用ubuntu-mainline-kernel脚本直接安装内核，但发现WSL2无法加载未打补丁的zImage格式内核。第二种是正确方法：手动编译带WSL2补丁的内核。步骤包括：1)准备编译环境；2)获取微软WSL内核配置；3)下载主线内核源码；4)更新配置；5)编译生成bzImage；6)配置WSL2使用新内核。最终成功将Ubuntu 24.04 LTS的内核升级到6.16.9版本。]]></description><category></category></item><item><title><![CDATA[QClaw + ADP 打造可管可控的智能体工作流]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/160123266</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/160123266</guid><author>Long_xu</author><pubDate>Tue, 14 Apr 2026 09:00:00 +0800</pubDate><description><![CDATA[这篇文章围绕【QClaw + 腾讯云智能体开发平台 ADP】组合链路：

QClaw 作为 零门槛、本地优先的执行端；

ADP / ADP Claw 作为 企业级、多智能体、可运维 的控制平面；

腾讯云 可观测平台（TCOP）+ 日志服务（CLS）+ Agent Memory 等能力，构建 可管、可控、可观测 的全栈智能体工作流。]]></description><category></category></item><item><title><![CDATA[C++ 函数模板为什么不支持偏特化？]]></title><link>https://blog.youkuaiyun.com/Long_xu/article/details/152227304</link><guid>https://blog.youkuaiyun.com/Long_xu/article/details/152227304</guid><author>Long_xu</author><pubDate>Mon, 13 Apr 2026 09:00:00 +0800</pubDate><description><![CDATA[C++函数模板不支持偏特化的根本原因在于避免与重载决议机制产生冲突。类模板支持全特化和偏特化，因为其实例化仅基于类型模式匹配。而函数模板的调用涉及更复杂的重载决议过程，需要考虑参数转换、模板推导等因素。若允许函数模板偏特化，编译器将面临特化匹配与重载决议的优先级冲突，导致难以解决的歧义问题。因此，C++标准选择仅支持函数模板全特化，通过函数重载来实现类似偏特化的功能，从而保持语言设计的简洁性和可预测性。]]></description><category></category></item></channel></rss>