自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Lion_Long的博客

一个热爱分享高新技术开发知识的博主

  • 博客(639)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++怎么学?零基础也可以,一份完整学习路线图助你搞定!

提供一条清晰、系统且实践导向的C++学习路径。从基础语法、面向对象、泛型编程、异常处理,逐步深入STL、智能指针、并发编程等现代C++高级特性。无论是新手还是希望提升,通过系统学习与项目实践,助您将理论知识转化为实际解决问题的能力。

2025-07-14 09:00:00 3905 3

原创 C++ 如何优雅解决类的循环依赖?

C++循环依赖导致编译错误,因编译器单遍扫描需完整类型。解法是前置声明、类内只声明函数,类外延后实现。编译器允许不完整类型用作指针、引用及函数原型,待完整定义后填充实现。但仅为语法解耦,更优做法是引入共享状态中间层,消除双向强耦合与生命周期隐患。

2026-09-04 09:00:00 682

原创 C++ 虚表:3种工具带你直观透视 C++ 虚表结构

<think>我们只需要根据内容生成≤150字的摘要。内容是关于C++虚表原理,用工具透视虚表结构,解释多态、vptr、vtable。摘要应简洁概括核心。</think>本文通过图解与工具透视C++虚表机制,揭示多态本质:对象首部藏vptr,指向类共享的vtable(函数指针数组)。虚函数调用即查表跳转,派生类通过覆盖表项实现多态,新增函数追加表尾,静态绑定vs动态绑定一目了然。

2026-09-02 09:00:00 618

原创 C++20 Coroutine 与 Golang Goroutine:一场关于并发未来的深度对话

文章摘要: C++20 Coroutine 与 Golang Goroutine 是两种轻量级并发模型,设计理念与实现机制差异显著。Goroutine 基于 CSP 模型,通过 Channel 通信,内置运行时调度器,开箱即用,适合高并发服务开发;而 C++ Coroutine 是无栈协程,提供底层异步编程工具,需结合第三方库实现调度,追求极致性能与控制力。Goroutine 以易用性见长,适用于网络服务、微服务等场景;C++ Coroutine 则更灵活,适合高性能网络库、游戏引擎等底层开发。两者各具优势

2026-08-25 09:00:00 688

原创 基于 Google C++ Style 的现代 C++ 编码规范

本文摘要介绍了基于Google C++ Style的现代C++编码规范,重点强调可读性至上、一致性、简洁设计和性能权衡等核心原则。规范涵盖文件结构、命名空间管理、代码格式等内容,并提供具体示例说明头文件保护、包含顺序等最佳实践。文章还对比了其他主流C++编码规范,指出Google C++ Style因其大型项目验证和广泛社区影响力而成为行业标准。全文旨在通过统一规范提升代码质量、可维护性和团队协作效率。

2026-08-19 09:00:00 687

原创 C++引用与指针:深入理解其本质、区别

C++引用和指针的内在本质、核心差异,在何种情况优先选择引用,又在何种情况必须用指针。

2026-08-06 09:00:00 317

原创 C++ 函数参数:深入理解传值与传常量引用

C++函数参数传递中,const引用(常量引用)因其避免拷贝开销和保证数据不变性被广泛使用,但需注意潜在问题。本文从三方面分析其优势与陷阱: 优势 性能优化:避免大型对象的构造/拷贝/析构开销 安全性保障:通过const限定防止意外修改 灵活性:可同时接受左值和右值参数 典型陷阱 悬垂引用风险:临时对象生命周期问题 与移动语义冲突:可能阻碍编译器优化 预期外修改:通过非const指针间接修改 最佳实践 小型内置类型直接传值 大型对象优先const引用 明确函数是否需参数副本 注意对象生命周期管理 通过典型案

2026-07-31 09:00:00 320

原创 C++ shared_ptr:为什么应该用 make_shared 而不是 new?

