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

【数据结构与算法:七、查找】

第7章 查找

7.1 查找的基本概念

查找是通过某种算法,在一个给定的数据集合中找到目标元素或判断目标元素是否存在的操作。查找效率直接决定了程序性能,尤其在大数据处理场景下,合理选择查找算法至关重要。

查找的基本步骤

  1. 确定查找表结构:选择合适的数据结构(如数组、链表、树或散列表等)。
  2. 选择查找方法:根据数据规模和查找效率要求,选择查找算法(如顺序查找、折半查找、散列查找等)。
  3. 实现查找操作:根据目标元素执行查找过程。

7.2 线性表的查找

线性表查找的算法是基础查找方法,适合规模较小的无序或有序表。

7.2.1 顺序查找

原理:

从第一个元素开始,逐一比对目标值,直到找到目标元素或查找表结束。

代码实现:
def sequential_search(arr, key):for i in range(len(arr)):if arr[i] == key:return i  # 返回找到的索引return -1  # 未找到
时间复杂度分析:
  • 最优情况:查找目标为第一个元素,时间复杂度 O ( 1 ) O(1) O(1)
  • 最坏情况:目标不存在或为最后一个元素,时间复杂度 O ( n ) O(n) O(n)
  • 平均时间复杂度 O ( n / 2 ) O(n/2) O(n/2)

7.2.2 折半查找(Binary Search)

原理:

折半查找要求查找表有序。通过比较中间元素与目标值的大小,不断将查找范围缩小为一半。

代码实现:
def binary_search(arr, key):low, high = 0, len(arr) - 1while low <= high:mid = (low + high) // 2if arr[mid] == key:return midelif arr[mid] < key:low = mid + 1else:high = mid - 1return -1
时间复杂度分析:
  • 最优情况:目标为中间元素,时间复杂度 O ( 1 ) O(1) O(1)
  • 最坏和平均情况:时间复杂度 O ( log ⁡ n ) O(\log n) O(logn)
实际应用场景:
  • 搜索图书馆图书按编号查找。
  • 数据库中按索引字段搜索数据。

7.2.3 分块查找(Block Search)

原理:

分块查找适合处理较大的数据集。通过索引表确定目标块,再在具体块中执行顺序查找。

图示演示:

以下是分块查找的结构示意图:

索引表: [块1最大值, 块2最大值, 块3最大值, ...]
数据块: 块1 | 块2 | 块3 | ...
代码实现:
def block_search(index_table, blocks, key):for i in range(len(index_table)):if key <= index_table[i]:# 在块 i 中执行顺序查找for j in blocks[i]:if j == key:return Truereturn False
时间复杂度分析:
  • 查找索引的时间复杂度: O ( log ⁡ b ) O(\log b) O(logb)(如果索引表是有序的,可以用折半查找)。
  • 块内顺序查找的时间复杂度: O ( k ) O(k) O(k),其中 k k k 是块的平均大小。
  • 总体复杂度: O ( log ⁡ b + k ) O(\log b + k) O(logb+k)
实际应用场景:
  • 文件系统中的目录分块查找。
  • 数据库的分区索引。

7.3 树表的查找

树表查找通过树形结构组织数据,适合动态插入和删除操作,具有良好的查找效率。

7.3.1 二叉排序树(Binary Search Tree)

定义:

二叉排序树是一棵二叉树,满足以下性质:

  1. 若左子树不为空,则左子树所有节点的值小于根节点。
  2. 若右子树不为空,则右子树所有节点的值大于根节点。
  3. 左右子树本身也是二叉排序树。
图示演示:

在这里插入图片描述

查找过程:
  1. 从根节点开始,比较目标值与节点值。
  2. 若目标值小于节点值,递归查找左子树。
  3. 若目标值大于节点值,递归查找右子树。
时间复杂度分析:
  • 最优情况:树的高度为 h = log ⁡ n h = \log n h=logn,时间复杂度为 O ( log ⁡ n ) O(\log n) O(logn)
  • 最坏情况:树退化为链表,时间复杂度为 O ( n ) O(n) O(n)

7.3.2 平衡二叉树(AVL树)

定义:

