如何关闭一个tcp连接 阻塞和等待的区别 b树查找的过程

news2024/9/22 16:35:22

如何关闭一个 TCP 连接

可能大家第一反应是「杀掉进程」不就行了吗?
是的,这个是最粗暴的方式,杀掉客户端进程和服务端进程影响的范围会有所不同:
• 在客户端杀掉进程的话,就会发送 FIN 报文,来断开这个客户端进程与服务端建立的所有 TCP 连接,这种方式影响范围只有这个客户端进程所建立的连接,而其他客户端或进程不会受影响。
• 而在服务端杀掉进程影响就大了,此时所有的 TCP 连接都会被关闭,服务端无法继续提供访问服务。
所以,关闭进程的方式并不可取,最好的方式要精细到关闭某一条 TCP 连接。
有一种思路是伪造一个四元组相同的 RST 报文,RST表示重置。在TCP/IP协议中,RST是TCP连接中一种重要的报文标志,用于终止连接或重置连接。当TCP连接发生问题时,需要使用一些特殊的标志来控制连接状态。在TCP协议中,当一条TCP连接需要中断时,可以发送一个带有RST标志的TCP报文,以重置连接并终止数据传输。
「伪造 RST 报文来关闭 TCP 连接」,也叫TCP 重置攻击。
tcp重置攻击是用伪造的Tcp重置包干扰用户和网站的连接
要伪造一个有用的 RST 报文,关键是要拿到对方下一次期望收到的序列号。
有两个关闭一个 TCP 连接的工具:tcpkill 和 killcx。
这两个工具都是通过伪造 RST 报文来关闭指定的 TCP 连接,但是它们拿到正确的序列号的实现方式是不同的。
• tcpkill 工具是在双方进行 TCP 通信时,拿到对方下一次期望收到的序列号,然后将序列号填充到伪造的 RST 报文,并将其发送给对方,达到关闭 TCP 连接的效果。

什么是线程同步

线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 线程同步简单说就是线程排队
在这里插入图片描述

工作内存和主内存

主内存是Java内存模型的一部分,是多个线程共享的内存区域。Java程序中的每个变量都存储在主内存中。工作内存是每个线程私有的内存区域。每个线程都有自己的工作内存,线程之间不能直接访问对方的工作内存。

我们在Java中开启一个线程,最终也是交给CPU去执行。 具体的流程是:我们在使用Java线程,内部会调用操作系统(OS)的内核线程(Kernel-Level Thread),这种线程是操作系统内核(Kernel)直接支持的,内核通过调度器,对线程进行调度,并将线程交给各个CPU内核去处理。
Java内存模型规定了所有对共享变量的读写操作都必须在本地内存中进行,需要先从主内存中拿到数据,复制到本地内存,然后在本地内存中对数据进行修改,再刷新回主内存。

单核cpu上多线程仍然会存在线程安全问题,因为单核cpu仍然存在线程切换,在执行非原子操作的时候,仍然存在线程问题,比如i++操作。

单核多线程指的是单核CPU轮流执行多个线程,通过给每个线程分配CPU时间片来实现,只是因为这个时间片非常短(几十毫秒),所以在用户角度上感觉是多个线程同时执行.
在单核 CPU 上,多线程实际上是通过时间片轮转算法来实现的,即操作系统将 CPU 时间划分成多个时间片,每个线程在一个时间片内执行一段时间,然后被操作系统挂起,切换到另一个线程继续执行,如此往复,直到所有线程都执行完毕。

阻塞和等待的区别

sleep()方法是定义在Thread上的native方法, 在设定时间段内(精度取决于CPU)阻塞线程的执行, 但是并不更改线程的锁持有情况.

wait/notify机制
wait()方法是定义在Object上的方法, 是java语言级的方法, 需要在同步块或者同步方法中进行调用, 会释放锁, 并进入锁对象的等待队列, 需要等到其他线程调用notify()方法释放锁后(实际上该线程同步块运行结束后才会释放锁), 重新竞争锁.

进入waiting状态是线程主动的, 而进入blocked状态是被动的. 阻塞原则上是为了解决同一个资源竞争(修改)而存在的,而等待是为了多线程间通信而设计的。

b树的查找

B 树的子树大小排序规则,因此在 B 树中查找数据时,一般需要这样:

从根节点开始,如果查找的数据比根节点小,就去左子树找,否则去右子树
和子树的多个关键字进行比较,找到它所处的范围,然后去范围对应的子树中继续查找
以此循环,直到找到或者到叶子节点还没找到为止
3阶的B-Tree的查找过程:

