自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (2)
  • 收藏
  • 关注

原创 windows平台Hook技术

Windows平台Hook技术主要包括消息钩子和API钩子两类。消息钩子通过SetWindowsHookEx函数截获系统消息(如键盘、鼠标事件),可分为线程专用钩子和全局钩子。API钩子通过修改目标函数代码实现拦截,常见方法有IAT Hook和Inline Hook。Hook技术广泛应用于自动化、安全监控、调试等领域,但也面临DLL注入、64位兼容性、系统稳定性等挑战。现代Windows系统的安全机制增加了Hook技术的实现难度,需要特别注意权限管理和反病毒软件的检测。

2026-05-11 11:42:44 347

原创 设计模式(C++)-行为型模式-解释器模式

摘要:解释器模式是一种行为型设计模式,用于构建语言解释器。它通过将语法规则表示为类并组合成抽象语法树来实现语言解释功能。该模式适用于编译器、表达式计算等场景,具有灵活性和扩展性好的优点,但维护复杂文法较困难且易导致类膨胀。文中以C++实现了一个算术表达式解释器示例,包含数字、加减法等表达式类,通过递归调用解释执行表达式运算。

2026-05-07 11:50:45 79

原创 设计模式(C++)-行为型模式-备忘录模式

备忘录模式摘要 备忘录模式是一种行为型设计模式,用于在不破坏封装性的前提下捕获和保存对象内部状态。该模式包含三个核心角色:Originator(需要保存状态的对象)、Memento(存储状态的对象)和Caretaker(负责保存备忘录的管理者)。 主要应用场景包括: 编辑器撤销操作 游戏存档功能 数据库事务回滚 代码实现展示了如何使用C++实现备忘录模式,通过Originator保存状态到Memento,再由Caretaker管理这些备忘录。模式优点包括良好的封装性和状态恢复能力,但也存在内存消耗大和线程安

2026-05-07 11:25:05 82

原创 C++高频面试题汇总

本文总结了C++高频面试题和音视频核心知识点。C++部分涵盖指针与引用、const用法、虚函数与多态、智能指针、C++11新特性(右值引用、移动语义、Lambda表达式)以及进程线程区别和IO多路复用模型。音视频部分包括容器与编码格式区别、GOP概念、编码优化技巧、FFmpeg解码流程以及音频3A算法(AEC回声消除、ANS降噪、AGC增益控制)和混音原理。其中详细解析了3A算法的工作原理,包括自适应滤波、双讲检测、频域分析等技术实现,并介绍了基础混音和智能混音的不同策略。全文内容紧凑,覆盖了C++开发和音

2026-05-07 10:10:51 456

原创 设计模式(C++)-行为型模式-访问者模式

本文介绍了C++中的访问者设计模式,这是一种行为型模式,用于在不修改类结构的情况下定义新操作。访问者模式通过双重分派机制(元素接受访问者,访问者访问元素)实现数据结构与操作的分离。文章提供了文档编辑器示例,展示了如何为Paragraph和Header元素实现访问者模式,包含Visitor接口、ConcreteVisitor实现、Element基类及Document对象结构。该模式的优点包括符合开闭原则、集中算法等,但也存在破坏封装、增加新元素困难等缺点。访问者模式特别适用于需要对对象集合执行多种独立操作的场

2026-05-06 10:29:03 382

原创 设计模式(C++)-行为型模式-中介者模式

摘要: 中介者模式是一种行为型设计模式,通过引入中介类来封装对象间的交互,降低系统耦合度。该模式适用于对象间通信复杂的场景,将多对多关系简化为一对多关系。C++实现包含中介者接口、具体中介者类、同事类接口及具体同事类。优点包括降低耦合、简化交互协议和易于扩展,但可能导致中介者过于复杂和性能瓶颈。测试代码展示了两个同事类通过中介者进行消息传递的过程,验证了模式的可行性。该模式特别适合对象间交互频繁的系统重构场景。

2026-05-06 09:48:38 69

原创 设计模式(C++)-行为型模式-迭代器模式

