适配器模式
适配器模式
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能使用一起工作的那些类可以一起工作。
如 :
1 |
|
好想在你的鼻尖 扎个猛子
适配器模式
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能使用一起工作的那些类可以一起工作。
如 :
1 |
|
深拷贝浅拷贝及原型模式
浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。即默认拷贝构造函数只是对对象进行浅拷贝复制(逐个成员依次拷贝),即只复制对象空间而不复制资源。
如 :
1 |
|
可以发现对于拷贝的对象,修改拷贝之前的属性,如属性是基本类型,则无影响,如属性是对象,则会影像拷贝之后的对象。所以浅拷贝会带来数据安全上的问题。
深拷贝,在拷贝引用类型成员变量时,为引用类型的数据成员另辟了一个独立的内存空间,实现真正内容上的拷贝。
对上面的代码实现深拷贝
1 |
|
问:Cloneable接口是一个空接口,为什么需要实现Cloneable接口?
答:Cloneable是标示接口与java.io.Serializable类似,用于告知JVM该对象实现clone。并且super.clone()可以返回一个复制。如果实现Cloneable接口直接super.clone(),会抛出CloneNotSupportedException。
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象,从一个对象创建另外一个可定制的对象,而且不需要知道任何创建的细节。
基本代码
1 | @Slf4j |
接口幂等性解决方案
幂等操作:其任意多次执行所产生的影响均与一次执行的影响相同
解决方案:
1、数据库层面加上唯一索引,防止新增脏数据.
2、业务表内添加状态,更新时添加状态更新. update xxxx where status = 1
4、token校验机制,防止页面重复提交,由服务端生成token,客户端每次请求携带对应的toekn,服务端判断token是否存在,不存在则表示已经处理过,存在则删除。
可使用AOP统一进行token检验。
5、数据库悲观锁 select X from table where id = xx for update;
6、基于版本号的更新,更新条件中带上版本号.数据库乐观锁
7、最简单 select + insert方法,适合并发不高的系统.
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true