一、同步与异步,阻塞与非阻塞的理解:
同步:程序在调用一个方法时,这个方法内部会一直计算返回值,直到得出结果才能返回。
异步:程序在调用一个方法时,这个方法可以把计算交给其他方法执行,而自己可以在得出返回值之前返回。
举个例子:
在web开发中,用户注册的短信验证码发送,可以通过celery来执行发短信过程,而本方法可以立即返回。
阻塞:程序在调用方法时,方法所在的线程被挂起,一直在等待方法的执行结果,方法所在的线程被挂起,才能继续往下执行。
非阻塞:程序在调用方法时,方法所在的线程不会被挂起,会继续执行。
二、事务的特性
事务时并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。
事务有四个特性:
1.原子性:整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性
2.一致性:数据库总是从一个一致性的状态转换到另一个一致性的状态。
3. 隔离性:一个事务所做的修改在最终提交以前,对其他事务是不可见的。
4.持续性:一旦事务提交,则其所做的修改会永久保存到数据库。
对数据库的数据进行批量操作或者连表操作时,为了保证数据库的一致性和正确性,我们需要添加事务管理机制进行管理。
当对数据库的数据操作失败时,事务管理可以很好保证所有的数据回滚到原来的数据,如果操作成功,则保证所有需要更新的数据持久化。
注意
- 表的引擎类型必须是innodb类型才可以使用事务,innodb是mysql表的默认引擎
- python的mysql扩展中执行修改数据的命令会自动触发事务,包括insert、update、delete,需要commit提交。
三、面向对象的三大特性
1.封装:将一些方法或者属性封装在一起。
2.继承:父类拥有的方法,子类可继承父类的方法。
3.多态:子类可以拥有自己特有的方法,也可以调用父类的方法。
四、电话号码匹配的正则表达式
^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$