备忘录

《设计模式之禅》之备忘录模式

强颜欢笑 提交于 2020-04-04 13:26:56
一、备忘录模式的定义 备忘录模式提供了一种弥补真实世界缺陷的方法,让”后悔药”在程序的世界中真实可行,其定义如下: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 通用类(三个角色) Originator发起人角色 记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。 Memento备忘录角色 负责存储Originator发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。 Caretaker备忘录管理员角色 对备忘录进行管理、保存和提供备忘录。 二、备忘录模式的应用 1.备忘录模式的使用场景 需要保存和恢复数据的相关状态场景。 提供一个可回滚的操作;比如Word中的Ctrl+Z组合键,IE浏览器中的后退按钮,文件管理器上的backspace键等。 需要监控的副本场景中。例如要监控一个对象的属性,但是监控又不应该作为系统的主业务来调用,它只是边缘应用,即使出现监控不准,错误报警也影响不大,因此一般的做法是备份一个主线程中的对象,然后由分析程序来分析。 数据库连接的事务管理就是用的备忘录模式。 2.备忘录模式的注意事项 (1)备忘录的生命期 备忘录创建出来就要在”最近”的代码中使用,要主动管理它的生命周期,建立就要使用,不使用就要立刻删除其引用,等待垃圾回收器对它的回收处理。

设计模式之备忘录模式(Memento)详解及代码示例

房东的猫 提交于 2020-04-02 06:22:07
一、备忘录模式的定义与特点   备忘录(Memento)模式的定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模式。   备忘录模式能记录一个对象的内部状态,当用户后悔时能撤销当前操作,使数据恢复到它原先的状态。 二、备忘录模式优缺点   备忘录模式是一种对象行为型模式,其主要优点如下: 提供了一种可以恢复状态的机制。当用户需要时能够比较方便地将数据恢复到某个历史的状态。 实现了内部状态的封装。除了创建它的发起人之外,其他对象都不能够访问这些状态信息。 简化了发起人类。发起人不需要管理和保存其内部状态的各个备份,所有状态信息都保存在备忘录中,并由管理者进行管理,这符合单一职责原则。   其主要缺点是: 资源消耗大。如果要保存的内部状态信息过多或者特别频繁,将会占用比较大的内存资源。 三、备忘录模式的实现   备忘录模式的核心是设计备忘录类以及用于管理备忘录的管理者类,备忘录模式的主要角色如下: 发起人(Originator)角色:记录当前时刻的内部状态信息,提供创建备忘录和恢复备忘录数据的功能,实现其他业务功能,它可以访问备忘录里的所有信息。 备忘录(Memento)角色:负责存储发起人的内部状态,在需要的时候提供这些内部状态给发起人。 管理者(Caretaker)角色:对备忘录进行管理

网络翻译

一个人想着一个人 提交于 2020-03-28 17:43:13
网络工作组 S. Waldbusser 请求评论:2819 Lucent Technologies 性病:2000年5月59日 已淘汰:1757年 类别:标准跟踪 远程网络监控管理信息库 该备忘录的状态 本文档为以下内容指定了Internet标准跟踪协议: 互联网社区,并要求讨论和提出建议 改进。请参考最新版的“互联网 标准化状态的官方协议标准”(STD 1) 协议的状态。该备忘录的分发是无限的。 版权声明 版权所有(C)互联网协会(2000)。版权所有。 抽象 本备忘录定义了管理信息库(MIB)的一部分 用于基于TCP / IP的Internet中的网络管理协议。 特别是,它定义了用于管理远程网络的对象 监视设备。 本备忘录淘汰了RFC1757。本备忘录通过以下方式扩展了该规范: 以SMIv2格式记录RMON MIB,同时保留语义 与现有的基于SMIv1的MIB相同。 Waldbusser Standards Track [Page 1] RFC 2819远程网络监视MIB 2000年5月 目录 1 SNMP管理框架.................................... 2 2概述................................................ ... 3 2.1远程网络管理目标..........................

苹果手机隐藏很深的四个功能,个个都很实用,不提很少有人知道

