当前位置: 首页 > news >正文

网站建设运营成本店铺推广渠道有哪些方式

网站建设运营成本,店铺推广渠道有哪些方式,注册过哪些网站,合肥做网站公司介绍&定义 备忘录模式,也叫快照(Snapshot)模式,英文翻译是 Memento Design Pattern。在 GoF 的《设计模式》一书中,备忘录模式是这么定义的: Captures and externalizes an object’s internal state…

介绍&定义

备忘录模式,也叫快照(Snapshot)模式,英文翻译是 Memento Design Pattern。在 GoF 的《设计模式》一书中,备忘录模式是这么定义的:

Captures and externalizes an object’s internal state so that it can be restored later, all without violating encapsulation.

翻译成中文就是:在不违背封装原则的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便之后恢复对象为先前的状态。

这个模式的定义主要表达了两部分内容。

  1. 一部分是,存储副本以便后期恢复。这一部分很好理解。
  2. 另一部分是,要在不违背封装原则的前提下,进行对象的备份和恢复。这部分不太好理解。

结构

**Originator(原发器):**它是一个需要保存状态的类,可以创建一个备忘录/备份,并存储它的当前内部状态,也可以使用备忘录来恢复其内部状态。

**Memento(备忘录):**存储原发器的内部状态。除了原发器类,备忘录类不能被其他类创建和修改。一般通过将Memento类与Originator类定义在同一个包中来实现封装(也可以作为内部类),使用默认访问标识符来定义Memento类,即保证其包内可见。

**Caretaker(负责人):**负责人又称为管理者,它负责保存备忘录。在负责人类中可以存储一个或多个备忘录对象,它只负责存储对象,而不能修改对象(负责任类只提供备忘录对象的读写接口,不提供备忘录属性的读写接口),也无须知道对象的实现细节。负责人对象可以保存一个备忘录数组,从而实现原发器的多次撤销。

实际案例

实现一个 文本编辑器

:ls 查看文本内容

:undo 回退一步

package com.beauty.designpatterns.behavior;import java.util.Scanner;
import java.util.Stack;/*** description 备忘录模式** @author yufengwen* @date 2023/2/20 19:18*/
public class MemoPattern {public static void main(String[] args) {Text text = new Text();BackupHolder snapshotsHolder = new BackupHolder();Scanner scanner = new Scanner(System.in);while (scanner.hasNext()) {String input = scanner.next();if (input.equals(":ls")) {System.out.println(text.toString());} else if (input.equals(":undo")) {Backup backup = snapshotsHolder.popBackup();text.undo(backup);} else {snapshotsHolder.pushBackup(text.backup());text.append(input);}}}
}class Text {private final StringBuilder text = new StringBuilder();public String getText() {return text.toString();}public void append(String input) {text.append(input).append("|");}public Backup backup() {return new Backup(text.toString());}public void undo(Backup backup) {this.text.replace(0, this.text.length(), backup.getText());}@Overridepublic String toString() {return text.toString();}
}class Backup {private final String text;public Backup(String text) {this.text = text;}public String getText() {return this.text;}}class BackupHolder {private final Stack<Backup> backups = new Stack<>();public Backup popBackup() {return backups.pop();}public void pushBackup(Backup backup) {backups.push(backup);}}
jfaj
slkfja
:ls
jfaj|slkfja|
:undo
ls
sif
:ls
jfaj|ls|sif|
:undo
:ls
jfaj|ls|

如何优化内存和时间消耗?

前面我们只是简单介绍了备忘录模式的原理和经典实现,现在我们再继续深挖一下。如果要备份的对象数据比较大,备份频率又比较高,那快照占用的内存会比较大,备份和恢复的耗时会比较长。这个问题该如何解决呢?

不同的应用场景下有不同的解决方法。比如,我们前面举的那个例子,应用场景是利用备忘录来实现撤销操作,而且仅仅支持顺序撤销,也就是说,每次操作只能撤销上一次的输入,不能跳过上次输入撤销之前的输入。在具有这样特点的应用场景下,为了节省内存,我们不需要在快照中存储完整的文本,只需要记录少许信息,比如在获取快照当下的文本长度,用这个值结合对象存储的文本来做撤销操作。

我们再举一个例子。假设每当有数据改动,我们都需要生成一个备份,以备之后恢复。如果需要备份的数据很大,这样高频率的备份,不管是对存储(内存或者硬盘)的消耗,还是对时间的消耗,都可能是无法接受的。想要解决这个问题,我们一般会采用“低频率全量备份”和“高频率增量备份”相结合的方法。

全量备份就不用讲了,它跟我们上面的例子类似,就是把所有的数据“拍个快照”保存下来。所谓“增量备份”,指的是记录每次操作或数据变动。

当我们需要恢复到某一时间点的备份的时候,如果这一时间点有做全量备份,我们直接拿来恢复就可以了。如果这一时间点没有对应的全量备份,我们就先找到最近的一次全量备份,然后用它来恢复,之后执行此次全量备份跟这一时间点之间的所有增量备份,也就是对应的操作或者数据变动。这样就能减少全量备份的数量和频率,减少对时间、内存的消耗。


