- 博客(156)
- 收藏
- 关注
原创 一图看懂伙伴系统 Buddy System
基本思想:将物理内存分割成不同大小的块,每个块包含一定数量的连续页面。这些块的大小通常是2的幂次方,即。它主要应用于现代计算机系统中,特别是在Linux等类Unix系统中。设计目的:减少内存碎片,提高内存分配和管理的效率。
2024-03-22 11:24:26
438
原创 一文看懂Camera Id(slotId,physicalCameraId,logicalCameraId,frameworkCameraId)
做Camera HAL/ISP开发过程中,经常会遇到几种camera id的映射、转换,本文简要介绍经常会涉及到的几种camera id。
2024-02-07 11:50:59
3630
原创 一文看懂图像格式 RAW、RGB、YUV、Packed/Unpacked、Bayer、MIPI、Planar、Semi-Planar、Interleaved
本文详细分析各种图像格式(RAW、RGB、YUV)的分类、内存分布。
2023-10-31 20:13:56
9541
1
原创 ISP Pipeline典型场景要点SAT、Bokeh、MFNR、HDR
本文解释isp pipeline的一些非常典型的场景,不同厂商对pipeline的连接及node的port口设计可能不同,但核心的思想相同。纯干货!
2023-10-19 17:44:32
2199
1
原创 C++变量默认初始化
初始化不是赋值,初始化是指创建变量时赋予一个初始值,赋值是指将变量的当前值擦除,赋予新值。如果定义变量时没有初始化,则变量会被系统默认初始化。
2023-10-08 19:11:18
246
原创 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
329
原创 Android.mk文件速查速解
指定当前模块所依赖的静态库文件。静态链接的过程将会直接将静态库的代码和数据复制到最终的可执行文件或共享库中,使得最终的程序文件独立于静态库文件的存在。指定当前模块导出的C/C++头文件路径。这些导出的头文件路径可以让其他模块引用,其他模块不在需要使用LOCAL_C_INCLUDES 去包含该模块头文件路径?指定模块的构建目录作为包含文件的搜索路径,这样include时无需指定完整路径。指定当前模块的名称。它通常用于生成输出文件的名称,例如可执行文件或共享库的名称。指定当前模块所依赖的共享库文件。
2023-07-21 14:51:34
422
原创 2024年vscode c++代码无法跳转,亲测有效!
点左下角setting,搜intel,改为default。原因就是可能有插件冲突,让你禁用intelli你点了。
2023-06-13 10:06:35
4234
2
原创 设计模式七大原则与SOLID原则
其中,单一职责原则、开闭原则、迪米特法则、里氏代换原则和接口隔离原则就是我们平常熟知的。尽量使用合成/聚合,而不是通过继承达到复用的目的。一个软件实体应当尽可能少的与其他实体发生相互作用。所有引用基类的地方必须能透明地使用其子类的对象。类之间的依赖关系应该建立在最小的接口上。一个类只负责一个功能领域中的相应职责。依赖于抽象,不能依赖于具体实现。对扩展开放,对修改关闭。
2023-06-01 11:29:10
179
原创 行为型——访问者模式C++实现
在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受访问者对象,这样访问者对象就可以处理元素对象上的操作。client存储所有product的集合,然后client当accept不同的访问者visitor时,实际执行的是该visitor对所有product的visit操作。
2023-05-31 16:58:16
380
原创 行为型——模板方法模式C++实现
是一种行为设计模式,它在超类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的特定步骤。模板方法超类定义了固定的处理步骤,子类定义了某一个或几个步骤的特定实现。
2023-05-31 16:10:36
104
原创 行为型——状态模式C++实现
ForumAccount内包含一个状态AbstractState,ForumAccount执行具体命令时实际上是AbstractState执行具体命令,而AbstractState是基类,会根据积分在PrimaryState、MiddleState和HighState之间切换。因为AbstractState要切换状态,所以AbstractState要包含ForumAccount对象,切换状态时是ForumAccount对象set_state。但后期可能会造成臃肿。
2023-05-31 15:46:37
200
2
原创 行为型——备忘录模式C++实现
Editor外面封装一层Command,Command可执行备份、恢复,对应Editor的备份、恢复。快照,允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。即Snapshot类。
2023-05-31 11:34:19
187
原创 行为型——中介者模式C++实现
像是现实中的房东和租客之间可以是链家等中介,这样某房东可以通过中介获取所有租客信息,某租客也可以通过中介获取所有房东信息。没有中介,某房东只能一个一个租客去问,比较混乱。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。
2023-05-31 11:02:23
89
原创 行为型——命令模式C++实现
命令是一种行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。该转换让你能根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。指令实现Command抽象基类,对应指令execute()方法执行的是对象的对应方法。这里Television作为Command的成员对象,具体Command在execute()时调用的是Television的方法。本例中,我们用遥控器(Controller)控制电视(TV)。将Command保存为Controller的成员对象。
2023-05-30 20:18:06
109
原创 行为型——责任链模式C++实现
责任链是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。在本例中,员工申请处理票据需要上报给上级,如果上级无权处理就上报给更高的上级。
2023-05-30 19:54:09
92
原创 创建型——代理模式C++实现
Proxy和Service继承同一个interface,所以可以互换。Service作为Proxy的一个成员变量,Client通过调用Proxy,Proxy就调用对应的Service接口,Proxy就是个中间层。如上,先创建一个Service原型,然后根据该Service实例创建Proxy,然后Client(TVManager)传入Proxy间接调用Service。适配器能为被封装对象提供不同的接口,代理能为对象提供相同的接口,装饰则能为对象提供加强的接口。
2023-05-30 17:43:38
119
原创 创建型——享元模式C++实现
它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。享元——享元工厂——享元缓存池。比如网盘中某个电影,实际上只有一份(享元),但是每个用户存的时间等信息是各不相同的。在本例中,享元模式能有效减少在画布上渲染数百万个树状对象时所需的内存。这里的TreeType如果享元池里有就直接取,不会再new。TreeType作为享元。
2023-05-30 16:19:28
98
原创 创建型——外观模式C++实现
计算机本身是一个及其复杂的系统,我们通过外观模式屏蔽电脑开机这一动作背后复杂子系统的运作。为程序库、框架或其他复杂类提供一个简单的接口。
2023-05-30 15:27:39
96
原创 结构型——桥接模式C++实现
将继承改为组合,可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。将Color作为Pen的一个属性。
2023-05-30 11:37:04
80
原创 创建型——单例模式C++实现
这就是双重检验锁,保障了线程安全。第一个判空可加速判断是否已有单例,第二个锁内的判空是为了解决多线程问题(两个线程同时走到lock,且instance_都为nullptr)。Meyers' Singleton是Scott Meyers提出的C++单例的推荐写法。类初始化就创建单例,GetInstance()只是获取动作,“饿”。单例模式即保证一个类只有一个实例,并提供一个访问该单例的接口。需要C11支持(C11保证static成员初始化的线程安全)用的时候才创建单例,“懒”。
2023-05-29 16:14:05
924
原创 创建型——生成器模式C++实现
生成器模式的核心是分步骤创建复杂的对象,该模式使用相同的创建代码生成不同类型的对象。比如奔驰和奥迪Builder生产车都需要设置轮胎、方向盘和发动机。那么建立一个Director指挥者,传入不同的Builder,Director执行相同的生产车的流程,但调用的是传入的Builder的方法实现。
2023-05-29 12:25:26
209
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人