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

在这里插入图片描述


计算机网络知识汇总补充

  • 一、四次挥手
    • 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的核心思想是在读操作和写操作之间创建一个快照,使得读操作不会被写操作所阻塞,从而提高并发性能。具体实现方式如下:
    1. 版本号:每个数据项都会有一个版本号,用于标识该数据项的版本。当一个事务开始时,它会获得一个全局的事务ID,并将该ID作为版本号。

    2. 读操作:当一个事务执行读操作时,它会读取最新的符合条件的版本。如果存在比当前事务ID更大的版本号,则说明该数据项已被其他事务修改,当前事务需要等待。

    3. 写操作:当一个事务执行写操作时,它会创建一个新的版本,并将新版本的数据写入数据库。同时,该事务会更新所有已读取该数据项的事务的版本号,使得它们无法再读取旧版本。

    4. 回滚:如果一个事务执行过程中发生了错误或者被取消,它可以通过回滚操作将数据库恢复到事务开始之前的状态。回滚操作会撤销该事务对数据库的所有修改。

    • MVCC的优点是提高了并发性能和并发控制的粒度,减少了锁的使用,从而减少了事务之间的冲突。但也存在一些缺点,如增加了存储空间的开销和读操作的复杂性。

七、对称加密非对称加密

对称加密

  • 对称加密使用相同的密钥(称为私钥)来加密和解密数据。
  • 加密和解密过程使用同一个密钥,因此对称加密算法在加密和解密速度上通常比较快。
  • 常见的对称加密算法包括AES(高级加密标准)等。

非对称加密

  • 非对称加密使用一对密钥(公钥和私钥)来加密和解密数据。
  • 公钥用于加密数据,私钥用于解密数据,这两个密钥是相关联的,但不相同。
  • 非对称加密算法能够实现数据的安全传输和身份认证,但由于涉及复杂的数学运算,其加密和解密速度较慢。
  • 常见的非对称加密算法包括 RSA等。

八、堆和栈的不同

九、如果A服务调B服务出现失败:下游服务调用失败,或者无法响应请求了,怎么优化

  1. 实现重试机制

    • 在A服务发现调用B服务失败时,可以实现简单的重试机制,尝试重新调用B服务一定次数,以确保请求能够成功响应。
    • 重试机制可以设置一定的重试间隔和次数,避免过多的请求导致负担增加。
  2. 实现服务降级

    • 当B服务无法响应或出现异常时,A服务可以实现服务降级策略,返回默认值或者缓存数据,保证用户体验。
    • 服务降级可以在一定程度上减少对下游服务的依赖,提高系统的可用性。
  3. 设置超时时间

    • 为A服务调用B服务设置合理的超时时间,以避免长时间等待响应导致的性能问题。
    • 当超过设定的超时时间后,可以及时进行异常处理或重试操作。

十、redo log,bin log, undo log

  • binlog:主节点 binlog,主从复制的基础是主库记录数据库的所有变更记录到 binlog。binlog是数据库服务器启动的那一刻起,保存所有修改数据库结构或内容的一个文件。
  • undo log记录事务提交前的状态,更新前的值,用于事务回滚;
  • redo log记录事务提交后的状态,更新后的值,用于数据恢复,持久化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809224.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4-云原生监控体系-Grafana-基本使用

1. 介绍 使用Grafana,您可以通过漂亮、灵活的仪表板创建、探索和共享所有数据。查询、可视化、提醒和理解您的数据,无论数据存储在何处。 图片出处: https://grafana.com/grafana/ 官方网站 2. 界面介绍 Connections 可以配置数据源&#x…

自动驾驶感知场景挖掘

目录 前言 1. 目标检测与跟踪 2. 语义分割 3. 环境建模 4. 场景理解与预测 5. 异常检测与处理 总结 前言 自动驾驶感知场景挖掘是指利用传感器和算法技术,对车辆周围的环境进行实时监测和理解。这种技术可以识别和分析道路、车辆、行人、交通标志等各种元素…

php-redis windows ,pecl 已经不维护了,解决方案:php 8.2 | 8.3+ redis extension windows

从论坛上pecl 已经不维护了,直接让大家到ci 去下载 https://stackoverflow.com/questions/76496488/redis-dll-not-found-for-php8-2/76496489#76496489 让我们找最新的一次commit ,然后又action 构建,再下载,这样的话也好&#…

Redis从入门到精通(十三)Redis分布式缓存(一)RDB和AOF持久化、Redis主从集群的搭建与原理分析

文章目录 第5章 Redis分布式缓存5.1 Redis持久化5.1.1 RDB持久化5.1.1.1 执行时机5.1.1.2 bgsave原理 5.1.2 AOF持久化5.1.2.1 AOF原理5.1.2.2 AOF配置5.1.2.3 AOF文件重写 5.1.3 RDB和AOF的对比 5.2 Redis主从5.2.1 搭建主从结构5.2.2 主从数据同步原理5.2.2.1 全量同步5.2.2.…

集群开发学习(一)(安装GO和MySQL,K8S基础概念)

