当前位置: 首页 > news >正文

【算法篇】——数据结构中常见八大排序算法的过程原理详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、插入排序
    • 1.直接插入法
    • 2.希尔排序法
  • 二、交换排序
    • 1. 冒泡排序
    • 2. 快速排序
  • 三、选择排序
    • 1. 简单选择排序
    • 2. 堆排序
  • 四、归并排序
  • 五、基数排序


前言

C++数据结构中的排序算法是编程基础中的重要内容。本文将介绍八大经典排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序和计数排序。每种算法都有其独特的优势和应用场景,从小规模数据到大规模数据,从简单的整数排序到复杂的排序需求。通过理解和应用这些算法,可以更好地解决实际编程中的排序问题,提升程序性能和效率。
八大排序性能对比表
“不改变相同元素的相对排布,即为稳定”
在这里插入图片描述

一、插入排序

1.直接插入法

核心的思想:和前面的比,找到对应的位置插入(对应的位置是指,使得该位置的前面的数都是有序数的位置)
在这里插入图片描述
流程(从小到大排)
1.取数组中的第一个
2.取数组中的第二个,从后往前,前面的逐个对比,若比前面的小,则往前移,
3.取数组中的第三个,从后往前,前面的逐个对比,若比前面的小,则往前移,
n.依次类推,取数组中的第n个,从后往前,前面的逐个对比,若比前面的小,则往前移

2.希尔排序法

核心的思想:对每个子表进行直接的插入排序
子表
在这里插入图片描述
流程
在这里插入图片描述
流程(从小到大)
1.第一趟:步长d=4时,分割的子表为:[49,76],[38,13],[65,27],[97,49]
对每个子表执行直接插入排序,得到第一次排序数组为
[49,13,27,49,76,38,65,97]

2.第二趟:步长d=d/2=2时,在第一次排序的基础上:[49,13,27,49,76,38,65,97]
分割的子表为:[49,27],[76,65],[13,49],[38,97]
对每个子表执行直接插入排序,得到第二次排序数组为
[27,13,49,38,65,49,76,97]

3.第三趟:步长d=d/2=1时,在第二次排序的基础上:[27,13,49,38,65,49,76,97]
分割的子表为:[27,13],[49,38],[65,49],[76,97]
对每个子表执行直接插入排序,得到最终的排序数组为
[13,27,38,49,49,65,76,97]

注意:一般第一趟的步长,题目都会给,不然就去取d=数组的大小/2,每次的步长取上一次的步长的1/2。

二、交换排序

1. 冒泡排序

核心的思想:从后两两相比,更小的往后放
流程
在这里插入图片描述
示例:

#include<iostream>
#include<vector>
using namespace std;
void swap1(int &a,int &b)
{int temp = a;a = b;b = temp;
}
void Sort(vector<int> &c,int n) {for (int i = 0; i < n; i++) {for (int j = i + 1; j < n;j++) {if (c[i] > c[j]) {swap1(c[i], c[j]);}}}
}
int main() {int n; cin >> n;         //输入排序的元素的个数cout << "数日排序元素的大小:" << endl;vector<int> c(n);for (int i = 0; i < n;i++) {cin >> c[i];  //输入排序的元素}Sort(c, n);    //进行冒泡排序cout << "排序后的数位" << endl;for (auto c1 : c) {cout << c1 <<" "  ;}system("pause");return 0;
}

优化冒泡排序的思路:
增加一个判断是否交换的标志,如果某一轮的排序中,没有发生交换,则结束排序算法(代表已经排好序了)

2. 快速排序

快排的打油诗
小放枢轴左,大放枢轴右;
高低所指换,换针向枢轴;
高低所遇处,枢轴所落入;
递归再排至,左右仅一头。

