拷贝

python 第六章 小数据池+深浅拷贝+集合

本小妞迷上赌 提交于 2020-01-25 02:54:21
python 第六章 小数据池 # == 判断两边内容是否相等 a = 10 b = 10 print(a == b)# 判断a是否等于b # 输出 True # is 是 基于内存地址进行判断,用id判断 # 相同输出相同内容,否则输出id不同 # pring(id(数据类型)) # 查看内存地址 a = 10 b = 10 print(id(a)) # 输出4401028560 print(id(b)) # 输出4401028560 print(a is b) # 输出False # 代码块 -- 一个文件,函数,类,模块,终端的每一行 # 代码块支持范围: # 数字: # 同一代码块下,只要内容相同就采用相同的内存地址,-5以后就不是,正无穷 # 在做乘法的时候范围 -5~256 *** # 在做乘法的时候不能使用浮点系 # # 字符串: # 同一代码块下,只要内容相同就采用相同的内存地址 # 乘法的时候总长度不能超过20 # 乘法的时候中文,特殊符号只能乘以1或0 # # 布尔值: # 同一代码块下,只要内容相同就采用相同的内存地址 # # # 小数据池 -- 缓存机制(驻留机制) # 小数据池支持的范围 # 数字: # -5~256 *** # # # 字符串: # 同一代码块下,只要内容相同就采用相同的内存地址 # 乘法的时候总长度不能超过20 *** #

MySQL-16-备份

☆樱花仙子☆ 提交于 2020-01-24 19:02:56
备份的作用 灾难恢复 回滚 审计 测试 创建备库 难点 在线备份(热备份),即不停机备份 RTO(恢复时间目标)和 PRO(恢复点目标) 越来越严格 FTWRL 导致的锁表 快照备份 快照备份是指通过文件系统支持的快照功能对数据库进行备份。 备份的原理是将所有的数据库文件放在同一分区中,然后对该分区执行快照工作,对于Linux而言,需要通过 LVM(Logical Volumn Manager)来实现。LVM 使用写时复制(copy-on-write)技术来创建快照,对整个卷的某个瞬间的逻辑副本。 LVM有一个快照预留区域,如果原始卷数据有变化时,LVM保证在任何变更写入之前,会复制受影响块到快照预留区域。简单来说,快照区域内保留了快照点开始时的一致的所有old数据。对于更新很少的数据库,快照也会非常小。 对于MySQL而言,为了使用快照备份,需要将数据文件,日志文件都放在一个逻辑卷中,然后对该卷快照备份即可。 由于快照备份,只能本地,因此,如果本地的磁盘损坏,则快照也就损坏了。快照备份更偏向于对误操作防范,可以将数据库迅速恢复到快照产生的时间点,然后结合二进制日志可以恢复到指定的时间点。 Mysqldump 关键参数: –single-transaction:在开始备份前,执行start transaction命令,以此来获取一致性备份,该参数仅对innodb存储引擎有效

250 浅拷贝Object.assign(target, ...sources),深拷贝