完成gin小任务 参考文档: https://www.kancloud.cn/jiajunxi/ginweb100/1801414 https://github.com/hanjialeOK/going 最终代码地址:https://github.com/qinliangql/gin_mini_test.git 学习 1.安装go wget https://dl.google.com/go/go1.20.2.linu…

【Ubuntu】 Github Readme导入GIF

1.工具安装 我们使用 ffmpeg 软件来完成转换工作1.1 安装命令 sudo add-apt-repository ppa:jonathonf/ffmpeg-3sudo apt-get updatesudo apt-get install ffmpeg1.2 转换命令 (1)直接转换命令: ffmpeg -i out.mp4 out.gif(2) 带参数命令&…

泛微E-Cology ProcessOverRequestByXml 任意文件读取漏洞复现

0x01 产品简介 泛微协同管理应用平台E-Cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 0x02 漏洞概述 泛微e-cology某处功能点最初针对用户输入…

【洛谷 P4017】最大食物链计数 题解(深度优先搜索+动态规划+邻接表+记忆化搜索+剪枝)

最大食物链计数 题目背景 你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。 题目描述 给你一个…

K8S之资源管理

关于资源管理,我们会从计算机资源管理(Computer Resources)、服务质量管理(Qos)、资源配额管理(LimitRange、ResourceQuota)等方面来进行说明 Kubernetes集群里的节点提供的资源主要是计算机资源…

ChatGPT与学术论文:提升写作效率的最佳工具

ChatGPT无限次数:点击直达 ChatGPT与学术论文:提升写作效率的最佳工具 在当今信息爆炸的时代,如何高效地撰写学术论文成为许多学术写作者面临的挑战之一。随着人工智能技术的发展,ChatGPT成为了一个极具潜力的工具,能够帮助写作者…

Node.js环境WebSocket示例

server.js: const WebSocket require(ws);const wss new WebSocket.Server({ port: 3000 });wss.on(connection, function connection(ws) {console.log(客户端已连接);ws.on(message, function incoming(message) {console.log(收到客户端消息:, message);ws.se…

Kali安全

基础配置 $ ip a s # 查看网络IP地址,本例中查看到的是192.168.88.40 $ sudo systemctl start ssh # 启ssh服务,弹出的窗口输入密码kali $ sudo systemctl enable ssh # 设置ssh服务开机自启 [rootmyhost ~]# ssh kali192.168.88.40 nmap…

SuperGluePretrainedNetwork调用接口版本(两个版本!)

本脚本是一个基于Python的应用,旨在演示如何使用SuperGlue算法进行图像之间的特征匹配。SuperGlue是一个强大的特征匹配工具,能够在不同的图像之间找到对应的关键点。这个工具尤其适用于计算机视觉任务,如立体视觉、图像拼接、对象识别和追踪…

0基础刷图论最短路 2(从ATcoder 0分到1800分)

AT最短路刷题2(本文难度rated 1000~ 1200) 题目来源:Atcoder 题目收集: https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path (里面按tag分类好了Atcoder的所有题目,类似cf) &#x…

RN封装三角形组件(只支持上下箭头)

import React from react; import { View, StyleSheet } from react-native;const Triangle ({ direction, width, height, color }) > {// 根据方向选择三角形的样式const triangleStyle direction up? {borderTopWidth: 0,borderBottomWidth: height,borderLeftWidth: …

docker完美安装分布式任务调度平台XXL-JOB

分布式任务调度平台XXL-JOB 1、官方文档 自己看 https://www.xuxueli.com/xxl-job/#1.1%20%E6%A6%82%E8%BF%B0 2、使用docker部署 本人使用的腾讯云,安装docker暴露一下端口,就很舒服的安装这个服务了。 docker pull xuxueli/xxl-job-admin:2.4.03…

Harmony鸿蒙南向驱动开发-PIN接口使用

功能简介 PIN即管脚控制器,用于统一管理各SoC的管脚资源,对外提供管脚复用功能:包括管脚推拉方式、管脚推拉强度以及管脚功能。 PIN接口定义了操作PIN管脚的通用方法集合,包括: 获取/释放管脚描述句柄:传…

代码随想录算法训练营第三十七天|● 738.单调递增的数字 ● 968.监控二叉树

738.单调递增的数字 class Solution { public:int monotoneIncreasingDigits(int n) {string a to_string(n);int k 0;for (int i a.size() - 1; i > 0; i--) {if (a[i] < a[i - 1]) {k i;a[i-1]--;}}cout << k << endl;if (k ! 0){for (int i a.size…

c# Xml 和 Json 转换方法记录

c# xml 转 json 在C#中&#xff0c;可以使用下面几种方法将XML转换为JSON&#xff1a; 使用Newtonsoft.Json库&#xff1a; using Newtonsoft.Json; using Newtonsoft.Json.Converters; using Newtonsoft.Json.Linq; using System.Xml;// 从XML字符串转换为JSON字符串 string …

安卓手机APP开发的媒体相关内容播放列表

安卓手机APP开发的媒体相关内容播放列表 目录 概述 修改播放列表 查询播放列表 重复模式 随机模式 设置一个定制的随机顺序 标识播放列表中的媒体项 把APP数据和播放列表媒体项关联起来