摘要: 本文对比了C++中std::shared_ptr的两种创建方式:直接使用new与std::make_shared。分析表明,make_shared通过单次内存分配同时存储对象和控制块,相比new的两次分配具有显著优势:1) 减少内存碎片;2) 提升缓存局部性;3) 避免因异常导致的内存泄漏风险;4) 更高内存效率。绝大多数情况下推荐使用make_shared,仅在需要自定义删除器或控制块分离等特殊场景才考虑new方式。

2026-07-28 09:00:00 346

原创 深入解析 C++ stdvector:为何 push_back可以的,而 emplace_back却报错?

**摘要: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<

2026-07-23 09:00:00 368

原创 精选高质量 C++ 单头文件库推荐

C++单头文件库精选推荐 本文介绍了18个高质量的C++单头文件库,它们以极简集成、高性能和跨平台著称。这些库覆盖了多种用途:STB系列提供图像/音频处理(如stb_image、stb_truetype);GLM专注图形数学计算;Dear ImGui用于轻量级GUI开发;TinyOBJLoader简化3D模型加载;json.hpp处理JSON数据;doctest实现单元测试;concurrentqueue优化多线程队列;cpp-httplib支持HTTP通信。

2026-07-16 09:00:00 211

原创 C++ for循环中 ++i 与 i++ 的性能之谜:真的有区别吗?

这篇文章比较了C++中前缀增量(++i)和后缀增量(i++)操作符的性能差异。对于内置数据类型,现代编译器会优化掉两者的区别,生成相同的机器指令。但对于自定义类型,前缀增量直接修改对象并返回引用,而后缀增量需要创建临时副本,导致额外开销。因此,在自定义类型的循环中应优先使用前缀增量以获得更好的性能。

2026-07-01 09:00:00 461

原创 为什么C++是软件世界的“造轮者”,而非“调包侠”?

本文探讨了C++语言"造轮子"文化背后的驱动力及其独特地位。C++凭借极致的性能和细粒度硬件控制能力,成为构建高性能系统、底层基础设施的首选语言。通过手动内存管理、指针操作等特性,C++可直接优化内存布局和缓存命中,满足游戏引擎、HPC等严苛场景需求。作为系统级语言,C++能直接与硬件交互,被广泛用于操作系统、编译器、虚拟机等核心软件开发。虽然标准库覆盖面有限,但这种底层构建传统使其成为计算机科学的基石:Python解释器、JVM、V8引擎等高级语言运行环境都由C++实现,TensorFlow等高性能计算库

2026-06-22 09:00:00 427

原创 C++设计模式的“隐形”哲学:除了单例,我们到底在哪里用到了它们?

C++设计模式的“隐形”哲学:语言特性对经典模式的简化与替代 摘要:本文揭示了C++设计模式看似“隐形”的现象背后,实则是现代C++语言特性对传统模式的优雅替代。RAII机制和智能指针取代了代理模式的手动资源管理;std::function和Lambda表达式简化了策略模式和命令模式的实现;模板元编程在编译期完成了装饰器模式和桥接模式的功能。这些特性让C++开发者能以更简洁、高效的方式实现模式的设计意图,使得复杂模式结构“消隐”在语言特性中。文章指出,理解这种“隐形”本质,才能更精准地在需要真正设计复杂性的

2026-06-15 09:00:00 355

原创 性能的坚守与现代化的蜕变:解读 C++ 2006-2020 的复兴之路

摘要: 21世纪初,C++因内存管理复杂、缺乏现代特性面临被Java、Python等语言取代的危机。2006年后,C++通过标准化加速(C++11/14/17/20)和坚守“零开销抽象”原则实现复兴。C++11引入智能指针(unique_ptr/shared_ptr)、移动语义、Lambda表达式等特性,显著提升安全性与表达力,同时保持性能优势;C++17进一步强化编译期计算和语法简化。通过适配多核硬件和异构计算需求,C++在系统编程、高性能计算等领域巩固地位,证明其现代化与性能并重的复兴路径。

2026-06-08 09:00:00 393

原创 递归斐波那契的性能陷阱:为什么是 O(2^n) 而不是 O(n)?

