测试工程师八股文04|计算机网络 和 其他
一、计算机网络
1、http和https的区别
HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议,建立在TCP/IP协议栈之上,用于客户端(如浏览器)和服务器之间的通信。
①http和https的主要区别在于安全性。http是一种明文传输协议,数据在传输过程中没有加密,容易被窃听和篡改,因此不适合传输敏感信息。而 https是在http的基础上加入了 ssl/tls 加密层,通过加密传输和身份认证,确保信息的安全性和完整性。
②https 常用于需要保护隐私的场景,如网上支付和登录等,而http则适用于不涉及敏感信息的普通网站,例如展示网站。
③另外由于二者使用的是完全不同的连接方式,所以端口号也不一样,http是80端口,https用的是443端口。
2、ssl怎么连接
SSL/TLS 连接的过程大致分为几个步骤。
①首先,客户端向服务器发起连接请求,并告诉服务器它支持的加密方式。
②接着,服务器选择一个双方都支持的加密协议,并发送自己的数字证书给客户端,客户端验证证书的有效性。
③然后,客户端生成一个预主密钥,并用服务器的公钥加密后发送给服务器,双方用这个密钥生成对称密钥,开始加密通信。
④最后,所有数据传输都通过这个加密通道进行,确保数据的安全性和隐私性。通信结束时,双方会通过发送关闭通知来安全关闭连接。
3、TCP和UDP的区别
TCP 和 UDP 是两种不同的传输层的协议。TCP 是面向连接的,提供可靠的数据传输,保证数据按顺序到达,并有重传机制来确保数据不丢失,因此适用于要求高可靠性的应用,如文件传输和网页浏览。相比之下,UDP 是无连接的,不保证数据的顺序和可靠性,但它速度更快,适用于实时性要求高的场景,如视频通话和在线游戏,因为这些应用可以容忍一些数据丢失或乱序。
复杂版本:
①TCP⾯向连接,通过三次握⼿建⽴连接,四次挥⼿接除连接;UDP是⽆连接的,即发送数据之前 不需要建⽴连接,这种⽅式为UDP带来了⾼效的传输效率,但也导致⽆法确保数据的发送成功。
②TCP是可靠的通信⽅式。通过TCP连接传送的数据,TCP通过超时重传、 数据校验等⽅式来确保 数据⽆差错,不丢失,不重复,且按序到达;⽽UDP由于⽆需连接的原因,将会以最⼤速度进⾏传 输,但不保证可靠交付,也就是会出现丢失、重复等等问题。
③TCP⾯向字节流,实际上是TCP把数据看成⼀连串⽆结构的字节流,由于连接的问题,当⽹络出 现波动时,连接可能出现响应问题;UDP是⾯向报⽂的,UDP没有拥塞控制,因此⽹络出现拥塞不 会使源主机的发送速率降低。
④每⼀条TCP连接只能是点到点的;⽽UDP不建⽴连接,所以可以⽀持⼀对⼀,⼀对多,多对⼀和 多对多的交互通信,也就是可以同时接受多个⼈的包。
⑤TCP需要建⽴连接,⾸部开销20字节相⽐8个字节的UDP显得⽐较⼤。
⑥TCP的逻辑通信信道是全双⼯的可靠信道,UDP则是不可靠信道。
4、TCP的三次握手和四次挥手

