自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一图看懂伙伴系统 Buddy System

基本思想:将物理内存分割成不同大小的块,每个块包含一定数量的连续页面。这些块的大小通常是2的幂次方,即。它主要应用于现代计算机系统中,特别是在Linux等类Unix系统中。设计目的:减少内存碎片,提高内存分配和管理的效率。

2024-03-22 11:24:26 158

原创 一文看懂Camera Id(slotId,physicalCameraId,logicalCameraId,frameworkCameraId)

做Camera HAL/ISP开发过程中,经常会遇到几种camera id的映射、转换,本文简要介绍经常会涉及到的几种camera id。

2024-02-07 11:50:59 698

原创 计算机系统基本概念白话解释

常见概念白话解释

2024-02-06 17:52:23 201

原创 一文学会gtest UT测试编写(TEST\TEST_F)

手把手教你学会gtest写UT测试

2024-02-06 17:21:57 827

原创 常用工具记录addr2line

【代码】常用工具记录addr2line。

2024-01-30 17:22:53 116

原创 高通Camera HAL3: CamX、Chi-CDK要点

高通CamX架构是高通实现的相机HAL3架构,被各OEM厂商广泛采用。

2023-11-23 17:11:17 434

原创 一文看懂图像格式 RAW、RGB、YUV、Packed/Unpacked、Bayer、MIPI、Planar、Semi-Planar、Interleaved

本文详细分析各种图像格式(RAW、RGB、YUV)的分类、内存分布。

2023-10-31 20:13:56 2895

原创 ISP Pipeline典型场景要点SAT、Bokeh、MFNR、HDR

本文解释isp pipeline的一些非常典型的场景,不同厂商对pipeline的连接及node的port口设计可能不同,但核心的思想相同。纯干货!

2023-10-19 17:44:32 824

原创 C++变量默认初始化

初始化不是赋值,初始化是指创建变量时赋予一个初始值,赋值是指将变量的当前值擦除,赋予新值。如果定义变量时没有初始化,则变量会被系统默认初始化。

2023-10-08 19:11:18 155

原创 一文看懂 iova、IOMMU、DMA

一文看懂 iova、IOMMU、DMA

2023-08-24 16:42:21 1619

原创 多核异构核间通信Mailbox vs rpmsg

多核异构核间通信Mailbox vs rpmsg

2023-08-24 16:09:00 826

原创 一文看懂 ISP pipeline

一文看懂 isp pipeline

2023-08-24 11:34:55 1244

原创 C++头文件使用精要

即假如你有这样一个工程base,里面有一个logging.h,那么外部包含这个头文件应该这样写:#include "base/logging.h",而不是#include "logging.h"。2. Pragma Once:使用 `#pragma once` 也可以达到相同的效果,它是一种更现代的方法。当头文件第一次被包含时,`MY_HEADER_FILE_H` 宏会被定义,头文件的内容会被包含。当头文件再次被包含时,由于宏已经被定义,头文件的内容将被忽略。

2023-08-09 10:08:40 215

原创 Camera HAL/ISP 专业术语大全

不断更新,建议收藏,快速检索

2023-07-27 16:20:41 1364

原创 CMakeList.txt速查速解

详解CMakeLists.txt文件项含义

2023-07-21 15:10:14 156

原创 Android.mk文件速查速解

指定当前模块所依赖的静态库文件。静态链接的过程将会直接将静态库的代码和数据复制到最终的可执行文件或共享库中,使得最终的程序文件独立于静态库文件的存在。指定当前模块导出的C/C++头文件路径。这些导出的头文件路径可以让其他模块引用,其他模块不在需要使用LOCAL_C_INCLUDES 去包含该模块头文件路径?指定模块的构建目录作为包含文件的搜索路径,这样include时无需指定完整路径。指定当前模块的名称。它通常用于生成输出文件的名称,例如可执行文件或共享库的名称。指定当前模块所依赖的共享库文件。

2023-07-21 14:51:34 216

原创 2023年vscode c++代码没有智能提示,亲测有效!

ctrl+shift+P输入settings,选打开工作区设置。打开了下面这个文件,如果你的都是Disable,说明问题就出在这。都改为default即可。

2023-06-13 10:06:35 2017 3

原创 一文看懂软件架构4+1视图

一文看懂软件架构4+1视图

2023-06-06 16:21:08 3911 1

原创 设计模式七大原则与SOLID原则

其中,单一职责原则、开闭原则、迪米特法则、里氏代换原则和接口隔离原则就是我们平常熟知的。尽量使用合成/聚合,而不是通过继承达到复用的目的。一个软件实体应当尽可能少的与其他实体发生相互作用。所有引用基类的地方必须能透明地使用其子类的对象。类之间的依赖关系应该建立在最小的接口上。一个类只负责一个功能领域中的相应职责。依赖于抽象,不能依赖于具体实现。对扩展开放,对修改关闭。

2023-06-01 11:29:10 89

原创 行为型——访问者模式C++实现

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。client存储所有product的集合,然后client当accept不同的访问者visitor时,实际执行的是该visitor对所有product的visit操作。

2023-05-31 16:58:16 93

原创 行为型——模板方法模式C++实现

