这里写目录标题
- 1、简述any()和all()方法
- 2、常见的异常
- 3、简述同源策略
- 4、简述悲观锁和乐观锁
- 5、分别从前端、后端、数据库阐述web项目的性能优化
- 6、举例说明SQL注入和解决办法
- 7、python引用计数机制
- 8、给定2个字符串A=“abcdefg”,B=“abfyt”,得到两个字符串中相同字符组成新的字符串
1、简述any()和all()方法
any():只要迭代器对象中有一个元素为真就为真
all():迭代器中所有的判断项返回都是真,结果才为真
python中什么元素为假?
0、空字符串、None、False、空列表、空字典、空元组、空集合
data=[1,4,6,3,7,0]
print(any(data))
data1=[1,0,0,0]
print(any(data1))
data2=[0,0,0,0]
print(any(data2))
打印结果依次为:
True
True
False
data=[1,4,6,3,7,8]
print(all(data))
data1=[1,0,0,0]
print(all(data1))
data2=[0,0,0,0]
print(all(data2))
打印结果依次为:
True
False
False
2、常见的异常
IOError:输入输出异常
AttributeError:试图访问一个对象没有属性
ImportError:无法引入模块和包,,基本是路径的问题
IndentationError::语法错误,代码没有正确的对齐
IndexError:下标索引超出序列边界
KeyError:试图访问字典中不存在的键
SyntaxError:代码逻辑语法错误,不能执行
NameError:使用一个还未赋予对象的变量
3、简述同源策略
同源策略需要同时满足3点要求
协议相同
域名相同
端口相同
举例来说:
http://www.example.com/dir/page.html
协议是 http://
域名是 www.example.com
端⼝是 80(默认端⼝可以省略)
同源政策的⽬的,是为了保证⽤户信息的安全,防⽌恶意的⽹站窃取数据。
4、简述悲观锁和乐观锁
19.1、并发控制
当程序中可能出现并发的情况时,就需要保证在并发情况下数据的准确性,以此确保当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这就叫做并发控制。并发控制的目的是确保一个用户的工作不会对其他的用户工作产生不合理的影响。
没有做好控制,就可能导致脏读、幻读、不可重复读
实现并发控制的主要手段分为乐观并发控制和悲观并发控制。
无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。乐观锁比较适用于读多写少的情况(多读场景),悲观锁比较适用于写多读少的情况(多写场景)。
19.2、悲观锁
当要对数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对数据进行加锁以防止并发。这种借助数据库锁机制,【Pessimistic Concurrency Control,缩写“PCC”,又名“悲观锁”】。
悲观锁,具有强烈的独占性和排他特性。它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度。因此,在整个数据处理过程中,将数据处于锁定状态。
悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)
之所以叫做悲观锁,是因为这是一种对数据的修改持有悲观态度的并发控制方式。总是假设最坏的情况,每次读取数据的时候都默认其他线程会更改数据,因此需要进行加锁操作,当其他线程想要访问数据时,都需要阻塞挂起。悲观锁的实现:
- 传统的关系型数据库使用这种锁机制,比如行锁、表锁、读锁、写锁等,都是在操作之前先上锁。
- Java 里面的同步 synchronized 关键字的实现。
悲观锁主要分为共享锁和排他锁:
- 共享锁【shared locks】又称为读锁,简称 S 锁。顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。
- 排他锁【exclusive locks】又称为写锁,简称 X 锁。顾名思义,排他锁就是不能与其他锁并存,如果一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁。获取排他锁的事务可以对数据行读取和修改。
19.3、乐观锁
乐观锁是相对悲观锁而言的,乐观锁假设数据一般情况不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果冲突,则返回给用户异常信息,让用户决定如何去做。乐观锁适用于读多写少的场景,这样可以提高程序的吞吐量。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新