三次握手用于建立TCP连接,确保双方都准备好进行数据传输。过程是:客户端发起连接请求,服务器响应确认,最后客户端确认服务器的响应,连接就建立起来了。
四次挥手用于安全地终止TCP连接,确保双方的数据传输完成后再断开。客户端发送结束请求,服务器确认后也发送结束请求,最后客户端确认服务器的关闭请求,连接就安全地关闭了。
三次握手保证了连接的可靠性,而四次挥手则确保数据传输完成后连接能干净利落地关闭。
5、OSI七层模型
- OSI模型是⼀个抽象的框架,⽤于理解和设计⽹络系统。它将⽹络通信过程分为七个独⽴的层,每层都有特定的功能。
①物理层 (Physical Layer):
- 负责传输⽐特流的物理连接和电信号。
- 示例:⽹线、光纤、电缆等。
②数据链路层 (Data Link Layer):
- 负责在物理链路上的可靠的数据帧传输。将物理层的比特流转换为数据帧,
- 示例:MAC地址、以太⽹、交换机等。
③⽹络层 (Network Layer):
- 负责不同⽹络之间数据报,实现⽹络互联。
- 示例:IP地址、路由器等。
④传输层 (Transport Layer):
- 负责端到端的通信,如流量控制和差错控制。
- 示例:TCP、UDP等。
⑤会话层 (Session Layer):
- 负责建⽴、管理和终⽌应⽤程序之间的会话。
- 示例:会话管理协议等。
⑥表示层 (Presentation Layer):
- 负责数据格式的转换、加密和解密。
- 示例:SSL/TLS(用于加密通信)、JPEG、GIF、MPEG(数据格式化和压缩)。
⑦ 应⽤层 (Application Layer):
- 负责直接为⽤户提供服务和应⽤接⼝。
- 示例:HTTP、FTP、SMTP等。
6、常见的http状态码
① 2xx 表示请求成功并得到了预期的响应。
② 3xx 表示需要客户端进行重定向。
- 301 Moved Permanently:永久重定向,请求的资源已被永久移动到新url,客户端应使用新url进行后续请求。
- 302 Found:临时重定向,请求的资源临时移动到新 URL,客户端可以继续使用原 URL 进行后续请求,且不需要更新缓存。
③ 4xx 表示客户端错误,通常是请求格式或内容的问题。
- 400 Bad Request:客户端发出的请求有误,服务器无法理解。
- 404 Not Found:请求的资源不存在。
④ 5xx 表示服务器错误,服务器无法处理请求。
- 500 Internal Server Error:服务器发生未知错误,无法完成请求。
- 502 Bad Gateway:作为代理服务器的中介接收到上游服务器的无效响应。
补充:查看状态码的方法
- 浏览器开发者工具:适用于前端开发和网页调试。
- 命令行工具(curl/wget):适合快速查看 HTTP 状态码,特别是当你不想加载整个页面时。
- Postman:适合进行 API 测试,特别是对于 HTTP 请求和响应的详细分析。
- 后端日志:适合后端开发和服务器管理,查看日志中的状态码。
- Fiddler:适合捕获和调试 HTTP 流量,查看请求和响应的状态码。
7、get和post的区别
ger通常用于从服务器获取数据;post 通常⽤于向服务器提交数据,如提交表单或上传⽂件。
①get请求的参数是放在url里的,post请求的参数放在请求体里。
②get请求可以被浏览器缓存,post不能被缓存。
③因为get请求的参数是放在url里的,而url的长度是受限的,最大是2048个字符,post请求参数的长度是没有限制的。
④同样因为get请求参数是刚在url里的,所以安全性比较差,post请求的参数放在请求体里,所以安全性较好。
⑤get请求可以通过浏览器直接访问,支持刷新和后退,post请求不能被浏览器直接访问,刷新后数据需要重新传送。
8、当在网页属于一个url后,会发生什么
当你输入一个url 后,浏览器会通过以下流程加载网页:
①DNS 解析:浏览器会首先检查是否已有该url对应的 IP 地址缓存。如果有,浏览器会直接使用该地址进行后续的 TCP 连接,。
②TCP 连接:建立与服务器的连接。涉及三次握手四次挥手。
③TLS 握手(如果是 HTTPS):建立加密通信通道。
④HTTP 请求:浏览器向服务器发送请求,获取资源。
⑤服务器响应:服务器处理请求并返回内容。
⑥前端渲染:浏览器解析并渲染页面,加载外部资源。
⑦缓存和 Cookie 处理:浏览器使用缓存加速加载,携带 Cookie 进行会话管理。
二、其他
1、深拷贝和浅拷贝
①浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存(分支)。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此,对新对象所做的修改可能会影响到原始对象,因为它们共享相同的引用。
②深拷贝创建一个新的对象,并且递归地复制整个原始对象,新对象跟原对象不共享内存,修改新对象不会改到原对象,是“值”而不是“引用”(不是分支),这意味着对新对象所做的修改不会影响到原始对象,因为它们拥有彼此独立的副本。
③简而言之,浅拷贝是“引用复制”,深拷贝是“完全复制”。
相关文章:

