IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 测开面经汇总 -> 正文阅读

[网络协议]测开面经汇总

测试

功能、性能、安全、兼容性、易用性

1、微信发送语音的测试用例

2、黑盒测试与白盒测试的区别及方法?

3、搜索功能测试???????

4、视频通话功能???????

前提不同:白盒是已知程序的内部实现结构,黑盒是不考虑内部实现结果

测试方式方法不同

黑盒:等价类划分法-将程序所有可能的输入数据划分为若干个等价类。然后从每个部分中选取具有代表性的数据当做测试用例

? ? ? ? 边界值分析法-输入和输入等价类中那些恰好处于边界、或超过边界、或在边界以下的状态。

? ? ? ? 流程分析法(即场景分析)-每一条流程路径一条测试用例

? ? ? ? 正交实验法-从因素及因素的取值采用正交来确定所有组合,从何覆盖所有情况。-适用于配置测试及多条件筛选

? ? ? ? 状态迁移法-通过分析完成状态迁移图,根据状态迁移图完成状态转换树。按照一个分支一条用例编写。

? ? ? ? 错误猜想法

白盒:

静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。

动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。

白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

App安全测试

? ? ? ?

计算机网络

1、tcp四次挥手中的TIME_WAIT状态存在的理由

(1)允许老的重复分节在网络中消失(等待timewait断开的原因

TCP大致通过一个四元组来标记一条连接,分别是:源IP、目的IP、源端口、目的端口。假设在一次连接中,部分报文因为某种原因滞留在路由网络中,然后这次连接断开了,再然后客户复用了端口,开启了和当前服务器一次新的连接。此时可以看见,因为客户端复用了端口,而且客户端和服务器短期内IP都不会变,而且服务器通常只会又有一个端口监听。因此当前连接的四元组和上次连接一样。此时假如上一次连接中滞留的报文又恢复传播,那就会进入当前连接中,因为这些报文本不属于本次连接,这可能造成数据混乱。因此,客户端发送了最后的ACK后,本次连接不会再有新的报文产生了,我们只需要在TIME-WAIT阶段等待1 MSL时间,就能让网络上所有滞留报文失效。

(2)实现终止TCP全双工连接的可靠性?(为什么是2msl)

若客户端发送完ACK后直接断开closed,此时ACK在发送过程中丢失,此时服务器回重新发送FIN但客户端已关闭不合理。ACK最长传播时间和等待客户端到服务端滞留报文失效时间共为1 MSL。最坏情况下,ACK经历了1 MSL才到达服务端,假如在ACK到达前一瞬间,服务端重传了FIN并发生了滞留,需要等待1 MSL才可让其失效。因此,在最坏情况下,需要2 MSL才可让双向的滞留报文失效。1 MSL+1 MSL= 2 MSL

2、输入一个链接,到页面展示会发生什么? ? ??

3、DNS的工作原理

? ? ? ?第一步:客户机提出域名解析请求,并将该请求发送给本地的域名服务器
  第二步:当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回。
  第三步:如果本地的缓存中没有该纪录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域) 的主域名服务器的地址
  第四步:本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的域名服务器的地址。
  第五步:重复第四步,直到找到正确的纪录。
  第六步:本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。

4、?DNS劫持

DNS劫持是破坏域名系统(DNS)查询解析的做法。

(1)通过恶意软件覆盖计算机的TCP/IP配置以指向受攻击者控制的流氓DNS服务器

(2)通过修改受信任的DNS服务器的行为使其不符合互联网标准的实现

5、HTTP的请求报文的形式

6、GET和POST的区别

区别:
(1)传送方式:get通过地址栏传输,post通过报文传输。GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息
(2)传送长度:get参数有长度限制(受限于url长度),而post无限制
(3)GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

(4)GET请求只能进行url编码,而POST支持多种编码方式。

(5)GET请求会被浏览器主动cache,而POST不会,除非手动设置。GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

7、POST还支持的编码类型

application/x-www-form-urlencoded??

multipart/form-data

application/json

text/xml

8、端口的概念

