自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入解析桥接模式:c++快速实现

桥接模式的核心思想是将抽象和实现解耦,通过组合的方式,使得抽象部分和实现部分可以在不互相依赖的情况下独立扩展。桥接模式特别适合具有多个维度变化的系统,可以将各个维度的变化独立化,降低类之间的耦合。桥接模式通过分离抽象部分和实现部分,为系统提供了极高的扩展性和灵活性,尤其在需要多维度变化的场景下,可以有效减少继承带来的复杂性。:比如跨平台 GUI 开发中,可以将不同的控件和操作系统平台分离,每个平台通过实现适配不同的 GUI 控件。:桥接模式支持多维度扩展,客户端可以自由组合不同的抽象和实现,构建新的功能。

2025-02-21 17:46:54 974

原创 深入解析适配器模式:c++快速实现

在适配器模式中,适配器类(Adapter)充当了“中介”角色,将客户端请求“适配”到现有类的接口上。适配器模式通过封装现有类,实现接口的转换,从而使得客户端可以像使用目标接口一样使用适配器。:通过组合适配,适配器持有一个被适配类的对象,通过调用对象的实例方法进行适配。适配器模式的实现方式灵活,尤其在对象适配模式中,通过组合而非继承增强了适配器的灵活性。适配器模式通过适配接口的方式实现了新旧系统的兼容性,避免了对现有代码的修改。:通过适配器模式,可以在不同上下文中引入不同的适配器类,从而增强系统的灵活性。

2025-02-21 17:45:01 582

原创 深入解析单例模式:c++快速实现

单例模式是一种创建型设计模式,用于确保在整个应用程序中,某个类只有一个实例,并提供全局访问点。它控制对象的创建,使得该类仅能实例化一次,在全局共享这个实例,从而节省资源和避免多次初始化带来的副作用。数据库连接池:确保系统中只有一个数据库连接池实例,管理所有的数据库连接。日志管理器:系统中共享一个日志记录对象,避免多实例带来的同步问题。配置管理器:管理程序运行的配置信息,确保配置信息在全局统一、同步。单例模式通过严格控制实例化次数,实现了对资源的统一管理和高效利用。

2025-02-21 17:40:23 560

原创 深入解析原型模式:c++快速实现

原型模式是一种创建型设计模式,用于通过复制现有对象来创建新对象,而不是直接通过实例化。原型模式允许通过克隆已有对象创建一组新的相似对象。这样可以避免直接依赖构造函数的创建方式,尤其适合一些初始化耗时或成本较高的对象。

2025-02-21 17:38:47 448

原创 深入解析建造者模式 :c++如何实现?

建造者模式是一种创建型设计模式,用于分步骤构建一个复杂对象,允许通过同一构建过程生成不同的表示。这个模式将对象的构建过程与表示分离,使得相同的构建过程可以创建不同的对象。

2025-02-21 17:36:23 491

原创 深入解析抽象工厂模式:c++实现讲解

这种模式为大型系统的架构设计提供了清晰的产品层次,让不同平台的系统有一致的组件和接口。例如,假设我们在开发一个跨平台应用,我们需要针对不同的操作系统生成不同的界面组件(如按钮、文本框)。抽象工厂模式是一种创建型设计模式,它提供一个接口,用于创建一系列相关或相互依赖的对象,而不指定具体的类。通过使用抽象工厂模式,客户端可以在不指定具体产品类的情况下,生成一族相关的对象。:每个产品族需要一个具体工厂类,增加了类的数量和系统的复杂度。:定义了按钮和文本框的抽象接口,具体产品类需要实现这些接口。

2025-02-21 17:19:03 719

原创 深入解析工厂方法模式:C++实现详解!

工厂方法模式是一种创建型设计模式,它定义了一个创建对象的接口,但由子类决定具体实例化哪个类。这样做的好处是,客户端代码可以通过工厂方法获取对象,而不需要知道对象的具体类类型,从而实现对象创建的解耦。我们以制作不同的“饮料”为例,实现工厂方法模式:通过不同的工厂类来创建不同的饮料(咖啡和茶)。:每增加一种新产品,都需要添加一个新的具体工厂类,增加了类的数量和系统的复杂度。只需要一个产品接口,不关心具体的产品类,以此减少依赖和耦合。:定义产品对象的接口,所有具体产品都要实现该接口。方法来定义各自的准备过程。

2025-02-21 17:14:39 216

原创 深入解析!23种设计模式的核心精髓与应用场景

用一个中介对象封装一系列对象之间的交互,使对象不必显式引用彼此,降低耦合。:将一个复杂对象的构建与表示分离,使同样的构建过程可以创建不同的表示。:将一个类的接口转换成客户端期望的另一种接口,使不兼容的类能协同工作。:定义对象间的一种一对多的依赖关系,状态改变时自动通知所有依赖的对象。:表示一个作用于某对象结构的操作,可在不更改对象类的情况下定义新操作。:需要对一系列不同类型的对象执行操作,但又不想修改对象的类结构。:构造具有多个部件的复杂对象,且对象的创建过程稳定。

2025-02-21 17:10:26 519

原创 虚函数和纯虚函数

在C++中,和是面向对象编程中用于实现多态性的重要概念。

2024-08-26 15:34:17 495

原创 Android/Linux音频架构开发ALSA-篇6

这里我们主要看下snd_ctl_elem_read_user和snd_ctl_elem_write_user,应用层控制就通过调用ioctl传入SNDRV_CTL_IOCTL_ELEM_READ和SNDRV_CTL_IOCTL_ELEM_WRITE即可。上面snd_ctl_elem_write和snd_ctl_elem_read方法最终调用了kctl的put和get方法,这两个方法其实一般也是我们给的,我们来看下是如何给到的。获取snd_card,然后调用snd_register_device。

2024-08-09 16:51:19 2004

原创 Android/Linux音频架构开发ALSA-篇2

我们先来一张图来宏观的看一下ASLA的主要部分如图所示,我们可以看到整个系统是分为四个部分,运行app的用户层、linux中间层、Android hal层、kernel层、硬件层。我们的ASLA主要存在中间层和kernel层,中间层有一个alsa-lib的库,会提供api接口给app调用,app调用这个接口就可以传输音频数据或者控制信号给到kernel层的alsa driver,最终将数据写入到硬件层进行发声。这里还有个alsa soc,他是针对alsa driver的又一层封装,后面我们也会讲到。

2024-08-06 14:30:35 977

原创 Android/Linux音频架构开发ALSA-篇5

文章讲解了pcm逻辑设备的创建过程,阐述了用户空间是如何查找到设备并调用驱动代码的。

2024-08-06 09:10:49 1178

原创 Android/Linux音频架构开发ALSA-篇1

详细介绍音频的基本知识,为后续学习alsa架构奠定理论基础

2024-08-05 17:24:34 690

原创 Android/Linux音频架构开发ALSA-篇4

详细讲解了音频alsa架构中声卡的创建流程,通过剖析源码,进一步了解其中奥秘。

2024-08-05 17:18:08 547

原创 socket多线程和Ringbuffer详解

文章主要介绍了如何使用ringbuffer环形缓冲区在多线程之间传输音频数据。

2024-08-02 14:00:50 1852

原创 Android/Linux音频架构开发ALSA-篇3

文章介绍了ALSA的架构知识,讲述如何创建一个声卡snd_card,如何理解声卡。

2024-08-02 13:45:06 796

原创 window搭建opengrok和简单使用

讲解opengrok的搭建流程和简单的使用方式,丝滑的代码阅读-RTFSC

2023-01-31 14:35:55 1942

空空如也

空空如也

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

TA关注的人

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