心已入冬 提交于 2020-01-24 15:52:44
浅拷贝:Object.assign(target, ...sources)。 **Object.assign()** :方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象。 <!-- 补充:数组也可以用for ... in --> <script> var arr = ['pink', 'red', 666] for (var k in arr) { console.log(k); // 0 1 2 console.log(arr[k]); // pink red 666 } </script> <!-- 浅拷贝 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script> // 浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用. // 深拷贝拷贝多层, 每一级别的数据都会拷贝. var obj = { id: 1, name: 'andy'

java对象拷贝

痞子三分冷 提交于 2020-01-24 05:58:42
java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的: @Test public void testassign(){ Person p1=new Person(); p1.setAge(31); p1.setName("Peter"); Person p2=p1; System.out.println(p1==p2);//true } 如果创建一个对象的新的副本,也就是说他们的初始状态完全一样,但以后可以改变各自的状态,而互不影响,就需要用到java中对象的复制,如原生的clone()方法。 如何进行对象克隆 Object对象有个clone()方法,实现了对象中各个属性的复制,但它的可见范围是protected的,所以实体类使用克隆的前提是: ① 实现Cloneable接口,这是一个标记接口,自身没有方法。 ② 覆盖clone()方法,可见性提升为public。 @Data public class Person implements Cloneable { private String name; private Integer age; private Address address; @Override protected Object clone() throws CloneNotSupportedException { return

12 webpack CopyWebpackPlugin学习

扶醉桌前 提交于 2020-01-22 22:41:02
文章目录 文章参考 安装 应用场景 参数说明 webpack.config.js 配置信息 文章参考 CopyWebpackPlugin 中文文档 安装 npm install --save-dev copy-webpack-plugin 应用场景 将一些资源(不需要file-loader处理的)拷贝到指定目录,例如static的静态资源 参数说明 属性 功能描述 参数说明 from 定义要拷贝的源文件 from:__dirname+’/src/components’ to 定义要拷贝到的目标文件夹 to:__dirname+’/dist’ toType file 或者 force 强制覆盖前面的插件 可选,默认是文件 context 可选,默认basecontext可用specific context flatten 只拷贝指定的文件 可以用模糊匹配 ignore 忽略拷贝指定的文件 可以模糊匹配 webpack.config.js 配置信息 const CopyWebpackPlugin = require ( "copy-webpack-plugin" ) ; plugins : [ new CopyWebpackPlugin ( [ // 将 static/huangbiao 文件夹下的所有文件全部打包到 工程的根目录下 { from : "static/huangbiao

C++ 虚拟继承

眉间皱痕 提交于 2020-01-22 21:31:14
http://blog.csdn.net/wangxingbao4227/article/details/6772579 C++中虚拟继承的概念 为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。 class 派生类名:virtual 继承方式 基类名 virtual是关键字,声明该基类为派生类的虚基类。 在多继承情况下,虚基类关键字的作用范围和继承方式关键字相同,只对紧跟其后的基类起作用。 声明了虚基类之后,虚基类在进一步派生过程中始终和派生类一起,维护同一个基类子对象的拷贝。 C++虚拟继承 ◇概念: C++使用虚拟继承(Virtual Inheritance),解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。 ◇解决问题: 解决了二义性问题,也节省了内存,避免了数据不一致的问题。 ◇同义词: 虚基类(把一个动词当成一个名词而已) 当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例

浅谈深拷贝与浅拷贝

浪尽此生 提交于 2020-01-22 08:32:18
浅谈浅拷贝与深拷贝 浅拷贝 一 、不可变类型(字符串、数字、元组) copy函数是浅拷贝,只对可变类型的第一层对象进行拷贝,对拷贝的对象开辟新的内存空间进行存储,不会拷贝对象内部的子对象。 import copy # 不可变类型: 数字 、字符串、 元组 a1 = "abc" b1 = copy.copy(a1) # 查看内存地址 print(a1, id(a1)) print(b1, id(b1)) # 内存地址相同 abc 2189271452784 print("=" * 30) a2 = 123 b2 = copy.copy(a2) # 查看内存地址 print(a2, id(a2)) print(b2, id(b2)) # 内存地址相同 123 1823767392 print("=" * 30) a3 = (123, "abc", [1, 2]) b3 = copy.copy(a3) # 查看内存地址 print(a3, id(a3)) print(b3, id(b3)) # 内存地址相同 2234778896712 print("=" * 30) # 查看子对象内存地址 print(a3[1], id(a3[1])) print(b3[1], id(b3[1])) # 内存地址相同 abc 2923810278512 print("="*30) print(a3[2]

设计模式之------原型模式

做~自己de王妃 提交于 2020-01-22 01:26:26
原型模式是用于创建重复的对象,同时又能保证性能,通过复制现有实例来创建新的实例,无需知道类的信息。 与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过拷贝一个现有对象生成新对象的。 那么java中是如何实现原型模式的呢?原型模式的本质就是克隆,拷贝一个一模一样的对象。 java中的实现原型模式可以分为两种,一种是浅拷贝,一种是深拷贝。 浅拷贝实现原型模式就是实现了一个克隆接口,该接口就是用于创建当前对象的克隆。下面通过代码来实现浅拷贝。 首先定义一个类,这个类实现Cloneable接口里面的clone()方法。 public class Person implements Cloneable { String name ; int age ; int [ ] a ; @Override public Object clone ( ) throws CloneNotSupportedException { Object obj = super . clone ( ) ; return obj ; } public String getName ( ) { return name ; } public void setName ( String name ) { this . name = name ; } public int getAge ( ) { return age

C++中构造函数,拷贝构造函数和赋值函数的区别和实现

不羁的心 提交于 2020-01-22 00:59:57
C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法。下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存。(构造函数的命名必须和类名完全相同) 首先说一下一个C++的空类,编译器会加入哪些默认的成员函数 ·默认构造函数和拷贝构造函数 ·析构函数 ·赋值函数(赋值运算符) ·取值函数 **即使程序没定义任何成员,编译器也会插入以上的函数! 注意:构造函数可以被重载,可以多个,可以带参数; 析构函数只有一个,不能被重载,不带参数 而默认构造函数没有参数,它什么也不做。当没有重载无参构造函数时, A a就是通过默认构造函数来创建一个对象 下面代码为构造函数重载的实现 <span style="font-size:14px;">class A { int m_i; Public: A() { Cout<<”无参构造函数”<<endl; } A(int i):m_i(i) {} //初始化列表 }</span> 2.拷贝构造函数 拷贝构造函数是C++独有的,它是一种特殊的构造函数,用基于同一类的一个对象构造和初始化另一个对象。 当没有重载拷贝构造函数时,通过默认拷贝构造函数来创建一个对象 A a; A b(a); A b=a;

C++-Record21—浅拷贝及深拷贝问题

半腔热情 提交于 2020-01-21 23:58:47
目录 浅拷贝问题抛出 浅拷贝问题的分析 浅拷贝问题的解决方案 默认等号操作符执行赋值操作时也是浅拷贝 总体代码 浅拷贝问题抛出 先看一段代码,定义一个Name类,类里面,手工定义的一个构造函数贺析构函数,没有定义拷贝函数: class Name { public: Name(const char *myp) { m_len = strlen(myp); m_p =(char *) malloc(m_len + 1); // strcpy(m_p, myp); } //Name obj2 = obj1; ~Name() { if (m_p != NULL) { free(m_p); m_p = NULL; m_len = 0; } } protected: private: char *m_p ; int m_len; }; 开始进行调用,会发现中间这步"Name obj2 = obj1;"是需要调用拷贝构造函数的,但类中并没有手动定义,所以,调用的是编译器自动匹配的拷贝构造函数。 void objplaymain() { Name obj1("abcdefg"); Name obj2 = obj1; //C++编译器提供的 默认的copy构造函数 浅拷贝 } void main91() { objplaymain(); cout<<"hello..."<<endl; system(