计算机网络知识等汇总补充

计算机网络知识汇总补充
- 一、四次挥手
- 1、为什么TCP要等待2MSL
- 2、如果说一个系统中,有大量的time_wait和close_wait,会是什么原因?
- 二、你是怎么解决粘包问题?
- 三、你觉得哪些场景适合redis
- 四、redis的持久化策略
- 五、你会怎么保证mysql 和Redis的一致性
- 六、事务隔离级别和MVCC控制的理解?
- 七、对称加密非对称加密
- 八、堆和栈的不同
- 九、如果A服务调B服务出现失败:下游服务调用失败,或者无法响应请求了,怎么优化
- 十、redo log,bin log, undo log
一、四次挥手

1、刚开始客户端和服务端都处于连接状态,假如客户端发起关闭请求
2、第一次挥手:客户端向服务器发送FIN报文,发完进入FIN_WAIT_1状态,即主动关闭TCP连接,不再发送数据,但是可以接收服务器发来的报文,等待服务器回复。;
3、第二次挥手:服务器接到FIN报文,返回一个ACK报文,表名自己接收到此报文,服务器进入CLOSE_WAIT等待关闭状态,此时客户端就知道服务端接收到自己的断开连接的请求,进入FIN_WAIT_2状态,TCP处于半关闭状态,但是服务器可能还有数据要传输。
4、第三次挥手:服务器关闭客户端连接,发送FIN报文给客户端数据传输完毕,等待客户端回应。
5、第四次握手:客户端收到FIN报文后,发送一个ACK给服务端做为应答,此时客户端处于TIME_WAIT状态,这个状态是为了等待足够的时间以确保TCP接收到连接中断请求的确认。
1、为什么TCP要等待2MSL
注意:这时服务器到客户端的TCP连接并未被释放,客户端需要经过等待2MSL(MSL表示一个报文的来回时间)后才会进入CLOSED状态,这样做的目的是确保服务器收到自己的ACK报文,如果在规定时间没有收到客户端发的ACK,那么服务器会重发FIN,客户端再次收到FIN报文,就知道自己的ACK丢了,然后会重发ACK给服务器。服务器收到ACK后,就会关闭连接,处于CLOSE状态了。
2、如果说一个系统中,有大量的time_wait和close_wait,会是什么原因?
未正确关闭连接
处理连接过程中出错
网络延迟或故障
二、你是怎么解决粘包问题?
1、粘包定义:粘包指的是数据和数据之间没有明确的分界线导致不能正确读取数据。
2、这意味着UDP根本不会粘包,但是会丢数据,不可靠。意味着: TCP传输数据是可靠的,但是会粘包。
所谓粘包问题主要还是因为:
1、接收方不知道消息之间的界限,不知道一个消息要提取多少字节的数据所造成的。 (服务器端出现黏包)
2、tcp在发送数据少且间隔时间短的数据时,会将几条和并一起发送。(客户端出现黏包)
3、黏包的解决办法:
为字节流加上一个报头,告诉发送的字节流总大小,然后接收端来一个死循环接收完所有数据。用struck将序列化后的数据长度打包成4个字节(4个字节完全够用)。
客户端把数据长度封装成一个固定大小的数据, 这时服务端就可以指定读取固定大小的内容,不会读取数据的内容,服务端只要根据数据长度再来接收数据内容就好了,所以客户端连续两次发数据(文件) , 不会粘包,因为服务器端每次接收都只接收了本次该接收的数据。
4.你使用TCP的时候会出现,那么UDP会出现吗
- 不会出现
三、你觉得哪些场景适合redis
- String(字符串):缓存、计数器限流
- Hash(哈希):存储对象数据、统计类数据
- List(列表):文章列表
- Set(无序集合):标签、点赞、签单
- Zset(有序集合):排行榜
redis你使用的场景
string异步执行任务,消息队列
四、redis的持久化策略
-
RDB持久化:RDB持久化会在指定的时间间隔内生成一个快照文件(Snapshot),将数据集的内容写入一个压缩的二进制文件中。RDB持久化方式适合数据集较大,但不要求数据丢失太多的场景。可以通过配置文件设置快照生成的条件和时间间隔。
-
AOF持久化:AOF持久化是以日志的方式记录每个写操作的命令,在Redis重启时重新执行这些命令来恢复数据。AOF持久化方式保证了每个写操作的数据一致性和持久性,但相比RDB会更占用磁盘空间和对性能有一定影响。
五、你会怎么保证mysql 和Redis的一致性
- 淘汰缓存:在更新 MySQL 数据后,异步地更新 Redis 中的数据。这种方式可以降低对数据库写入性能的影响,但可能会导致短暂的数据不一致。
- 更新缓冲:在系统中同时写入 MySQL 和 Redis,确保两者的数据保持一致。这种方式可以保证每次写入操作都同时更新 MySQL 和 Redis,但会增加系统的写入负载。
- 消息队列:使用消息队列来实现 MySQL 和 Redis 数据的同步。在数据库更新后发送消息到队列,消费者将消息同步到 Redis 中,确保数据的一致性。
- 监控和报警:实时监控 MySQL 和 Redis 的数据一致性,一旦发现数据不一致情况,及时进行报警并修复。
六、事务隔离级别和MVCC控制的理解?
-
用于处理并发事务的一致性和隔离性
-
MVCC是一种并发控制机制,常用于数据库管理系统中,用于解决并发访问数据库时的数据一致性问题。MVCC通过在每个数据项上维护多个版本来实现并发控制。
- MVCC的核心思想是在读操作和写操作之间创建一个快照,使得读操作不会被写操作所阻塞,从而提高并发性能。具体实现方式如下:
-
版本号:每个数据项都会有一个版本号,用于标识该数据项的版本。当一个事务开始时,它会获得一个全局的事务ID,并将该ID作为版本号。
-
读操作:当一个事务执行读操作时,它会读取最新的符合条件的版本。如果存在比当前事务ID更大的版本号,则说明该数据项已被其他事务修改,当前事务需要等待。
-
写操作:当一个事务执行写操作时,它会创建一个新的版本,并将新版本的数据写入数据库。同时,该事务会更新所有已读取该数据项的事务的版本号,使得它们无法再读取旧版本。
-
回滚:如果一个事务执行过程中发生了错误或者被取消,它可以通过回滚操作将数据库恢复到事务开始之前的状态。回滚操作会撤销该事务对数据库的所有修改。
- MVCC的优点是提高了并发性能和并发控制的粒度,减少了锁的使用,从而减少了事务之间的冲突。但也存在一些缺点,如增加了存储空间的开销和读操作的复杂性。
七、对称加密非对称加密
对称加密
- 对称加密使用相同的密钥(称为私钥)来加密和解密数据。
- 加密和解密过程使用同一个密钥,因此对称加密算法在加密和解密速度上通常比较快。
- 常见的对称加密算法包括AES(高级加密标准)等。
非对称加密
- 非对称加密使用一对密钥(公钥和私钥)来加密和解密数据。
- 公钥用于加密数据,私钥用于解密数据,这两个密钥是相关联的,但不相同。
- 非对称加密算法能够实现数据的安全传输和身份认证,但由于涉及复杂的数学运算,其加密和解密速度较慢。
- 常见的非对称加密算法包括 RSA等。
八、堆和栈的不同

