设计模式笔记:模板模式 发表于 2024-03-17 | 分类于 设计模式 模板模式:基类抽象,子类实现。 定义:在一个方法中定义一个算法的骨架,而将一些步骤的实现延迟到子类中,使得子类可以在不改变一个算法的结构前提下即可重定义该算法的某些特定步骤 基类定义命令执行Execute方法 1234class Command {public: virtual ... 阅读全文 »
设计模式笔记:命令模式 发表于 2024-03-17 | 分类于 设计模式 命令模式是一种行为设计模式,将命令的调用操作和具体执行解耦。 将一个请求封装成一个对象,用户使用不同的请求,使得能够对请求排队或记录日志,以及支持可撤销的操作。 命令基类定义命令执行Execute方法 1234class Command {public: virtual void E ... 阅读全文 »
汇编笔记:函数调用详细过程 发表于 2024-03-16 | 分类于 汇编笔记 问题一:sum函数执行完毕,计算机怎么知道继续执行哪条指令?函数运行时要在栈帧上开辟空间,esp寄存器存储的是当前函数栈顶的位置,ebp寄存器存储的是当前函数栈底的位置 首先main函数调用sum函数,第一件事是将下一条指令的地址压栈 栈帧开辟详细细节第二件事是开辟sum函数的栈帧空间 1、push ... 阅读全文 »
进程的虚拟地址空间内存划分和布局 发表于 2024-03-13 | 分类于 cpp 数据和指令在运行时放在内存的哪些地方?123456789// 从低地址到高地址//.text代码段//.rodata只读数据段//.data 初始化的且不为0//.bss 未初始化或为0// .heap堆// 共享库 *.dll *.so// stack 栈// 命令行参数和环境变量 示例123 ... 阅读全文 »
设计模式笔记:策略模式 发表于 2024-03-11 | 分类于 设计模式 策略模式(Strategy Pattern)是一种行为设计模式,它将一组行为封装到一个系列的对象中,作为一个策略,这些对象之间可以相互替换,让程序的主体对象能够改变它的行为方式,并且能够根据需要动态地选择其中的一种行为。 在C++中,我们可以利用类和接口(抽象基类)来实现策略模式。 下面是一个策略模 ... 阅读全文 »
设计模式笔记:迭代器模式 发表于 2024-03-11 | 分类于 设计模式 设计模式简单来说就是在解决某一类问题场景时,有既定的,优秀的代码框架可以直接使用 迭代器模式Iterator的核心功能,就是提供了一种特定的方法,顺序访问一个容器中的各个元素,既不会暴露容器的内部设计细节(容器底层数据结构),又可以让外部代码访问集合内部的所有元素 12345678910111213 ... 阅读全文 »
设计模式笔记:代理模式 发表于 2024-03-10 | 分类于 设计模式 概述代理模式是一种结构型设计模式,代理类管理委托类的访问权限和添加功能。 示例假设有一个视频类,用户可以通过这个类来播放视频。但是,希望在用户播放视频之前,验证他们是否有权限。可以创建一个代理类来完成这个任务。 12345678910111213141516171819202122232425262 ... 阅读全文 »
设计模式笔记:享元模式 发表于 2024-03-10 | 分类于 设计模式 概述享元模式是一种用于优化内存使用和计算性能的结构型设计模式,它通过复用已有对象来减少对象创建的开销。享元模式将对象的状态分为内部状态(intrinsic state)和外部状态(extrinsic state)。内部状态是对象可共享的部分,存储在享元对象内部并且不会随环境改变而改变;外部状态是对象 ... 阅读全文 »
设计模式笔记:桥接模式 发表于 2024-03-10 | 分类于 设计模式 概述桥接模式是一种结构型设计模式,它主要解决的是多继承的问题,它增强了系统的可扩展性,并对抽象部分和实现部分进行了分离。 示例以一个简单的电视和遥控器的例子来具体实现和解释桥接模式。假设我们有多种类型的电视和多种类型的遥控器,我们可以使用桥接模式来将他们组合在一起,而不是为每种电视和遥控器都创建一个 ... 阅读全文 »
设计模式笔记:外观模式 发表于 2024-03-10 | 分类于 设计模式 概述外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供了一个统一的高层接口,使得子系统更容易使用。 例如,一键启动。想象一下你的电脑和它的启动过程。启动电脑不仅仅是按下电源按钮,实际上在背后,它包含了启动操作系统,加载用户配置等一系列复杂的步骤。但对于用户来说, ... 阅读全文 »