流程
1.选择枢轴:选择数组的第一个元素为枢轴值(上述例子的49)
2.定义高低移动的双指针:数组的两头
3.每次移动前都和枢轴进行判断
注意:一开始是高指针和枢轴进行对比(枢轴选择第一个元素,相当于低指针的初值)
a.指针和枢轴的值比较,如果相等:当前运动的指针移一位(高向前移,低向后移),继续移动当前指针进行对比判断。
b.指针和枢轴的值比较,如果不等:当前指针的值比枢轴,那就将当前指针的值放在低指针的位置;反之,放在高指针的位置(小放枢轴左,大放枢轴右);然后换指针运动,将当前运动的指针换成另外一个进行运动

4.直到两个指针相遇:该位置即为对应的值,应该所处的位置。
在这里插入图片描述
5.再进行递归快排
在这里插入图片描述
a.对第一次快排的结果,从第一次的枢轴的值49处,进行分区间执行快排,
在这里插入图片描述
b.直到左右仅一头

程序的实现,思考两个问题:
1.如何实现分区的逻辑?
如何返回每个区间的枢轴
2.如何控制分区的次数?
实际上是一个二叉树的遍历的问题,可使用递归
示例:

#include<iostream>
#include<vector>
using namespace std;
//进行分区
int partition(vector<int> &A, int slow, int fast) {int pos_nums = A[slow];while (slow < fast) {//注意:下面的while一定要加上slow < fast这个条件,这里并不是多余的,当排序的数组为:23,56,23,652,32,45,即第一个元素为最小值时,//会出现fast一直将为负数的情况出现,血的教训!!!while (A[fast] >= pos_nums && slow < fast) {fast--;//cout << "fast的值为:" << fast << endl;}A[slow] = A[fast];while (A[slow] <= pos_nums && slow < fast) {slow++;}A[fast] = A[slow];}A[slow] = pos_nums;return slow;
}
//递归排序
void Quicksort(vector<int>& A, int low, int hight) {if (low < hight) {int pos = partition(A, low, hight);Quicksort(A, low, pos - 1);Quicksort(A, pos + 1, hight);}
}
int main() {int n;cout << " 请输入排序的序列的大小  " << endl;cin >> n;vector<int> c(n);cout << "请输入排序的元素:" << endl;for (int i = 0; i < n; i++) {cin >> c[i];}Quicksort(c, 0, c.size() - 1);cout << "排列后数组为:" << endl;for (const auto& elem : c) {cout << elem << " ";}cout << endl;system("pause");return 0;
}

三、选择排序

1. 简单选择排序

核心思想:先扫(遍历一遍),再找(找到最小的),放在最前(和第一个元素交换)

流程
在这里插入图片描述

2. 堆排序

堆排序口诀
先建堆,再找数;
找一次,建一次;
找到数,就输出;
输出完,排序完;
流程在这里插入图片描述
大根堆含义:根节点的值 > 左,右孩子节点的值
(1). 建立大根堆
a. 例如上述上午数组[49,38,65,97,76,13,27,49]建立的二叉树结构为:
在这里插入图片描述
b. 构建大根堆
原则:让大元素上升,小的元素下坠,直到构建完成
检查具有孩子节点的根节点,如上述的例子,即为节点97,38,65,49,将数值最大给父节点。
操作如下
比如,上述的38节点,有孩子节点97,36,父节点的值不是最大值,那么将最大值97和父节点38互换,重复这个步骤,检查完所有的父节点。
构建的第一次大根堆为:
在这里插入图片描述
(2). 再找数
找数:找大根堆的根节点(即这个数组的最大值
输出:将根节点的值保存,并将根节点的位置的值换成,堆中的最后一个元素的值,
在这里插入图片描述
(3) 找一次,建一次
经过**(2)**输出最大的结果之后,再将新的二叉树结构进行重新排列,使其满足大根堆的条件:
在这里插入图片描述
最后再输出最大值,替换根节节点的数值,重复(1),(2)的步骤,直到结束

四、归并排序

核心的思想把两个有序的数组,并为一个有序的数组
方法:另外建表,分别从两序列的头依次对比

例程数组:
在这里插入图片描述
注意单个元素属于也属于有序的数组
流程:
1.另外建表:将数组分成有序的数组(单个元素的数组):
在这里插入图片描述
2.依次对比:分别进行两序列的头依次对比,数值小的往新表中添加
在这里插入图片描述

3.同理,重复上述的步骤,得到排序后的结果:
在这里插入图片描述

五、基数排序

例程数组
在这里插入图片描述
设置的排序的列表
在这里插入图片描述

流程
存储的结构是链式的结构:49->38->65->97->76->13->27->49
1.看个位数:例如,第一个元素49,个位数为9,那么排到Q9的位置,同理,排其他的数字,如下图所示:
在这里插入图片描述
得到的初次排序:49->49->38->97->27->76->65->13

2.看十位数:例如,第一个元素49,个位数为9,那么排到Q9的位置,同理,排其他的数字,如下图所示:
在这里插入图片描述
最终的排序:97->76->65->49->49->38->27->13
这个排序他是稳定的,因为”基你太稳!!!“

相关文章:

【算法篇】——数据结构中常见八大排序算法的过程原理详解

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、插入排序1.直接插入法2.希尔排序法 二、交换排序1. 冒泡排序2. 快速排序 三、选择排序1. 简单选择排序2. 堆排序 四、归并排序五、基数排序 前言 C数据结构…...

ERP系统:从稳定运行到头条新闻

企业管理软件通常经历开发、部署、维护和最终退役的生命周期。然而&#xff0c;2024年&#xff0c;SAP等ERP系统频频登上新闻头条&#xff0c;反映出数字化转型过程中面临的挑战与变革。 SAP频上新闻的背后 SAP软件自上世纪90年代问世以来&#xff0c;便在企业管理领域占据重…...

OceanBase之primary_one概念学习

OceanBase 集群通常有若干个zone组成&#xff0c;zone是(Availability Zone)的简写&#xff0c;代表一个可用区。zone本身是一逻辑概念&#xff0c;物理的zone可理解为一地理概念&#xff0c;对OceanBase来说&#xff0c;zone可以理解为副本的概念。 从物理层面看&#xff0c;…...

国标GB28181摄像机接入EasyGBS如何通过流媒体技术提升安防监控效率?

随着信息技术的飞速发展&#xff0c;视频监控技术已成为维护公共安全和提升管理效率的重要手段。国标GB28181作为安防行业的统一设备接入与流媒体传输标准&#xff0c;为视频监控系统的互联互通提供了坚实的基础。EasyGBS作为一款基于GB28181协议的视频云服务平台&#xff0c;通…...

Scala_【2】变量和数据类型

第二章 注释标识符的命名规范命名规则关键字 变量字符串输出数据类型关系变量和数据类型整数类型&#xff08;Byte、Short、Int、Long&#xff09;浮点类型&#xff08;Float、Double&#xff09;字符类型&#xff08;Char&#xff09;布尔类型&#xff08;Boolean&#xff09;…...

怎么设置电脑密码?Windows和Mac设置密码的方法

为电脑设置密码是保护个人信息安全的重要措施。无论是Windows系统还是MacOS系统&#xff0c;设置密码的步骤都相对简单&#xff0c;但需要根据不同的操作系统选择不同的方法。 一、Windows系统电脑密码设置 方法一&#xff1a;通过控制面板设置账户密码 点击桌面左下角的“开…...

力扣251题详解:展开二维向量的多种解法与模拟面试

力扣251题详解&#xff1a;展开二维向量的多种解法与复杂度分析 在本篇文章中&#xff0c;我们将详细解读力扣第251题“展开二维向量”。通过学习本篇文章&#xff0c;读者将掌握如何实现一个迭代器来遍历二维向量中的所有元素&#xff0c;并了解相关的复杂度分析和模拟面试问…...

MoGe---最新单目3D几何估计方法

目录 一、概述 二、相关工作 1、单目深度估计 2、单目几何估计 3、相机内参估计 4、单目几何的大规模数据训练 三、前置知识 1、仿射不变和尺度不变指标 2、FOV和shift 3、ROE对齐求解器 四、MoGe 1、为什么设计仿射不变&#xff1f; 2、恢复相机焦距和移位 3、…...

springboot/ssm私房菜定制上门服务系统Java代码编写web厨师上门做菜

springboot/ssm私房菜定制上门服务系统Java代码编写web厨师上门做菜 基于springboot(可改ssm)htmlvue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&am…...

D105【python 接口自动化学习】- pytest进阶参数化用法

day105 pytest参数化parametrize多参数 学习日期&#xff1a;20241224 学习目标&#xff1a;pytest基础用法 -- pytest参数化parametrize多参数 学习笔记&#xff1a; 参数化 parametrize # 多次循环 pytest.mark.parametrize("a,b",[("c","d&qu…...

永磁同步电机控制算法-自适应带宽LADRC转速控制器

一、原理介绍 设计了自适应带宽 LADRC 控制方法&#xff0c;继承了 LADRC 优点的同时&#xff0c;加入自适应带宽控制&#xff0c;提出运用 Softsign 函数设计带宽自适应函数&#xff0c;根据电机转速自动调节控制带宽&#xff0c;解决了永磁同步电机在复杂且多变的环境下受到…...

lodash常用函数

文章目录 一、数组1、chunk分组2、difference、differenceBy、differenceWith3、findIndex4、intersection、intersectionBy、intersectionWith5、union、unionBy、unionWith 二、对象1、pick、omit 2、get、set三、数学1、sum、sumBy2、range 四、工具函数1、isEqual、isEmpty…...

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集AI-FGTM介绍算法流程初始化迭代更新&#xff08; t 0 t 0 t0 到 T − 1 T - 1 T−1&#xff09;迭代完成 AI-FGTM代码实现AI-FGTM算法实现攻击效果 代码汇总aifgtm.pytrain.pyadvtest.py 之前已经…...

如何在谷歌浏览器中启用语音搜索

想象一下&#xff0c;你正在拥挤的地铁上&#xff0c;双手都拿着沉重的购物袋&#xff0c;突然你想搜索附近的咖啡馆。此时如果你能通过语音而不是打字来进行搜索&#xff0c;那将多么的便利&#xff01;在谷歌浏览器中&#xff0c;启用语音搜索功能就是这么简单而高效&#xf…...

[搜广推]王树森推荐系统笔记——曝光过滤 Bloom Filter

曝光过滤 & Bloom Filter 曝光过滤主要在召回阶段做&#xff0c;主要方法是Bloom Filter 曝光过滤问题 -如果用户看过某个物品&#xff0c;则不再把该物品曝光给该用户。 - 原因是重复曝光同一个物品会损害用户体验 - 但长视频通常没有曝光过滤&#xff08;youtube&…...

实现Python将csv数据导入到Neo4j

目录 一、获取数据集 1.1 获取数据集 1.2 以“记事本”方式打开文件 1.3 另存为“UTF-8”格式文件 1.4 选择“是” 二、 打开Neo4j并运行 2.1 创建新的Neo4j数据库 2.2 分别设置数据库名和密码 ​编辑 2.3 启动Neo4j数据库 2.4 打开Neo4j数据库 2.5 运行查看该数据库…...

springboot启动不了 因一个spring-boot-starter-web底下的tomcat-embed-core依赖丢失

这个包丢失了 启动不了 起因是pom中加入了 <tomcat.version></tomcat.version>版本指定&#xff0c;然后idea自动编译后&#xff0c;包丢了&#xff0c;删除这个配置后再也找不回来&#xff0c; 这个包正常在 <dependency><groupId>org.springframe…...

Java 日志类库

Java 日志库是最能体现 Java 库在进化中的渊源关系的&#xff0c;在理解时重点理解日志框架本身和日志门面&#xff0c;以及比较好的时间等。要关注其历史渊源和设计&#xff08;比如桥接&#xff09;&#xff0c;而具体在使用时查询接口即可&#xff0c;否则会陷入 JUL&#x…...

【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割

数据预处理 通过网盘分享的文件&#xff1a;银行流失预测数据和代码 链接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取码: pfcs 非数值特征处理 目的&#xff1a;将非数值特征转换为数值型&#xff0c;以便模型能够处理。方法&#xff1a; 地理位置&am…...

Linux | scp指令基于WSL在Windows/Ubuntu系统间传输文件

. 背景 在Windows系统里&#xff0c;使用WSL连接远程Linux&#xff08;Ubuntu&#xff09;服务器是如今一个很常见的操作流程&#xff08;有利于WFH哈哈&#xff09;。 在使用远程机器的时候&#xff0c;通常需要将本地的文件上传、或将远程的文件下载。 问题&#xff1a;如…...

类设计者的核查表

核查表 第一篇 如何设计类你的类需要复制构造函数吗何时不需要自定义复制构造函数何时需要自定义复制构造函数总结 什么时候需要将构造函数和赋值运算符设置为私有&#xff1f;1. 单例模式&#xff08;Singleton Pattern&#xff09;2. 禁止复制和赋值3. 工厂模式&#xff08;F…...

深入解析:Python中的决策树与随机森林

在这个数据驱动的时代&#xff0c;机器学习技术已经成为许多企业和研究机构不可或缺的一部分。其中&#xff0c;决策树和随机森林作为两种强大的算法&#xff0c;在分类和回归任务中表现尤为出色。本文将带领大家深入了解这两种算法在Python中的实现&#xff0c;从基础到实战&a…...

umi : 无法加载文件 D:\software\nodejs\node_global\umi.ps1,因为在此系统上禁止运行脚本。

问题详情 2、解决方法 1.使用命令 get-ExecutionPolicy查看 显示Restricted&#xff1a;限制 所以要给权限 2. 使用命令&#xff1a;Set-ExecutionPolicy -Scope CurrentUser 3. 会提示为参数提供值 4. 输入&#xff1a; RemoteSigned 具体如下图所示&#xff0c;成功解决。 报…...

十四、从0开始卷出一个新项目之瑞萨RZN2L之栈回溯(Default_Handler/hartfault)

目录 一、概述 二、参考资料 三、代码 四、日志 五、定位函数调用 六、README和工具 一、概述 软件开发中常见的比较棘手的问题就是hartfault/Default_Handler/dump&#xff0c;俗称跑飞了。 参考cmbacktrace&#xff0c;在瑞萨RZN2L/T2M实现栈回溯&#xff0c;串口打印…...

CTFHub disable_functions通关

LD_PRELOAD 来到首页发现有一句话直接就可以用蚁剑连接 根目录里有/flag但是不能看;命令也被ban了就需要绕过了 绕过工具在插件市场就可以下载 如果进不去的话 项目地址: #本地仓库;插件存放 antSword\antData\plugins 绕过选择 上传后我们点进去可以看到多了一个绕过的文件;…...

什么是 DevOps 自动化?

DevOps 自动化是一种现代软件开发方法&#xff0c;它使用工具和流程来自动化任务并简化工作流程。它将开发人员、IT 运营和安全团队聚集在一起&#xff0c;帮助他们有效协作并交付可靠的软件。借助 DevOps 自动化&#xff0c;组织能够处理重复性任务、优化流程并更快地将应用程…...

创建Instagram合作广告方法与注意事项

将Instagram作为宣传阵地的品牌和营销人员一定对它的Branded content ads品牌内容广告很熟悉&#xff0c;Instagram在测试并推广创作者市场功能之后&#xff0c;创作者和品牌协作变得更加便利。其中的Partnership ads合作广告能结合品牌和UGC、KOL的力量&#xff0c;帮助品牌提…...

Elasticsearch

什么是elasticsearch 根据维基百科的定义&#xff1a;Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎&#xff0c;具有HTTP Web接口和无模式JSON文档。 为啥要用elasticsearch 高性能&#xff0c;近实时&#xff0c;大数据&…...

YOLO11改进-注意力-引入级联组注意力机制(Cascaded Group Attention, CGA)

在 Vision Transformers 面临计算成本高、推理速度慢的背景下&#xff0c;级联组注意力&#xff08;CGA&#xff09;机制应运而生&#xff0c;它通过将输入特征拆分为不同部分输入各注意力头计算自注意力并级联输出&#xff0c;解决了多头自注意力中注意力头冗余导致的计算效率…...

电磁兼容(EMC):一文解读磁芯复合材料——塑磁

目录 01 塑磁的定义 02 塑磁的常见规格型号 03 塑磁材料的优点 04 塑磁的应用 塑磁,也称为注塑磁,是一种将磁性粉末注入到塑料基体中制成的复合磁体材料。以下是塑磁的定义、应用和材料特性的总结: 01 塑磁的定义 塑磁是以塑料为基体,通过特殊工艺在其中加入磁性粒子(…...

第十四章 C++ 数字

通常&#xff0c;当我们需要用到数字时&#xff0c;我们会使用原始的数据类型&#xff0c;如 int、short、long、float 和 double 等等。这些用于数字的数据类型&#xff0c;其可能的值和数值范围&#xff0c;我们已经在 C 数据类型一章中讨论过。 C 定义数字 我们已经在之前…...

虚幻引擎结构之UObject

一. UObject 的介绍 UObject 是虚幻引擎中的核心基础类,所有其他游戏对象和资源类都直接或间接地继承自它。作为虚幻引擎的基石,UObject 提供了多项关键功能,包括内存管理、序列化、反射(introspection)、垃圾回收以及元数据支持。在虚幻引擎中,UObject 类的实例通常被称…...

2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36)

参考:2002 - Can‘t connect to server on ‘192.168.1.XX‘ (36) ubantu20.04&#xff0c;mysql5.7.13 navicat 远程连接数据库报错 2002 - Can’t connect to server on ‘192.168.1.61’ (36) 一、查看数据库服务是否有启动&#xff0c;发现有启动 systemctl status mysql…...

怎麼在模擬器中實現換IP

方法一&#xff1a;使用代理伺服器 獲取代理伺服器資訊需要一個可用的代理伺服器地址和端口。 設置代理 如果模擬器有內置的網路設置&#xff0c;可以直接在網路設置中輸入代理伺服器的地址和端口。對於不支持直接設置代理的模擬器&#xff0c;可以在應用內設置代理。例如&am…...

【信号滤波 (上)】傅里叶变换和滤波算法去除ADC采样中的噪声(Matlab/C++)

目录 一、ADC采样的噪声简介1.1 常见的ADC噪声来源 二、信号的时域到频域转换2.1 傅里叶变换巧记傅里叶变换 三、傅里叶变换和滤波算法工程实现3.1 使用Matlab计算信号时域到频域的变换3.2 使用Matlab去除特定频点噪声寻找峰值算噪声频率构建陷波滤波器滤除噪声频点陷波滤波器与…...

将多个 Touchstone 文件导入 ANSYS Electronics Desktop

概述 本博客说明了如何将 N 端口标准文件列表导入 ANSYS 电路和 HFSS 3D 布局工具。N端口模型可以引用解决方案文件数组&#xff0c;而不是引用单个文件。下面简要概述了添加多文件 N 端口模型所需的步骤&#xff0c;视频链接中提供了完整的演示。 创建多文件 N 端口模型 要…...

GFPS扩展技术原理(八)-可听设备控制

Hearable Controls 可听设备控制就是手机通过Message Stream去配置影响听感的设置&#xff0c;目前只有一个ANC可供配置&#xff0c;Hearable controls的Message Group的值为0x8。 Active noise control Active noise control也就是主动降噪&#xff08;ANC&#xff09;&…...

对称二叉树

本节判断一棵二叉树是否为对称二叉树,用深度优先算法和广度优先搜索算法均可以实现. 问题描述: 给定一棵二叉树,判断该二叉树是否为对称二叉树. 广度优先思路解析: 如果所有镜像对称位置上两节点都相同,就说明这棵树一定是对称的.那么如何对比对称位置上的两个节点比较方便呢…...

K8s 无头服务(Headless Service)

在Kubernetes中&#xff0c;服务&#xff08;Service&#xff09;是一个抽象层&#xff0c;它定义了一组Pod的访问策略。通常情况下&#xff0c;服务会分配一个集群内的IP地址&#xff0c;并通过这个IP地址和端口来路由流量到后端Pod。然而&#xff0c;Kubernetes还提供了一种特…...

ArcGIS+MIKE21 洪水淹没分析、溃坝分析,洪水淹没动态效果

洪水淹没分析过程&#xff1a; 一、所需数据&#xff1a; 1.分析区域DEM数据 二、ArcGIS软件 1.提取分析区域DEM&#xff08;水库坝下区域&#xff09; 2.DEM栅格转点 3.计算转换后几何点的x和y坐标值&#xff08;精度20、小数位3&#xff09; 4.导出属性表&#xff0c;形式…...

WordPress File Upload 插件 任意文件读取漏洞复现(CVE-2024-9047)

0x01 产品简介 WordPress File Upload插件是一款功能强大的WordPress站点文件上传插件,它允许用户在WordPress站点中的文章、页面、侧边栏或表单中轻松上传文件到wp-contents目录中的任何位置。该插件使用最新的HTML5技术,确保在现代浏览器和移动设备上都能流畅运行,同时也…...

MySQL purged gtid是如何生成和维护的

目录 1. GTID的基本概念2. GTID的生成3. GTID的清除3.1 手动清除二进制日志3.2 自动清除二进制日志3.3 重置主库 在MySQL中&#xff0c;gtid_purged表示已清除的GTID集合。 gtid_purged的生成和维护过程如下&#xff1a; 1. GTID的基本概念 GTID&#xff08;Global Transact…...

vulhub log4j2漏洞复现攻略

前期准备&#xff1a;在安全选项添加端口规则如下 进入靶场环境 cd vulhub/ cd log4j/ cd CVE-2021-44228/ 启动容器 docker-compose up -d docker ps 得到端口号为8983&#xff0c;浏览器访问 先在⾃⼰搭建的DNSLOG平台上获取⼀个域名来监控我们注⼊的效果 可以发现 /sol…...

Android修行手册 - 移动端几种常用动画方案对比

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…...

springboot484基于springboot的扶贫助农系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装扶贫助农系统软件来发挥其高效地信息处理的作用&#xff0c…...

windows调整鼠标速度

参考:https://baijiahao.baidu.com/s?id1791659684803021646&wfrspider&forpc 鼠标灵敏度&#xff0c;亦称为指针速度或DPI&#xff08;每英寸点数&#xff09;设置&#xff0c;对用户的电脑操作流畅度和精准度至关重要。本篇文章将深入解析如何在Windows操作系统环境…...

专业的内外网数据交换方案 可解决安全、效率、便捷3大问题

内外网数据交换是很多企业和行业都会面临的场景&#xff0c;既然隔离了内外网&#xff0c;重中之重就是要确保数据的安全性&#xff0c;其次在数据流转交换过程中&#xff0c;不能太繁琐复杂&#xff0c;需要让用户快速、便捷的进行数据交换。首先我们来看看&#xff0c;在进行…...

ECharts关系图-关系图11,附视频讲解与代码下载

引言&#xff1a; 关系图&#xff08;或称网络图、关系网络图&#xff09;在数据可视化中扮演着至关重要的角色。它们通过节点&#xff08;代表实体&#xff0c;如人、物体、概念等&#xff09;和边&#xff08;代表实体之间的关系或连接&#xff09;的形式&#xff0c;直观地…...

在已有vue cli项目中添加单元测试配置

使用的是vue cli ^4.0.0的脚手架&#xff0c;项目采用的vue2进行编写&#xff0c;项目本身是没有使用单元测试的。应该挺多项目还是使用的vue2的项目进行开发的&#xff0c;自己在开发中过程中&#xff0c;还是发生了挺多需要记录原来功能的情况&#xff0c;这个时候去翻文档明…...

计算机网络B重修班-期末复习

[TOC] (计算机网络B重修班-期末复习&#xff09; 一、单选 &#xff08;20题&#xff0c;1分/题&#xff0c;共20分&#xff09; 二、判断 &#xff08;10题&#xff0c;1分/题&#xff0c;共10分&#xff09; 三、填空 &#xff08;10题&#xff0c;1分/题&#xff0c;共10…...