测试工程师八股文04|计算机网络 和 其他
一、计算机网络 1、http和https的区别 HTTP和HTTPS是用于在互联网上传输数据的协议。它们都是应用层协议,建立在TCP/IP协议栈之上,用于客户端(如浏览器)和服务器之间的通信。 ①http和https的主要区别在于安全性。http是一种明…...

定时/延时任务-Kafka时间轮源码分析
文章目录 1. 概要2. TimingWheel2.1 核心参数2.2 添加任务2.3 推进时间 3. TimerTaskList3.1 添加节点3.2 删除节点3.3 刷新链表3.4 队列相关 4. 时间轮链表节点-TimerTaskEntry5. TimerTask6. Timer 和 SystemTimer - 设计降级逻辑7. 上层调用8. 小结 1. 概要 时间轮的文章&a…...

如何用状态图进行设计05
到目前为止,我们已经讨论了状态图的原理。这些原理对状态图和扩展状态图都适用。第二章后面的部分主要讲述了扩展状态图的扩展功能。我们将围绕这些增强的功能,使你对BetterState Pro的设计能力有很好的了解。 关于这些内容和其他有关扩展状态图特性的完…...

【计算机视觉】边缘检测
图像的边缘简单来说就是图像中灰度不连续的地方。 1.图像梯度 图像梯度是指图像像素灰度值在某个方向上的变化;图像梯度是图像的一阶导数,实际计算时可以使用差分来近似。 1.1 什么是图像梯度? 图像梯度是一种数学工具,用于描…...

林曦词典|无聊
“林曦词典”是在水墨画家林曦的课堂与访谈里,频频邂逅的话语,总能生发出无尽的思考。那些悠然轻快的、微妙纷繁的,亦或耳熟能详的词,经由林曦老师的独到解析,意蕴无穷,让人受益。于是,我们将诸…...

LabVIEW光栅衍射虚拟仿真系统
随着现代教育技术的快速发展,虚拟仿真实验平台逐渐成为物理实验教学的重要辅助工具。基于LabVIEW的平面透射光栅虚拟仿真系统帮助学生更好地理解和分析光栅衍射现象,提高教学质量和学生的学习兴趣。 项目背景 在波动光学的教学中,光栅衍射实…...
【NumPy进阶】:内存视图、性能优化与高级线性代数
目录 1. 深入理解 NumPy 的内存视图与拷贝1.1 内存视图(View)1.1.1 创建视图1.1.2 视图的特点 1.2 数组拷贝(Copy)1.2.1 创建拷贝1.2.2 拷贝的特点 1.3 视图与拷贝的选择 2. NumPy 的优化与性能提升技巧2.1 向量化操作示例&#x…...

从YOLOv5到训练实战:易用性和扩展性的加强
文章目录 前言一、模型介绍二、YOLOv5网络结构1.Input(输入端):智能预处理与优化策略2.Backbone(骨干网络):高效特征提取3.NECK(颈部):特征增强与多尺度融合4.Prediction…...

Prim 算法在不同权重范围内的性能分析及其实现
Prim 算法在不同权重范围内的性能分析及其实现 1. 边权重取值在 1 到 |V| 范围内伪代码C 代码实现2. 边权重取值在 1 到常数 W 之间结论Prim 算法是一种用于求解加权无向图的最小生成树(MST)的经典算法。它通过贪心策略逐步扩展生成树,确保每次选择的边都是当前生成树到未加…...

