07 2021 档案
摘要:中介者模式、备忘录模式 中介者模式 交给中介者去完成需求,让原本相互调用的组件解耦 一、智能家庭项目 智能家庭项目: 1)智能家庭包括各种设备, 闹钟、咖啡机、电视机、窗帘等 2)主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起-;咖啡机开始做咖啡-;窗帘自动落下
阅读全文
摘要:模板模式、命令模式 模板模式 一、豆浆制作问题 编写制作豆浆的程序,说明如下: 1)制作豆浆的流程 选材—;添加配料—;浸泡—;放到豆浆机打碎 2)通过添加不同的配料,可以制作出不同口味的豆浆 3)选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4)请使用模板方法模式完成(说明
阅读全文
摘要:访问者模式 访问者模式 这个模式用的很少,《设计模式》的作者评价为: 大多情况下,你不需要使用访问者模式,但是一旦需要使用它时,那就真的需要使用了 一、测评系统的需求 1)将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价 有不同的种类,比如 成功、失败 等
阅读全文
摘要:解释器模式、状态模式 解释器模式 根据不同的业务场景,来对应抽象不同的元素抽象类,抽象类可能有多个子类,然后实现解释一个表达式的处理 一、四则运算问题 通过解释器模式来实现四则运算,如计算 a+b-c 的值,具体要求 1)先输入表达式的形式,比如 a+b+c-d+e, 要求表达式的字母不能重复 2)
阅读全文
摘要:策略模式、职责链模式 策略模式 将原本继承的方式,换成组合、聚合,让算法变化(策略)与算法客户(对象)分离 一、编写鸭子项目,具体要求如下: 1)有各种鸭子(比如 野鸭、北京鸭、水鸭等, 鸭子有各种行为,比如 叫、飞行等) 2)显示鸭子的信息 二、传统方案解决鸭子问题的分析和代码实现 1)传统的设计
阅读全文
摘要:迭代器模式、观察者模式 迭代器模式 关注数据遍历,且分离数据与迭代器,实现解耦 一、需求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院, 一个学院有多个系。如图: 二、传统的设计方案(类图) 三、传统的方式的问题分析 1)将学院看做是学校的子类,系
阅读全文
摘要:代理模式、桥接模式、装饰器模式、适配器模式 创建型模式比较好理解,后面的结构型和行为型设计模式不是那么好理解。如果遇到不好理解的设计模式,我一般会在开头举比较简单的Demo案例来帮助理解。 代理模式【常用】 前面几节,我们讲了设计模式中的创建型模式。创建型模式主要解决对象的创建问题,封装复杂的创建过
阅读全文
摘要:外观模式、组合模式、享元模式 门面模式(外观模式)【不常用】 门面模式原理和实现都特别简单,应用场景也比较明确,主要在接口设计方面使用。 如果你平时的工作涉及接口开发,不知道你有没有遇到关于接口粒度的问题呢? 为了保证接口的可复用性(或者叫通用性),我们需要将接口尽量设计得细粒度一点,职责单一一点。
阅读全文
摘要:抽象工厂模式、工厂模式、建造者模式、原型模式 工厂模式很重要,后面的很多架构设计,都是工厂模式联合着其它设计模式使用。 一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。不过,在 GoF 的《设计模式》一书中,它将简单工厂模式看作是工厂方法模式的一种特例,所以工厂模式只被分成
阅读全文
摘要:UML类图 用于描述系统中的类==(对象)本身的组成和类(对象)==之间的各种静态关系。 类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合。 类图简单举例 1、依赖关系(Dependence) 小结: 类中用到了对方 如果是类的成员属性 如果是方法的返回类型 是方法接收的参数类型 方法中使用
阅读全文
摘要:单例设计模式 设计模式分为三种类型,共 23 种 1)创建型模式:单例模式、抽象工厂模式、原型模式、建造者模式、工厂模式。 2) 结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 3)行为型模式:模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模
阅读全文
摘要:设计模式七大原则: 设计模式常用的七大原则有: 单一职责 接口隔离 依赖倒置 里式替换 开闭原则 迪米特法则 合成复用原则 1、单一职责原则 对类来说的,即一个类应该只负责一项职责。如类 A 负责两个不同职责:职责 1,职责 2。当职责 1 需求变更而改变 A 时,可能造成职责 2 执行错误,所
阅读全文
摘要:深入理解MVCC与BufferPool缓存机制 MVCC多版本并发控制机制 Mysql在可重复读隔离级别下如何保证事务较高的隔离性,我们上节课给大家演示过,同样的sql查询语句在一个事务 里多次执行查询结果相同,就算其它事务对数据有修改也不会影响当前事务sql语句的查询结果。 这个隔离性就是靠MVC
阅读全文
摘要:深入理解Mysql事务隔离级别与锁机制 事务及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。 原子性(Atomicity) :事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent) :在事
阅读全文
摘要:Mysql索引优化实战二 示例表: CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11)
阅读全文
摘要:Mysql索引优化实战一 示例表 CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) N
阅读全文
摘要:MySQL的内部组件结构 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,
阅读全文
摘要:Explain详解与索引最佳实践 1、Explain工具介绍 使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL 注
阅读全文
摘要:Mysql索引底层数据结构 索引是帮助MySQL高效获取数据的排好序的数据结构 接下来我们会对这句话进行一步步的剖析 索引数据结构 二叉树 二叉树虽然会提高查询性能,但是在其插入的元素呈递增的情况下,二叉树就会退化成一个链表,从而降低了搜索的性能。 红黑树 使用红黑树虽然没有了上述二叉树在递增添
阅读全文