在网络通信过程中,需要唯一识别通信两端的端点,就是使用端口识别运行于某主机中的应用程序如果没有引入端口,则只能通过 进程号进行识别。进程号是系统动态分配的,不同的系统会使用不同的进程标识符,应用程序在运行之前不知道自己的进程号,如果需要运行后再广播进程号则很难 保证通信的顺利进行。而引入端口后,就可以利用端口号识别应用程序,同时通过固定端口号来识别和使用公共服务,如HTTP和FTP等。顺便提供几个常用的保留端口:TCP常用保留端口:FTP(21),HTTP(80),SMTP(25),POP3(110);UDP常用保留端DNS(53),TFTP(69),SNMP(161)。

9、MYSQL的端口号

mysql的默认端口是3306,可以编辑用户目录下的.my.cnf文件进行修改,

10、HTTP请求方法

GET:获取服务器资源
POST:提交信息给服务器
PUT:传输文件?
HEAD:和GET方法一样,但是只返回响应头部,作用是确定URL的有效性和资源更新的时间
DELETE:删除指定的资源
OPTIONS:查询请求服务器指定的资源所支持的方法
TRACE:用来确认连接过程中发生的一些操作
CONNECT:建立连接渠道,用于代理服务器
PUT但是由于Http/1.1的PUT方法不带验证机制,存在安全性问题,所以一般的网站都不用这个方法来进行文件传输。

Delete该方法也不带认证机制,所以一般网站并不会对它进行开放使用。

11、HTTP状态码从1到5是什么意思

500(服务器内部错误)?? ?服务器遇到错误,无法完成请求。
501(尚未实施)?? ?服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502(错误网关)?? ?服务器作为网关或代理,从上游服务器收到无效响应。
503(服务不可用)?? ?服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
504(网关超时)?? ?服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505(HTTP 版本不受支持)?? ?服务器不支持请求中所用的 HTTP 协议版本。


12、TCP和UDP的区别及应用场景

UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 却是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等

TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP 的可靠体现在 TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。

13、TCP如何保证可靠传输

(1)应用数据被分割成 TCP 认为最适合发送的数据块。

(2)TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。

(3)校验和:?TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。

(4)TCP 的接收端会丢弃重复的数据。

(5)流量控制:?TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 (TCP 利用滑动窗口实现流量控制)

(6)拥塞控制:?当网络拥塞时,减少数据的发送。

(7)ARQ 协议:?也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。

(8)超时重传:?当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

14、HTTP和HTTPS的区别

HTTPS 协议(Hyper Text Transfer Protocol Secure),是 HTTP 的加强安全版本。HTTPS 是基于 HTTP 的,也是用 TCP 作为底层协议,并额外使用 SSL/TLS 协议用作加密和安全认证。默认端口号是 443.

即:(1)https的端口是443,而http的端口是80,且两者的连接方式不同;

? ? ? ? (2)http传输是明文的,而https是用ssl进行加密的,https的安全性更高;

????????(3)https是需要申请证书的,而http不需要。

15、HTTPS的加密过程

(1)客户端先从服务器获取到证书,证书中包含公钥

(2)客户端将证书进行校验

(3)客户端生成一个对称密钥,用证书中的公钥进行加密,发送给服务器

(4)服务器得到这个请求后用私钥进行解密,得到该密钥

(5)客户端以后发出后续的请求,都使用这个对称密钥进行加密。

(6)服务器收到这个密文也用这个密钥进行解密。

16、TCP三次握手系列

TCP报文结构

TCP报文结构

?TCP连接常规过程

SYN 同步序列编号(Synchronize Sequence Numbers) 是 TCP/IP 建立连接时使用的握手信号。在客户机和服务器之间建立正常的 TCP 网络连接时,客户机首先发出一个 SYN 消息,服务器使用 SYN-ACK 应答表示接收到了这个消息,最后客户机再以 ACK(Acknowledgement)消息响应。这样在客户机和服务器之间才能建立起可靠的 TCP 连接,数据才可以在客户机和服务器之间传递。

为什么是三次

(1)原因一:防止重复连接

网络状况比较复杂或者网络状况比较差的情况下,发送方可能会连续发送多次建立连接的请求。

客户端在接收到服务器端 SEQ+1 的消息之后,就可以判断当前的连接是否为历史连接,如果判断为历史连接的话就会发送终止报文(RST)给服务器端终止连接;如果判断当前连接不是历史连接的话就会发送指令给服务器端来建立连接。如果是两次握手的话,不能判断连接是否是历史连接

(2)原因二:同步初始化序列化