迭代器模式是一种行为型设计模式,它提供了一种顺序访问聚合对象元素的方法,而不暴露其内部结构。该模式的核心思想是将遍历逻辑从聚合对象中分离,实现单一职责原则。文章通过C++代码示例展示了迭代器模式的实现,包括抽象迭代器类、聚合类以及具体实现。迭代器模式的优点包括遵循单一职责和开闭原则、支持并行遍历等,但也存在增加复杂度、性能开销等缺点。这种模式特别适用于需要遍历一组相似对象或隐藏聚合内部结构的场景,为不同类型的聚合结构提供了统一的遍历接口。

2026-04-30 10:39:16 349

原创 设计模式(C++)-行为型模式-状态模式

状态模式是一种行为型设计模式,它允许对象在内部状态改变时改变其行为。本文以抽奖活动为例,展示了状态模式的实现过程。抽奖活动包含四种状态:不能抽奖、可以抽奖、发放奖品和奖品已领完。通过状态模式避免了复杂的条件判断语句,将每个状态的行为封装在独立的类中。代码示例展示了如何实现状态转换逻辑,包括扣除积分、抽奖判断和奖品发放等操作。状态模式的优点包括封装转换规则、便于增加新状态、减少条件语句块以及提高系统可维护性。

2026-04-30 10:09:01 344

原创 设计模式(C++)-行为型模式-命令模式

命令模式是一种行为型设计模式,它将请求封装为对象,实现请求发送者与接收者的解耦。文章以游戏服务器处理四种请求为例,展示了C++实现方式:定义抽象命令接口,创建具体命令类(如AddMoneyCommand),使用Server类管理命令队列并执行。该模式优点包括解耦调用者/接收者、支持撤销/重做、易于扩展等,但会增加类数量和系统复杂度。通过命令对象封装请求,实现了请求的灵活管理和执行控制,适用于需要参数化、队列化或日志记录请求的场景。

2026-04-29 10:21:01 341

原创 设计模式(C++)-行为型模式-责任链模式

责任链模式是一种行为型设计模式,用于将请求沿着处理者链传递。本文以学校采购审批系统为例,展示了C++实现责任链模式的方法。系统根据采购金额不同分四级审批:教学主任(≤5000)、院长(≤10000)、副校长(≤30000)和校长(>30000)。通过创建Approver抽象基类和具体审批者子类(DepartmentApprover、CollegeApprover等),每个处理者决定是否处理请求或传递给下一级。代码演示了如何设置处理链并处理不同金额的采购请求,实现了请求发送者与处理者的解耦,使请求处理流

2026-04-29 09:48:11 298

原创 设计模式(C++)-行为型模式-模版方法模式

模板方法模式是一种行为型设计模式,它通过父类定义算法骨架,将具体步骤延迟到子类实现。该模式通过抽象类(如DrinkTemplate)定义制作饮料的标准流程(煮水、冲泡、倒入杯中、加料),由子类(如Coffee和Tea)实现具体步骤。主要优点包括代码复用、反向控制、符合开闭原则和保护算法结构;缺点则体现在类数量增加、继承局限性、违反里氏替换原则风险等方面。该模式适用于具有固定流程但具体实现可能变化的情景,如不同饮料的制作过程,既保证了算法结构的稳定性,又提供了足够的扩展灵活性。

2026-04-28 10:21:22 243

原创 设计模式(C++)-行为型模式-策略模式

开闭原则:无需修改上下文,就能轻松引入新的武器,只需新增一个具体策略类消除条件判断:赏析文中没有任何关于具体的if-else语句,代码更简洁算法服用:策略对象可以在系统的不同部分共享使用运行时灵活:客户端可在运行时动态地为上下文选择并切换算法职责清晰:策略类只关心如何实现特定的算法,上下文类:只关心如何调度和使用策略,不关心其实现细节。

2026-04-28 09:45:16 297

原创 设计模式(C++)-行为型模式-观察者模式

本文介绍了观察者设计模式在C++中的实现与应用。观察者模式用于建立对象间一对多的依赖关系,当被观察对象状态变化时自动通知所有观察者。文章通过游戏英雄打BOSS的示例展示了UML类图和代码实现,定义了抽象观察者(AbstractHero)和具体观察者(HeroA-E)以及被观察者(AbstractBoss和BOSSA)。该模式优点包括松耦合、扩展性好、支持广播通信和遵循开闭原则,但也存在内存泄露风险、通知顺序不确定等缺点。适用场景包括GUI事件处理、发布-订阅系统、游戏开发、金融系统等需要状态变化通知的场合。

2026-04-24 10:32:10 298

