目录
23年5月31日
1、装饰器是什么
1.装饰器是什么
装饰器的本质是闭包【函数】
2.装饰器的作用
在不改变程序源代码和调用方式的基础上,为程序增加新功能
3.装饰器的本质
被装饰以后,在执行被装饰的函数,其实执行不是之前的函数了,所有才加入了新功能
4.装饰器的语法糖
语法糖 @ python的特殊语法,它有特殊作用----》把被装饰的函数(装饰器下面的函数),当参数传入装饰器,并把装饰器的执行结果赋值给被装饰的函数
2、python深浅拷贝是什么
浅拷贝,指的是重新分配一块内存,创建一个新的对象,但里面的元素是原对象中各个子对象的引用。
深拷贝,是指重新分配一块内存,创建一个新的对象,并且将原对象中的元素,以递归的方式,通过创建新的子对象拷贝到新对象中。因此,新对象和原对象没有任何关联。
3、模仿方法new和init有什么区别
1.__init__
类名加括号 给对象添加独有数据时自动触发
2.__new__
类在创建对象的时候是用魔法方法——双下new,产生空对象。
4、python的可变和不可变数据类型是什么
可变数据类是数据值发生改变,其内存地址不变
不可变数据是,数据值发生改变,其内存地址一定发生改变
可变数据类型有字典,列表,集合,文件对象
不可变数据类型有,整型,小数型,字符串,元组,布尔
5、什么是生成器,有什么应用场景
生成器是程序员在函数内部写的有vield关键字的函数
应用场景:比如说在进行文件操作时,如果文件过大,一次性打开,会占用过多内存空间可能会造成内存溢出,使用生成器用多少拿多少,减少内存消耗
23年4月3日
1、数据库三大范式是什么
参考:https://zhuanlan.zhihu.com/p/618012849
1、第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据线;也就是说:每列的值具有原子性,不可再分割。
解释:
学籍信息可以继续分割,所以不符合1NF
2、第二范式(2NF)是在第一范式(1NF)的基础上建立起来得,满足第二范式(2NF)必须先满足第一范式(1NF)。如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分。
解释:
学生id和课程id联合主键,非主键列【分数】完全依赖于主键【学生id和课程id】,学生id和课程id两个值才能决定score的值
但是【课程名字】只依赖于课程id,与学生id没有依赖关系,它不完全依赖于主键,只依赖于主键的一部分,不符合2NF
3、第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式必须要先满足第二范式。第三范式(3NF)要求:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。
解释:
表中【部门名称】依赖于【部门id】,而【部门id】依赖于【id主键】,从而推出【部门名称】依赖于id(主键)
【部门名称】不直接依赖于主键,而是通过依赖于非主键列而依赖于主键,属于传递依赖,不符合3NF
2、mysql有哪些索引类型,分别有什么作用
什么是索引?
索引是为了加速对表中数据行的检索而创建的一种分散的存储结构。
索引的作用
1)索引就好比一本书的目录,它能让你更快的找到自己想要的内容
2)让获取的数据更有目的性,从而提高数据库检索数据的性能
索引的本质:加快查询
mysql的索引类型
聚簇索引,聚集索引,主键索引,主键,如果不存在主键,隐藏一个主键,构建聚簇索引 primary(key)
辅助索引,普通索引 index
唯一索引 unique
联合索引,组合索引,多列索引:unique_to
3、事务的特性(ACID)和隔离级别
事务的四大特性
- A:原子性
指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。
- C:一致性
指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。一致性与原子性是密切相关的。
- I:隔离性
指在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间(多个事务之间彼此不干扰)。
- D:持久性
持久性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,并不会被回滚。
事务的隔离级别
1.read uncommitted(未提交读)
2.read committed(提交读)
3.repeatable read(可重复读) # MySQL默认隔离级别
4.serializable(可串行读)