canal安装使用
简介 canal [kənl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 工作原理 canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送 dump 协议…...
python爬虫常用数据保存模板(Excel、CSV、mysql)——scrapy中常用数据提取方法(CSS、XPATH、正则)(23)
文章目录 1、常用数据保存模板2.1 保存为Excel格式2.2 保存为CSV格式2.3 保存至mysql数据库2、scrapy中常用数据提取方法2.1 XPath选择器2.2 CSS选择器2.3 正则表达式1、常用数据保存模板 2.1 保存为Excel格式 # 1、导入模块 from openpyxl import workbook# 2、创建一个exce…...
You need to call SQLitePCL.raw.SetProvider()
在.NET环境中使用Entity Framework Core(EF Core)连接SQLite数据库时,报错。 使用框架 .NET8 错误信息: Exception: You need to call SQLitePCL.raw.SetProvider(). If you are using a bundle package, this is done by calling…...

IoTDB AINode 报错,call inference 301: Error ocurred while executing inference
问题及现象 使用时序数据库 IoTDB 的 AINode 的 call inference 语句后报错: Msg: org.apache.iotdb.jdbc.IoTDBSOLException:301: Error ocurred while executing inference:[tuple object has no attribute inference]解决方法 可以替换 venv 里面的…...

LLM之RAG实战(五十)| FastAPI:构建基于LLM的WEB接口界面
FastAPI是WEB UI接口,随着LLM的蓬勃发展,FastAPI的生态也迎来了新的机遇。本文将围绕FastAPI、OpenAI的API以及FastCRUD,来创建一个个性化的电子邮件写作助手,以展示如何结合这些技术来构建强大的应用程序。 下面我们开始分步骤操…...
项目-移动端适配的几种方案
目录 一、rem方案二、vw适配方案 一、rem方案 以vue2项目为例 下载安装包:npm install amfe-flexible --save在main.js中引入:import ‘amfe-flexible’下载安装包:npm install postcss-pxtorem --save项目下新建postcss.config.js文件&…...

HCIA-Access V2.5_2_2网络通信基础_TCP/IP协议栈报文封装
TCP/IP协议栈的封装过程 用户从应用层发出数据先会交给传输层,传输层会添加TCP或者UDP头部,然后交给网络层,网络层会添加IP头部,然后交给数据链路层,数据链路层会添加以太网头部和以太网尾部,最后变成01这样…...

LSTM详解
1. LSTM设计 LSTM(长短期记忆网络)详解 长短期记忆网络(LSTM, Long Short-Term Memory) 是一种特殊的循环神经网络(RNN),特别适合处理和预测序列数据中的长时间依赖关系。LSTM 通过引入“门机制”(如输入门、遗忘门、输出门)来解决标准 RNN 在长时间序列任务中梯度消…...
从零开始搭建Android开发环境:简单易懂的完整教程
前言: 作为安卓开发的入门,搭建开发环境是每个开发者都必须迈出的第一步。虽然这一步看似简单,但如果没有正确的配置,可能会遇到各种问题。本篇文章将为大家详细介绍如何从零开始搭建Android开发环境,确保你能够顺利开…...

大模型运用-Prompt Engineering(提示工程)
什么是提示工程 提示工程 提示工程也叫指令工程,涉及到如何设计、优化和管理这些Prompt,以确保AI模型能够准确、高效地执行用户的指令,如:讲个笑话、java写个排序算法等 使用目的 1.获得具体问题的具体结果。(如&…...

CMake简单使用(二)
目录 五、scope 作用域5.1 作用域的类型5.1.1 全局作用域5.1.2 目录作用域5.1.3 函数作用域 六、宏6.1 基本语法6.2 演示代码 七、CMake构建项目7.1 全局变量7.2 写入源码路径7.3 调用子目录cmake脚本7.4 CMakeLists 嵌套(最常用) 八、CMake 与库8.1 CMake生成动静态库8.1.1 动…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...

Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...