自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文搞懂图像传感器 HDR:Staggered/DOL/DXG/LOFIC硬核科普

动态范围 (DR) 表示传感器能区分的最亮与最暗信号的比值,单位通常为dB其中Qsat为满阱容量 (像素能存储的最大光电子数),σ为综合噪声 (暗电流、读出噪声等)。

2026-02-13 17:04:23 1281

原创 Alibli深度理解设计模式系列教程

本教程通过深入浅出地方式一步一步叫你学会设计模型的方方面面,包括白话SOLID原则、23种设计模式的适用场景对比、优缺点、最佳实践等等。

2025-12-17 11:15:24 363

原创 深度理解设计模式——概述,SOLID原则

设计模式(Design Pattern, DP)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中反复出现的问题以及其解决方案,是面向对象设计原则的实际应用。

2025-12-17 11:04:34 1007

原创 一文学会设计模式之行为型模式及最佳实现

本文将详细介绍11种行为型模式,包括策略、模板方法、观察者、迭代器、命令、状态、责任链、备忘录、解释器、访问者和中介者模式。

2025-12-16 22:07:52 813

原创 一文学会设计模式之结构型模式及最佳实现

本文将详细介绍7种结构型设计模式,包括代理、适配器、桥接、装饰器、外观、享元和组合。

2025-12-15 16:08:29 899

原创 一文学会设计模式之创建型模式及最佳实现

本文将详细介绍5种创建型模式,包括单例、工厂方法、抽象工厂、建造者和原型。

2025-12-12 15:55:16 325

原创 一文学会CMakeLists.txt: CMake现代C++跨平台工程化实战

本文通过一个简单的计算器项目,详细演示了如何使用CMake构建跨平台C++工程。项目包含静态库(math_utils)、动态库(calculator)和可执行程序(app)三部分,完整展示了: 静态库构建及头文件管理 动态库构建及链接静态库 可执行程序链接动态库 项目层级结构组织 CMake关键语法详解 跨平台编译选项设置 读者可掌握完整的CMake工程构建方法,包括库文件生成、依赖管理、目标属性设置等核心技能。项目结构清晰,每个CMakeLists.txt文件都有详细注释,适合CMake初学者系统学习。

2025-09-12 11:37:03 432

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

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

2024-03-22 11:24:26 883

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

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

2024-02-07 11:50:59 5267

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

常见概念白话解释

2024-02-06 17:52:23 605

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

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

2024-02-06 17:21:57 2265 1

原创 常用工具记录addr2line

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

2024-01-30 17:22:53 264

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

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

2023-11-23 17:11:17 2103

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

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

2023-10-31 20:13:56 12838 1

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

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

2023-10-08 19:11:18 333

原创 一文看懂 iova、IOMMU、DMA

一文看懂 iova、IOMMU、DMA

2023-08-24 16:42:21 6046

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

多核异构核间通信Mailbox vs rpmsg

2023-08-24 16:09:00 2888

原创 一文看懂 ISP pipeline

一文看懂 isp pipeline

2023-08-24 11:34:55 14740

原创 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 560

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

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

2023-07-27 16:20:41 3844

原创 CMakeList.txt速查速解

详解CMakeLists.txt文件项含义

2023-07-21 15:10:14 444

原创 Android.mk文件速查速解

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

2023-07-21 14:51:34 673

原创 2024年vscode c++代码无法跳转,亲测有效!

点左下角setting,搜intel,改为default。原因就是可能有插件冲突,让你禁用intelli你点了。

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

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

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

2023-06-06 16:21:08 14425

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

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

2023-06-01 11:29:10 297

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

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

2023-05-31 16:58:16 587

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

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

2023-05-31 16:10:36 183

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

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

2023-05-31 16:03:46 198

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

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

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

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

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

2023-05-31 11:50:56 168

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

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

2023-05-31 11:34:19 229

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

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

2023-05-31 11:02:23 132

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

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

2023-05-31 10:24:57 160

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

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

2023-05-30 20:18:06 185

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

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

2023-05-30 19:54:09 135

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

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

2023-05-30 17:43:38 159

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

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

2023-05-30 16:19:28 157

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

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

2023-05-30 15:27:39 133

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

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

2023-05-30 15:24:16 130

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

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

2023-05-30 14:40:56 150

空空如也

空空如也

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

TA关注的人

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