赞
踩
目录
4、MySQL知道什么函数,如order by,count()
8、String是Java的基本数据类型吗,String有什么方法
HTTP(HyperText Transfer Protocol:超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。 简单来说就是一种发布和接收 HTML 页面的方法,被用于在 Web 浏览器和网站服务器之间传递信息。
HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。
HTTP 协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
HTTPS(Hypertext Transfer Protocol Secure:超文本传输安全协议)是一种透过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTPS 默认工作在 TCP 协议443端口,它的工作流程一般如以下方式:
HTTP请求消息和响应消息的格式是HTTP协议中重要的组成部分,它们定义了客户端和服务器之间如何进行通信。
HTTP请求消息由请求行、请求头部、空行和请求正文四个部分组成。
GET /index.html HTTP/1.1
表示一个使用GET方法请求/index.html
页面的HTTP/1.1请求。User-Agent: Mozilla/5.0
表示用户代理信息。HTTP响应消息由状态行、响应头部、空行和响应正文四个部分组成。
HTTP/1.1 200 OK
表示一个HTTP/1.1协议的成功响应。总结来说,HTTP请求消息和响应消息都遵循一定的格式规范,通过请求行、请求/响应头部、空行和请求/响应正文这几个部分,实现了客户端和服务器之间的通信和数据交换。
首先,简要介绍TCP(传输控制协议)的作用:TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
接着,详细解释三次握手的过程:
第一次握手:客户端发送一个SYN包(同步序列编号)到服务器,并进入SYN_SEND状态,等待服务器确认。SYN包中包含了客户端的初始序列号。
第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=客户序列号+1),同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=服务器序列号+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
在解释过程中,可以强调三次握手的重要性,它确保了客户端和服务器之间的连接是可靠和安全的。同时,也可以提及三次握手过程中可能遇到的情况,如丢包、超时等,以及TCP协议如何处理这些情况。
最后,可以总结TCP三次握手的作用和意义:它确保了数据包的可靠传输,避免了因网络不稳定或其他因素导致的数据丢失或重复发送等问题。同时,通过三次握手建立的连接是双向的,客户端和服务器都可以在这个连接上进行数据的发送和接收。
TCP(传输控制协议)和UDP(用户数据报协议)是计算机网络传输层中的两个重要协议,它们之间主要存在以下区别:
连接性:TCP是一种面向连接的协议,它要求在数据传输之前先建立一个连接。这个连接建立过程通常被称为“三次握手”。而UDP则是一种无连接的协议,发送方不需要提前与接收方建立连接,可以直接向接收方发送数据。
可靠性:TCP对数据的可靠性要求非常严格。它使用确认和重传机制来确保数据的完整性和正确性。如果数据在传输过程中丢失或损坏,TCP会进行重传。相比之下,UDP对数据的可靠性要求较低,它不提供确认、重传和流量控制机制。如果数据丢失或损坏,UDP不会进行重传。
速度和效率:由于TCP需要建立连接和使用确认重传机制,因此它通常比UDP的速度更慢。UDP没有连接建立和确认重传的开销,因此在数据传输速度方面通常比TCP更快。此外,当网络拥堵时,TCP的拥塞控制机制会导致传输速度进一步下降,而UDP则不受此限制。
数据包大小:TCP将数据划分为较小的数据包进行传输,并根据网络状况进行调整。它没有固定的数据报大小限制。而UDP允许发送方一次性将多个数据包打包成一个较大的数据报进行传输,数据报的大小通常是在应用层自行决定的。
适用场景:TCP因其可靠性高的特点,主要适用于对数据可靠性要求较高的应用场景,如文件传输、电子邮件和网页浏览。而UDP因其传输速度快的特点,更适用于对通信速度要求较高的场景,如视频、音频、直播等。
浅拷贝会创建新的对象,这个对象有着原始对象中的一些对象引用,而不是原始对象本身的副本。也就是说,对于原始对象中的可变对象(如列表、字典等),浅拷贝只会拷贝其引用,而不会拷贝对象本身。因此,如果修改了原始对象中的可变对象,那么浅拷贝的对象也会受到影响。
在Python中,可以使用copy模块的copy()函数或切片操作来进行浅拷贝。
示例:
python复制代码
import copy | |
original_list = [1, 2, [3, 4]] | |
shallow_copy_list = copy.copy(original_list) | |
# 修改原始列表中的可变对象 | |
original_list[2].append(5) | |
print(original_list) # 输出: [1, 2, [3, 4, 5]] | |
print(shallow_copy_list) # 输出: [1, 2, [3, 4, 5]] |
在这个例子中,我们可以看到,当修改原始列表中的可变对象时,浅拷贝的列表也受到了影响。
深拷贝会递归地复制原始对象中的所有对象,包括对象中的可变对象。这意味着,对于原始对象中的任何可变对象,深拷贝都会创建一个新的对象副本,而不是仅仅复制其引用。因此,修改原始对象中的可变对象不会影响深拷贝的对象。
在Python中,可以使用copy模块的deepcopy()函数来进行深拷贝。
示例:
python复制代码
import copy | |
original_list = [1, 2, [3, 4]] | |
deep_copy_list = copy.deepcopy(original_list) | |
# 修改原始列表中的可变对象 | |
original_list[2].append(5) | |
print(original_list) # 输出: [1, 2, [3, 4, 5]] | |
print(deep_copy_list) # 输出: [1, 2, [3, 4]] |
在这个例子中,我们可以看到,即使修改了原始列表中的可变对象,深拷贝的列表也没有受到影响。
在选择使用浅拷贝还是深拷贝时,应根据具体需求和场景来判断。如果只需要复制对象本身和不可变对象,且不需要担心修改原始对象中的可变对象,那么可以使用浅拷贝。如果需要完全独立地复制对象及其包含的所有对象,那么应该使用深拷贝。
我认为软件测试行业有着广阔的职业发展空间,而且无论什么语言开发的,都需要测试之后才能上线,加上我在校的时候接触测试比较多,对这方面了解比较多。
身份:支付者、收款者
条件:二维码实时刷新、绑定扫码人的账号ID、实时性
功能:扫码支付、商家收款码收款、展示支付成功界面、唯一性、完整性、原子性、顺序、金额、数字键盘弹出、中断事件、断电、断网、进度保存、金额限制、支付顺序、账户扣款、实时性
其他方面:性能、兼容性、易用性、可靠性、安全性、可维护、可移植性等
先需求分析-找QPS高的接口,制定测试计划-啥时候测,写测试用例-衡量测试预期,写脚本-用JMeter,选定接口、加线程组、多少个线程、每个线程每秒请求几次,进行测试-执行脚本,看报告-是否符合预期,分析原因-为啥不符合,改进接口资源-重新测试
需求分析:确定测试的目的、范围和重点。覆盖率可以是增量的,也可以是全量的。增量覆盖率是指新增的代码或功能被测试覆盖的程度;全量覆盖率是指整个代码或功能的测试覆盖程度。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。