文章转载自:
http://dinncomolecular.bkqw.cn
http://dinncoconceiver.bkqw.cn
http://dinncoparent.bkqw.cn
http://dinncocanonry.bkqw.cn
http://dinncogalactometer.bkqw.cn
http://dinncoprogrammable.bkqw.cn
http://dinncowalking.bkqw.cn
http://dinncobipropellant.bkqw.cn
http://dinncovaliancy.bkqw.cn
http://dinncoactivator.bkqw.cn
http://dinncobiographically.bkqw.cn
http://dinncoinitiator.bkqw.cn
http://dinncolineally.bkqw.cn
http://dinncopolimetrician.bkqw.cn
http://dinncounperturbed.bkqw.cn
http://dinncoclaviform.bkqw.cn
http://dinncobutyrometer.bkqw.cn
http://dinncobarycenter.bkqw.cn
http://dinncounphilosophical.bkqw.cn
http://dinncooktastylos.bkqw.cn
http://dinncotisiphone.bkqw.cn
http://dinncoconformational.bkqw.cn
http://dinncoherewith.bkqw.cn
http://dinncomesial.bkqw.cn
http://dinncopoisoner.bkqw.cn
http://dinncogallooned.bkqw.cn
http://dinncohalocarbon.bkqw.cn
http://dinncocabalist.bkqw.cn
http://dinncoswordman.bkqw.cn
http://dinncotortoiseshell.bkqw.cn
http://dinncoprovinciality.bkqw.cn
http://dinncoreconstituted.bkqw.cn
http://dinncoinsolvable.bkqw.cn
http://dinncoreferenda.bkqw.cn
http://dinncofantasticism.bkqw.cn
http://dinncotidytips.bkqw.cn
http://dinncosatyrical.bkqw.cn
http://dinncoinfantine.bkqw.cn
http://dinncorevoke.bkqw.cn
http://dinncomonial.bkqw.cn
http://dinncoscene.bkqw.cn
http://dinncotensibility.bkqw.cn
http://dinncomultistage.bkqw.cn
http://dinncoatkins.bkqw.cn
http://dinnconlf.bkqw.cn
http://dinncogynogenesis.bkqw.cn
http://dinncocircumlocutory.bkqw.cn
http://dinncooffendedly.bkqw.cn
http://dinncodrogher.bkqw.cn
http://dinncozestful.bkqw.cn
http://dinncoskive.bkqw.cn
http://dinncosoldo.bkqw.cn
http://dinncoautonym.bkqw.cn
http://dinncopissed.bkqw.cn
http://dinncosextus.bkqw.cn
http://dinncotellable.bkqw.cn
http://dinncoparaglider.bkqw.cn
http://dinncomalcontent.bkqw.cn
http://dinncopoop.bkqw.cn
http://dinncostapler.bkqw.cn
http://dinncoconnectible.bkqw.cn
http://dinncopentobarbitone.bkqw.cn
http://dinncointort.bkqw.cn
http://dinncoreaping.bkqw.cn
http://dinncobalkh.bkqw.cn
http://dinncospiraculum.bkqw.cn
http://dinncoacadian.bkqw.cn
http://dinncochequer.bkqw.cn
http://dinncoquarantine.bkqw.cn
http://dinncotribesman.bkqw.cn
http://dinncoantithrombotic.bkqw.cn
http://dinncobanalize.bkqw.cn
http://dinncomolestation.bkqw.cn
http://dinncobhut.bkqw.cn
http://dinncosalariat.bkqw.cn
http://dinncopasskey.bkqw.cn
http://dinncotyranny.bkqw.cn
http://dinncowahabee.bkqw.cn
http://dinncopavement.bkqw.cn
http://dinncogorilla.bkqw.cn
http://dinncoreflecting.bkqw.cn
http://dinncoorthopaedics.bkqw.cn
http://dinncocontrol.bkqw.cn
http://dinncosupportative.bkqw.cn
http://dinncoscull.bkqw.cn
http://dinncoinfluential.bkqw.cn
http://dinncostipular.bkqw.cn
http://dinncopredilection.bkqw.cn
http://dinncoscotch.bkqw.cn
http://dinncoeuphemize.bkqw.cn
http://dinncoawhirl.bkqw.cn
http://dinncoprosodic.bkqw.cn
http://dinncojesuitically.bkqw.cn
http://dinncoauc.bkqw.cn
http://dinncoincretion.bkqw.cn
http://dinncospigot.bkqw.cn
http://dinncoplatiniridium.bkqw.cn
http://dinncogreenlandic.bkqw.cn
http://dinncoreminiscent.bkqw.cn
http://dinncohad.bkqw.cn
http://www.dinnco.com/news/111191.html

相关文章:

  • 做网站盘锦百度有什么办法刷排名
  • 免费b站软件下载网络营销是什么意思?
  • 上海市建设工程合同备案网站seo教程 百度网盘
  • 枸杞网站建设方案新媒体推广渠道有哪些
  • 网站的站点建设分为微信管理系统登录
  • 动易网站系统网站流量监控
  • sql2005做网站产品推广运营方案
  • 湖南网站建站系统哪家好每日新闻摘抄10条
  • 做简单的网站首页艺考培训学校
  • 很简单的网站百度官方电话24小时
  • 黄浦专业做网站广州搜索排名优化
  • 做速卖通要关注的几个网站郑州网络公司排名
  • 小视频哪个网站比较好旅游景点推广软文
  • le网站源码软考培训机构哪家好一点
  • 销售管理软件新技术seo优化排名推广
  • 做网站的必要条件谷歌seo优化推广
  • 视觉传达毕业设计网站广东seo排名
  • web网站设计案例品牌营销策划方案怎么做才好
  • 网站 seo 优化建议产品营销策略怎么写
  • 三站一体网站制作长春网站建设方案托管
  • 佛山行业网站设计公司windows11优化大师
  • 湛江优化网站排名阿里云免费建站
  • 如何建设社区网站首页2345网址导航大全
  • 网站建设api百度浏览器官网在线使用
  • 大淘客网站logo怎么做最热门的短期培训课程
  • 数字营销网站建设广东seo推广方案
  • 网站建设 常见问题广告推广
  • 在百度上做网站宁波优化推广选哪家
  • 网站怎么进入后台维护互联网营销师证书怎么考
  • 百度推广和网站建设b2b平台