腾讯+测试+一面
数据库测试的测试点
1.数据库备份
内容正确性、不同介质与空间的备份,备份异常处理、大数据量的备份、部分or全部备份
2.数据库恢复
备份恢复操作是否正常、恢复过程中对异常情况的处理,不同环境下的恢复
3.数据库权限管理
权限设备、各权限分配功能实现
4.视图测试
测试数据库视图定义是否反映了用户的需求
5.数据库功能测试
通过测试用例运行数据库,以验证该数据库功能的正确和无遗漏。数据库功能测试的内容包括数据定义、数据操纵、数据库安全性、并发处理等的测试
6.数据操作和更新
增、删、改、查等操作
7.数据的完整性
实体完整性、参照完整性、用户定义的完整性等测试
8.数据的有效性
确保数据库存储信息的正确性
9.数据库安全测试
测试数据库的安全措施是否发挥作用并达到预期效果,有无漏洞
10.并发处理测试
为了找出数据库系统并发处理机制的可能缺陷,进行并发处理测试
11.数据库性能测试
数据库性能测试分为平均性能测试、压力测试、负载测试和强度测试4种类型
12.空数据库测试
将数据库表中所有的内容全部清空,只留下一个管理员账户信息,检查系统的所有功能操作是否能够正常实现
13.SQL语句优化
14.存储过程的接口测试
15.触发器的接口测试
16.结合业务逻辑做关联表的接口测试
Python里面的构造函数是什么?
Python中的构造函数是__init__函数。在Python中,子类如果定义了构造函数,而没有调用父类的,那么Python不会自动调用,也就是说父类的构造函数不会执行。
所以当你下一次运行这个程序时,程序会现在_pycache_文件夹里找pyc文件,而如果找到了,就省去了编译的过程,节省了时间。
__init__.py 文件的作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件。
通常__init__.py 文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。
慢启动
拥塞避免
快速恢复
其中慢启动和拥塞避免是TCP的强制部分,而快速恢复是推荐部分,对TCP的发送方并非是必须的。
2.1 慢启动
当一条TCP连接开始时,cwnd的值通常设置为一个MSS(较小值),这就使得初始发送速率大约为MSS/RTT。由于对于TCP的发送方而言,可用带宽可能比MSS/RTT大得多,TCP发送方希望迅速找到可用带宽的数量。因此,在慢启动状态,cwnd的值以1个MSS开始并且每当运输的报文段首次被确认就增加一个MSS。如下图的例子所示:
有几种结束指数增长的方式:
如果存在一个由超时指示的丢包事件(拥塞),TCP发送方将cwnd设置为1并重新开始慢启动过程。它还将第二个状态变量的值ssthresh(“慢启动阈值”的速记)设置为cwnd/2,即当检测到拥塞时将ssthresh设置为拥塞窗口值的一半。
第二种方式是直接与ssthresh的值相关联。因为当检测到拥塞时ssthresh设置为cwnd值的一半,每当达到或超过ssthresh的值时,继续使cwnd翻番可能有些鲁莽。因此,当cwnd的值等于ssthresh时,结束慢启动并且TCP转移到拥塞避免模式。
最后一种结束慢启动的方式是,如果检测到3个冗余ACK,这时TCP执行一种快速重传并进入快速恢复状态。
2.2 拥塞避免
一旦进入拥塞避免状态,cwnd的值大约是上次遇到拥塞时的值的一半。因此,TCP不应该再每过一个RTT就将cwnd的值翻番,此时TCP采用了一种较为保守的方法,每个rtt只将cwnd的值增加一个MSS。
在拥塞避免状态下,每个丢包事件(由超时或者三个冗余ACK来指示)都指示了应该结束拥塞避免的现性增长:
当出现超时时,cwnd的值被设置为1个MSS,同时ssthresh的值被更新为cwnd值的一半
当出现三个冗余ACK时,因为网络能继续从发送方向接收方交付报文段,因此TCP对这种丢包事件的行为,相比于超时应该更“宽容”:此时TCP将cwnd的值减半,将ssthresh的值记录为cwnd值的一半,接下来进入快速恢复状态。
下图指示了出现超时事件时cwnd的变化:
2.3 快速恢复
发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段,于是不启动慢开始算法,而执行快速恢复算法。
快速恢复是TCP推荐的而非必须的构件。一种称为TCP Tahoe的TCP早期版本,不管是发生超时指示的丢包事件,还是发生3个冗余的ACK指示的丢包事件,都无条件地将其拥塞窗口减至1个MSS,并进入慢启动阶段。TCP的较新版本TCP Reno,则引入了快速恢复的机制。
快速恢复有两种实现方式,第一种是发送方将ssthresh值和拥塞窗口cwnd调整为当前窗口的一半,并开始执行拥塞避免算法;第二种实现方式是把快速恢复开始时的拥塞窗口cwnd的值再增大一些,即等于新的ssthresh+3,这是因为既然发送方收到三个重复的确认,就表明有三个数据报文已经离开了网络;这三个报文段不再消耗网络资源而是停留在接收方的接收缓存中;可见现在网络中不是堆积了报文段而是减少了三个报文段,因此可以适当把拥塞窗口扩大一些。
下图演示了Reno版TCP与Tahoe版TCP的拥塞控制窗口的演化情况。在该图中,阈值初始等于8个MSS,在前8个传输回合,Tahoe和Reno采取了相同的动作。拥塞窗口在慢启动阶段以指数速度快速爬升,在第4轮传输时到达了阈值。然后拥塞窗口以线性速度爬升,直到在第8轮传输后出现了3个冗余ACK。注意到该丢包事件发生时,拥塞窗口值为12MSS。于是ssthresh的值被设置为0.5cwnd=6*MSS。在TCP Reno下,拥塞窗口被设置为cwnd=9MSS,然后线性地增长。在TCP Tahoe下,拥塞窗口被设置为1个MSS,然后呈指数增长,直至到达ssthresh值为止,在这个点它开始线性增长。