本文探讨了斐波那契数列递归实现的性能问题及其优化方案。标准递归实现的时间复杂度为指数级O(φ^n)(φ≈1.618),原因是存在大量重复计算。通过绘制递归树和数学分析,揭示了子问题重复计算的本质。为解决这一问题,提出了两种优化方法:记忆化搜索(自顶向下)和动态规划(自底向上),将时间复杂度降至线性级O(n)。记忆化搜索通过缓存已计算结果避免重复计算,动态规划则通过迭代方式逐步构建解。两种方法均显著提升了算法效率,其中动态规划的空间复杂度可进一步优化为O(1)。这些优化策略体现了动态规划的核心思想,为解决类似

2026-06-05 09:00:00 346

原创 C++ function 和函数指针的深度对比

本文对比了C++中函数指针和std::function的特性与适用场景。函数指针是C语言遗留机制,直接存储函数地址,具有零开销、高性能和跨语言兼容性等优势,但无法处理有状态的可调用对象。C++11引入的std::function通过类型擦除技术,能够统一包装函数指针、Lambda表达式和函数对象等各类可调用实体,提供类型安全的通用接口,但会带来轻微运行时开销。两者分别适用于需要极致性能的底层场景和强调灵活性的高阶编程场景。开发者应根据具体需求在性能与通用性之间权衡选择。

2026-06-01 09:00:00 351

原创 函数式编程该怎么学?一份系统性的 FP 学习路线图

函数式编程核心概念与实践指南 函数式编程(FP)是一种基于数学函数概念的编程范式,强调无副作用和不可变性两大原则。FP要求函数像数学公式一样纯净——给定相同输入永远返回相同输出,这种特性使代码更易测试和维护。 FP的核心概念包括:纯函数(无副作用、输入决定输出)、高阶函数(以函数为参数或返回值)、函数组合(串联多个函数)、柯里化(分解多参数函数)和不可变数据结构。实践FP的关键在于思维模式转变,从命令式的"如何做"转向声明式的"做什么"。

2026-05-21 09:00:00 436

原创 为什么分布式KV的全是LSM树+Raft,可以用B+树加Raft吗?

分布式KV存储的主流架构采用LSM树+Raft组合,主要解决单机存储性能和多机数据一致性问题。LSM树通过顺序写入和日志结构设计实现高写入吞吐量,与Raft的WAL机制天然契合。相比之下,B+树+Raft存在写入性能差、双重持久化开销等问题,因此未被广泛采用。当前主流系统如TiKV、HBase等都基于LSM树架构,而OceanBase则采用LSM与B+树混合方案。该架构特别适合高并发写入场景,通过内存缓冲和分层存储实现高效数据管理。

2026-05-18 09:00:00 433

原创 WSL如何升级最新版本的Linux内核,只要一步!

本文介绍了两种升级WSL2内核的方法。第一种使用ubuntu-mainline-kernel脚本直接安装内核,但发现WSL2无法加载未打补丁的zImage格式内核。第二种是正确方法:手动编译带WSL2补丁的内核。步骤包括:1)准备编译环境;2)获取微软WSL内核配置;3)下载主线内核源码;4)更新配置;5)编译生成bzImage;6)配置WSL2使用新内核。最终成功将Ubuntu 24.04 LTS的内核升级到6.16.9版本。

2026-05-15 09:00:00 673

原创 QClaw + ADP 打造可管可控的智能体工作流

这篇文章围绕【QClaw + 腾讯云智能体开发平台 ADP】组合链路:QClaw 作为 零门槛、本地优先的执行端;ADP / ADP Claw 作为 企业级、多智能体、可运维 的控制平面;腾讯云 可观测平台(TCOP)+ 日志服务(CLS)+ Agent Memory 等能力,构建 可管、可控、可观测 的全栈智能体工作流。

2026-04-14 09:00:00 1035

原创 C++ 函数模板为什么不支持偏特化?

C++函数模板不支持偏特化的根本原因在于避免与重载决议机制产生冲突。类模板支持全特化和偏特化,因为其实例化仅基于类型模式匹配。而函数模板的调用涉及更复杂的重载决议过程,需要考虑参数转换、模板推导等因素。若允许函数模板偏特化,编译器将面临特化匹配与重载决议的优先级冲突,导致难以解决的歧义问题。因此,C++标准选择仅支持函数模板全特化,通过函数重载来实现类似偏特化的功能,从而保持语言设计的简洁性和可预测性。