TCP通信的双方必须要各自维护一个序列号,通信双方必须要发送各自的初始化序列号才给对方,通过对方的ACK报文确定SYN报文已经接收

三次握手过程中可以携带数据吗?

结论:第一次、第二次握手不可以携带数据,第三次可以携带数据

?首先带有SYN标志的过程包是不可以携带数据的。假如第一次握手可以携带数据的话,如果有人要恶意攻击服务 器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据。因为攻击者根本就不理服务器的接 收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话,这会让服务器花费很多时间、内存空间来接收这些报文。

半连接队列与全连接队列

在TCP进行三次握手时,Liunx会为其维护两个队列:半连接队列,也叫syn队列;全连接队列,也叫accept队列

在客户端发起第一次连接时,服务端会将其加入到syn队列中,并且响应客户端syn+ack报文,等到客户端发送ack应答报文时,服务端将该连接从半连接队列中取出,并新建一个新的连接,加入到accept队列当中。等待进程调用accept请求时,将该连接取出来

在这里插入图片描述

SYN攻击?

SYN 攻击指的是,攻击客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,导致目标系统运行缓慢,严重者会引起网络堵塞甚至系统瘫痪。SYN 攻击是一种典型的 DoS/DDoS 攻击

预防SYN攻击

(1)增大半连接队列

(2)开启tcp_syncookies功能
开启tcp_syncookies就可以在不使用syn半连接队列的情况下建立连接
syncookies在接收到客户端的syn报文时,计算出一个值,放到syn+ack报文中发出。当客户端返回ack报文时,取出该值验证,成功则建立连接,将这个连接的信息放进全连接队列中。

(3)减少ack+syn报文的重传次数
因为我们在收到syn攻击时,服务端会重传syn+ack报文到最大次数,才会断开连接。针对syn攻击的场景,我们可以减少ack+syn报文的重传次数,使处于syn_recv状态的它们更快断开连接

17、UDP报文结构

优点:
1、不需要建立连接(不需要三次握手)
2、简单(传输开销小,报文首部短)
3、快,吞吐效率高(不需要等、重传,最多受限于带宽和性能)
缺点:
不可靠(容易丢包)

18、OSI七层模型及其对应的协议

OSI层功能设备对应TCP/IP协议
应用层用户接口、应用程序(文件传输,电子邮件,文件服务,虚拟终端)网关

TFTP,HTTP(超文本传输协议),HTTPS(超文本传输安全协议),SNMP,FTP(文件传输协议),SMTP(电子邮件传输的协议),DNS(域名解析协议)

Telnet:使用远程计算机上所拥有的本地计算机没有的信息资源,是常用的远程控制Web服务器的方法

表示层数据的表示、压缩和加密(数据格式化,代码转换,数据加密)网关XDP(外部数据表示协议),LPP(轻量级表示协议)
会话层会话的建立和结束(解除或建立与别的接点的联系)网关SSL(安全套接字层协议)/TLS(传输层安全协议),RPC(远程过程调用协议)
传输层提供端对端的接口网关TCP,UDP
网络层为数据包选择路由,寻址路由器、三层交换机IP(互联网协议),ICMP(互联网控制信息协议),RIP(路由信息协议),OSPF(开放最短路径优先协议),BGP,IGMP(互联网组管理协议)
数据链路层保证误差错的数据链路,传输有地址的帧以及错误检测功能交换机、网桥、网卡SLIP,CSLIP,PPP,ARP(地址解析协议),RARP(逆向地址解析协议),MTU
物理层传输比特流,以二进制数据形式在物理媒体上传输数据集线器、中继器ISO2110,IEEE802,IEEE802.2

19、http请求连接的过程

HTTP 是应用层协议,它以 TCP(传输层)作为底层协议,默认端口为 80. 通信过程主要如下:

(1)服务器在 80 端口等待客户的请求。

(2)浏览器发起到服务器的 TCP 连接(创建套接字 Socket)。

(3)服务器接收来自浏览器的 TCP 连接。

(4)浏览器(HTTP 客户端)与 Web 服务器(HTTP 服务器)交换 HTTP 消息。

(5)关闭 TCP 连接。

在这里插入图片描述

20、?HTTP 与 HTTPS 的区别

  • HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  • 使用 HTTPS 协议需要到 CA(Certificate Authority,数字证书认证机构) 申请证书,一般免费证书较少,因而需要一定费用。证书颁发机构如:Symantec、Comodo、GoDaddy 和 GlobalSign 等。
  • HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  • http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  • HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。