原创 设计模式(C++)-结构型模式-享元模式

享元模式(C++)摘要 享元模式是一种结构型设计模式,通过共享技术有效支持大量细粒度对象的复用,减少内存使用并提高性能。其核心思想是将对象的共有部分(内部状态)提取共享,变化部分(外部状态)在运行时传入。 关键实现包括: 定义享元类(TreeType)存储内部状态 使用享元工厂(TreeFactory)管理共享对象 客户端类(Tree)包含外部状态并引用共享对象 应用场景如森林模拟系统,其中大量树木可共享有限的类型数据(名称、颜色、纹理),而位置等外部状态单独存储。优点包括显著减少内存占用和提高性能,但会增

2026-04-23 11:19:37 260

原创 设计模式(C++)-结构型模式-桥接模式

本文介绍了桥接模式的结构型设计模式及其C++实现。桥接模式通过将抽象部分与实现部分分离,使两者能独立变化。文章以手机运行不同应用程序为例,展示了UML类图和代码实现,包括抽象层App类和实现层Phone类,以及具体的微信、王者荣耀应用和华为、苹果手机实现。该模式的优点包括分离抽象与实现、支持开闭原则、组合优于继承等,但也可能增加系统复杂性和对设计抽象能力的要求。示例代码演示了如何在华为和苹果手机上分别运行微信和王者荣耀应用程序。

2026-04-23 09:48:47 269

原创 设计模式(C++)-结构型模式-组合模式

统一处理:客户端代码简洁,无需判断节点类型简化客户端:客户端可统一处理简单和复杂元素易于扩展:添加新组件类型不影响现有代码树形结构:天然支持递归结构。

2026-04-22 14:00:28 280

原创 设计模式(C++)-结构型模式-外观模式

摘要 外观模式是一种简化复杂系统的设计模式,通过提供统一的高层接口封装多个子系统的复杂性。以家庭影院系统为例,该系统包含DVD播放器、投影仪、音响、灯光和空调等多个子系统。外观模式将这些子系统整合到一个HomeTheaterFacade类中,提供watchMovie()、endMovie()等简化方法,隐藏底层细节。客户端只需调用外观类的方法,无需直接操作各个子系统,降低了使用复杂度。这种模式特别适用于需要简化复杂系统交互的场景,既能保持子系统的独立性,又能提供更友好的接口。

2026-04-22 10:22:03 185

原创 设计模式(C++)-结构型模式-代理模式

代理模式是一种结构型设计模式,通过创建代理对象控制对目标对象的访问。它在不改变目标对象功能的前提下,实现访问控制、延迟加载、日志记录等非核心功能。本文通过C++代码示例展示了代理模式的实现,包括真实服务类(HeavyDatabaseService)和代理类(LazyCacheProxy),后者提供了缓存、懒加载和访问控制等功能。与装饰器模式不同,代理模式主要控制访问而非增强功能。其优点包括职责分离和开闭原则,但也存在增加调用深度和接口同步等缺点。测试案例验证了直接访问、有效代理和无效代理三种场景。

2026-04-22 08:43:54 46

原创 设计模式(c++)-结构型模式-装饰器模式

装饰器模式是一种结构型设计模式,它通过包装对象的方式动态扩展功能,遵循开放封闭原则。该模式使用组合而非继承,避免了子类爆炸问题。在C++实现中,通过抽象组件接口、具体组件和装饰器类构成层次结构,装饰器类持有组件指针并可以递归嵌套。典型应用包括添加前缀、字符串反转等功能扩展。优点在于灵活性高、职责单一,但可能带来微小对象增多和调用链过长的性能问题。这种模式适用于需要动态添加或撤销对象功能的场景,是实现OCP原则的典型方案。

2026-04-21 11:42:59 59

原创 设计模式(c++)-结构型模式-适配器模式

文章摘要: 适配器模式是一种结构型设计模式,用于解决接口不兼容问题,通过转换接口使原本无法协同工作的类能够一起工作。其核心角色包括目标接口(客户期望的接口)、被适配者(现有但不兼容的类)和适配器(实现接口转换的组件)。C++实现中,适配器继承目标接口并封装被适配者实例,转发客户请求。优点包括提高复用性、灵活性和符合开闭原则;缺点可能增加代码复杂性和滥用风险。该模式适用于需整合遗留代码或第三方库的场景,但需权衡设计复杂度与实际需求。

