设计模式系统回顾(20)备忘录模式

Android面试题_安卓面经(23/30)设计模式源码案例 无论是做哪种编程语言的开发工作,过了新手期后,都需要了解设计模式,在安卓开发中也一样,本人曾在面试中让我列举安卓源码中设计模式的案例。 阅读详情

快照模式(令牌模式):保存一个对象的状态,需要的时候可以恢复

public class ArticleText {
    private String title;//文章标题
    private String content;//文章内容
    private Date createTime;//文章创建时间

    public ArticleText(String title, String content, Date createTime) {
        this.title = title;
        this.content = content;
        this.createTime = createTime;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public ArticleMemento saveToMemento(){//这个方法用来保存快照
        ArticleMemento articleMemento = new ArticleMemento(this.title,this.content,this.createTime);
        return articleMemento;
    }

    public void getArticleFromMemento(ArticleMemento articleMemento){//这个方法用来还原文章
        this.title = articleMemento.getTitle();
        this.content = articleMemento.getContent();
        this.createTime = articleMemento.getCreateTime();
    }
}
public class ArticleMemento {
    private String title;
    private String content;
    private Date createTime;

    public ArticleMemento(String title, String content, Date createTime) {
        this.title = title;
        this.content = content;
        this.createTime = createTime;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}


public class ArticleCaretaker {
    private final List<ArticleMemento> list = new ArrayList<>();

    public ArticleMemento getArticle(int index){
        return list.get(index);
    }