?21、SSL非对称加密技术 及数字证书??????????????

22、?Session和Cookie的区别?
(1)数据存储位置:cookie数据存放在客户的浏览器上,session数据放在服务器上。

(2)安全性:cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。

(3)服务器性能:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。

(4)数据大小:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

(5)信息重要程度:可以考虑将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中。
?

JAVA

1、接口和抽象类的区别??

A:成员的区别
抽象类:
构造方法:有构造方法,用于子类实例化使用。
成员变量:可以是变量,也可以是常量。
成员方法:可以是抽象的,也可以是非抽象的。

接口:
构造方法:没有构造方法
成员变量:只能是常量。默认修饰符:public static final
成员方法:jdk1.7只能是抽象的。默认修饰符:public abstract (推荐:默认修饰符请自己永远手动给出)
jdk1.8可以写以default和static开头的具体方法

B:类和接口的关系区别
类与类:
继承关系,只能单继承。可以多层继承。

类与接口:
实现关系,可以单实现,也可以多实现。
类还可以在继承一个类的同时实现多个接口。

接口与接口:
继承关系,可以单继承,也可以多继承。

C:体现的理念不同
抽象类里面定义的都是一个继承体系中的共性内容。
接口是功能的集合,是一个体系额外的功能,是暴露出来的规则。

2、多态的底层原理

多态(通过声明父类的引用变量来使用子类对象)的底层实现是动态绑定,即在运行时才把方法调用与方法实现关联起来。动态绑定的实现主要依赖于方法表,当需要执行时是查找堆上真正创建的对象的类的方法。

3、线程池

线程池的作用:

  • 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
  • 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
  • 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

创建线程池:建议通过?ThreadPoolExecutor创建,明确线程池的运行规则,规避资源耗尽的风险

? ? ? ? (1)方式一:通过构造方法实现,对线程池进行不同的设置

? ? ? ? (2)方式二:通过 Executor 框架的工具类 Executors 来实现

  • FixedThreadPool?: 固定线程数量的线程池。
  • SingleThreadExecutor:?只有一个线程的线程池。
  • CachedThreadPool:?线程池的线程数量不确定,但若有空闲线程可以复用,则会优先使用可复用的线程。若所有线程均在工作,又有新的任务提交,则会创建新的线程处理任务。

线程池原理:

?

?4、StringBuilder类 和 StringBuffer类的区别

  • StringBuilder: 可变的字符序列 , 线程不安全的,效率高,底层是?char[]数组?存储

  • StringBuffer : 可变的字符序列 , 线程安全的,效率低 ,底层是?char[]数组?存储

5、什么情况下会产生内存泄漏

?内存泄露:指程序中动态分配内存给一些临时对象,但对象不会被GC回收,它始终占用内存,被分配的对象可达但已无用。即无用对象持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间浪费。

内存泄漏的情况

(1)长生命周期的对象持有短生命周期对象的引用,尽管短生命周期的对象不再使用,但是因为长生命周期对象持有它的引用而导致不能被回收。

静态集合

public class MemoryLeak {
    static List list = new ArrayList();
 
    public void oomTests() {
        Object obj = new Object();
        list.add(obj);
    }
}

?单例模式

因为单例的静态特性,它的生命周期和JVM的生命周期一样长,所以如果单例对象如果持有外部对象的引用,那么这个外部对象也不会被回收,那么就会造成内存泄漏。?

内部类持有外部类

如果一个外部类的实例对象的方法返回了一个内部类的实例对象。这个内部类对象被长期引用了,即使那个外部类实例对象不再被使用,但由于内部类持有外部类的实例对象,这个外部类对象也不会被垃圾回收,从而导致内存泄漏。

(2)各种连接

?在对数据库进行操作的过程中,首先需要建立与数据库的连接,当不再使用的时候,需要调用close方法来释放与数据库的连接。只有连接被关闭后,垃圾回收器才会回收对应的对象。

(3)变量不合理的作用域

变量不合理的作用域。一般而言,一个变量的定义的作用范围大于其使用范围,很有可能会造成内存泄漏。另一方面,如果没有及时地把对象设置为null,很有可能导致内存泄漏的发生。

(4)改变哈希

对象修改后的哈希值与最初存储进HashSet集合中时的哈希值就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中单独删除当前对象