2026-04-21 08:48:46 46

原创 设计模式(C++)-创造型模式-建造者模式

本文介绍了建造者设计模式在C++中的实现。建造者模式通过分离复杂对象的构建过程与其表示,允许相同的构建过程创建不同表现形式的对象。文章包含模式概述、UML类图、具体代码实现和优缺点分析。示例展示了如何使用导演类控制不同建造者(绿色圆形、红色矩形、蓝色三角形)来构建图形对象,实现了构建过程的稳定性和产品表示的可变性。该模式的优点在于支持构建过程的复用和扩展,缺点在于构建步骤变更时需要修改所有建造者类。这种模式特别适用于需要分步构建且构建过程固定的复杂对象场景。

2026-04-20 10:18:49 273

原创 设计模式(C++)-创建型模式-原型模式

摘要: 原型模式通过复制现有对象(原型)来创建新对象,避免重复构造。核心是定义Prototype接口和clone()方法,由具体类实现复制逻辑。C++示例展示了基类和两个具体原型类的实现,通过拷贝构造函数完成克隆。优点包括简化复杂对象创建、运行时动态性和避免子类爆炸;缺点涉及深浅拷贝问题、接口约束和封装风险。该模式适用于构造成本高或需要动态创建对象的场景,但需谨慎处理资源复制问题。

2026-04-20 08:49:01 226

原创 设计模式(C++)-创建型模式-单例模式

本文介绍了C++中的单例设计模式,包括懒汉式和饿汉式两种实现方式。单例模式确保一个类只有一个实例并提供全局访问点,适用于配置管理、线程池等场景。懒汉式通过双重检查锁定解决线程安全问题,但存在指令重排风险;C++11推荐使用原子变量或静态局部变量实现。饿汉式在程序启动时创建实例,线程安全但可能浪费内存。文章还分析了单例模式的优缺点:优点包括严格唯一性、惰性加载和访问便利性;缺点则涉及可测试性差、违反单一职责原则、隐式耦合和并发风险。C++11后更推荐使用静态局部变量实现单例模式。

2026-04-17 09:53:34 381

原创 设计模式(C++)-创建型模式-抽象工厂模式

摘要:抽象工厂模式是一种创建型设计模式,用于解决一组相关或相互依赖对象的创建问题。以水果生产为例,该模式通过定义抽象工厂基类(abstract_factory)和具体国家工厂(如china_factory),配合抽象产品基类(abstract_apple等)和具体产品实现,实现了产品族的完整性和一致性。客户端代码仅依赖抽象接口,可通过简单更换工厂实例来切换不同国家的水果系列,无需修改业务逻辑。该模式的核心优势包括保证产品族一致性、隔离具体实现以及支持配置化切换产品线。

2026-04-17 08:59:13 182

原创 设计模式(C++)-创建型模式 -工厂模式

本文介绍了C++中的工厂模式,属于创建型设计模式之一。工厂模式通过定义一个创建对象的接口,将具体类的实例化延迟到子类中实现,从而解决了对象创建时的灵活性问题。文章详细展示了工厂模式的UML类图、代码实现(包括工厂类和产品类),并分析了其优缺点。该模式遵循开闭原则和依赖倒置原则,使系统更易扩展和维护,但也可能因引入过多子类而增加代码复杂度。典型应用场景包括日志记录器、跨平台UI组件等需要灵活创建对象的场合。

2026-04-16 13:51:11 419

原创 视频码率与NALU详解

摘要:本文详细解析了H.264/H.265视频编码中的NALU(网络抽象层单元)结构及其与视频码率的关系。NALU由起始码、头部和载荷组成,不同类型NALU(如I/P/B帧)具有不同的重要性标识。视频码率直接影响NALU大小分布,高码率产生较大NALU而低码率增加NALU数量。文章还探讨了NALU在网络传输中的优化策略,包括错误隔离、优先级传输和分片机制,并提供了实际应用中的码率控制算法和常见问题解决方案。理解NALU结构对视频编码优化和网络传输适配具有重要意义。

2026-04-09 09:32:32 373

原创 视频数据采集流程

典型采集链路:感光元件----->ISP图像处理---->MIPI/USB传输--------->驱动(V4L2/UVCDriver)----------->帧缓冲-------->应用层(YUV/RGB)一句话概括:光—>电信号----->数字信号---->图像处理------>格式封装--------->传给软件。