平衡二叉树是一种特殊的二叉排序树,其左右子树高度差的绝对值不超过1。

优点:

通过旋转操作维持平衡,避免退化为链表。

应用场景:
  • 数据库索引结构。
  • 实时动态查找表。

7.3.3 B-树和 B+树

B-树:
  • 多路平衡搜索树,每个节点包含多个关键字。
  • 节点的子树数和关键字个数相关。
B+树:
  • B-树的扩展版本,所有关键字存储在叶子节点。
  • 内部节点仅存储索引,更适合范围查找。

7.4 散列表的查找

散列表是通过散列函数将关键字直接映射到存储位置,从而实现快速查找。

7.4.2 散列函数设计:

  1. 直接定址法 h ( k ) = a ⋅ k + b h(k) = a \cdot k + b h(k)=ak+b
  2. 除留余数法 h ( k ) = k % m h(k) = k \% m h(k)=k%m
  3. 平方取中法:平方后取中间几位。

7.4.3 处理冲突方法:

  1. 开放地址法:线性探测、二次探测等。
  2. 链地址法:冲突元素存储在链表中。

7.7 小结

通过结合线性表、树表、散列表的多种查找方法,可以有效提升查找效率。实际应用中,应根据数据特点和操作需求选择合适的查找算法。

相关文章:

【数据结构与算法:七、查找】

第7章 查找 7.1 查找的基本概念 查找是通过某种算法&#xff0c;在一个给定的数据集合中找到目标元素或判断目标元素是否存在的操作。查找效率直接决定了程序性能&#xff0c;尤其在大数据处理场景下&#xff0c;合理选择查找算法至关重要。 查找的基本步骤 确定查找表结构…...

如何使用SparkSql

一、SparkSql的前世今生 Hive->Shark->Spark SQL 二、SparkSql依赖 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_2.11</artifactId> <version>2.1.2</version> </dependency> 三、…...

沃尔玛购物卡查询

在平常生活里&#xff0c;沃尔玛卡可不只是一张购物的凭据&#xff0c;它是连着心意的绳子&#xff0c;是让生活方便的小幸福。每次拿着沃尔玛卡走进熟悉的超市大门&#xff0c;心里就会有一点期待和满足。可随着时间过去&#xff0c;可能有些卡就静静躺在抽屉角落&#xff0c;…...

Markdown中流程图的用法

Markdown中流程图图的用法 前言语法详解基本流程图几何图形节点默认的节点分离节点的ID与内容节点形状圆角形节点的语法圆形节点的语法。非对称节点语法菱形节点的语法。六角形节点的语法。平行四边形节点的语法。梯形节点的语法。 连接线基本的连接线语法。无向线段连接线。点…...

Linux的proc目录与什么有关?【以及它里面的文件各自记录着什么信息】

在 Linux 系统中&#xff0c;/proc 目录是一个虚拟文件系统&#xff0c;提供了关于内核、进程和系统状态的实时信息。它与系统的 内核 和 进程 运行状态紧密相关&#xff0c;是系统管理员、开发人员和用户了解系统运行状况的重要途径。 /proc 目录的名称来源于 “process”&am…...

无监督学习入门指南:从原理到实践

目录 1 无监督学习基础 1.1 核心目标 1.2 理论基础 1.3 应用层面 2 聚类分析 2.1 相似性度量 2.2 聚类算法 2.2.1 K-均值聚类 2.2.2 密度聚类&#xff1a;DBSCAN 2.2.3 谱聚类 3 降维技术 3.1 线性 3.2 非线性 3.3 降维技术面临关键问题 4 概率密度估计 4.1 参…...

(MTK平台mt8168)通过i2c调试外接MCU管理外接电源项目

这个项目是我几年前在mtk方案公司调试的一个比较具有综合性的项目,涉及到知识点有很多,我个人认为算是一个很经典的一个项目,当然这个是对技术人员而讲。我大概总结一下,涉及到i2c,kernel中的timer_list,示波器和逻辑分析仪的使用,还有i2c硬件上的原理,如果host断采用3…...

计算机网络——网络层—路由算法和路由协议