2026-04-13 09:00:00 421

原创 C++ 接口与实现分离的:Pimpl 惯用法是工程优化还是过度设计?

Pimpl惯用法通过将类的实现细节隐藏在私有指针后,有效降低了编译依赖、提高了封装性并保障了二进制兼容性,但代价是增加了代码复杂性和轻微运行时开销。该模式通过分离接口与实现,减少了头文件修改引发的级联重编译,尤其适用于大型C++项目。虽然需要额外维护实现类并引入间接调用,但其带来的编译效率和ABI稳定性优势在复杂系统中往往超过这些成本。

2026-04-10 09:00:00 800

原创 C++ 模板的优雅应用:深入解析奇异递归模板模式 (CRTP)

文章摘要: C++的奇异递归模板模式(CRTP)是一种通过基类模板将派生类作为模板参数的静态多态技术。其核心思想是基类在编译时获取派生类类型信息,通过static_cast调用派生类方法,避免虚函数开销。典型应用包括: 通用比较操作符:基类Comparable<Derived>自动生成!=、>等操作符,派生类仅需实现核心逻辑(如equalsImpl); 编译时多态:替代动态多态,提升性能; 代码复用与类型安全:强制派生类实现特定接口,否则触发编译错误。

2026-04-07 09:00:00 428

原创 QClaw + 腾讯云 Lighthouse + 腾讯云桌面:从「养龙虾」到云端数字员工的完整实战

从本地部署的灵活便捷,到云端服务器的一键部署和7×24小时在线,再到云桌面提供的完整图形化和安全隔离环境,腾讯的这套“养虾套餐”为AI Agent的生产力实践铺设一条清晰、可靠的路径。

2026-04-01 09:00:00 1239

原创 free -h输出详解:为什么 free内存少,系统反而跑得更快?

本文深入解析Linux系统free -h命令输出的内存使用情况报告。重点剖析物理内存(Mem)和交换空间(Swap)的各项指标,包括total、used、free、shared、buff/cache和available。文章指出Linux内存管理的核心理念是"空闲内存是浪费的内存",强调buff/cache内存虽被占用但可回收的特性。特别说明available内存是最关键指标,反映应用程序可立即使用的内存量,而非简单的free内存。同时解释Swap空间作为物理内存扩展的作用机制,帮助用户

2026-03-31 09:00:00 620

原创 10分钟上手!用XMake从零构建你的第一个C++项目,简单到不可思议(超详细)

XMake是一款基于Lua的轻量级跨平台C/C++构建工具,集项目构建、包管理、工具链管理于一体。相比传统构建工具,XMake具有简洁的Lua语法、一体化开发体验和极快的构建速度,内置XRepo包管理器提供现代化依赖管理。XMake支持多平台开发,安装简单,只需下载二进制文件或通过包管理器即可完成部署。其核心理念是提供高效、可靠、易用的构建解决方案,特别适合C/C++项目开发。

2026-03-25 09:00:00 500

原创 让电脑自己打工!微信发句话,自动做PPT、发邮件、爬数据… QClaw彻底解放打工人

OpenClaw作为AI智能体框架突破了传统对话模型的局限,能将语言指令转化为实际操作系统操作。QClaw在此基础上进一步优化,成为一键式本地部署的图形化控制中心,大幅降低使用门槛。其三大核心特性包括:微信远程控制电脑、5000+社区技能扩展、本地运行保障数据安全。安装过程简单快捷,支持Windows和macOS系统,通过微信扫码即可完成绑定。用户可通过自然语言指令实现文件操作、脚本执行、网页访问等功能。

2026-03-23 09:00:00 628

原创 告别亡羊补牢!金仓SQL防火墙,99.99%精准拦截恶意注入