2026-04-08 09:40:40 1130

原创 音频数据采集的基本流程

摘要:音频数据采集是将声波转换为数字信号的过程,主要包括四个步骤:(1)麦克风将声波转换为模拟电信号;(2)前置放大器对信号进行放大和初步处理;(3)模数转换器(ADC)完成采样、量化和编码三个关键数字化过程,采样率和位深度决定音频质量;(4)数字信号处理与存储。其中44.1kHz采样率和16bit位深度是CD音质标准,满足人耳20Hz-20kHz的听觉范围。整个过程涉及声学、电子和数字信号处理技术,最终生成计算机可处理的数字音频数据。

2026-04-08 08:45:34 778

原创 拓扑排序算法

本文介绍了两种拓扑排序算法:Kahn算法(基于入度)和DFS算法。拓扑排序是对有向无环图(DAG)的顶点进行线性排序,使得每条边u→v中u总在v前。Kahn算法通过维护入度表和队列实现,时间复杂度O(V+E);DFS算法利用递归栈和访问标记,同样具有线性时间复杂度。两种算法都可用于课程安排、任务调度和编译顺序等场景,并能检测图中是否存在环。文章提供了完整的C++实现代码和具体应用示例。

2026-04-07 10:40:51 508

原创 音视频压缩编码-熵编码

音视频编码中的熵编码是一种无损压缩技术,通过为高频符号分配短码字、低频符号分配长码字来降低码率。主要方法包括:变长编码(如霍夫曼编码)、算术编码(效率更高)和上下文自适应编码(如CABAC)。熵编码应用于视频编码流程的残差系数压缩环节,以及音频编码的频谱系数压缩。其特点是无损压缩、自适应性强且码率可控,是H.264/AVC、HEVC等视频标准和AAC、MP3等音频标准的核心技术之一。

2026-04-07 10:27:16 155

原创 视频基础知识

视频基础知识摘要:视频由连续帧图像和音频组成,依靠视觉暂留效应呈现流畅画面。关键参数包括帧率(FPS)、分辨率(如1080p/4K)和色彩空间(YUV420为主)。视频压缩利用空间/时间冗余,通过I/P/B帧和变换编码大幅减少数据量。常见编码格式有H.264/AVC和H.265/HEVC,采用不同帧类型和GOP结构。YUV数据内存布局分为平面(YUV420P)和半平面(YUV420SP)格式,其中NV12/NV21是主流交错存储方式。理解这些概念对视频处理和编解码至关重要。(149字)

2026-04-03 09:25:14 370

原创 音频基础知识

本文介绍了音频基础知识和数字化原理。主要内容包括:1)声音的物理本质和数字化过程,重点讲解采样率(时间轴精度)和位深度(振幅精度)两个关键参数;2)音频压缩技术,利用感知冗余、统计冗余和声道间冗余减少数据量;3)常见音频编码格式特点;4)PCM数据的内存布局方式,包括单声道、立体声交错存储和平面存储;5)PCM格式的常见描述方法。文章以CD音质(44.1kHz/16bit)为例,说明了参数选择依据,并特别介绍了WebRTC采用的Opus编码器的优势。

2026-04-03 08:46:06 354

原创 动态规划算法(Dynamic Programming)

动态规划算法通过将问题分解为重叠子问题,利用最优子结构性质高效求解。其核心包括状态定义、转移方程、初始条件和计算顺序。实现方式分为自顶向下(记忆化)和自底向上(递推),前者直观但效率低,后者高效但需明确计算顺序。经典应用包括斐波那契数列(四种实现对比)、0-1背包问题(二维/一维解法)和最长公共子序列(空间优化技巧)。优化方法包括滚动数组和状态压缩,可显著降低空间复杂度。时间复杂度通常为状态数量×状态转移复杂度。

2026-04-02 11:00:10 280

原创 二叉树的遍历算法

本文介绍了二叉树的四种基本遍历算法:前序、中序、后序(深度优先)和层次遍历(广度优先)。每种遍历方式都有其独特的访问顺序和应用场景:前序遍历适合复制树结构,中序遍历可使二叉搜索树输出有序序列,后序遍历适用于先处理子节点的场景,层次遍历则按层访问节点。文章详细讲解了递归和迭代两种实现方式,并分析了时间复杂度(O(n))和空间复杂度(递归O(h),迭代O(n))。这些遍历算法是二叉树操作的基础,广泛应用于树结构的处理和分析中。