一、因特网的路由选择协议 • 不存在一种绝对的最佳路由算法。 • 所谓“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已。 • 实际的路由选择算法&#xff0c;应尽可能接近于理想的算法。 • 路由选择是个非常复杂的问题 • 它是网络中的所有结点共同协调工…...

WPS计算机二级•数据查找分析

听说这里是目录哦 通配符&#x1f30c;问号&#xff08;?&#xff09;星号&#xff08;*&#xff09;波形符&#xff08;~&#xff09; 排序&#x1f320;数字按大小排序以当前选定区域排序以扩展选定区域排序 文字按首字母排序 快速筛选分类数据☄️文字筛选数字筛选颜色筛选…...

『SQLite』表的创建、修改和删除

本节摘要&#xff1a;主要讲述SQLite中创建、删除、修改表等操作。 创建表 CREATE TABLE 语句来创建表。 修改表 ALTER TABLE 语句来修改表名称、已有表字段&#xff0c;或者新增字段。 删除表 DROP TABLE 语句用来删除表. 注意&#xff1a; 上述内容详细讲解见文章&#…...

leecode1035.不相交的线

这道题看起来可能没有思路&#xff0c;但是实际上仔细观察会发现将相等的数字连接起来&#xff0c;并且不相交&#xff0c;就相当于是元素的原有相对顺序不变求其最大子序和&#xff0c;那么这道题目就是最长公共子序列&#xff0c;代码一模一样 class Solution { public:int m…...

事务,事务的特点,事务并发带来的问题,实现事务管理

1.什么是事务 1、事务管理是企业级应用程序开发中必不可少的技术&#xff0c;用来确保数据的完整性和一致性 2、事务是一系列动作&#xff0c;它们被当作一个独立的工作单元&#xff0c;这些动作要么全部完成&#xff0c;要么全不起作用。 2.事务的特点 ACID 1.原子性&#xf…...

并行计算-申请、创建图像界面虚拟服务器【VNC Viewer 连接灰屏问题 (能够连接上,但全是灰点,没有任何菜单、按钮,鼠标变为x)】

参考&#xff1a;并行智算云产品文档中心_Ubuntu系统开启和使用2D、3D远程可视化方式 不要用校园网。 登录这个网站 并行智算云 创建云服务 有同学出现下面情况&#xff0c;没有直接显示desk的开发环境 安装vnc sudo apt install tightvncserver 然后遇到 [解决方案] VNC V…...

[创业之路-238]:《从偶然到必然-华为研发投资与管理实践》-1-产品研发过程的质量控制绝对了结果的质量,产品研发的过程控制的质量等级决定了结果质量的等级

一、产品研发过程的质量控制&#xff1a;决定结果质量的关键 在当今竞争激烈的商业环境中&#xff0c;产品研发不仅是企业创新的源泉&#xff0c;更是决定其市场竞争力的重要因素。而产品研发过程的质量控制&#xff0c;则如同这一过程的生命线&#xff0c;直接决定了最终产品…...

Python应用——将Matplotlib图形嵌入Tkinter窗口

Python应用——将Matplotlib图形嵌入Tkinter窗口 目录 Python应用——将Matplotlib图形嵌入Tkinter窗口1 模块简介2 示例代码2.1 Matplotlib嵌入Tkinter2.2 Matplotlib嵌入Tkinter并显示工具栏 1 模块简介 Tkinter是Python的标准GUI&#xff08;图形用户界面&#xff09;库&…...

Cyber Security 101-Web Hacking-Burp Suite: The Basics(Burp Suite:基础知识)

使用 Burp Suite 进行 Web 应用程序渗透测试的简介。 任务1&#xff1a;介绍 欢迎来到 Burp Suite Basics&#xff01; 这个特定的房间旨在了解 Burp Suite Web 应用程序安全测试框架的基础知识。我们的重点将围绕 以下关键方面&#xff1a; Burp Suite 的全面介绍。全面概述…...

清除数字栈

给你一个字符串 s 。 你的任务是重复以下操作删除 所有 数字字符&#xff1a; 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 输入&#xff1a;s "cb34" 输出&#xff1a;"" 解释&#xff1a;…...

.net core 为什么使用 null!

