设计模式笔记:单例模式 发表于 2024-03-06 | 分类于 设计模式 单例模式介绍单例模式:只能获取该类唯一一个实例对象1.构造函数私有化2.定义该类唯一的对象3.通过static静态成员方法返回该类唯一的实例对象 常用到比如日志模块、数据库模块 饿汉单例模式:程序启动时实例化对象12345678910111213141516171819202122232425262 ... 阅读全文 »
设计模式总览 发表于 2024-03-06 | 分类于 设计模式 设计模式使人们可以更加简单方便地复用成功的设计和体系结构 设计模式的分类 创建型模式,共五种:单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式 结构型模式,共七种:适配器模式、桥接模式、组合模式、装饰器模式、外观模式、享元模式、代理模式 行为型模式,共十一种:访问者模式、模板模式、策略模式 ... 阅读全文 »
七大设计原则 发表于 2024-03-06 | 分类于 设计模式 一、单一职责原则类、函数、接口 的职责单一 二、开闭原则修改关闭,扩展开放 三、里氏替换原则:基类和子类之间的关系,基类可以被子类替代 四、依赖倒置原则依赖抽象接口,而不是具体对象 五、接口隔离原则不对外暴露无用接口,接口按照功能细分 六、迪米特法则一个对象尽量与其他对象少的交互,类间解耦,弱耦合, ... 阅读全文 »
typora绘制时序图 发表于 2024-02-28 | 分类于 类图时序图 typora绘制类图 在Typora中,可以使用Markdown扩展语法Mermaid来创建时序图。 Mermaid是一个基于JavaScript的图表和图形生成库,可以用于生成流程图、时序图、甘特图等。 右键–>【插入】–>【代码块】 代码块右下角类型输入“mermaid” 【语法】- ... 阅读全文 »
智能指针unique_ptr auto_ptr scoped_ptr 发表于 2024-02-27 | 分类于 cpp unique_ptrunique_ptr标准库源码查看C++标准库源代码bits/目录下能找到一个名为unique_ptr.h的文件,包含了unique_ptr的实现 unique_ptr的部分源码如下: 123456789101112131415161718192021222324252 ... 阅读全文 »
typora绘制类图 发表于 2024-02-27 | 分类于 类图时序图 typora绘制类图 右键–>【插入】–>【代码块】 代码块右下角类型输入“mermaid” 【示例】代码块内容: 123456789101112131415161718classDiagram 人..>计算机: 依赖关系(此处为标签文本) 老师--学生: 双向关联 学生--> ... 阅读全文 »
类图的六种关系 发表于 2024-02-26 | 分类于 类图时序图 依赖关系【依赖关系】:一种使用的关系,即一个类的实现需要另一个类协助,所以要尽量不使用双向的互相依赖 【代码表现】:局部变量、方法的参数或者对静态方法的调用 【箭头及指向】:带箭头的虚线,指向被使用者 【示例1】动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数 【示例2】某人要过河 ... 阅读全文 »
LeetCode:94.二叉树的中序遍历 发表于 2024-02-25 | 分类于 LeetCode 写在前面,中序遍历问题能用两种算法实现,分别为递归版、迭代版,其中的差异和细节值得好好体会。题目:中序遍历给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 12输入:root = [1,null,2,3]输出:[1,3,2] 示例 2: 12输入:root = []输出 ... 阅读全文 »
LeetCode:144.二叉树的前序遍历 发表于 2024-02-25 | 分类于 LeetCode 写在前面,前序遍历问题能用三种算法实现,分别为递归版、迭代版1、迭代版2,其中的差异和细节值得好好体会。题目:前序遍历给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 12输入:root = [1,null,2,3]输出:[1,2,3] 示例 2: 12输入:root = ... 阅读全文 »
清华数据结构笔记:二叉树 发表于 2024-02-24 | 分类于 数据结构笔记 二叉树树将向量和列表的优点融合了起来 向量长于静态操作而列表长于动态操作,树则在某种程度上兼顾二者 树按照层次结构组织数据项 有根树 节点拥有孩子的个数为该节点的度数degree 归纳:一颗树的所含边数 = 所有节点的度数之和 = n - 1(n 为节点总数) 路径 + 环 ... 阅读全文 »