(5)缓存泄漏

?一旦把对象引用放入到缓存中,就很容易遗忘。对于这个问题可以使用WeakHashMap代表缓存,此种Map的特点是,当除了自身有对key的引用外,此key没有其他引用那么此map会自动丢弃此值。

(6)监听器和回调

如果客户端在你实现的API中注册回调,却没有显示的取消,那么就会积聚。需要确保回调立即被当作垃圾回收的最佳方法就是只保存它的弱引用,例如将他们保存为WeakHashMap中的键。

6、?- [ ] 申请内存的整个申请流程
- [ ] 堆是怎么申请内存的

7、

Linux

1、怎么在文件里查找特定单词

2、Linux的硬链接和软链接

linux系统中inode号是一一对应的关系。

硬链接:可以用不同的名称访问同一个文件(故不同名称看到的文件内容是一致的),必须在同一个分区,删掉一个相当于只是删掉了别名,此文件还是在。

软连接:可以不在一个分区,只有一个最本质的源文件。删掉源另一个也就失效了。源文件有100M 链接文件可能只有几十K。链接文件只是访问源文件的一个跳板。

(1)软连接,以路径的形式存在。类似于Windows操作系统中的快捷方式。硬链接,以文件副本的形式存在。但不占用实际空间

(2)软连接可以 跨文件系统 ,硬连接不可以

(3)软连接可以对一个不存在的文件名进行连接

(4)软连接可以对目录进行连接。硬链接普通用户不可以对目录进行链接,超级用户可以

(5)软链接节省空间资源

数据库

1、数据库的索引类别

(1)主键索引(Primary Key) 数据表的主键列使用的就是主键索引。一张数据表有只能有一个主键,并且主键不能为 null,不能重复。

(2)二级索引又称为辅助索引。唯一索引,普通索引,前缀索引等索引属于二级索引。

  1. 唯一索引(Unique Key)?:唯一索引也是一种约束。唯一索引的属性列不能出现重复的数据,但是允许数据为 NULL,一张表允许创建多个唯一索引。?建立唯一索引的目的大部分时候都是为了该属性列的数据的唯一性,而不是为了查询效率。
  2. 普通索引(Index)?:普通索引的唯一作用就是为了快速查询数据,一张表允许创建多个普通索引,并允许数据重复和 NULL。
  3. 前缀索引(Prefix)?:前缀索引只适用于字符串类型的数据。前缀索引是对文本的前几个字符创建索引,相比普通索引建立的数据更小, 因为只取前几个字符。
  4. 全文索引(Full Text)?:全文索引主要是为了检索大文本数据中的关键字的信息,是目前搜索引擎数据库使用的一种技术。Mysql5.6 之前只有 MYISAM 引擎支持全文索引,5.6 之后 InnoDB 也支持了全文索引。

2、聚簇索引与的非聚簇索引

聚簇索引:即索引结构和数据一起存放的索引。主键索引属于聚集索引。

非聚簇索引:即索引结构和数据分开存放的索引。二级索引属于非聚集索引。

3、SQL优化

4、四大事务ACID?

事务:由一组sql语句组成的逻辑处理单元,事务具有以下4个属性,通常简称事务的ACID属性。

  • 原子性(Atomicity):
    事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全部不执行。

  • 一致性(Consistent):
    在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须正确的

  • 隔离性(Isolation):
    数据库系统提供一定的隔离机制,保证事务在不受外部并发操作的影响的“独立”环境执行。这意味着事务处理过程中间状态对外部都是不可见的,反之亦然。

  • 持久性(Durable):
    事务完成后,它对于数据的修改时是永久的,即使出现系统的故障也能保持。

5、事务隔离级别

  • 脏读(Drity Read)
    某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。

  • 不可重复读(Non-repeatable read)
    在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。(update 和 delete 引起)

  • 幻读(Phantom Read)
    在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。(由 insert 引起)

  • ?

Python

1、python高效于java相比优缺点

2、什么是静态语言和动态语言,Pyhton属于哪种?

3、python的动态内存

4、python的深浅拷贝

5、python的字典是怎么实现的?

6、python的垃圾回收机制

标记清除和引用计数机制比,能解决什么问题?

分代回收的思想,举例

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:14:36  更:2022-08-06 11:16:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年3日历 -2024/3/29 22:59:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码