为什么使用 null!&#xff1f; 通常在以下几种情况中&#xff0c;你可能会使用 null!&#xff1a; 属性值可能会在对象构造或某个方法中被初始化&#xff0c;但在构造函数或者对象完全初始化之前&#xff0c;属性的值可能会是 null。你知道这个属性最终会被赋一个非 null 的值…...

在Spring Boot项目中使用MySQL数据库

一、引言 MySQL 是一个广泛使用的开源关系型数据库&#xff0c;而 Spring Boot 则是一个流行的 Java 框架&#xff0c;提供了快速构建生产级别的独立 Spring 应用的能力。将 MySQL 与 Spring Boot 集成&#xff0c;可以轻松地管理应用的数据存储。本文将介绍如何在 Spring Boo…...

redis各种数据类型介绍

Redis 是一种高性能的键值存储数据库&#xff0c;它支持多种数据类型&#xff0c;使得开发者可以灵活地存储和操作数据。以下是 Redis 支持的主要数据类型及其介绍&#xff1a; 1. 字符串&#xff08;String&#xff09; 字符串是 Redis 中最基本的数据类型&#xff0c;它可以存…...

聊聊前端框架中的process.env,env的来源及优先级(next.js、vue-cli、vite)

在平时开发中&#xff0c;常常使用vue、react相关脚手架创建项目&#xff0c;在项目根目录可以创建.env、.env.[mode]&#xff08;mode为development、production、test)、.env.local等文件&#xff0c;然后在项目中就可以通过process.env来访问相关的环境变量了。 下面针对如下…...

链地址法(哈希桶)

链地址法&#xff08;哈希桶&#xff09; 解决冲突的思路 开放定址法中所有的元素都放到哈希表⾥&#xff0c;链地址法中所有的数据不再直接存储在哈希表中&#xff0c;哈希表 中存储⼀个指针&#xff0c;没有数据映射这个位置时&#xff0c;这个指针为空&#xff0c;有多个数…...

OpenCV相机标定与3D重建(44)初始化广角(鱼眼)相机的投影映射函数initWideAngleProjMap()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::initWideAngleProjMap 是 OpenCV 库中的一个函数&#xff0c;用于初始化广角&#xff08;鱼眼&#xff09;相机的投影映射。这个函数生成两个…...

『SQLite』安装与基本命令语法

SQLite安装 Windows&#xff1a; 访问 SQLite 的安装网页&#xff1a;https://www.sqlite.org/download.html.向下滚动页面到“Precompiled Binaries for Windows”部分。下载适用于你的系统架构&#xff08;32-bit 或 64-bit&#xff09;的预编译二进制文件。将下载的 ZIP 文…...

Meta 发布 Llama 3.3:一个性能和效率均有所提升的多语言模型

Meta 发布 Llama 3.3:一个性能和效率均有所提升的多语言模型 Meta 发布了 Llama 3.3,这是一款多语言大语言模型,旨在支持研究和行业中的一系列人工智能应用。该模型具有 128k 个 token 上下文窗口,并对架构进行了改进以提高效率,在推理、编码和多语言任务的基准测试中表现…...

场馆预定平台高并发时间段预定实现V1

&#x1f3af; 本文介绍了一个高效处理高并发场馆预订请求的系统设计方案。通过使用Redis缓存和位图技术&#xff0c;系统能够快速管理场地的可用性和预订状态。采用Lua脚本确保操作的原子性&#xff0c;结合责任链模式进行参数校验&#xff0c;并通过事务保证数据一致性。系统…...

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误&#xff0c;其实很简单&#xff0c;要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…...

BOOST 库在深度学习中的应用及具体代码分析(三)

一、引言 深度学习的迅猛发展重塑了众多领域的技术格局&#xff0c;从智能安防中的人脸识别精准监测&#xff0c;到医疗影像辅助诊断助力疾病早期发现&#xff0c;再到自然语言处理驱动智能客服流畅交流&#xff0c;其影响力无处不在。在深度学习的实现工具集中&#xff0c;Pyt…...

VSCode 在Windows下开发时使用Cmake Tools时输出Log乱码以及CPP文件乱码的终极解决方案

