SF
学习笔记
学习笔记
注册登录
关注博客
注册登录
主页
关于
RSS
初学 Java 设计模式(二十):实战状态模式 「亲身实践,简单高效的时间管理——番茄工作法」
易羽fxst
2021-06-11
阅读 4 分钟
2.3k
一、状态模式介绍1. 解决的问题主要解决在对象一个内部状态发生变化时,改变其行为的问题。2. 定义状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为,使其看上去就像改变了自身所属的类一样。3. 应用场景如果对象需要根据自身当前状态进行不同行为,同时状态的数量非常多且与状态相关的代码会频...
初学 Java 设计模式(十九):实战观察者模式 「您的快递已到达蜂站,请及时签收」
易羽fxst
2021-06-06
阅读 6 分钟
1.9k
一、观察者模式介绍1. 解决的问题主要解决将一个对象的状态改变通知给其他对象的问题。2. 定义观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个 “观察” 该对象的其他对象。3. 应用场景当一个对象的改变需要改变其他对象,或实际对象时是事先未知的或动态变化时,可使用观察者模式。当...
初学 Java 设计模式(十八):实战备忘录模式 「线上刚发布就出问题怎么办?」
易羽fxst
2021-05-23
阅读 6 分钟
1.2k
一、备忘录模式介绍1. 解决的问题主要解决在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以恢复原先保存的状态。2. 定义备忘录模式是一种行为设计模式,允许在不暴露对象实现细节的状态下保存和恢复对象之前的状态。3. 应用场景当你需要创建对象状态快照来恢复其之前的状态时,可...
初学 Java 设计模式(十七):实战中介者模式 「菜鸟驿站」
易羽fxst
2021-05-15
阅读 6 分钟
1.6k
一、中介者模式介绍1. 解决的问题主要解决当对象与对象之间存在大量关联关系时,若一个对象发生改变,要跟踪与之相关的对象,同时做出相应处理的问题。2. 定义中介者模式是一种行为设计模式,能减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。3. 应用场景当一些...
初学 Java 设计模式(十六):实战迭代器模式 「你有多少 QQ 好友呢?」
易羽fxst
2021-05-10
阅读 7 分钟
2.1k
一、迭代器模式介绍1. 解决的问题主要解决遍历整个集合对象的问题。2. 定义迭代器模式是一种行为设计模式,能在不暴露底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。3. 应用场景当集合背后为复杂的数据结构,且希望对客户端隐藏其复杂性时(处于使用便利性或安全性考虑),可以使用迭代器模式。减少程序...
初学 Java 设计模式(十五):实战命令模式 「扫码点餐」
易羽fxst
2021-04-24
阅读 5 分钟
2.2k
命令模式是一种行为设计模式,它可将请求转换为一个包含与请求相关的所有信息的独立对象。这个转换会根据不同的请求将方法参数化、延迟请求执行或将其放入队列中,且能实现可撤销操作。
初学 Java 设计模式(十四):实战责任链模式 「请求中间件」
易羽fxst
2021-04-18
阅读 5 分钟
2.7k
一、责任链模式介绍1. 解决的问题主要解决请求发送者和处理者的解耦问题。2. 定义责任链模式是一种行为设计模式,允许将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。3. 应用场景当程序需要不同方式处理不同种类请求,而且请求类型和顺序预先未知时,可以使用责...
初学 Java 设计模式(十三):实战代理模式 「视频 App 代理缓存」
易羽fxst
2021-04-10
阅读 5 分钟
2k
一、代理模式介绍1. 解决的问题主要解决直接访问对象时带来的问题,比如对象创建开销过大或安全控制等。2. 定义代理模式是一种结构型设计模式,能够提供对象的替代品或其占位符。代理控制着对于原对象的访问,并允许在将请求提交给对象前后进行一些处理。3. 应用场景延迟初始化(虚拟代理):如果有一个偶尔使用的重量级...
初学 Java 设计模式(十二):实战享元模式 「高校选课系统优化」
易羽fxst
2021-03-31
阅读 5 分钟
1.5k
一、享元模式介绍1. 解决的问题主要解决在有大量对象时,可能造成内存溢出的问题。2. 定义享元模式是一种结构型设计模式,它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,能在有限的内存容量中载入更多对象。3. 应用场景在程序必须支持大量对象且没有足够的内存容量时使用享元模式。二、享...
初学 Java 设计模式(十一):实战外观模式 「类型转换器」
易羽fxst
2021-03-28
阅读 6 分钟
2.1k
一、外观模式介绍1. 解决的问题主要解决访问复杂系统的内部子系统的复杂度问题,简化客户端与其子系统的接口。2. 定义外观模式是一种结构型设计模式,能为程序库、框架或其他复杂类提供一个简单的接口。3. 应用场景需要一个指向复杂子系统的直接接口,且该接口的功能有限,可以使用外观模式。需要将子系统组织为多层结构...
初学 Java 设计模式(十):实战装饰器模式 「日志系统支持各类通知组合」
易羽fxst
2021-03-21
阅读 6 分钟
1.6k
一、装饰器模式介绍1. 解决的问题主要解决动态地给一个对象添加一些额外的职责。2. 定义装饰器模式是一种结构型设计模式,允许将对象通过放入包含行为的特殊封装对象来为原对象绑定新的行为。3. 应用场景希望在无需修改代码的情况下即可使用对象,且希望在运行时能为对象增加额外的行为,可以使用装饰器模式。用继承来扩...
初学 Java 设计模式(九):实战组合模式 「决策树实现精准化运营」
易羽fxst
2021-03-14
阅读 15 分钟
4k
一、组合模式介绍1. 解决的问题在树形结构的问题中,模糊了简单元素和复杂元素的概念,客户端可以像处理简单元素一样来处理复杂元素,从而使客户端和复杂元素的内部元素解耦。2. 定义组合模式是一种结构型设计模式,可以使用它将对象组合成树状结构,并能像使用独立对象一样使用它们。3. 应用场景需要实现树状对象结构,...
初学 Java 设计模式(八):实战桥接模式 「第三方登录实现」
易羽fxst
2021-03-07
阅读 4 分钟
1.9k
简单来说,就是通过讲抽象部分和实现部分分离,把多种可匹配的使用进行组合。核心实现是在 A 类包含 B 类接口,通过构造函数实现 B 类的传递,这个 B 类就是设计的桥。
初学 Java 设计模式(七):实战适配器模式 「同步监控通知至工作群」
易羽fxst
2021-02-28
阅读 5 分钟
1.9k
一、适配器模式介绍1. 解决的问题主要解决在系统中,将一些现存对象放入新环境中,而新环境要求的接口和现存对象不匹配的问题。2. 定义适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作。3. 应用场景希望使用某个类,但其接口与其他代码不兼容时,可以使用适配器类。如果需要复用这样一些类,它们处...
初学 Java 设计模式(六):实战单例模式
易羽fxst
2021-02-17
阅读 6 分钟
2.3k
保证一个类只有一个实例。 最常见的是控制某些共享资源 (例如数据库或文件) 的访问权限。运作方式是这样的: 如果创建了一个对象,同时过一会儿后决定再创建一个新对象,此时会获得之前已创建的对象, 而不是一个新对象。 注意, 普通构造函数无法实现上述行为,因为构造函数的设计决定了它必须总是返回一个新对象。
初学 Java 设计模式(五):实战原型模式 「英雄联盟齐天大圣-真假猴王」
易羽fxst
2021-02-16
阅读 5 分钟
1.6k
主要解决的问题就是创建重复对象,这部分对象内容本身比较复杂,生成过程可能从库中或者RPC接口中获取数据的耗时较长,因此采用克隆的方式节省时间。
初学 Java 设计模式(四):实战建造者模式 「单人年夜饭套餐」
易羽fxst
2021-02-15
阅读 6 分钟
1.5k
主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
初学 Java 设计模式(三):实战抽象工厂方法模式 「QQ 厘米秀装扮」
易羽fxst
2021-02-14
阅读 4 分钟
1.7k
一、抽象工厂方法模式介绍1. 解决的问题通过接口的选择,解决在系统产品存在多个产品族,而系统仅消费某一族的产品的问题。2. 定义抽象工厂模式是一个围绕超级工厂创建其他工厂的模式,即抽象工厂是一个中心工厂,创建其他工厂的模式。抽象工厂提供了一个接口,可用于创建每个系列产品的对象。只要代码通过该接口创建对...
初学 Java 设计模式(二):实战工厂方法模式 「文章、视频、直播内容输出生产场景」
易羽fxst
2021-01-31
阅读 9 分钟
1.6k
简单来说就是为了提供代码的扩展性,屏蔽每一个功能类的具体实现逻辑,让外部仅知道调用即可。这也是去掉多个 if else 的方式,当然也存在一些缺点,如需要实现的类过多,如何维护,降低开发成本。但这些问题可以通过与其他设计模式结合使用,逐步降低影响。
MysqlTools——温和删除 Mysql 大表部分数据
易羽fxst
2021-01-24
阅读 4 分钟
2.6k
1.情景再现某年某月某日 下午安心工作中运维:在吗?刚才工具扫出来线上有一批 Mysql 表不符合新规范,你看一下!我:好的,我看一下。内心 OS:什么鬼?还能不能好好撸代码了?经过一阵排查中,基本都是部分 Mysql 表无主键,很简单嘛,加个数据 id 就完事了!什么鬼,这个表怎么两千万数据了,印象里不应该有这麽多数...
初学设计模式(一)创建者模式
易羽fxst
2021-01-17
阅读 1 分钟
1.2k
设计模式遵循六大原则:单一职责:一个类和方法只做一件事。里氏替换:多态、子类可扩展父类。依赖倒置:细节依赖抽象,下层依赖上层。接口隔离:建立单一接口。迪米特原则:最少知道,降低耦合。开闭原则:抽象架构,扩展实现。创建型模式解决的问题基本的对象创建方式可能会导致设计上存在问题,或增加设计的复杂度。...
PHP static 关键字和 self 关键字实例化的区别
易羽fxst
2017-04-03
阅读 1 分钟
2.6k
在实例化时,static 关键字类似于 self 关键字,但 static 关键字指的是被调用的类,而 self 关键字指的是包含类。 这样说可能不太好理解,接下来举一个例子。 首先创建一个超类 DomainObject ,该类包含功能可被其扩展类共用,其次创建一个子类 Document 。 代码如下: {代码...} 在示例代码中,将常用方法 create() 放...
Windows(x86,64bit)升级MySQL 5.7.17免安装版
易羽fxst
2017-02-20
阅读 2 分钟
4.4k
MySQL需要升级到5.5.3以上版本才支持Laravel 5.4默认的utf8mb64字符编码。因此就把MySQL升级了一下,期间还是遇到些小问题,记录一下以供参考。
Laravel 5.4 migrate时报错: Specified key was too long error
易羽fxst
2017-02-20
阅读 1 分钟
30.8k
Laravel 5.4默认使用utf8mb4字符编码,而不是之前的utf8编码。因此运行php artisan migrate 会出现如下错误:
腾讯云搭建Hexo静态博客
易羽fxst
2017-02-18
阅读 1 分钟
7.8k
Hexo官方文档使用cURL和Wget获取nvm(Node.js管理器)来安装Node.js,但腾讯云基础服务器1M/s的带宽下载太慢,推荐使用yum进行安装。