金仓数据库SQL防火墙通过内置主动防御机制,有效拦截99.99%的SQL注入攻击。该系统提供学习、警告、报错三种智能模式,可自动建立SQL白名单,精准识别合法请求。实测表明其拦截准确率接近100%,性能损耗低于6%,且配置简便。该方案已在党政、能源等关键领域成功应用,实现了从被动防御到主动防护的转变,为数据库安全筑起智能防线。

2026-03-18 20:39:26 21232

原创 分布式系统远程调用:HTTP+RESTful 和 RPC 深度解剖

分布式系统远程调用技术深度解析:HTTP+RESTful与RPC对比 本文深入剖析了分布式系统中两种主流远程调用技术:HTTP+RESTful和RPC。RPC(远程过程调用)通过客户端存根和服务器存根的协作,实现透明化的远程服务调用,其核心特点包括面向过程/行为、紧耦合接口、支持多种高效序列化协议,以及同步调用机制。典型代表如gRPC框架,基于HTTP/2和Protocol Buffers,提供高性能服务通信。相比之下,HTTP+RESTful采用无状态的资源操作方式,更适合开放API场景。文章从原理、工作

2026-03-17 09:00:00 484 1

原创 性能提升超4500倍!这项数据库这项技术让复杂SQL重获新生

金仓数据库"连接条件下推"技术通过智能优化器自动分析SQL查询,将外层表的过滤条件安全下推到子查询中,大幅提升复杂查询性能。该技术采用"先判定再评估"策略,先确保语义安全,再通过代价模型评估优化收益,实测显示简单场景性能提升600倍,复杂场景提升超4500倍。这项技术有效解决了传统SQL执行过程中产生庞大中间结果集的问题,是国产数据库在高性能优化领域的突破,特别适用于金融、政务等复杂业务系统。

2026-03-14 15:22:01 13334

原创 OpenClaw保姆级别安装教程,小白也可以养好自己的小龙虾

完全不会敲代码的小白,只要会复制粘贴命令,就能在自己电脑上养一只会干活的“小龙虾”(OpenClaw)

2026-03-11 09:00:00 1186

原创 构建 C++ HashMap:从原理到实践的深度解析

工业级HashMap是一种高性能、稳定可靠的键值存储结构,其核心在于哈希函数设计、冲突处理策略和内存管理优化。主要特点包括:1)采用链式法或开放寻址法解决冲突,链式法通过链表或红黑树存储冲突元素,开放寻址法通过探测序列寻找空闲位置;2)支持模板化键值类型,可自定义哈希函数和比较器;3)关注内存效率和并发安全。实现工业级HashMap需要平衡时间复杂度、内存开销和线程安全等多方面因素,在哈希函数均匀性、负载因子控制和扩容策略等方面进行深度优化。

2026-03-09 09:00:00 849

原创 Emacs 使用详解:从入门到精通的编辑器之旅

Emacs是一款高度可定制的文本编辑器,被称为"伪装成操作系统的开发环境"。它支持所有主流编程语言,提供纯键盘操作、丰富的快捷键和命令系统,实现高效编辑。Emacs的核心概念包括按键组合、命令执行、缓冲区管理、窗口分割和模式切换。安装方式支持macOS、Linux等平台,可通过图形界面或命令行启动。常用操作包括文件打开保存、光标移动、文本编辑等,所有功能都可通过Emacs Lisp扩展定制。Emacs还提供内置教程,帮助用户快速掌握这一强大的编辑器。

2026-03-04 09:00:00 728

原创 C++ 模板编程与模板元编程:深度解析与实践指南

本文介绍了C++模板编程的核心概念与应用。主要内容包括: 函数模板:通过泛型编程实现通用函数,避免为不同数据类型编写重复代码。示例展示了swap函数的模板实现、函数重载和显式特化。 类模板:构建通用容器的基础,示例演示了Stack类的模板实现。详细说明了类模板的定义语法、成员函数实现方式以及非类型模板参数的应用。 模板编程是C++实现泛型编程的核心机制,通过抽象数据类型共性,显著减少代码量并提高可靠性。文章提供了从基础语法到高级特性的结构化学习路径,帮助开发者掌握这一强大工具。

2026-03-02 09:00:00 700