在这里插入图片描述
每个节点占用一个盘块的磁盘空间,一个节点上有两个升序排序的关键字和三个指向子树根节点的指针,指针存储的是子节点所在磁盘块的地址。两个关键词划分成的三个范围域对应三个指针指向的子树的数据的范围域。以根节点为例,关键字为17和35,P1指针指向的子树的数据范围为小于17,P2指针指向的子树的数据范围为17~35,P3指针指向的子树的数据范围为大于35。
模拟查找关键字29的过程:

根据根节点找到磁盘块1,读入内存。【磁盘I/O操作第1次】
比较关键字29在区间(17,35),找到磁盘块1的指针P2。
根据P2指针找到磁盘块3,读入内存。【磁盘I/O操作第2次】
比较关键字29在区间(26,30),找到磁盘块3的指针P2。
根据P2指针找到磁盘块8,读入内存。【磁盘I/O操作第3次】
在磁盘块8中的关键字列表中找到关键字29。
发现需要3次磁盘I/O操作,和3次内存查找操作。由于内存中的关键字是一个有序表结构,可以利用二分法查找提高效率。而3次磁盘I/O操作是影响整个B-Tree查找效率的决定因素。B-Tree相对于AVLTree缩减了节点个数,使每次磁盘I/O取到内存的数据都发挥了作用,从而提高了查询效率。

4 阶 B 树表示每个节点最多有 4 个子树、3 个关键字,最少有 2 个子树、一个关键字。

在B+Tree中,所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+Tree的高度。(可以理解为父辈点那一层只存储索引,可以存储更多的信息,父辈基数大,下一级的子节点存储数据就可以存储多个数据,多个数据快;高度变低了,上一辈基数大,下一辈孩子多)
b+树:
在这里插入图片描述
通常在B+Tree上有两个头指针,一个指向根节点,另一个指向关键字最小的叶子节点,而且所有叶子节点(即数据节点)之间是一种链式环结构。因此可以对B+Tree进行两种查找运算:一种是对于主键的范围查找和分页查找,另一种是从根节点开始,进行随机查找

B+Tree的特点
1.关键字数和子树相同(B 树是关键字数比子树数少一)

在 B 树中,节点的关键字用于在查询时确定查询区间,因此关键字数比子树数少一;而在 B+ 树中,节点的关键字代表子树的最大值,因此关键字数等于子树数。

2.非叶子节点仅用作索引,它的关键字和子节点有重复元素。所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。

有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。除叶子节点外的所有节点的关键字,都在它的下一级子树中同样存在,最后所有数据都存储在叶子节点中。

根节点的最大关键字其实就表示整个 B+ 树的最大元素。

3.叶子节点用指针连在一起

叶子节点包含了全部的数据,并且按顺序排列,B+ 树使用一个链表将它们排列起来,这样在查询时效率更快。

由于 B+ 树的中间节点不含有实际数据,只有子树的最大数据和子树指针,因此磁盘页中可以容纳更多节点元素,也就是说同样数据情况下,B+ 树会 B 树更加“矮胖”,因此查询效率更快。(父一辈基数大,这一辈孩子就多,就能实现人口数据多,相比父辈基数少,这一辈孩子也会少,需要迭代好3,4代才能实现人口变多,增加迭代次数,相对于这里磁盘I/0的次数)
4.B+ 树的查找必会查到叶子节点,更加稳定。有时候需要查询某个范围内的数据,由于 B+ 树的叶子节点是一个有序链表,只需在叶子节点上遍历即可,不用像 B 树那样挨个中序遍历比较大小。

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

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

相关文章

企业网络小实验-MUX-Vlan(NAT)

