精华内容
下载资源
问答
  • 拷贝就是复制的意思深拷贝就是完全在另一个地址空间复制当前值,而浅拷贝就是只复制指向复杂数据类型指针,并没有创建一个新地址空间 看下面例子就更加清晰知道了 let book = { name:"局外人", types:{ ...

    什么是深拷贝,浅拷贝

    拷贝就是复制的意思深拷贝就是完全在另一个地址空间复制当前的值,而浅拷贝就是只复制指向复杂数据类型的指针,并没有创建一个新的地址空间
    在这里插入图片描述
    看下面的例子就更加清晰知道了

      let book = {
                name:"局外人",
                types:{
                    t1:"中文版",
                    t2:"英文版"
                }
            }
    
    
            let obj= {}
            for(let i in book){
                obj[i] = book[i]
            }
    
            book.name = "123"
    
            book.types.t1 = "西班牙文"
    
            console.log(obj,book);
    
    
    

    在这里插入图片描述

    这里的name是字符串类型属于基本数据类型,复制的话会创建另一个地址空间,所以改变之后两个对象的值不一样,而types属于引用类型了,这么复制只复制了指针改变之后两个的值都 改变成了西班牙文了。综上整个过程是一个浅拷贝

    除此之外浅拷贝还有

    var obj = Object.assign({},book)
    

    Object.assign(target,…source) ,target目标对象,book是原对象,这里目标对象为空是为了防止assign改变目标对象

    深拷贝有哪些方式

    用JSON下的方法

    let deepClone = function (obj) {
    
        let result = JSON.parse( JSON.stringify(obj););
         //先将对象转换为json字符串形式
        //将转换而来的字符串转换为原生js对象
       
    };
    
    

    但是这种方法有一点点的小缺陷,就是如多被拷贝对象里面有函数,那么函数不能被拷贝

    用递归实现

     function deepClone(obj = {}){
         if(typeof obj !=='object' || obj ==null){
            //  obj 是null,或者不是对象和数据,直接返回
             return obj
         }
        //  
        let result 
        if(obj instanceof Array){
            result = []
        }else{
            result = {}
        }
    
        for(let key in obj){
            // 保证key不是原型的属性
            if(obj.hasOwnProperty(key)){
                result[key] = deepClone(obj[key])
            }
        }
        return result
     }
    
    
    展开全文
  • 在设计表结构时要考虑下面几个方面:字段名要通俗易懂且具有代表性,字段名不允许重复,为了编程序方便,尽量使用英文名字。字段类型选择原则是:根据需求选择合适字段类型,在满足需求情况下字段类型尽可能小...

    在数据库中,表是最重要、最基本的对象,是存储数据的基本单位。数据表从哪里来呢?数据表由关系模式转换而来。但不是简单的转换。

    在设计表结构时要考虑下面几个方面:

    字段名要通俗易懂且具有代表性,字段名不允许重复,为了编程序方便,尽量使用英文名字。

    字段类型选择的原则是:根据需求选择合适的字段类型,在满足需求的情况下字段类型尽可能小。不参加数学计算的数字定义为字符串型,如学号、电话号码等。

    字段长度是指能容纳该字段值的最大数量,如学号为12位数字,长度设置为12;课程名可能包含10个汉字,长度就要设置为10。

    字符集编码选择:含有中文字符时统一采用utf8或gbk类型,以避免乱码情况的发生。

    SQL语句中关键字做一些说明:

    PRIMARY KEY用于定义主键。也可以使用多字段来定义主键。

    COMMENT注释该字段的含义。

    NOT NULL是非空约束。

    DEFAULT为该字段加默认值,可以减少输入次数。

    AUTO_INCREMENT为自增型属性,一般用作主键,数值会自动加1。

    当表中有外键字段时用CONSTRAINT设置外键。

    ENGINE=InnoDB是设置该表的存储引擎,DEFAULT CHARSET=utf8是设置该表的默认字符集。

    teacher

    Teacher_id

    Teacher_name

    age

    Enter_time

    professional

    10101

    潘多拉

    18

    2018-2-1

    讲师

    10102

    普罗米修斯

    27

    2018-3-5

    教授

    10103

    波塞冬

    29

    2015-9-10

    副教授

    Department

    字段名

    数据类型

    长度

    是否空值

    是否主键外键

    默认值

    备注

    Department_id

    char

    3

    NOT NULL

    主键

    学校编号

    Department_name

    varchar

    10

    NOT NULL

    学校名称

    use course;

    create table department(

    Department_id char(3) NOT NULL PRIMARY KEY COMMENT '学院编号',

    Department_name varchar(10) NOT NULL COMMENT '学院名称'

    )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    teacher

    字段名

    数据类型

    长度

    是否空值

    是否主键外键

    默认值

    备注

    Teacher_id

    char

    5

    NOT NULL

    主键

    教师编号

    teacher_name

    varchar

    4

    NOT NULL

    教师姓名

    Department_id

    char

    3

    NOT NULL

    外键

    学校编号

    gender

    char

    1

    NOT NULL

    性别

    CREATE TABLE teacher(

    Teacher_id char(5) NOT NULL PRIMARY KEY COMMENT '教师编号',

    Teacher_Name varchar(4) NOT NULL COMMENT '教师姓名',

    Department_id char(3) NOT NULL COMMENT '学院编号',

    Gender char(1) NOT NULL DEFAULT '男' COMMENT '性别',

    CONSTRAINT teacher_department FOREIGN KEY (Department_id)

    REFERENCES department(Department_id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    course

    字段名

    数据类型

    长度

    是否空值

    是否主键外键

    默认值

    备注

    Course_id

    char

    4

    NOT NULL

    主键

    课程号

    course_name

    varchar

    10

    NOT NULL

    课程名

    capacity

    tinyint

    4

    NOT NULL

    60

    人数上限

    Teacher_id

    char

    5

    NOT NULL

    外键

    教师编号

    CREATE TABLE course(

    Course_id char(4) NOT NULL PRIMARY KEY COMMENT '课程号',

    Course_name varchar(10) NOT NULL COMMENT '课程名',

    Capacity tinyint(4) NOT NULL DEFAULT 60 COMMENT '人数上限',

    Teacher_id char(5) NOT NULL COMMENT '教师编号',

    CONSTRAINT course_teacher FOREIGN KEY (Teacher_id)

    REFERENCES teacher (Teacher_id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Classes

    字段名

    数据类型

    长度

    是否空值

    是否主键外键

    默认值

    备注

    class_id

    char

    8

    NOT NULL

    主键

    班级编号

    class_name

    varchar

    8

    NOT NULL

    班级名

    Year

    smallint

    4

    NOT NULL

    年度

    Department_id

    char

    3

    NOT NULL

    外键

    学院编号

    CREATE TABLE classes(

    Classe_id char(8) NOT NULL PRIMARY KEY COMMENT '班级编号',

    Class_name varchar(8) NOT NULL COMMENT '班级名',

    Year smallint(4) NOT NULL COMMENT '年度',

    Department_id char(3) NOT NULL COMMENT '学院编号',

    CONSTRAINT class_department FOREIGN KEY (Department_id)

    REFERENCES department (Department_id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    students

    字段名

    数据类型

    长度

    是否空值

    是否主键外键

    默认值

    备注

    students_id

    char

    12

    NOT NULL

    主键

    学号

    students_name

    varchar

    4

    NOT NULL

    姓名

    class_id

    char

    4

    NOT NULL

    外键

    班级编号

    phone

    varchar

    18

    NOT NULL

    电话

    CREATE TABLE students(

    Student_id char(12) NOT NULL PRIMARY KEY COMMENT '学号',

    Student_name varchar(4) NOT NULL COMMENT '姓名',

    Class_id char(4) NOT NULL COMMENT '班级编号',

    Phone varchar(18) NOT NULL COMMENT '电话',

    CONSTRAINT student_class FOREIGN KEY (Class_id) REFERENCES

    classes (Classe_id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    choose

    字段名

    数据类型

    长度

    是否空值

    是否主键外键

    默认值

    备注

    Choose_id

    char

    11

    NOT NULL

    主键

    auto_increment

    student_id

    varchar

    12

    NOT NULL

    学号

    Course_id

    char

    4

    NOT NULL

    外键

    课程号

    choose_time

    datetime

    NOT NULL

    选课时间

    report

    int

    0

    成绩

    CREATE TABLE choose(

    Choose_id int(11) NOT NULL PRIMARY KEY

    AUTO_INCREMENT,

    Student_id char(12) NOT NULL COMMENT '学号',

    Course_id char(4) NOT NULL COMMENT '课程号',

    Choose_time datetime NOT NULL COMMENT '选课时间',

    report int DEFAULT 0 COMMENT '成绩',

    CONSTRAINT choose_course FOREIGN KEY (Course_id)

    REFERENCES course (Course_id),

    CONSTRAINT choose_student FOREIGN KEY (Student_id)

    REFERENCES students (Student_id)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    显示表结构的命令,两种方式:

    DESCRIBE/DESC 表名SHOW CREATE TABLE 表名 查看表的详细信息

    使用DESCRIBE table_name可显示指定表的结构

    DESCRIBE也可用DESC替代

    查看数据列表命令:

    show tables;

    复制一个表结构有两种实现方法:

    create table 新表名 like 源表

    create table 新表名 select * from 源表

    修改表名语法格式如下:

    rename table 旧表名 to 新表名

    或者:

    alter table 旧表名 rename 新表名

    删除表的SQL语法格式为:

    drop table 表名;

    注意:如果表之间存在外键约束关系,应先删除外键约束条件,再删除表,或者先删子表,再删父表。

    展开全文
  • 拷贝和复制是一个意思,对应的英文单词都是copy。**对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。**例如,将 Word 文档拷贝到U盘去复印店打印,将 D ...

    拷贝和复制是一个意思,对应的英文单词都是copy。**对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。**例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的图片拷贝到桌面以方便浏览,将重要的文件上传到百度网盘以防止丢失等,都是「创建一份新数据」的意思。

    在 C++ 中,拷贝并没有脱离它本来的含义,只是将这个含义进行了“特化”,是指用已经存在的对象创建出一个新的对象。从本质上讲,对象也是一份数据,因为它会占用内存。

    严格来说,对象的创建包括两个阶段,首先要分配内存空间,然后再进行初始化:
    分配内存很好理解,就是在堆区、栈区或者全局数据区留出足够多的字节。这个时候的内存还比较“原始”,没有被“教化”,它所包含的数据一般是零值或者随机值,没有实际的意义。
    初始化就是首次对内存赋值,让它的数据有意义。注意是首次赋值,再次赋值不叫初始化。初始化的时候还可以为对象分配其他的资源(打开文件、连接网络、动态分配内存等),或者提前进行一些计算(根据价格和数量计算出总价、根据长度和宽度计算出矩形的面积等)等。说白了,初始化就是调用构造函数。

    很明显,这里所说的拷贝是在初始化阶段进行的,也就是用其它对象的数据来初始化新对象的内存。

    那么,如何用拷贝的方式来初始化一个对象呢?其实这样的例子比比皆是,string 类就是一个典型的例子。

    #include <iostream>
    #include <string>
    using namespace std;
    
    void func(string str){
        cout<<str<<endl;
    }
    
    int main(){
        string s1 = "http://c.biancheng.net";
        string s2(s1);
        string s3 = s1;
        string s4 = s1 + " " + s2;
        func(s1);
        cout<<s1<<endl<<s2<<endl<<s3<<endl<<s4<<endl;
       
        return 0;
    }
    

    运行结果:

    http://c.biancheng.net
    http://c.biancheng.net
    http://c.biancheng.net
    http://c.biancheng.net
    http://c.biancheng.net http://c.biancheng.net
    

    s1、s2、s3、s4 以及 func() 的形参 str,都是使用拷贝的方式来初始化的。
    对于 s1,表面上看起来是将一个字符串直接赋值给了 s1,实际上在内部进行了类型转换,将 const char * 类型转换为 string 类型后才赋值的,这点我们将在《C++转换构造函数》一节中详细讲解。s4 也是类似的道理。
    对于 s1、s2、s3、s4,都是将其它对象的数据拷贝给当前对象,以完成当前对象的初始化。

    对于 func() 的形参 str,其实在定义时就为它分配了内存,但是此时并没有初始化,只有等到调用 func() 时,才会将其它对象的数据拷贝给 str 以完成初始化。

    当以拷贝的方式初始化一个对象时,会调用一个特殊的构造函数,就是拷贝构造函数(Copy Constructor)。

    下面的例子演示了拷贝构造函数的定义和使用:

    #include <iostream>
    #include <string>
    using namespace std;
    
    class Student{
    public:
        Student(string name = "", int age = 0, float score = 0.0f);  //普通构造函数
        Student(const Student &stu);  //拷贝构造函数(声明)
    public:
        void display();
    private:
        string m_name;
        int m_age;
        float m_score;
    };
    
    Student::Student(string name, int age, float score): m_name(name), m_age(age), m_score(score){ }
    
    //拷贝构造函数(定义)
    Student::Student(const Student &stu){
        this->m_name = stu.m_name;
        this->m_age = stu.m_age;
        this->m_score = stu.m_score;
       
        cout<<"Copy constructor was called."<<endl;
    }
    
    void Student::display(){
        cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
    }
    
    int main(){
        Student stu1("小明", 16, 90.5);
        Student stu2 = stu1;  //调用拷贝构造函数
        Student stu3(stu1);  //调用拷贝构造函数
        stu1.display();
        stu2.display();
        stu3.display();
       
        return 0;
    }
    

    运行结果:

    Copy constructor was called.
    Copy constructor was called.
    小明的年龄是16,成绩是90.5
    小明的年龄是16,成绩是90.5
    小明的年龄是16,成绩是90.5
    

    第 8 行是拷贝构造函数的声明,第 20 行是拷贝构造函数的定义。拷贝构造函数只有一个参数,它的类型是当前类的引用,而且一般都是 const 引用。
    1) 为什么必须是当前类的引用呢?
    如果拷贝构造函数的参数不是当前类的引用,而是当前类的对象,那么在调用拷贝构造函数时,会将另外一个对象直接传递给形参,这本身就是一次拷贝,会再次调用拷贝构造函数,然后又将一个对象直接传递给了形参,将继续调用拷贝构造函数……这个过程会一直持续下去,没有尽头,陷入死循环。

    只有当参数是当前类的引用时,才不会导致再次调用拷贝构造函数,这不仅是逻辑上的要求,也是 C++ 语法的要求。
    2) 为什么是 const 引用呢?
    拷贝构造函数的目的是用其它对象的数据来初始化当前对象,并没有期望更改其它对象的数据,添加 const 限制后,这个含义更加明确了。

    另外一个原因是,添加 const 限制后,可以将 const 对象和非 const 对象传递给形参了,因为非 const 类型可以转换为 const 类型。如果没有 const 限制,就不能将 const 对象传递给形参,因为 const 类型不能转换为非 const 类型,这就意味着,不能使用 const 对象来初始化当前对象了。

    以上面的 Student 类为例,将 const 去掉后,拷贝构造函数的原型变为:

    Student::Student(Student &stu);
    

    此时,下面的代码就会发生错误:

    const Student stu1("小明", 16, 90.5);
    Student stu2 = stu1;
    Student stu3(stu1);
    

    stu1 是 const 类型,在初始化 stu2、stu3 时,编译器希望调用Student::Student(const Student &stu),但是这个函数却不存在,又不能将 const Student 类型转换为 Student 类型去调用Student::Student(Student &stu),所以最终调用失败了。

    当然,你也可以再添加一个参数为 const 引用的拷贝构造函数,这样就不会出错了。换句话说,一个类可以同时存在两个拷贝构造函数,一个函数的参数为 const 引用,另一个函数的参数为非 const 引用。
    默认拷贝构造函数
    在前面的教程中,我们还没有讲解拷贝构造函数,但是却已经在使用拷贝的方式创建对象了,并且也没有引发什么错误。这是因为,如果程序员没有显式地定义拷贝构造函数,那么编译器会自动生成一个默认的拷贝构造函数。这个默认的拷贝构造函数很简单,就是使用“老对象”的成员变量对“新对象”的成员变量进行一一赋值,和上面 Student 类的拷贝构造函数非常类似。

    对于简单的类,默认拷贝构造函数一般是够用的,我们也没有必要再显式地定义一个功能类似的拷贝构造函数。但是当类持有其它资源时,如动态分配的内存、打开的文件、指向其他数据的指针、网络连接等,默认拷贝构造函数就不能拷贝这些资源,我们必须显式地定义拷贝构造函数,以完整地拷贝对象的所有数据,这点我们将在《C++深拷贝和浅拷贝》一节中深入讲解。

    展开全文
  • 拷贝和移动

    2019-09-28 21:40:32
    命令:  cp 对应英文: ... -r:若给出源文件是目录文件,则cp将递归复制该目录下所有子目录文件,目标文件必须是一个目录名 用法:  cp [选项]源文件目标文件  #中括号表示可选项 命...

    命令:

      cp

    对应英文:

      copy

    作用:

      复制文件或目录

    选项:

      -f:已存在的目标文件直接覆盖,不会提示

      -i:覆盖文件前提示,接着输入 y 或 n

      -r:若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录名

    用法:

      cp [选项] 源文件 目标文件

      # 中括号表示可选项

     


    命令:

      mv

    对应英文:

      move

    作用:

      移动文件或目录 / 文件或目录重命名

    选项:

      -i:覆盖文件前提示,接着输入 y 或 n

    用法:

      mv [选项] 源文件 目标文件

      # 中括号表示可选项

    转载于:https://www.cnblogs.com/Selling-fish-bears/p/10303277.html

    展开全文
  • 彼此总能互帮互助解决一些单凭一己之力很难完成操作,比如先前分享过:Excel 一维表二维表相互转置,借助一下 Word,简单得飞起如何拆分 Excel 单元格中无规律混合数字和英文字母?但是它们在复制到对方后也...
  • 这几天,经常拷贝论文里东西,然后发现直接从论文里面拷贝段落,会出现很多空格回车,手动删除费时费力,特别是空格很多。所以用C++写了一个小程序来处理。代码如下,用时候直接把内容拷贝在终端里面。以...
  • linux拷贝和移动文件

    2020-12-26 15:27:44
    序号 命令 对应英文 作用 01 tree [目录名] tree 以树状图列出文件目录结构 02 cp 源文件目标文件 ...cp 命令功能是将给出文件 或 目录复制到另一个文件 或 目录中,相当D...
  • 深浅拷贝

    2019-10-02 13:49:46
    拷贝是音译词,其实他是从copy这个英文单词音译过来,那什么是copy? copy其实就是复制一份,也就是所谓抄一份。深浅copy其实就是完全复制一份,部分复制一份意思。 1.先看赋值运算。 l1 = [1,2,3,['...
  • 5.修正安装选项(创建快捷方式)无法工作在非英文操作系统下错误。 V1.92 1.添加“系统托盘中运行”选项。 2.修正当发生错误时,存留未完成文件问题。 V1.91 1.修正“覆盖删除”失败问题。 2.修正极少数情况...
  • 我们介绍三个有关命令命令对应英文作用tree[目录名]tree以树状图列出文件目录结构cp源文件 目标文件copy复制文件或者目录mv源文件 目标文件move移动文件或者目录/文件或者目录重命名1.treetree命令可以以树状图列...
  • C++ 拷贝构造函数

    2020-03-19 09:02:23
    拷贝和复制是一个意思,对应的英文单词都是copy。对于计算机来说,拷贝是指用一份原有的、已经存在的数据创建出一份新的数据,最终的结果是多了一份相同的数据。例如,将 Word 文档拷贝到U盘去复印店打印,将 D 盘的...
  • 写时复制和写时拷贝是一个意思写时复制是一种策略,并不是Linux独有的,如果你正在设计某个系统架构,也可以参考这种思想。写时复制的英文解释如下Copy-on-write (sometim...
  • 拷贝一词来源于英文copy,译为:抄写,复制复制品。将原有物件,按照同样式在来一份。**举个栗子:饭点到了,朋友一起去吃饭。 我兴高采烈地跟老板说:“老板,来碗饺子”。 (别问我为什么是饺子,如果...
  • 为了避免这种状况出现,在CSS文件中使用中文字体时,最好使用中文字体的英文名称,我们常用中文字体的英文名称对照表如下:Windows、Mac OSOffice自带的字体中英文对照表: 中文名 英文名 Unicode Unicod
  • 最近,公司中文网站想做成英文的,并且中英文都要用,中文页面比较多,想想把原来中文拷贝出来,直接替换下成英文就好了 但是,拷贝过来后发现,英文母版页不能用了 描述如下: 新建一个空解决方案A...
  • 远程登录和复制文件 序号 命令 对应英文 作用 01 ssh 用户名@ip secure shell 关机/重新启动 02 scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 secure copy 远程复制文件 3.1 ssh 基础(重点) ...
  • 在CSS文件中,我们常看到有些字体名称变成了乱码,这是由于编写者将中文字体名字直接写成了中文,并且再上传或者拷贝复制的时候无意间变成了乱码。为了避免这种状况出现,在CSS文件中使用中文字体时,最好使用中文...
  • 2.在右边添加快捷键,,, 3,菜单标题,,,这里输入是,,,mac桌面最上面系统菜单里面 “编辑” 菜单里面...4.有些系统菜单里面,,“复制” 是 “拷贝”,,,还有英文的字符,,,,所以不管什么...
  • 12.1版本的Navicat英文版的注册机,亲测可用,注意要先打开注册机,等到点击patch后,再打开Navicat软件...回到软件的手动激活对话框处,将刚才拷贝的激活码粘贴到“激活码”区域,点击下边的【激活】按钮,激活成功!
  • 一、Qt Creator 安装hello world 程序编写(原创) 1.首先到Qt 官方网站上下载Qt Creator,这里我们下载windows 版。 下载地址:http://qt.nokia.com/downloads 如下图我们下载:Download Qt SDK for ...
  • 文中中英文混杂非我本意,因为翻译上有差别,比如 default constructor 翻译为缺省构造函数或者默认构造函数,copy constructor 翻译为复制构造函数或拷贝构造函数,base class翻译为父类或者基类,也是心累。...
  • 软件初次启动也是英文界面,需要选择语言为Chinese(Simplified)简体中文版,也可以在编辑菜单最下面一项设置。 Audacity还是一套简易好用声音处理软件,不论是要录音、剪辑、多音轨、混音、加特效等等,都...
  • 在链接步骤中,连接器将从库文件取得所需代码,复制到生成可执行文件中。这种库称为静态库,其特点是可执行文件中包含了库代码一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。 动态库 动态库又称动态...
  • 面试笔试精华(二) 警告:一定要把英文题目过一遍,有些公司题目故意弄...浅复制和深复制区别? 1> 浅拷贝:指针(地址)拷贝,不会产生新对象 2> 深拷贝:内容拷贝,会产生新对象 2. What is ad...
  • 观看笔记笔记本键盘键盘不一样,主键区,prtscn拷贝键常用快捷键,刷新F5删除delete确定换行enter撤销全选ctry+a保存ctry+s刷新关闭alt+f4恢复ctry+y复制粘贴剪切关闭ctry+w查找ctry+f任务管理、输入法切换中...
  • (1)字符型输入框:中文,英文全角、英文半角、数字、空或者空格或者回车、特殊字符(~!@#¥%……&*?[]{}”(特别要注意单引号&符号))。禁止直接输入特殊字符时,使用”复制+粘贴”功能尝试输入。 ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 106
精华内容 42
关键字:

复制和拷贝的英文