    public void setArticle(ArticleMemento articleMemento){
        list.add(articleMemento);
    }
}

public class TestMemento {
    public static void main(String[] args) {
        ArticleCaretaker articleCaretaker = new ArticleCaretaker();

        ArticleText articleText = new ArticleText("标题1","内容1",new Date());
        ArticleMemento articleMemento = articleText.saveToMemento();
        articleCaretaker.setArticle(articleMemento);//备份1次

        articleText = new ArticleText("标题2","内容2",new Date());
        System.out.println(String.format("修改后的标题为【%s】,内容为【%s】",articleText.getTitle(),articleText.getContent()));

        articleText.getArticleFromMemento(articleCaretaker.getArticle(0));
        System.out.println(String.format("还原后的标题为【%s】,内容为【%s】",articleText.getTitle(),articleText.getContent()));
    }
}

适用场景:
需要保存快照
优点:
隔离状态的存储与获取
缺点:
消耗硬盘或者内存

LangChain与SkillLite集成:AI Agent安全沙箱实践 在AI与自动化技术领域,安全沙箱是实现可信计算的核心机制。其原理是通过资源隔离与权限控制,构建受限的执行环境。技术价值在于平衡功能开放性与系统安全性,尤其适用于处理用户提交的非受信代码或敏感数据。典型应用场景包括AI插件系统、在线代码评测平台等。本文以LangChain框架与SkillLite沙箱的深度集成为例,详解如何通过命名空间隔离、cgroups限制等机制,为AI Agent赋予安全执行动态技能的能力。其中涉及的关键技术点包括Python运行时隔离、动态资源配额管理,以及如何防范Shell注入等常见攻 阅读详情

相关推荐

QCPColorMap实现瀑布图

QCPColorMap实现真正的瀑布图

pf1873252141的博客 5272

【秒懂】设计模式(零基础小白1小时快速上手)

设计模式的本质是面向对象设计原则的实际运用,是对类的封装、继承和多态性以及类的关联关系和依赖关系的充分理解。设计模式是一套前人代码设计经验的总结,它描述了在软件设计过程中的一些不断重复发生的问题和该问题的解决方案。使用设计模式的目的是提高代码的重用性,可读性,可靠性和可扩展性,使程序呈现高内聚,低耦合的特性。

记录所学所思所想所吾 2630

RTKLIB中RTK定位原理(一)

1 模型 1.1 非差观测值 非差观测值与RTKLIB中PPP定位原理——观测模型部分中一致。 1.2 单间单差观测值 若两个接收机距离较近,经过站间单差,电离层对流层延迟可消除,卫星s的钟差以及初始相位被消除,中依然包含接收机初始相位。 1.3 站间星间双差观测值 经过站间星间双差,接收机钟差及初始相位被消除。 2 EKF参数估计 2.1 EKF法则 EKF法则与RTKLIB中PPP定位原理——观测模型部分中一致。 2.2 状态变量与时间更新 (1)状态变量 在RTK...

papunzal的博客 3817

23种设计模式(附代码样例)

平常看的设计模式有很多,就强迫症的都总结起来。一、设计模式分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式...

MiaoTai 1万+

国内用户稳定开通ChatGPT Plus会员的完整实操指南

ChatGPT作为当前最先进的AI对话模型,其技术原理基于Transformer架构和大规模语言预训练。通过深度学习技术,ChatGPT能够理解自然语言并生成高质量回复,在代码生成、文档分析等场景具有重要技术价值。对于需要高频使用的开发者而言,ChatGPT Plus会员提供了优先访问权和GPT-4模型支持等核心功能。在实际应用场景中,国内用户常面临支付限制和区域封锁等挑战。本文针对这些痛点,重点解析如何通过可靠的支付渠道和账号安全策略,实现稳定的会员开通方案,帮助用户突破技术使用壁垒,充分发挥AI助手在开

weixin_29042035的博客 955

嘉立创EDA报错:元件引脚与焊盘未对应报错解决记录

原件引脚与焊盘未对应报错解决方法,一文总结!

2303_77013775的博客 1万+

Android设计模式系列(0)--开篇

=======================2011-08-26==================================有时候,最难的是坚持;有时候缺少的是信念。=======================2011-08-07==================================从接触设计模式到如今大概4年左右的时间,一直都想有朝一日定要精通,坐于床头,侧望...

dianan1505的博客 151

《网络安全自学教程》- Nmap使用及扫描原理分析

使用Nmap进行端口扫描、主机发现、服务识别、操作系统识别、指定脚本、结果导出文件,使用wireshark抓包分析扫描原理。

wangyuxiang946的博客 1万+

《设计模式之禅》学习笔记

这是一系列博客文章的目录。 这本书(《设计模式之禅》)看得有年头了,这些文章也写了很久了,写到第15章,也没有写完……这个坑已经不打算填了。之所以还要整理这个目录,只能说是强迫症犯了……( ̄▽ ̄)" 不过再翻翻这些文章,还是有些感慨。那个时候还在上学呢,曾经对“设计模式”很膜拜,以为是最高大上的东西。现在看来更多的是前人总结的经验吧,了解一下就可以了,关键是要用的时候“熟能生巧”。那时候也正在...

weixin_30914981的博客 154

SCTPPortScan SCTP协议端口扫描、关联地址识别、传输状态检测

Windows:Winsock2+SCTP扩展)。- **SCTP API封装**:Linux下直接调用`socket()`、`connect()`、`getsockopt()`等系统函数,解析`struct sctp_status`和`struct sctp_paddrinfo`获取状态和关联地址。qDebug() << "开始SCTP扫描:" << ipList.size() << "个IP," << ports.size() << "个端口,共" << m_totalTasks << "个任务";

寒寒豆豆软件公司的博客 93

把 ABAP writable CDS view entity 讲透:从只读建模到可写模型的 ABAP CDS 新能力

摘要:SAP引入的writable CDS view entity突破了传统CDS视图只读的限制,允许通过ABAP SQL直接进行数据修改。该特性通过WRITABLE关键字定义,使CDS视图成为与数据库表同等级别的可写对象。其核心价值在于为数据集成、中间层同步等场景提供结构化写入入口,但需注意不应绕过业务规则。最佳实践建议保持底层表结构简单映射,避免复杂变形。这一特性标志着CDS从单纯消费模型向双向数据交互能力的演进,为ABAP开发提供了新的数据边界设计思路。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1313

设计模式读书笔记与总结系列文章

设计模式读书笔记与总结系列文章目录

hacke2' Blog 3386

【华为OD机试真题】7、字符串筛选排序 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母(k>=1) 输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引 如果有重复字母则输出字母的最小位置索引

KJ.JK 2267

设计模式_记设计模式研究的开始(0)

记设计模式研究的开始正式工作也将近一个月的时间了,逐渐对公司的负责项目也渐渐的开始上手了,发现其中有很多不好的地方,介于各种原因,也不方便在这里说。当然这也不是重点,重点是我真的理解到了如果采用合适的设计模式对一个项目进行编码,那么对这个项目的后期维护将会有极大方便。 因此,决定对之前设计模式蜻蜓点水般学习进行一个系统的总结,首先将对设计模式进行一个系统的总结,然后对每种设计模式的优点缺点,适用场景

Jason的一片净土 246

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

研磨设计模式 (陈臣 / 王斌 著)

第1章 设计模式基础(已看)第2章 简单工厂(已看)第3章 外观模式(Facade)(已看)第4章 适配器模式(Adapter) (已看)第5章 单例模式(Singleton)(已看)第6章 工厂方法模式(Factory Method)(已看)第7章 抽象工厂模式(Abstract Factory)(已看)第8章 生成器模式(Builder)(已看)第9章 原型模式(Protot...

void87的博客 307

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

2026最新GOF23种设计模式软件设计师复习备考!看这一篇就够了!

设计模式摘要:设计模式是解决特定软件设计问题的定制化方案,描述类与对象的交互方式。GOF23种设计模式分为创建型、结构型和行为型三类,按范围分为类模式和对象模式。本文简要介绍了工厂模式(简单工厂、工厂方法、抽象工厂)、单例模式、建造者模式、原型模式等创建型模式,适配器、桥接、组合、装饰等结构型模式,以及职责链、命令、观察者、策略等行为型模式。每种模式包含定义、结构、示例和优缺点分析,帮助开发者快速回顾或备考软件设计师考试。设计模式通过封装变化、降低耦合提高系统灵活性和可维护性,但需根据场景合理选择,避免过度

2403_87043561的博客 453

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

BATJ等企业Java面试知识分享,终于彻底把握了

1. 前言 相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢? 拿我自己来说吧!我本人曾经使用 Dubbo 来做分布式项目的时候,使用了 ZooKeeper 作为注册中心。为了保证分布式系统能够同步访问某个资源,我还使用 ZooKeeper 做过分布式锁。另外,我在学习 Kafka 的时候,知道 Kafka 很多功能的实现依赖了 ZooKeeper。 前几天,总结项目经验的时候,

m0_56604931的博客 108

随缘设计模式

先看代码示例:如图,简单的对工厂进行抽重写,即可完成对所创建对象的改变。到这里,你可能以为就结束了?(到这里往上其实是工厂方法,下面才是抽象工厂的核心思想)但是,怎么使用呢?看下图:可以通过传入不同的工厂,实现创建不同的对象,做到“不换架子,只换实现”。接下来其实反观概念:提供一个接口以创建一系列相关或相互依赖的对象,而无需指定他们具体的类。然后回顾一下之前自己用的时候有没有地方使用到过...想了一圈,平时很少用工厂,我搜了一下GPT,它说:只有一些对象配套使用,才使用抽象工厂。

weixin_61943345的博客 213

十分钟带你回顾Spring常问的知识点,干货整理

前言 二面大概50分钟,问的东西很全面,需要做充足准备,就是除了概念以外问的有点懵逼了(呜呜呜)。回来之后把这些题目做了一个分类并整理出答案(强迫症的我狂补知识~)分为spring,jvm,并发编程等,接下来分享一下我的这蚂蚁金服面试的面经+一些我的学习笔记。 02 JVM 线程 JVM内存区域 JVM运行时内存 垃圾回收与算法 JAVA四种引用类型 GC分代收集算法 VS 分区收集算法 GC垃圾收集器 JAVA IO/NIO JVM类加载器 03 JAVA集合 接口继承关系和实现 LIST SE

m0_57431076的博客 156

2024年全网都在跪求的阿里Java修炼开发技术笔记,终于开放下载了,java数据结构面试题

架构师,是我们大部分技术人的职业目标,一名好的架构师来源于机遇(公司)、个人努力(吃得苦、肯钻研)、天分(真的热爱)的三者协作的结果,实践+机遇+努力才能助你成为优秀的架构师。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!虽然我个人也经常自嘲,十年之后要去成为外卖专员,但实际上依靠自身的努力,是能够减少三十五岁之后的焦虑的,毕竟好的架构师并不多。第15章模板方式模式.第5章﹐建造者模式.第18章迭代器模式.第19章中介者模式.第20章﹐备忘录模式。第24章访问者模式…

2401_83977357的博客 782

寒假阅读笔记十四

架构之美——语言与架构(三) 现在大家常说的经典究竟是什么?有人说:经久不衰的万世之作,后人尊敬它称之为经典。也有人说:经典是指具有典范性、权威性的著作。还有人说:经典就是经过历史选择出来的“最有价值的书”。今天我阅读的是《架构之美》的最后一章,其题目为重读经典。似乎在所有的科学领域中,都有一些著作和人名是不能不提的。 在软件工程方面,勋章可能要颁给《设计模式:可复用面...

weixin_30655219的博客 104

【C/C++基础回顾与总结】

个人关于C/C++基础学习的回顾与总结

weixin_44914838的博客 480
上一篇: 设计模式系统回顾(19)解释器模式
下一篇: 设计模式系统回顾(21)状态模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值