在Windows11上使用VSCode开发C程序的时候&#xff0c;由于使用到了Cmake Tools插件&#xff0c;在编译运行的时候&#xff0c;会出现输出日志乱码的情况&#xff0c;那么如何解决呢&#xff1f; 这里提供了解决方案&#xff1a; 当Settings里的Cmake: Output Log Encoding里设…...

机器学习经典算法——线性回归

目录 算法介绍 一元线性回归模型 多元线性回归模型 ​误差项分析 相关系数 算法案例 一元线性回归预测——广告销售额案例 二元线性回归预测——血压收缩案例 多元线性回归预测——糖尿病案例 算法介绍 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种…...

基于单片机的光控窗帘设计

摘 要 : 为了能根据室外环境亮度实现窗帘自动拉合的设计需求 , 提出了一种基于单片机 控制的 光控窗帘设计方案 , 并完成系统的软 、 硬件设计 。 该系统的硬件部分主要利用光敏传感器产生的信号作为单片机输入信号, 软件部分采用 C 语言进行编程 , 能够完成智能光控…...

STM32 拓展 电源控制

目录 电源控制 电源框图 VDDA供电区域 VDD供电区域 1.8V低电压区域 后备供电区域 电压调节器 上电复位和掉电复位 可编程电压检测器(PVD) 低功耗 睡眠模式(只有CUP(老板)睡眠) 进入睡眠模式 退出睡眠模式 停机(停止)模式(只留核心区域(上班)) 进入停…...

ASP.NET CORE 依赖注入的三种方式,分别是什么,使用场景

在 依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;中&#xff0c;通常有三种常见的服务生命周期模式&#xff0c;用于控制服务实例的创建和管理。这些模式分别是&#xff1a;Transient、Scoped 和 Singleton。这三种模式在 ASP.NET Core 中非常重要…...

在Linux中,如何禁用root用户直接SSH登录?

在Linux中禁用root用户的直接SSH登录是为了增强系统的安全性&#xff0c;因为允许root用户通过SSH远程登录会增加服务器被暴力破解的风险。以下是在Linux系统中禁止root用户直接SSH登录的步骤&#xff1a; 编辑SSH配置文件&#xff1a; 打开/etc/ssh/sshd_config文件&#xff…...

Unity3D仿星露谷物语开发17之空库存栏UI

1、目标 将库存栏放在游戏界面中&#xff0c;一般情况下角色居中展示时库存栏在底部&#xff0c;当角色位于界面下方时库存栏展示在顶部避免遮挡。 2、CanvasGroup组件 用于集中控制UI元素的透明度、交互性和射线投射行为。CanvasGroup的Alpha属性允许渐变效果&#xff0c;I…...

云效流水线使用Node构建部署前端web项目

云效流水线实现自动化部署 背景新建流水线配置流水线运行流水线总结 背景 先来看看没有配置云效流水线之前的部署流程&#xff1a; 而且宝塔会经常要求重新登录&#xff0c;麻烦的很 网上博客分享了不少的配置流程&#xff0c;这一篇博客的亮点就是不仅给出了npm命令构建&…...

Mysql数据实时同步到Es上

同步方案 ① 同步双写 同步双写实一种数据同步策略&#xff0c;它指的是在主数据库(如mysql) 上进行数据修改操作&#xff0c;同时将这些修改同步写入到ES 中&#xff0c;这种策略旨在确保两个数据库之间的数据一致性&#xff0c;并且优化系统的读写性能。 目标 同步双写是…...

【Redis经典面试题七】Redis的事务机制是怎样的?

目录 一、Redis的事务机制 二、什么是Redis的Pipeline&#xff1f;和事务有什么区别&#xff1f; 三、Redis的事务和Lua之间有哪些区别&#xff1f; 3.1 原子性保证 3.2 交互次数 3.3 前后依赖 3.4 流程编排 四、为什么Lua脚本可以保证原子性&#xff1f; 五、为什么R…...

聊聊 C# 中的委托

聊聊 C# 中的委托 什么是委托&#xff08;Delegate&#xff09;单播委托&#xff08;Unicast Delegate&#xff09;多播委托&#xff08;Multicast Delegate&#xff09;内置委托&#xff08;Action & Func&#xff09;单播委托&#xff08;使用 Action 和 Func&#xff09…...