原创 C++20 format 如何超越 sprintf,开启现代格式化新篇章

这篇文章就深入探讨 std::format 相较于 sprintf 的核心优势,分析在类型安全、性能和可扩展性方面的提升。解析 std::format 强大而富有表现力的格式说明符语法,理解标准委员会为何选择这种全新的方式,而不是简单沿用 printf 风格。

2026-02-26 09:00:00 1265

原创 C++ STL:从入门到精通,哪些是你的必备技能?

C++ STL(标准模板库)是C++标准库的核心组成部分,采用泛型编程思想,提供高效的数据结构和算法。STL包含六大核心组件:容器(如vector、map等数据结构)、算法(通用操作函数)、迭代器(连接容器与算法的接口)、函数对象(可调用对象)、适配器(接口转换)和分配器(内存管理)。其优势在于避免重复开发、性能优化和代码标准化。STL通过模板实现通用性,利用迭代器解耦容器与算法,是现代C++开发的必备技能,广泛应用于日常编程和面试考察。掌握STL能显著提升开发效率和代码质量。

2026-02-11 09:00:00 715

原创 C++ STL为何“缺席”线程池?探究标准库设计哲学与并发演进

本文探讨了C++标准库未内置线程池的深层原因。首先,C++的设计哲学强调底层控制和零开销抽象,倾向于提供基础并发原语而非高层封装。其次,线程池实现具有复杂性和多样性,涉及线程管理、任务调度、异常处理等多方面设计选择,难以形成通用方案。此外,标准化过程中面临共识难题,委员会对引入复杂组件持谨慎态度。文章还指出,C++11的std::async尝试提供类似功能,但暴露出线程复用导致的thread_local变量生命周期问题。这些因素共同导致线程池更适合作为第三方库而非标准库组件。

2026-02-03 09:00:00 1263

原创 架构之辩:Linux为何在x86与Arm上对设备树态度迥异?

摘要: 本文对比分析Linux在x86和Arm架构下设备树应用差异的根源。x86通过BIOS/UEFI和ACPI实现硬件自动发现,得益于其高度标准化的固件机制;而Arm架构因SoC高度异构性,早期面临硬件描述硬编码问题,促使设备树成为必要解决方案。设备树将硬件信息从内核剥离,通过DTS描述、DTC编译、Bootloader传递的流程,实现"一次编译,多处运行",解决了Arm平台的"内核分支"问题。两种架构的不同策略反映了各自生态系统的设计哲学与技术演进路径。

2026-01-30 09:00:00 767

原创 时序数据库选型报告:为什么越来越多的企业转向Apache IoTDB?

摘要:随着时序数据成为工业4.0时代的关键生产要素,国产时序数据库迎来发展机遇。面对InfluxDB等国外产品在工业场景的适配不足和供应链风险,完全自主可控的Apache IoTDB凭借独创的端边云协同架构、10倍压缩比等核心技术实现突破。该数据库由清华大学团队研发,提供从单机到分布式集群的全套解决方案,并通过开源社区与商业版双轮驱动模式,成为全球时序数据库领域的重要竞争者,为工业智能化提供安全可靠的数据底座。

2026-01-22 17:46:04 7781

原创 2026国产时序数据库风云录:金仓“融合多模”架构异军突起

进入2026年,在“数字中国”与工业物联网浪潮的强劲推动下,国产时序数据库市场持续繁荣,竞争格局日趋清晰。本文将对当前主流的国产时序数据库进行梳理盘点,并特别聚焦于金仓数据库(Kingbase),深入剖析其以融合多模架构为核心的差异化竞争实力,为企业在数字化转型中的时序数据底座选型提供参考。

2026-01-18 12:07:35 10631

C++/Win32/GDI+实现波浪球效果(详细源码和使用示例)

这是一个基于C++在win32上实现的波浪球效果。它使用GDI+进行图形绘制,支持指定签名、动态百分比显示以及特殊项目的PASS/FAIL显示。 对其封装成了一个类,并开放了相关参数可设置。 适合Windows api、VC项目、C++图形项目等。

2022-11-06

空空如也

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

TA关注的人

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