2026-04-02 08:21:19 238

原创 二分法(Binary Search)

二分查找算法摘要: 二分查找是一种基于分治策略的高效搜索算法,适用于有序数组。其核心思想是通过每次比较中间元素与目标值,将搜索区间对半划分,时间复杂度为O(logn)。算法实现包括三种区间写法(左闭右闭、左闭右开、左开右开)以及四种常见变体:查找第一个/最后一个等于目标值的元素,查找第一个大于等于/大于目标值的元素。二分查找广泛应用于有序数组查找、峰值寻找、旋转数组搜索等场景,通过合理选择区间定义和终止条件,可以高效解决各类搜索问题。

2026-04-01 09:55:34 216

原创 深度优先搜索算法(DFS)

深度优先搜索(DFS)是一种重要的图遍历算法,通过递归或栈实现。其核心思想是尽可能深地探索分支,直到无法继续时回溯。DFS的时间复杂度为O(V+E),空间复杂度为O(V),适用于连通性检测、拓扑排序、路径查找等问题。实现时需注意避免环路和递归深度限制,提供递归和栈两种实现方式。DFS广泛应用于解决各类图论问题,是算法学习中的基础内容。

2026-04-01 09:08:42 63

原创 宽度优先搜索算法(BFS)

宽度优先搜索(BFS)是一种基于队列的图遍历算法,它从起始节点开始逐层扩展,保证找到无权图中的最短路径。文章介绍了BFS的基本概念、核心特性(时间复杂度O(V+E))和多种实现方式,包括基本BFS模板、带层级信息的BFS、最短路径查找以及二维网格迷宫应用。BFS适用于社交网络分析、迷宫求解、拓扑排序等场景,还可通过双向BFS进行优化。文中提供了完整的C++代码示例,展示了BFS在不同场景下的具体实现方法。

2026-03-31 11:13:32 245

原创 双指针算法(Two Pointers)

双指针算法是一种高效处理线性数据结构的技巧,通过两个指针协同工作优化时间复杂度。主要分为快慢指针(链表环路检测)、对撞指针(有序数组问题)和滑动窗口(子串问题)三种类型。该算法通常能将O(n²)优化到O(n),具有代码简洁、空间效率高的优点,但适用场景有限。经典应用包括两数之和、无重复子串、链表操作等。解题时需根据问题特点选择指针类型,明确移动规则并注意边界条件。建议从简单题入手,通过手动模拟加深理解,逐步掌握这种高效算法范式。

2026-03-31 10:01:22 175

原创 高频排序算法

本文介绍了四种常见排序算法:快速排序、归并排序、选择排序和冒泡排序。快速排序采用分治策略,平均时间复杂度O(nlogn);归并排序同样基于分治,但需要额外空间,适合稳定排序场景;选择排序通过不断选择最小元素实现,时间复杂度O(n²);冒泡排序通过相邻元素比较交换实现,最好情况O(n)。每种算法都附有原理说明、复杂度分析和C++代码实现,适用于不同规模和应用场景的数据排序需求。

2026-03-30 16:09:05 698

原创 C++智能指针底层原理详解

本文详细解析了C++智能指针的底层实现原理,包括unique_ptr、shared_ptr和weak_ptr的实现机制。重点剖析了控制块内存布局、引用计数原理以及循环引用问题,并提供了定制删除器的多种实现方式。通过性能对比指出shared_ptr因原子操作和内存分配带来的开销,给出优先使用unique_ptr、make_shared等优化建议,以及在性能关键场景下的使用技巧,帮助开发者在内存安全与性能间取得平衡。

2026-03-27 15:57:57 237

深入Python_zh-cn.pdf

本教程主要介绍了python环境搭建,基本语法介绍,特别适合想要学习python的小伙伴们下载。

2019-10-15

CMAKE中文手册

本文是CMake官方文档CMake Tutorial (http://www.cmake.org/cmake/help/cmake_tutorial.html) 的翻译。通过一个样例工程从简单到复杂的完善过程,文档介绍了CMake主要模块(cmake, ctest, cpack)的功能和使用环境;从中可以一窥cmake的大体形貌。

2017-09-11

空空如也

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

TA关注的人

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