python中的面向对象
- 封装:
封装是封装的一个对象的属性和行为,用于描述这个对象,并减少代码的冗余。
- 继承:
python中可以继承多个类,子类可以调用父类中的方法,动态语言决定了传入的参数只需要包含run方法就行,不一定要严格使用Animal类型。
- 多态
多态是对象的多态,多父类和子类含有同名方法时,根据的调用对象,决定调用的方法
python中的作用域
- L (Local) 局部作用域
- E (Enclosing) 闭包函数外的函数中
- G (Global) 全局作用域
- B (Built-in) 内建作用域
LEGB原则
数据库表的去重
索引使用B+树而不使用Hash表的原因
- Hash表不能满足 = in <=> 这样的范围查询
- Hash表无法用于避免数据的排序操作
- 无法使用组和索引的部分索引进行查询
- 不可避免表扫描
由于不同的索引键存在相同的Hash值,所以即使取某个Hash键值的纪录条数,也无法从Hash索引中直接完成查询,还是要通过访问表中的实际数据进行相应比较,并得到相应的结果。
- Hash索引遇到大量Hash值相等的情况后,性能就不一定比BTree高
解决Hash碰撞
InnerDB和MYISAM
事务的隔离级别
解决高并发
- redis缓存数据库
在客户端将连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized
服务器角度,利用setnx变向实现锁机制。
- 协程epoll(IO多路复用)
- 分布式