湖北住房与城乡建设厅网站石家庄建站工具

news/2025/10/6 5:11:56/文章来源:
湖北住房与城乡建设厅网站,石家庄建站工具,个人网站设计模板,网站优化北京联系电话?在设计模式系列文章是阅读《设计模式之禅》之后自己新的加上在项目中的应用于思考#xff0c;想要系统深入学习的朋友还是建议学习一下《设计模式之禅》#xff0c;这本书中通过例子讲的更加循序渐进#xff0c;也更容易理解。 理解理念 这种模式旨在让程序能够记住一个或…在设计模式系列文章是阅读《设计模式之禅》之后自己新的加上在项目中的应用于思考想要系统深入学习的朋友还是建议学习一下《设计模式之禅》这本书中通过例子讲的更加循序渐进也更容易理解。 理解理念 这种模式旨在让程序能够记住一个或多个实体的属性或历史状态并且能够进行还原操作。这种问题的复杂性通常来自于“多”这个方面。如果我们只需要备份一个属性并且只需要备份最近的状态那么我们只需要创建一个与该属性相同的变量。同样地如果我们只需要备份少量对象并且对象属性也很少那么手动实现备份可能是可行的。但是如果项目中存在多个需要备份的对象并且这些对象的属性也很多那么我们需要使用工具来实现备份操作。因此我们抽象出了这种模式来帮助解决这类问题。 代码实现 对于上述复杂场景有两种备份实现思路。一种是让对象自己实现创建备份的接口另一种是专门创建一个对象来进行备份操作。在实现的细节方面如果对象内部只有基本数据类型的属性则不需要考虑深拷贝和浅拷贝。但是如果内部存在引用数据类型的属性则需要在拷贝赋值时使用深拷贝的方式。为了规范对象的属性和操作需要在项目中需要进行备份的对象中实现统一的克隆接口自定义一个备份接口并实现克隆方法。这样我们也可以在备份对象时进行检测和区分。 public class BeanUtils {public class BeanUtils {public static HashMapString, Object backupPro(Object bean){HashMapString,Object result new HashMap();try{BeanInfo beanInfo Introspector.getBeanInfo(bean.getClass());PropertyDescriptor[] propertyDescriptors beanInfo.getPropertyDescriptors();for (PropertyDescriptor des : propertyDescriptors) {String filedName des.getName();Method getter des.getReadMethod();Object filedValue getter.invoke(bean,new Object[]{});if (!filedName.equalsIgnoreCase(class)){result.put(filedName,filedValue);}}}catch (Exception e){System.out.println(程序自定义的异常处理);}return result;}public static void restorePro(Object bean,HashMapString,Object propMap){try{BeanInfo beanInfo Introspector.getBeanInfo(bean.getClass());PropertyDescriptor[] propertyDescriptors beanInfo.getPropertyDescriptors();for (PropertyDescriptor des : propertyDescriptors){String filedName des.getName();if (propMap.containsKey(filedName)){Method setter des.getWriteMethod();setter.invoke(bean,new Object[]{propMap.get(filedName)});}}}catch (Exception e){System.out.println(程序自定义的异常处理);}} } public class Caretaker {/*** 双层Map是考虑建立以时间戳为维度的多个备份结合具体场景也可以设计成队列* 或是指定版本号的备忘录亦或是先进先出的队列等同时可以控制具体的大小*/private MapLong,MapString,Object mementoCollection new HashMap();public Long createMemento(Object bean){long timestamp System.currentTimeMillis();mementoCollection.put(timestamp,BeanUtils.backupPro(bean));return timestamp;}public void restoreBean(Long version,Object bean){BeanUtils.restorePro(bean, (HashMapString, Object) mementoCollection.get(version));} }public class Originator{private String state1;private String state2;public Originator(){}public Originator(String state1, String state2) {this.state1 state1;this.state2 state2;}public String getState1() {return state1;}public void setState1(String state1) {this.state1 state1;}public String getState2() {return state2;}public void setState2(String state2) {this.state2 state2;}Overridepublic String toString() {return state1 state1 , state2 state2 \;} }public class Client {public static void main(String[] args) {Originator originator new Originator(state1a,state2a);Caretaker caretaker new Caretaker();Long mementoVersion caretaker.createMemento(originator);originator.setState2(state2b);System.out.println(originator.toString());caretaker.restoreBean(mementoVersion,originator);System.out.println(originator.toString());} } 项目应用 在内部项目——快速取数一个查询进来会有一个QueryContext里面记录着查询的状态信息以及上线文信息利用设计模式里面可以在关键节点对QueryContext进行备份当需要返回到某一个步骤进行操作的时候我们就获取指定版本的备份让程序在指定入口重新执行。这样避免了程序从头执行的不必要成本——前面的已经执行过了那就也没必要再执行了。这样不仅能节省资源而且也可以为用户提供更多的选择以及更高的使用体验——重新执行从错误的地方开始好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/929002.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

h5个人博客网站模板门户 网站 asp

香港身份、香港永居身份、香港护照区别,三种证件之间是什么关系? 在港“通常性”住满7年之后,可以申请永居身份! 香港身份:也可以称之为临时身份,无论通过香港优才计划、高才通计划、专才计划或者留学拿身份…

iis7.5 网站打不开号店网站建设公司

小阿轩-yx存储引擎MyISAM和InnoDB 存储引擎概述 什么是存储引擎 是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能使用不同的存储引擎还可以获得特定的功能MySQL…

企业网站设计行业健网站怎么做