陌路散爱 提交于 2020-03-28 12:39:06
你真的会用自己手中的iPhone吗?像备忘录可以扫描文档、相册可以隐藏照片这些小功能你都知道呢? 其实苹果手机里的功能远远不止这些,有很多功能是隐藏很深的,今天就来给大家细说一下苹果手机的黑科技功能,一起来看看吧。 功能一:缩放 小编敢打赌这个功能一大半人都没用过,估计很多人都还不知道他的作用是什么,像我们在晚上玩手机是就算将屏幕亮度调到最低,有时候还是会觉得刺眼,此时就可以使用缩放功能了。 打开方法: 首先打开手机的设置然后选择【通用】——【辅助功能】——【缩放】然后将其开启。 功能二:提高通话质量 很多人觉得通话质量不高是因为iPhone手机的信号不好,其实这只是一部分原因,还有一部分原因是我们没有消除通话中的杂音。 方法: 打开手机的设置找到【通用】——选择【辅助功能】——打开【单声道音频】和【电话噪声消除】 功能三:扫描文稿 扫描文稿是iPhone手机备忘录特有的功能,他可以扫描识别纸质文档上的文字内容,将其转换为图片的形式。 方法: 打开备忘录后点击【+】图标,然后选择【扫描文稿】拍下需要识别的内容即可。 功能四:SOS紧急联络 出门在外我们要有最基本的安全意识,此功能在关键时刻是可以救命的,打开此功能后手机熄屏状态下也可以发出求救信号。 设置方法: 此功能支持的系统为ios 11以上,打开手机的设置找到【SOS紧急电话】——点击【在健康中设置紧急联络人

RFC1738——Uniform Resource Locators (URL)

和自甴很熟 提交于 2020-03-25 12:42:39
转自:http://www.net130.com/netbass/RFCs/RFC1738.txt Network Working Group T. Berners-Lee Request for Comments: 1738 CERN Category: Standards Track L. Masinter Xerox Corporation M. McCahill University of Minnesota Editors December 1994 统一资源定位器(URL) (RFC1738——Uniform Resource Locators (URL)) 这份备忘录的情况 本备忘录详细说明了一种为因特网团体提供的因特网标准追踪协议(track protocol), 恳请大家讨论并提出宝贵意见。如果你想了解这个协议的情况及标准化状态,请参考《因 特网正式协议标准(Internet Official Protocol Standards)》(STD 1)的最新版本。 本备忘录可以自由发布发布,不受任何限制。 摘要 该文档详细说明了统一资源定位器、定位的语法和语义以及如何通过因特网来访问资源。 目录 1.绪论 2 2.常规URL语法 2 2.1 URL的主要部分 2 2.2 URL字符编码问题 3 2.3 分层方案和关系链接 4 3.特殊方案 4 3.1通用因特网方案语法

架构师内功心法,参与富文本编辑器开发的备忘录模式详解

☆樱花仙子☆ 提交于 2020-03-22 13:02:22
3 月,跳不动了?>>> 备忘录模式(Memento Pattern)又称为快照模式(Snapshot Pattern)或者令牌模式(Token Pattern),是指在不破坏封装的前提下,捕获一个内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 在软件系统中,备忘录模式为我们提供了一种“ 后悔药 ”的机制,它通过存储系统各个历史状态的快照,使得我们可以在任意时刻将系统回滚到某一个历史状态。 一、备忘录模式的应用场景 我们机会天天都在使用备忘录模式,比如使用Git、SVN提供一种代码版本撤回的功能。还有游戏的存档功能,通过将游戏当前进度存储到本地文件系统或数据库中,使得下次继续游戏时,玩家可以从之前的位置继续进行。 备忘录模式适用于以下两个场景: 需要保存历史快照的场景; 希望在对象之外保存状态,且除了自己其它类对象无法访问状态保存具体内容。 备忘录模式主要包含三种角色: 发起人角色(Orgainator):负责创建一个备忘录,记录自身需要保存的状态,具备状态回滚功能; 备忘录角色(Memento):用于存储发起人的内部状态,且可以防止发起人以外的对象进行访问; 备忘录管理员(Caretaker):负责存储,提供管理备忘录,无法对备忘录内容进行操作和访问。 1.1 利用压栈管理落地备忘录模式 我们在网页上写文章或者博客都使用过富文本编辑器