是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。模板方法超类定义了固定的处理步骤,子类定义了某一个或几个步骤的特定实现。

2023-05-31 16:10:36 47

原创 行为型——策略模式C++实现

是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。

2023-05-31 16:03:46 72

原创 行为型——状态模式C++实现

ForumAccount内包含一个状态AbstractState,ForumAccount执行具体命令时实际上是AbstractState执行具体命令,而AbstractState是基类,会根据积分在PrimaryState、MiddleState和HighState之间切换。因为AbstractState要切换状态,所以AbstractState要包含ForumAccount对象,切换状态时是ForumAccount对象set_state。但后期可能会造成臃肿。

2023-05-31 15:46:37 118 2

原创 行为型——观察者模式C++实现

观察者模式是一种订阅机制,当对象事件发生时通知多个观察者。事件订阅者——监听者。

2023-05-31 11:50:56 51

原创 行为型——备忘录模式C++实现

Editor外面封装一层Command,Command可执行备份、恢复,对应Editor的备份、恢复。快照,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。即Snapshot类。

2023-05-31 11:34:19 61

原创 行为型——中介者模式C++实现

像是现实中的房东和租客之间可以是链家等中介,这样某房东可以通过中介获取所有租客信息,某租客也可以通过中介获取所有房东信息。没有中介,某房东只能一个一个租客去问,比较混乱。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。

2023-05-31 11:02:23 51

原创 行为型——迭代器模式C++实现

迭代器是一种行为设计模式,让你能在不暴露集合底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。

2023-05-31 10:24:57 58

原创 行为型——命令模式C++实现

命令是一种行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换让你能根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。指令实现Command抽象基类,对应指令execute()方法执行的是对象的对应方法。这里Television作为Command的成员对象,具体Command在execute()时调用的是Television的方法。本例中,我们用遥控器(Controller)控制电视(TV)。将Command保存为Controller的成员对象。

2023-05-30 20:18:06 47

原创 行为型——责任链模式C++实现

责任链是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。在本例中,员工申请处理票据需要上报给上级,如果上级无权处理就上报给更高的上级。

2023-05-30 19:54:09 54

原创 创建型——代理模式C++实现

Proxy和Service继承同一个interface,所以可以互换。Service作为Proxy的一个成员变量,Client通过调用Proxy,Proxy就调用对应的Service接口,Proxy就是个中间层。如上,先创建一个Service原型,然后根据该Service实例创建Proxy,然后Client(TVManager)传入Proxy间接调用Service。适配器能为被封装对象提供不同的接口,代理能为对象提供相同的接口,装饰则能为对象提供加强的接口。

2023-05-30 17:43:38 45

原创 创建型——享元模式C++实现

它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。享元——享元工厂——享元缓存池。比如网盘中某个电影,实际上只有一份(享元),但是每个用户存的时间等信息是各不相同的。在本例中,享元模式能有效减少在画布上渲染数百万个树状对象时所需的内存。这里的TreeType如果享元池里有就直接取,不会再new。TreeType作为享元。

2023-05-30 16:19:28 49

原创 创建型——外观模式C++实现

计算机本身是一个及其复杂的系统,我们通过外观模式屏蔽电脑开机这一动作背后复杂子系统的运作。为程序库、框架或其他复杂类提供一个简单的接口。

2023-05-30 15:27:39 43

原创 创建型——装饰模式C++实现

将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。

2023-05-30 15:24:16 51

原创 创建型——组合模式C++实现

声明简单和复杂对象的通用操作。

2023-05-30 14:40:56 50

原创 结构型——桥接模式C++实现

将继承改为组合,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。将Color作为Pen的一个属性。

2023-05-30 11:37:04 42

原创 结构型——适配器模式C++实现

【代码】结构型——适配器模式C++实现。

2023-05-30 10:07:29 37

原创 创建型——单例模式C++实现

这就是双重检验锁,保障了线程安全。第一个判空可加速判断是否已有单例,第二个锁内的判空是为了解决多线程问题(两个线程同时走到lock,且instance_都为nullptr)。Meyers' Singleton是Scott Meyers提出的C++单例的推荐写法。类初始化就创建单例,GetInstance()只是获取动作,“饿”。单例模式即保证一个类只有一个实例,并提供一个访问该单例的接口。需要C11支持(C11保证static成员初始化的线程安全)用的时候才创建单例,“懒”。

2023-05-29 16:14:05 873

原创 创建型——原型模式C++实现

原型模式即Clone方法深拷贝已有对象,返回新对象。

2023-05-29 15:13:54 30

原创 创建型——生成器模式C++实现

生成器模式的核心是分步骤创建复杂的对象,该模式使用相同的创建代码生成不同类型的对象。比如奔驰和奥迪Builder生产车都需要设置轮胎、方向盘和发动机。那么建立一个Director指挥者,传入不同的Builder,Director执行相同的生产车的流程,但调用的是传入的Builder的方法实现。

2023-05-29 12:25:26 143

原创 创建型——抽象工厂模式C++实现

相比于工厂方法模式,抽象工厂模式每个工厂可以生产多种产品(比如电影和书籍)。

2023-05-29 11:14:52 65

空空如也

空空如也

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

TA关注的人

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