路漫漫其修远兮,吾将上下而求索 直接上实验 实验说明 模拟公司的部门实验, (1)公司主机如图所示,配置DNS服务器,配置NAT地址转换(使用easy-ip的形式)访问外网。 (2&…

基于SSM的家政服务网站

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

ARM架构之寄存器

CPU进行数据运算和逻辑运算 寄存器 概念 寄存器是处理器内部的存储器,没有地址 作用 一般用于暂时存放参与运算的数据和运算结果 分类 包括通用寄存器、专用寄存器、控制寄存器 C语言中四种存储类型的详解 一、auto存储类型 用auto存储类型说明的变量都是局部于…

单片机有哪些分类?

单片机有哪些分类? 1.AVR单片机-----速度快,一个时钟周期执行一条指令,而普通的51单片机需要12个时钟周期执行一条指令。当然,Atmel公司出品的AT89LP系列单片机也是一个时钟执行一条指令,但目前还未普及。AVR单片机比51单片机多…

2023年全国大学生数学建模B题

多波束测线问题 1.问题提出 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播,在不同界面上产生反射,利用这一原理,从测量船换能器垂直向海底发射声波信号,并记录从声波发射到信号接…

显示器配置信息删除

显示器配置信息删除 1 介绍2 操作参考 1 介绍 笔记本屏幕坏了,手头的拓展显示器都是配置成拓展显示,需要先找一台没配置过的显示器将系统中显示器配置信息删除,这样就能复制屏幕显示到拓展屏幕上了。 2 操作 Windows 的显示器配置位于注册…

go语言基本操作---六

并发编程 并行:指在同一时刻,有多条指令在多个处理器上同时执行。 并发:指在同一时刻只能有一条指令执行,但是多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时…

机器学习——逻辑回归(LR)

机器学习——逻辑回归(LR) 文章目录 前言一、原理介绍二、代码实现2.2. 混淆矩阵2.3. 分类报告2.4. 可视化分类结果 三、额外(先划分数据集再降维与先降维再划分数据集)3.1. 先划分数据集再降维3.2. 先降维再划分数据集3.3. 比较 …

2023数学建模国赛选题建议及BC题思路

大家好呀,全国大学生数学建模竞赛今天下午开赛啦,在这里先带来初步的选题建议及思路。 目前团队正在写B题和C题完整论文,后续还会持续更新哈,以下只是比较简略的图文版讲解,团队目前正在写B、C题完整论文,…

【C语言】进阶——深度剖析数据的存储

目录 1.数据类型 🐻整型分类 2.整型在内存中的存储 🐻2.1原码,反码,补码 🐻2.2大小端介绍 3.浮点数在内存中的存储 1.数据类型 使用不同类型开辟内存空间的大小不同(大小决定了使用范围&#xff09…

jmeter系列-测试计划详细介绍(3)

测试计划的作用 测试计划描述了 Jmeter 在执行时,一系列的步骤一个完整的测试计划包含了一个或多个【线程组、逻辑控制器、采样器、监听器、定时器、断言和配置元素】 Jmeter原件和组件的介绍 基本元件的介绍 多个类似功能组件的 容器(类似于类&…

第四节唯物辩证法(两大总特征)

新旧事物与时间无关,与是否合乎历史方向有关,如有些00后思想可能落后与80后

【C++】内联函数讲解和关键字inline纯干货简介

今日翻看《C Primer Plus》,看到一个陌生的东西--内联函数,立马前来记录一下。 内联函数和常规函数区别 为了明白内联函数和常规函数的区别,首先需要知道程序运行时,遇到常规函数时如何处理的: 编译过程的最终产品时…

python+django青少年心理健康测评分析与预警的设计与实现vue

本青少年心理健康测评分析与预警主要包括二大功能模块,即用户功能模块和管理员功能模块。 (1)管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员功能来管理后台系统。主要功能有:首…

记LGSVL本地编译记录

主要的编译参考来着官方文件 Unity安装 安装unity hub 安装2020.3.3f1在unity hub上 但是我发现没有2020.3.3f1,只有2020.3.3f1c1,其实c1就是中国版,没有什么影响 GIT安装 安装GIT安装Git LFS验证git-lfs(输出Git LFS initialized就&am…

【代码随想录】Day 50 动态规划11 (买卖股票Ⅲ、Ⅳ)

买卖股票Ⅲ https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/ 无语了。。。 写的很好就是怎么都过不了。。。 还是就用代码随想录的写法吧。。。 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();vector&…

雅思写作 三小时浓缩学习顾家北 笔记总结(五)

目录 饥饿网100句翻译练习 Many girls are unwilling to seek employment in male-dominated industries. Many girls are not willing to find jobs in male-dominated industries. The main function of schools is to impart knowledge to the next generation. The ar…

Map,List,Set 等集合以及底层数据结构

文章目录 概述一、Collection接口&#xff08;1&#xff09;List列表 —— 有序、值可重复&#xff08;2&#xff09;Set 集 —— 值不可重复 二、Map接口&#xff08;1&#xff09;HashMap —— 无序1、取模法2、Hash碰撞冲突3、解决Hash冲突 &#xff08;2&#xff09;HashTa…

创邻科技Galaxybase助力SPG推动知识图谱应用落地

1. 知识图谱实践应用&#xff1a;从理论到落地的全景视角 知识图谱&#xff0c;作为一种先进的数据模型和信息表示策略&#xff0c;极大地提升了信息检索与分析的能力。该模型利用图结构&#xff0c;将不同领域、层次和类别的信息有机整合&#xff0c;令复杂的数据关系变得清晰…

Json“牵手”阿里巴巴商品详情数据方法,阿里巴巴商品详情API接口,阿里巴巴API申请指南

阿里巴巴平台是全球领先的网上B2B交易市场。阿里巴巴&#xff08;B2B.com&#xff09;是全球国际贸易领域内最大、最活跃的网上交易市场和商人社区。它拥有来自200余个国家和地区超过360万的注册用户&#xff0c;阿里巴巴中国站在中国地区拥有超过2100万的注册用户。 阿里巴巴…