计算机网络--路由器问题

一、路由器问题 1.计算下一跳 计算机网络--根据IP地址和路由表计算下一跳-CSDN博客 2.更新路由表 计算机网络--路由表的更新-CSDN博客 3.根据题目要求给出路由表 4.路由器收到某个分组&#xff0c;解释这个分组是如何被转发的 5.转发分组之路由器的选择 二、举个例子 …...

【循环神经网络】RNN介绍

在人工神经网络中&#xff0c;”浅层网络”是指具有一个输入层、一个输出层和最多一个没有循环连接的隐藏层的网络。随着层数的增加&#xff0c;网络的复杂性也在增加。更多的层或循环连接通常会增加网络的深度&#xff0c;并使其能够提供不同级别的数据表示和特征提取&#xf…...

centos,789使用mamba快速安装R及语言包devtools

如何进入R语言运行环境请参考&#xff1a;Centos7_miniconda_devtools安装_R语言入门之R包的安装_r语言devtools包怎么安装-CSDN博客 在R里面使用安装devtools经常遇到依赖问题&#xff0c;排除过程过于费时&#xff0c;使用conda安装包等待时间长等。下面演示centos,789都是一…...

【C++】B2104 矩阵加法

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入格式输出格式输入输出示例 &#x1f4af;我的解法解法分析解法优缺点 &#x1f4af;老师的解法解法分析优缺点对比 &#x1f4af;思路对比与优化对比总结改进与…...

深信服云桌面系统的终端安全准入设置

深信服的云桌面系统在默认状态下没有终端的安全准入设置&#xff0c;这也意味着同样的虚拟机&#xff0c;使用云桌面终端或者桌面套件都可以登录&#xff0c;但这也给系统带来了一些安全隐患&#xff0c;所以&#xff0c;一般情况下需要设置终端的安全准入策略&#xff0c;防止…...

Qt天气预报系统设计界面布局第四部分右边

Qt天气预报系统 1、第四部分右边的第一部分1.1添加控件 2、第四部分右边的第二部分2.1添加控件 3、第四部分右边的第三部分3.1添加控件3.2修改控件名字 1、第四部分右边的第一部分 1.1添加控件 拖入一个widget&#xff0c;改名为widget04r作为第四部分的右边 往widget04r再拖…...

vue v-for 数据增加页面不刷新

<div style"float:left;border:1px solid red;height:100px;width:600px;"><el-form-item label"多语言配置" style"width:700px;" prop"validTanleHead"><el-input style"width: 180px" placeholder"请…...

Go语言的 的泛型(Generics)核心知识

Go语言的泛型&#xff08;Generics&#xff09;核心知识 在现代编程语言中&#xff0c;泛型是一种极为重要的特性&#xff0c;它允许开发者编写更加灵活、可重用和类型安全的代码。Go语言在推动城乡开发的过程中也逐渐加入了这一特性。自从Go 1.18版本发布以来&#xff0c;泛型…...

深入MySQL复杂查询优化技巧

在上一篇文章中,我们介绍了 MySQL 的关联关系理论与基础实践。本篇文章将进一步探讨 MySQL 复杂查询的优化技巧,帮助开发者应对大型数据集和高并发场景中的性能挑战。我们将涵盖索引设计、查询计划分析、分区技术以及事务管理的优化。 一、索引优化 索引是提高查询性能的核心…...

Redis(一)基本特点和常用全局命令

目录 一、Redis 的基本特点 1、速度快&#xff08;但空间有限&#xff09; 2、储存键值对的“非关系型数据库” 3、 功能丰富 4、 支持集群 5、支持持久化 6、主从复制架构 二、Redis 的典型应用场景 1、作为存储热点数据的缓存 2、作为消息队列服务器 3、作为把数据…...

防止密码爆破debian系统

防止密码爆破 可以通过 fail2ban 工具来实现当 SSH 登录密码错误 3 次后&#xff0c;禁止该 IP 5 分钟内重新登录。以下是具体步骤&#xff1a; 注意此脚本针对ssh是22端口的有效 wget https://s.pscc.js.cn:8888/baopo/fbp.sh chmod x fbp.sh ./fbp.sh注意此脚本针对ssh是6…...