九、如果A服务调B服务出现失败:下游服务调用失败,或者无法响应请求了,怎么优化
-
实现重试机制:
- 在A服务发现调用B服务失败时,可以实现简单的重试机制,尝试重新调用B服务一定次数,以确保请求能够成功响应。
- 重试机制可以设置一定的重试间隔和次数,避免过多的请求导致负担增加。
-
实现服务降级:
- 当B服务无法响应或出现异常时,A服务可以实现服务降级策略,返回默认值或者缓存数据,保证用户体验。
- 服务降级可以在一定程度上减少对下游服务的依赖,提高系统的可用性。
-
设置超时时间:
- 为A服务调用B服务设置合理的超时时间,以避免长时间等待响应导致的性能问题。
- 当超过设定的超时时间后,可以及时进行异常处理或重试操作。
十、redo log,bin log, undo log
- binlog:主节点 binlog,主从复制的基础是主库记录数据库的所有变更记录到 binlog。binlog是数据库服务器启动的那一刻起,保存所有修改数据库结构或内容的一个文件。
- undo log记录事务提交前的状态,更新前的值,用于事务回滚;
- redo log记录事务提交后的状态,更新后的值,用于数据恢复,持久化
相关文章:
计算机网络知识等汇总补充
计算机网络知识汇总补充 一、四次挥手1、为什么TCP要等待2MSL2、如果说一个系统中,有大量的time_wait和close_wait,会是什么原因? 二、你是怎么解决粘包问题?三、你觉得哪些场景适合redis四、redis的持久化策略五、你会怎么保证my…...
word中插入mathtype版的符号后,行间距变大解决方法
问题 解决方法 选中该段,设置固定值行距。如果是宋体,小四,1.25行距,那么固定值就为20磅。 成功解决。...
怎么给html文件本地启动一个服务去访问
首先得先安装node 要启动一个本地的 HTTP 服务器,请先安装 Node.js,然后通过命令行在 HTML 文件所在文件夹下运行 npx serve...
LabVIEW无线快速存取记录器(WQAR)测试平台
LabVIEW无线快速存取记录器(WQAR)测试平台 随着民用航空业的迅速发展,航空安全的保障日益成为公众和专业领域的关注焦点。无线快速存取记录器(WirelessQuick Access Recorder, WQAR)作为记录飞行数据、监控飞行品质的…...
12-pyspark的RDD算子注意事项总结
目录 相近算子异同总结相近变换算子异同foreach和foreachPartitionfold和reducecoalesce和repatition 相近动作算子异同cache和persist 算子注意事项需要注意的变换算子需要注意的动作算子 PySpark实战笔记系列第三篇 10-用PySpark建立第一个Spark RDD(PySpark实战笔记系列第…...
设备基础命令,路由基础
直连路由 静态路由 动态路由 根据路由器学习路由信息、生成并维护路由表的方法包括直连路由(Direct)、静态路由(Static)和动态路由(Dynamic)。直连路由:路由器接口所连接的子网的路由方式称为直连路由;非直连路由:通过路由协议从别的路由器…...
golang context
作用:用于在go协程中 传递上下文、超时、取消、传值 底层实现:是由互斥锁、channel、map来实现的 互斥锁:保护临界资源 channel: 用于信号通知,比如ctx.Done() map: 保存父ctx下派生的所有子ctx, 父ctx关闭,子ctx都关…...
GPT中的Transformer架构以及Transformer 中的注意力机制
目录 1 GPT中的Transformer架构 2 transformer中的注意力机制 参考文献: 看了两个比较好的视频,简单做了下笔记。 1 GPT中的Transformer架构 GPT是Generative Pre-trained Transformer单词的缩写,其中transformer是一种特定的神经网络&a…...
Hive的简单学习二
一Hive 库的基本操作 1.1 建库 1.默认路径是/user/hive/warehouse 例如 我输入命令 create database text1 则text1出现在 warehouse目录下 2.指定位置创建数据库 create database text2 location /bigdata29/bigdata29db 后面的路径是hdfs的路径 3.最终写法 加上if n…...
Qt事件处理机制3-事件函数的分发
Qt开发中,经常重写event函数和具体的事件处理函数,例如mousePressEvent、paintEvent等,那么这些具体的事件处理函数是怎样被调用的呢?答案是由继承自QObject的类中的event函数来处理事件分发。这里以间接继承自QWidget的派生类MyB…...
4月9号总结
java学习 一.steam流 1.介绍 Stream 是 Java 8 中引入的一种处理集合数据的新抽象。它提供了一种高效且便利的方式来处理集合中的元素,支持函数式编程的特性,使得集合操作变得更加简洁和灵活。 2.创建 List和Set可以直接调用接口的steam方法转换为流 …...
Linux生态系统:探索Linux的开源世界
Linux生态系统:探索Linux的开源世界 在前面的博客中,我们深入探讨了Linux的各种技能和技巧,从入门到进阶,再到高手级别。这一路走来,相信大家对Linux已经有了全面的认识和掌握。然而,Linux的魅力远不止于此。今天,我们将进一步探索Linux生态系统,了解Linux在开源世界中的重要地…...
XILINX 10G PCS PMA IP核使用
文章目录 一、设计框图二、模块设计三、IP核配置四、上板验证五、总结 一、设计框图 关于GT高速接口的设计一贯作风,万兆以太网同样如此,只不过这里将复位逻辑和时钟逻辑放到了同一个文件ten_gig_eth_pcs_pma_0_shared_clock_and_reset当中。如果是从第…...
Scrapy框架内存泄漏问题及解决
说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除 作者:zhu6201976 一、问题背景及原因 官方文档:Debugging memory leaks — Scrapy 2.11.1 documentation Scrapy是一款功能强大的网络爬虫框…...
app 创建快捷入口 在手机上面多个icon
activity-alias详解及应用-CSDN博客 Android动态修改应用图标最佳实践 - 简书 AndroidManifest.xml 中 <activity-aliasandroid:name"包名.ui.mine.SecondActivityAlias"android:label"快捷入口"android:icon"mipmap/collection_one"andro…...
【网安小白成长之路】6.pkachu、sql-lbas、upload-lbas靶场搭建
🐮博主syst1m 带你 acquire knowledge! ✨博客首页——syst1m的博客💘 🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭 &…...
vue 项目中添加DES加密
vue 项目中添加DES加密 由于现在项目使用http协议,且登录界面是明文传输,项目真正上线后基本的密码传输都很不安全。 决定用前端框架加密后再进行传输,以提高密码传输过程中的安全性。 crypto-js 是一个流行的 JavaScript 加密库࿰…...
【记录问题】如何测试虚拟机已经可以连接网络
如何测试虚拟机已经可以连接网络 要测试虚拟机是否已经连接网络,可以采取以下步骤: 检查虚拟网络编辑器 使用管理员权限打开虚拟网络编辑器,检查NAT方式下的虚拟子网网段。 确保虚拟机的网络设置与虚拟子网网段相匹配。检查虚拟机网络设置 …...
MySQL数据库的详解(1)
DDL(数据库操作) 查询 查询所有数据库:show databases;当前数据库:select database(); 创建 创建数据库:create database [ if not exists] 数据库名 ; 使用 使用数据库:use 数据库名 ; 删除 删除数…...
Python 网络爬虫技巧分享:优化 Selenium 滚动加载网易新闻策略
简介 网络爬虫在数据采集和信息获取方面发挥着重要作用,而滚动加载则是许多网站常用的页面加载方式之一。针对网易新闻这样采用滚动加载的网站,如何优化爬虫策略以提高效率和准确性是一个关键问题。本文将分享如何利用 Python 中的 Selenium 库优化滚动…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