备忘录

北慕城南 提交于 2020-03-06 09:42:30
xshell xiaoshuigeng 123456 xshell管理员jiangman jJ123456 开发者平台xiaoshuigeng Xsg123456@ 【优特科技】企业平台帐号E04769密码451509;域帐号xiaoshuigeng密码Ut123456;U9帐号E04769密码Ut-12345 git xiaoshuigeng 123456 yapi:xiaoshuigeng@ut.cn 123456 邮箱 xiaoshuigeng@ut.cn Xsg123456 https://gitlab.utcook.com/share k8s: https://k8s2.utcook.com/#!/login eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9

21.备忘录模式

淺唱寂寞╮ 提交于 2020-03-04 03:56:23
游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战Boss前保存自身的状态(攻击力和防御力),当大战Boss后攻击力和防御力下降,从备忘录对象恢复到大战前的状态 传统的方式的问题分析 一个对象,就对应一个保存对象状态的对象, 这样当我们游戏的对象很多时,不利于管理,开销也很大. 传统的方式是简单地做备份,new出另外一个对象出来,再把需要备份的数据放到这个新对象,但这就暴露了对象内部的细节 解决方案: => 备忘录模式 备忘录模式 基本介绍 备忘录模式(Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态 可以这里理解备忘录模式:现实生活中的备忘录是用来记录某些要去做的事情,或者是记录已经达成的共同意见的事情,以防忘记了。而在软件层面,备忘录模式有着相同的含义,备忘录对象主要用来记录一个对象的某种状态,或者某些数据,当要做回退时,可以从备忘录对象里获取原来的数据进行 恢复操作 备忘录模式属于 行为型模式 原理类图 对原理 类图 的说明- - 即( 备忘录模 式的角色及职 责) originator : 对象( ( 需要保存状态的对象) ) Memento : : 备忘 录对象, , 负责保存好 记 录,即 Originator 内部状态 Caretaker: 守护者对象, ,

知识点备忘录

烈酒焚心 提交于 2020-02-29 13:42:00
kafaka,消息持久化,duboo,zookeeper,nginx跨域, tcp-ip ,broker,docker,nginx,springmvc,queue,主从,主主,设计模式,序列化,jvm,redis, netty nio; 多线程,泛型,springmvc注解;spring 事务 ;分布式事务;秒杀系统设计;并发编程,锁的使用,死锁,visualvm,visualgc,redis分片, jdk1.8 ,spring4.0新特性,数据同步DataX,rabbitMQ,rocketMQ,单点登录,跨域登录,qmq,hadoop,habse,数据库引擎,spark,luence, GC 标记 - 清除算法,运行时内存结构,hashmap实现细节,静态代理,动态代理,前端:React(facebook),angularjs(google)后端:node ,工具:IntelliJ IDEA,enum的应用,DataGrip数据库工具,脚本语言:paython,shell(任意门),《Java并发编程实践》,lua脚本,nodejs,netty,bootstrap,jenkins,python,spring boot,监控工具,后台管理系统经典模式:rbac,kasai;springboot,Spring Security,MybatisPageInfo, 拦截器 来源:

Java之美[从菜鸟到高手演变]之设计模式四

狂风中的少年 提交于 2020-02-28 19:49:21
其实每个设计模式都是很重要的一种思想,看上去很熟,其实是因为我们在学到的东西中都有涉及,尽管有时我们并不知道,其实在Java本身的设计之中处处都有体现,像AWT、JDBC、集合类、IO管道或者是Web框架,里面设计模式无处不在。因为我们篇幅有限,很难讲每一个设计模式都讲的很详细,不过我会尽我所能,尽量在有限的空间和篇幅内,把意思写清楚了,更好让大家明白。本章不出意外的话,应该是设计模式最后一讲了,首先还是上一下上篇开头的那个图: 本章讲讲第三类和第四类。 19、备忘录模式(Memento) 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下: Original类是原始类,里面有需要保存的属性value及创建一个备忘录类,用来保存value值。Memento类是备忘录类,Storage类是存储备忘录的类,持有Memento类的实例,该模式很好理解。直接看源码: [java] view plain copy print ? public class Original { private String value; public String getValue() {