3.31 day1
# 1.深浅拷贝是什么 >-1. 深浅拷贝是对数据进行复制 不可变类型: 深浅拷贝都是一样的重新拷贝一份数据 可变类型: 如果内部嵌套的还有不可变类型, - 浅拷贝只拷贝第一层,嵌套拷贝的是内存地址, - 深拷贝是完全在复制一份出来 # 2.魔法方法new和init有什么区别 >-1.new是类初始化自动时触, 发生成一个空对象init是也是类初始化自动触发, 给new产生的对象设置初始值 # 3.python的可变和不可变数据类型是什么? >-1.可变数据类是数据值发生改变,其内存地址不变 - 可变数据类型有字典,列表,集合,文件对象 >-2.不可变数据是,数据值发生改变,其内存地址一定发生改变 - 不可变数据类型有,整型,小数型,字符串,元组,布尔 # 4.什么是生成器,有什么应用场景 >-1.生成器是程序员在函数内部写的有yield关键字的函数 >-2.应用场景: - 比如说在进行文件操作时,如果文件过大,一次性打开, 会占用过多内存空间可能会造成内存溢出, 使用生成器用多少拿多少,减少内存消耗
4.3 day2
# 1.数据库三大范式是什么? - 第⼀范式: 每个列都不可以再拆分。 - 第⼆范式: 在第⼀范式的基础上,⾮主键列完全依赖于主键,⽽不能是依赖于主键的⼀部分。 - 第三范式: 在第⼆范式的基础上,⾮主键列只依赖于主键,不依赖于其他⾮主键。 - 在设计数据库结构的时候,要尽量遵守三范式,如果不遵守,必须有⾜够的理由。⽐如性能。事实上我们经常会为了性能⽽妥协数据库的设计。 # 2.mysql有哪些索引类型,分别有什么作用? -1. 主键索引: 数据列不允许重复,不允许为NULL,⼀个表只能有⼀个主键。 作用:主键唯一性,加快查询速度,不能为空 -2. 唯⼀索引: 数据列不允许重复,允许为NULL值,⼀个表允许多个列创建唯⼀索引。 作用:加快查询速度,并且可以限制列值的唯一性,允许为空 - 可以通过 ALTER TABLE table_name ADD UNIQUE (column); 创建唯⼀索引 - 可以通过 ALTER TABLE table_name ADD UNIQUE (column1,column2); 创建唯⼀组合索引 -3.普通索引: 基本的索引类型,没有唯⼀性的限制,允许为NULL值。 作用:加快查询速度 - 可以通过 ALTER TABLE table_name ADD INDEX index_name (column); 创建普通索引 - 可以通过 ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3); 创建组合索引 -4.全⽂索引:是⽬前搜索引擎使⽤的⼀种关键技术。 作用:主要针对文本的内容进行分词,加快查询速度 - 可以通过 ALTER TABLE table_name ADD FULLTEXT (column); 创建全⽂索引 # 3.事务的特性和隔离级别? - 事务的四大特性 1. 原⼦性: 事务是最⼩的执⾏单位,不允许分割。事务的原⼦性确保动作要么全部完成,要么完全不起作⽤; 2. ⼀致性: 执⾏事务前后,数据保持⼀致,多个事务对同⼀个数据读取的结果是相同的; 3. 隔离性: 并发访问数据库时,⼀个⽤户的事务不被其他事务所⼲扰,各并发事务之间数据库是独⽴的; 4. 持久性: ⼀个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发⽣故障也不应该对其有任何 影响 - 事务的隔离级别 1. READ-UNCOMMITTED(读取未提交): 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、 幻读或不可重复读。 2. READ-COMMITTED(读取已提交): 允许读取并发事务已经提交的数据,可以阻⽌脏读,但是幻读或不可重复 读仍有可能发⽣。 3. REPEATABLE-READ(可重复读): 对同⼀字段的多次读取结果都是⼀致的,除⾮数据是被本身事务⾃⼰所修 改,可以阻⽌脏读和不可重复读,但幻读仍有可能发⽣。 4. SERIALIZABLE(可串⾏化): 最⾼的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执⾏,这样事 务之间就完全不可能产⽣⼲扰,也就是说,该级别可以防⽌脏读、不可重复读以及幻读。