1. 开局在多线程环境中,经常会碰到需要加锁的情况,由于现在的系统基本都是集群分布式部署,JVM的lock已经不能满足分布式要求,分布式锁就这样产生了。。。百度一下,网上有很多分布式锁的方案或者例子,琳琅满…

绵阳网站建设报价西安响应式网站

【LetMeFly】2316.统计无向图中无法互相到达点对数:广度优先搜索(BFS) 力扣题目链接:https://leetcode.cn/problems/count-unreachable-pairs-of-nodes-in-an-undirected-graph/ 给你一个整数 n ,表示一张 无向图 中…

创意网站建设设计济南专业网站托管公司

原标题:考前秘籍,无形资产的定义及确认考查导向:每年考3分左右;比较简单,重要程度一般;建议与“固定资产”一章一起类比学习,效果更佳,效率更高。近三年主要考点:(1)无形…

企业网站如何优化排名阳江房产网二手房林夏婷经纪人

浅谈连续逆F类的基础理论 各种逆类型的功放好像都少引人关注,因为很多人学完正的连续B/J类和连续F类,想当然的类推到了连续逆F类上面去。貌似连续逆F类就是连续F类的电压电流交换一下而已,无需额外的注意,实际并非那么简单的。 浅…

廊坊网站建设咨询青橙网络如何建设cpa影视网站

我的最后两个博客讨论了长时间轮询和Spring的DeferredResult技术,并且为了展示这些概念,我将我的Producer Consumer项目中的代码添加到了Web应用程序中。 尽管该代码演示了博客所提出的观点,但其逻辑上确实包含大量漏洞。 除了在实际的应用程…

企业电器网站建设方案服务器租用是什么意思

在linux下使用rz,就可以从本机上传到Linux服务器 在linux中rz 和 sz 命令允许开发者与主机通过串口进行传递文件了,下面我们就来简单的介绍一下rz 和 sz 命令的例子。 sz:将选定的文件发送(send)到本地机器 rz:运行该命…

网站建设对企业的好处有哪些全方位营销型网站

目录 AVL树概念 AVL树结构 AVL树插入 LL型 - 右单旋 RR型 - 左单旋 LR型 - 左右双旋 RL型 - 右左双旋 插入代码实现 AVL树测试 附AVL树实现完整代码 AVL树概念 前面的博客介绍了搜索二叉树,二叉搜索树-CSDN博客 在某些特定的情况下,⼆叉搜索树…

计算机作业做网站网站页脚信息

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 1月6日消息 谷歌起草“机器人宪法” 极越与福耀集团达成合作 三星电子宣布与现代汽车集团合作 OpenAI下周将推GP…

网站建设廴金手指花总壹柒昆山网站建设及推广

目录 1.认识PDCA: 2.PDCA循环的经典案例 3.PDCA的四个阶段和八个步骤 4.PDCA循环的优缺点: 5.案例 6.其他作用 1.认识PDCA: PDCA循环最早由美国质量统计控制之父Shewhat(休哈特)提出的PDS(Plan Do Se…

个人网站数据库大小深圳网站建设ucreator

【声呐仿真】学习记录0.5-配置ssh远程连接docker、在docker中使用nvidia显卡 配置ssh远程连接docker1.端口映射2.配置ssh 在docker中使用nvidia显卡配置CUDA 注意:之前已经创建过容器的,需要打包成镜像,重新创建容器,因为要在创建…

网站网站娱乐建设wordpress置顶文章不生效

简介 将实例化代码提取出来,放到一个类中统一管理和维护,达到和主项目依赖关系的解耦,从而提高项目的扩展性和维护性。 工厂模式将复杂的对象创建工作隐藏起来,而仅仅暴露出一个接口供客户使用,具体的创建工作由工厂管…

口碑好的秦皇岛网站建设哪里有手机建网站制作

一、章节内容概述 战略规划帮助做好当前的业务以迎接未来。战略规划需要思考业务应该是什么,当前必须做什么才能赢得未来。战略规划需要进行风险决策,需要有组织地抛弃过去的业务,要求清晰界定和明确安排为实现理想的未来而开展的工作。战略…

建网站需要软件国内经典网站

1.程序计数器(Program Counter Register) 程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现&…

自学网站编程有多少种做网站后台程序

几天前, WildFly 9发布了,可以肯定的重点之一是Undertow Web子系统中对HTTP / 2.0的支持。 由于Hawkular最近已开始使用WildFly 9(从8.2开始)作为其基础服务器,因此尝试将http2用于从Hawkular-Wildfly-Monitor客户端到…

上海网站推广多少钱wordpress实现pdf浏览

力扣 解题报告: 二分。但是有不少细节要考虑清楚。 所以干脆考虑另一种二分的方式。也就是第二次二分的时候,把两半数组给拼成一个完整的数组,当然下标需要是虚拟的,这一步可以用偏移量取模完成。这样就不需要考虑边界情况了。 …

macOS 编辑字幕

只是为了记录。我使用的软件是 Tero Subtitler 参见:Subtitle editor software | Reddit

公司如何申请一个网站网址南京华璋建设网站

安装和创建虚拟环境 参考:linux系统下Python虚拟环境的安装和使用安装Django包 先进入虚拟环境,在联网下执行:pip install django1.8.7 1.8.7表示django的版本,如果不指定,会默认安装最新版的django。包会被安装到/usr…

网站建设是无形资产网页页面布局

这一节介绍一下 Django 的中间件。 关于中间件,官方文档的解释为:中间件是一个嵌入 Django 系统的 request 和 response 的钩子框架,是一个能够全局改变 Django 输入/输出的系统。 我们可以这样理解,一个 request 请求发送到 Dj…