与嵌入式相对应的就是非嵌入式,非嵌入式设备(通用计算机):是为各种不同任务设计的“全能选手”,其存在价值就是运行用户安装的各类应用软件。例如:个人电脑、服务器。 嵌入式设备:是作为更大系统一部分的“专职人员”,其硬件和软件专门为完成特定功能而设计。例如:路由器、智能手表、汽车ABS系统。 为了更好地
一、核心架构组件 1. 生产者 生产者是发送消息的客户端应用程序。它创建一个消息,并将其发布(推送)到 RabbitMQ 服务器上的一个交换机。 2. 消费者 消费者是接收消息的客户端应用程序。它连接到 RabbitMQ 服务器,并订阅一个队列,以便从该队列中获取(拉取)消息进行处理。 3. 消息
DMA全称直接内存访问。 简单地说,DMA是一种允许计算机外部设备(例如:硬盘、网卡、声卡、GPU等)直接与主存进行数据读写,而无需中央处理器持续参与的技术。 在没有DMA的时代,这种数据转移需要CPU作为"中间人"。 1.为什么需要DMA?—— PIO模式的弊端 在DMA出现之前,数据通过PIO来
volatile 是 C++ 中的一个关键字,用于告诉编译器某个变量可能会在程序控制之外被修改(例如硬件寄存器、多线程共享变量等),从而防止编译器进行某些优化(如缓存变量值到寄存器)。 1. volatile 的作用 禁止编译器优化: 编译器在优化代码时,可能会假设某些变量的值不会被外部修改,从而缓
explicit 是一个关键字,主要用于 C++ 语言中,用于修饰类的构造函数。它的作用是防止编译器进行隐式的类型转换,从而避免潜在的错误或歧义。 作用: 禁止隐式转换: 当构造函数被声明为 explicit 时,编译器不会自动调用该构造函数进行隐式类型转换,必须显式地调用构造函数。 避免意外的行为
学习设计模式,离不开UML(统一建模语言)类图的使用,本文详细梳理下UML六种类图的含义: 1、关联(Association): 表示类与类之间的联接,它使一个类知道另一个类的属性和方法,这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的。程序中一个类的全局变量引用了另一
《Design Patterns: Elements of Reusable Object-Oriented Software》 ------ 尝试构建高效、可维护和可扩展的方式来构建软件系统。 设计原则: 1. 单一职责原则(SRP):一个类只做一件事 2. 开闭原则(OCP):对扩展开放,对修改
class ThreadSafeRefCounted { public: ThreadSafeRefCounted() noexcept : refCount(0) {} //禁用拷贝和移动 ThreadSafeRefCounted(const ThreadSafeRefCo
malloc 的底层实现依赖于 C 库,通常使用 ptmalloc(glibc 默认分配器)、tcmalloc(Google)或 jemalloc(FreeBSD 等)等。 下文详细阐述 glibc 的 ptmalloc 机制下的 malloc 的底层实现 基本概念 内存分配器:管理堆内存,处理内存
mmap(Memory Map)是 Linux/Unix 系统提供的一种将文件或设备映射到进程虚拟地址空间的机制,其底层原理和内存申请时机涉及 虚拟内存管理、缺页异常(Page Fault) 和 内核交互。以下是详细分析: