拷贝

你还在用BeanUtils进行对象属性拷贝?

筅森魡賤 提交于 2020-03-06 10:23:22
一、背景 1.1 对象拷贝概念 Java中,数据类型分为值类型(基本数据类型)和引用类型,值类型包括int、double、byte、boolean、char等简单数据类型,引用类型包括类、接口、数组等复杂类型。 对象拷贝分为浅拷贝(浅克隆)与深拷贝(深克隆)。 浅拷贝与深拷贝差异 1.2 示例前准备 源对象属性类UserDO.class(以下示例,源对象都用这个) @Datapublic class UserDO { private int id; private String userName; /** * 以下两个字段用户模拟自定义转换 */ private LocalDateTime gmtBroth; private BigDecimal balance; public UserDO(Integer id, String userName, LocalDateTime gmtBroth, BigDecimal balance) { this.id = id; this.userName = userName; this.gmtBroth = gmtBroth; this.balance = balance; }} 造数据工具类DataUtil.class public class DataUtil { /** * 模拟查询出一条数据 * @return */ public

docker从宿主机拷贝文件到容器 or 从容器里拷贝文件到宿主机

人走茶凉 提交于 2020-03-05 10:30:30
1、从宿主机拷贝文件到docker容器 docker cp 宿主机文件路径 容器名/容器ID:拷贝容器中相应的路径 例如:把 /home/test.txt 文件拷贝到 docker-redis(容器名)的 /usr/local/data路径下,在宿主机上执行命令如下: docker cp home/test.txt docker-redis:/usr/local/data 反之,把docker-redis /usr/local/data/test.txt 文件拷贝到 宿主机上,在宿主机上执行命令如下: docker cp docker-redis:/usr/local/data/test.txt /home 来源: CSDN 作者: *sunshine_boy* 链接: https://blog.csdn.net/daocaorenII/article/details/104667546

【Java基础】Java拷贝

╄→гoц情女王★ 提交于 2020-03-04 11:08:39
我是 啤酒就辣条,一个Java。 学而时习之,不亦说乎?希望通过博客的形式,总结、分享,梳理自己、帮助他人。 另外,啤酒就辣条,味道不错哦~ 浅拷贝和深拷贝 浅拷贝 是将基本数据类型复制一份, 共用引用类型的数据 。 深拷贝 是 在堆中完全创建一个新的对象 ,基本数据类型和引用数据类型都进行复制。 代码示例 浅拷贝 首先创建两个类 Father 和 Child public class Father implements Cloneable{ private String name; private Child child; // 此处省略get、set方法 @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); } } public class Child { private String name; // 此处省略get、set方法 } public class CopyTest { public static void main(String[] args) throws CloneNotSupportedException { Father father1 = new Father(); father1.setName("pjjlt");

深浅拷贝

泪湿孤枕 提交于 2020-03-04 07:40:57
浅拷贝 首先可以通过 Object.assign来解决这个问题,很多人认为这个函数是用来深拷贝的。其实并不是,Object.assign 只会拷贝所有的属性值到新的对象中,如果属性值是对象的话,拷贝的是地址,所以并不是深拷贝 let a = { age : 1 } let b = Object . assign ( { } , a ) a . age = 2 console . log ( b . age ) // 1 另外我们还可以通过展开运算符 … 来实现浅拷贝 let a = { age : 1 } let b = { ... a } a . age = 2 console . log ( b . age ) // 1 通常浅拷贝就能解决大部分问题了,但是当我们遇到如下情况就可能需要使用到深拷贝了 let a = { age : 1 , jobs : { first : 'FE' } } let b = { ... a } a . jobs . first = 'native' console . log ( b . jobs . first ) // native 浅拷贝只解决了第一层的问题,如果接下去的值中还有对象的话,么就又回到最开始的话题了,两者享有相同的地址。要解决这个问题,我们就得使用深拷贝了。 深拷贝 这个问题通常可以通过 JSON.parse(JSON

Linux 文件系统挂载

廉价感情. 提交于 2020-03-03 20:12:41
文件系统挂载简介 磁盘分区和格式化完成后,磁盘分区要想能够使用,就需要挂载,在挂载某个分区前需要先建立一个挂载点 挂载:将新的文件系统关联至当前根文件系统 卸载:将某文件系统与当前根文件系统的关联关系移除;卸载时设备没有进程在使用 挂载点:作为要挂载文件系统的访问入口;挂载点事先必须存在;不会被进程使用到的目录;挂载点下原有文件将会被临时隐藏 文件系统挂载管理工具 mount  不跟任何参数显示当前系统已经挂载的设备及挂载点   cat /proc/mounts 显示内核中挂载的设备,mount命令就是去读取该文件显示出来   cat /etc/mtab mount命令去挂载和卸载的操作信息会记录到该文件,也可以显示系统挂载的设备 mount [options] -t FSTYPE -o [option] 设备名称 挂载点 [options] 命令选项   -n        挂载后不更新操作记录到/etc/mtab文件   --bind dir1 dir2 将dir1挂载到dir2上,使得dir2也能访问dir1的文件(绑定某个目录到另外一个目录)   -t FSTYPE     指定挂载的文件系统类型   -r        只读挂载   -w        读写挂载   -L LABLE     指定卷标名,用卷标名字挂载;也可以使用LABLE="lable"   -U

python模块之os sys shutil

你离开我真会死。 提交于 2020-03-03 18:27:33
os模块 os模块是与操作系统交互的一个接口 #当前执行这个python文件的工作目录相关的工作路径 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') #和文件夹相关 os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 # 和文件相关 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat('path/filename') 获取文件/目录信息 # 和操作系统差异相关 os.sep

python测试开发面试之深浅拷贝

岁酱吖の 提交于 2020-03-03 17:32:27
先来道题热热身 a = ('a', 'b','c') c = copy.copy(a) d = copy.deepcopy(a) if c == d: print("c和d的值相等") if id(c) == id(d): print("c和d的地址相等") 想想最后打印的是什么? 什么是深拷贝和浅拷贝 深拷贝,就是在对某个对象进行拷贝的时候,如果这个对象持有其他对象的引用,在拷贝的时候会将要拷贝的对象以及引用的对象,一起拷贝。 而浅拷贝只拷贝当前对象和持有的索引,不拷贝索引指向的对象。举个例子说明一下,比如当前有个列表a = [1,2,3], b = [3,4,a],[3,4,a]对象持有了[1,2,3]对象的引用,在对b进行深拷贝的时候,会将a对象一起拷贝一份,而浅拷贝的时候则不会。 a = [1,2,3] b = [4,5,6,a] 对b进行浅拷贝 c = copy.copy(b) 这个时候对a对象进行修改,会影响c a.append(8) c [4, 5, 6, [1, 2, 3, 8]] 对b进行深拷贝之后,再对a进行修改,则不会影响到d d = copy.deepcopy(b) d [4, 5, 6, [1, 2, 3, 8]] a.append(66) d [4, 5, 6, [1, 2, 3, 8] 当深浅拷贝遇到可变与不可变对象时会发生什么

Git下载GitHub仓库里的某一个文件夹或某一个文件

拟墨画扇 提交于 2020-03-03 17:14:16
从Github上下载github上的整个项目,可以用下面指令: git clone https://github.com/XXX/xxxxx.git 其中:XXX是用户在Github上的用户名 xxxxx.git是用户在Github上的仓库名 那如果只是想下载用户在Github上仓库里的某一个文件夹,怎么办呢? 没有直接的Git命令可以使用,在Windows里,可以借用TortoiseSVN,,下载TotoiseSVN安装。 1.登录GitHub,选择仓库里待下载的文件夹,拷贝浏览器里的网址 https://github.com/XXX/xxxxx/tree/master/folder1/folder2 对于master分支,把上述语句里的tree/master换成trunk 拷贝: https://github.com/XXX/xxxxx/trunk/folder1/folder2 2.选择本机电脑上的目标文件夹,点鼠标右键,选择SVN Checkout 3.如下图,点OK按钮,即可checkout 指定文件夹 4.如果待checkout的不是master分支下的folder,而是别的分支,比如develop分支,则上面从浏览器里拷贝到的网址样式如下: https://github.com/XXX/xxxxx/tree/develop/folder1/folder2 把tree

Python之深浅拷贝

时光总嘲笑我的痴心妄想 提交于 2020-03-02 01:32:33
数字和字符串 对于数字 字符串而言,赋值、浅拷贝、深拷贝无意义,因为永远指向同一内存地址 1 import copy 2 #定义变量 数字、字符串 3 n1 = 123 4 #n1 = 'nick' 5 print(id(n1)) 6 7 #赋值 8 n2 = n1 9 print(id(n2)) 10 11 #浅拷贝 12 n3 = copy.copy(n1) 13 print(id(n3)) 14 15 #深拷贝 16 n4 = copy.deepcopy(n1) 17 print(id(n4)) 字典、元组。列表 对于字典、元祖、列表 而言,进行赋值、浅拷贝和深拷贝时,其内存地址的变化是不同的。 1、赋值 创建一个变量该变量指向原来内存地址 1 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]} 2 n2 = n1 2、浅拷贝 在内存中只额外创建第一层数据 1 import copy 2 3 n1 = {"k1": "nick", "k2": 123, "k3": ["jenny", 666]} 4 n2 = copy.copy(n1) 3、深拷贝 在内存中将所有的数据重新创建一份(排除最后一层,即:python内部对字符串和数字的优化) 1 import copy 2 3 n1 = {"k1": "nick", "k2"