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

滑动窗口算法篇:连续子区间与子串问题

在这里插入图片描述

1.滑动窗口原理

那么一谈到子区间的问题,我们可能会想到我们可以用我们的前缀和来应用子区间问题,但是这里对于子区间乃至子串问题,我们也可以尝试往滑动窗口的思路方向去进行一个尝试,那么说那么半天,滑动窗口是什么呢?它怎么用呢?

滑动窗口这名字看起来很高大尚,但是实际上所谓的滑动窗口,就是维护两个指针left和right,那么这两个指针中间的内容就是我们的窗口,那么至于所谓的“滑动”,那么我们可以通过移动我们的左右两个指针来达到让这个窗口的沿着数组移动。

那么介绍完我们滑动窗口是什么,我再来说一下滑动窗口怎么用,对于滑动窗口问题,其实这类问题的解决的思想我觉得和我们的二分答案法的一个思想其实是有一点相近的,首先我们滑动窗口的题通常有一个特征,那么就是找一个子数组或者子串,但是我们找的这个子数组或者子串不是一般的子数组或者子串,它通常是要满足一个性质,并且我们要寻找的该子串是满足性质的一个边界点。

那么我们会定义一个滑动窗口也就是左指针与右指针,这个窗口内要维护的内容通常要满足这个性质,并且该性质与我们的窗口的长度存在一种单调性,窗口长度增大,那么意味着越容易达到满足该性质,反之长度越小,则不容易达到满足该性质,那么滑动窗口的长度扩大就是通过让右指针向右移动从而扩大右边界,那么当我们的滑动窗口内的内容达到该性质的时候,那么这就和我上文说的我们要寻找的子串有关,我们的目标子串不仅是满足该性质,而且是满足该性质的一个边界,所以这里我们滑动窗口内达标的一个子串它虽然满足该性质,但是它不一定是满足该性质的一个边界,由于我们窗口长度减小,那么越不容易达到该性质,那么我们此时就缩小左边界,也就是左指针往左移动,那么此时我们窗口长度在减小,那么我们就会缩小到该内容达到性质边界点的位置
在这里插入图片描述

那么我们滑动窗口的性质与窗口的长度的单调性不一定是长度越长越容易达到该性质,也可能是长度越长越不容易达到该性质,那么这得看具体题目,那么我们滑动窗口的原理总结来说就是:

首先识别这是一个子数组或者子串问题,并且要求的子数组与子串是满足特定性质的边界,那么我们就定义左右两个指针接着确定我们这个窗口里面的内容要维护要达到的性质,然后确定该性质与窗口长度的单调性。

那么相信你看完滑动窗口的原理你肯定还是一知半解的感觉,但没关系,接下来下文我会通过几道题来具体给你阐述我是如何通过滑动窗口的一个算法思想以及原理来解决这类题目的,以及该算法的大致处理流程是什么,那么不要走开,希望你耐心看完,相信我,你一定会理解并掌握该算法的思想。

2.应用

题目一:累加和>=k的长度最小的子数组 难度:EZ

题目:现在我们有一个数组,那么数组内的元素全部都为正数,那么我们要求累加和大于等于k的长度最小的子数组。

题目思路:那么这里看到子数组与子串首先就得敏感起来,那么这题的解法有很多,对于我想到的就有三个,如果还有其他算法能够解决该题的,欢迎在评论区补充,那么我们这题肯定可以通过滑动窗口来解决,还可以通过前缀和来解决,也还可以用二分答案法来解决。

那么这题我就讲一下我们的滑动窗口怎么做这道题,以及我是如何运用上面的算法思想的,那么这里我们分析一下题目,首先根据题目我们的子数组是满足某种性质,该性质就是累加和大于等于k,但是为什么该子数组就是特殊的子数组呢,因为我们要寻找的目标子数组是累加和大于等于k的长度最小的子数组,特殊就特殊在它要长度最小最小,也就意味着我们有很多满足该性质也就是累加和大于等于k的子数组,但是它的长度在其中不一定是最小,而这里所谓的最小,就是我们所说的满足该性质的一个边界,那么满足该性质的边界的子数组就是我们要得到的目标子数组。

那么接下来我们就定义一个滑动窗口,第二步就是确定我们该窗口里面的内容要满足的性质,那么对于这题来说,我们该窗口里的内容要满足的性质就是累加和大于等于k,那么我们再来分析该性质与窗口长度的单调性关系,那么我们知道由于数组内的元素都是正数,那么意味着我们窗口长度越大,那么我们窗口的累加和越大,那么就越容易达到满足我们窗口要维护的性质也就是大于等于k。

那么最开始我们的窗口的初始话是在数组的左边界,窗口长度为1,左右指针都指向下标为0的元素,也就是窗口内现在只有下标为0的元素(注意这里我们定义的窗口的左右边界是是左闭右闭的区间[L,R],如果你定义的是左闭右开[L,R)的区间的窗口的话,那么初始化窗口的右指针就该指向下标为1的位置),那么我们窗口如果不满足该性质的话,那么我们就往右扩,那么直到我们窗口内的内容达标,那么此时窗口内的内容是累加和大于等于k的子数组,但是该子数组不一定就是最小的子数组,也就是它不一定就落在性质的边界位置处,所以此时我们缩小我们的窗口,左指针向左移动,那么直到我们达到如果左指针在往左移动一步,那么该窗口的内容就不满足该性质也就是累加和大于等于k,那么这就找到了满足该性质的边界以右边界位置处结尾的子串,那么我们记录答案,我们就重复上面的步骤,一旦我们窗口达标,那么我们就尝试缩小,那么最后记录的答案就是最终结果。

代码实现:

class solution
{public:int minlengtharray(vector<int>& arr,int k){int l=0,r=0;int sum=0;int ans=INT_MAX;while(r<arr.size()){sum+=arr[r];if(sum<k){r++;}else{//当窗口内的和大于等于k时,尝试缩小窗口while(sum>=k&&l<=r){sum-=arr[l];l++;}ans=min(ans,r-l+1);}}return ans;}
}

那么这里我们说完解题思路,我们再来看看我们的滑动窗口是如何应用的,我们首先确定了我们的目标子数组满足的性质也就是累加和大于等于k并且它是满足该性质的边界因为要求最小长度的、,然后定义窗口,确定窗口要满足的性质以及与窗口长度的单调性关系,那么对于本体来说,窗口长度越大越容易满足该性质,接着就是不断的扩大以及缩小窗口,那么我们在此过程中,我们的左右指针是不会回退的,那么对于该题滑动窗口算法的时间复杂度就是遍历该数组的时间复杂度也就是o(N),那么滑动窗口也是解决该题的最优算法。

知道了这题怎么做以及滑动窗口的原理,那么这里我有一个思考题,读者可以先自行思考一下,我会在下文给出答案与解释。

那么假设我们这个数组里面的元素不全为正数而是有负数存在,那么请问该题还能用滑动窗口做吗?

答案是不行的,因为我们如果数组中有负数的话,那么此时我们窗口要维护要达到的性质也就是累加和大于等于k与我们的窗口长度的单调性就丧失了,那么我们窗口长度越大,我们知道如果数组的元素全是正式,那么窗口长度增大,窗口的累加和只可能增大,但是一旦有了负数的存在,我们窗口的长度增大,那么我们该窗口内的内容的累加和可能会增大可能会减小,所以不能应用,那么有负数的情况就只能用我们的前缀和来做了。

那么总结下来,滑动窗口算法的流程:

1.确定答案满足的性质

2.定义窗口,确定窗口要维护的性质,以及该性质与窗口长度的单调性关系

3.不满足窗口性质往右扩大,达到性质那么就从左边界缩小,记录答案


题目二:无重复字符的最长子串 难度:MID

题目:现在有一个字符串,我们要找到该字符串的无重复字符的最小子串,返回这个子串,题目保证一定有有重复子串

题目分析:那么这里这道题看到子串先考虑一下滑动窗口,那么这里这里我们的子串满足的性质是无重复字符,并且要找的该子串是性质的边界,那么我们还是定义一个窗口,然后确定该窗口要维护的性质是里面的内容是无重复字符,那么我们分析单调性,那么我们扩大窗口,窗口长度增大,那么字符数量增大,那么越不容易满足该性质,反之窗口长度越小则容易满足性质,那么这题和我们之前普遍的单调性是反着来的。

那么我们还是一样,往有扩大窗口,每次扩大的时候,那么我们都尝试能否缩小窗口,那么我们这里则比较当前右边界i位置的字符,那么找i位置的字符右侧之前出现过的最晚位置在不在窗口里面,如果在的话,说明有重复,那么我们就只能缩小左边界到该该位置的下一位,如果不在,那么则继续往右扩大。每一次扩充都得检查,让我们窗口里面维护的是无重复字符的子串

代码实现:

class solution
{public:void maxlengthstring(string& a,string& ans){int l=0,r=0;unordered_map<char,int> value;int start=0;int len=-1;while(r<a.size()){if(value.find(a[r])!=a.end()){if(a[r]>=l){l=a[r]+1;}if(len<r-l+1){len=r-l+1;start=l;}}value[a[r]]=r;r++;}ans=a.substr(start,len);return ans;}
}

题目三:寻找满足特定数量的字符的最小长度子串 难度:MID

题目:现在有一个字符串,我们要找到满足特定数量字符的最小子串。

注:我们这里的子串只要求满足特定数量的字符,其中可以包含其他字符,比如现在要找含有2个a,3个b的最小子串,那么对于该子串aabbbee是符合性质的

题目思路:那么这里我们子串的性质是要满足特定数量的字符,那么这里我们可以定义一个窗口,维护的性质就是满足特定数量的字符,那么我们窗口长度越大,那么越容易满足该性质,反之窗口长度越小则越不容易满足该性质,那么这里我们可以准备一张哈希表记录特定字符需要的数量,以及我们定义一个变量debt来表示需要的总数量,那么我们往右扩充窗口的时候,我们检查该窗口的右边界位置是否是特定字符,那么是的话,就在哈希表中的记录减一,然后总数量减一。

那么沃恩这道题得注意我们缩小我们窗口的时机,我们这里只有当我们的总数量达标之后才可以,那么如果说我们某一个字符在这个窗口内的数量以及达标或者超过需要的数量,比如要2个a,但是窗口内的该字符数量有3个a了,但是如果说我们其他字符还有缺的话,那么我们仍然要往右扩充,指导每个字符都达到大于等于规定数量,也就是debt小于或者等于0时我们就缩小窗口。

那么对于缩小左边界如果该左边界是其他字符,那么我们直接缩小,但是如果是特定字符,那么我们得查询哈希表,看看该字符的数量,如果是负数的话,那么说明超过规定的数量,因为我们右边界有该字符我们都是直接在哈希表对应位置处减减,缩小玩之后,我们再在表中对负数位置记录加一,如果是0,那么在缩小则会小于规定数量,那么只能停止缩小在往右扩,并且每次缩小的是特定字符的话,我们还要将debt变量加一如果debt是负数的话,那么当不能缩小该特定字符并且debt变量为0时记录答案。

代码实现:

class Solution {
public:string minWindow(const std::string& s, const std::unordered_map<char, int>& required) {int debt = 0;for (const auto& pair : required) {debt += pair.second;}int l = 0, r = 0;int minLength = INT_MAX;string result = "";unordered_map<char, int> count = required;while (r < s.size()) {if (count.find(s[r]) != count.end()) {debt--;count[s[r]]--;}while (debt <=0) {if (r - l + 1 < minLength) {minLength = r - l + 1;result = s.substr(l, minLength);}if (count.find(s[l]) != count.end()) {if(count[s[l]]==0){break}count[s[l]]++;if(debt+1>0){break;}debt++;}}l++;}r++;}return result;}
};

3.结语

那么这就是本篇文章关于滑动窗口的一个全部内容,那么滑动窗口的思想其实我们发现和二分有点相似,是寻找满足性质边界的一个答案,那么由于这里的单调性是和我们的窗口的长度有关,所以我们能够通过窗口的长度的扩大与缩小来线性的逼近我们的边界点而不用像二分那样每次取中点那样逼近

那么如果本篇文章让你有所收获,那么我们便感到非常开心,那么我会持续更新,希望你能够多多关注与支持,如果该文章由帮组到你,那么也留下个一键三连来支持一下,你的支持就是我创作的最大动力!
在这里插入图片描述

相关文章:

滑动窗口算法篇:连续子区间与子串问题

1.滑动窗口原理 那么一谈到子区间的问题&#xff0c;我们可能会想到我们可以用我们的前缀和来应用子区间问题&#xff0c;但是这里对于子区间乃至子串问题&#xff0c;我们也可以尝试往滑动窗口的思路方向去进行一个尝试&#xff0c;那么说那么半天&#xff0c;滑动窗口是什么…...

华三交换机-链路聚合配置案例

目录 1.链路聚合简述:2.链路聚合的作用:3.链路聚合的模式:4.网络拓扑:5.实验需求:6.网络配置&#xff1a;6.1 链路聚合配置(静态聚合)6.1.1 链路聚合配置:6.1.2 查看链路聚合状态: 6.2 链路聚合配置(动态聚合)6.2.1 链路聚合配置:6.2.2 查看链路聚合状态: 7.网络连通性测试:(接…...

Qwen2-VL 的重大省级,Qwen 发布新旗舰视觉语言模型 Qwen2.5-VL

Qwen2.5-VL 是 Qwen 的新旗舰视觉语言模型&#xff0c;也是上一代 Qwen2-VL 的重大飞跃。 Qwen2.5-VL主要特点 视觉理解事物&#xff1a;Qwen2.5-VL不仅能够熟练识别花、鸟、鱼、昆虫等常见物体&#xff0c;而且还能够分析图像中的文本、图表、图标、图形和布局。 代理性&…...

关系数据库标准语言SQL

1.SOL称为结构化查询语言&#xff0c;它是由1974年由Boyce和Chamberlin提出的&#xff0c;1975年至1979年IBM公司的San Jose Research Laboratory研制了关系数据库管理系统的原型系统SystemR,并实现了这种语言。 2.SQL(Structured Ouery Language)称为结构化查询语言 3.SQL数…...

mysql8.0使用MGR实现高可用与利用MySQL Router构建读写分离MGR集群

MGR是MySQL Group Replication的缩写&#xff0c;即MySQL组复制。 在以往&#xff0c;我们一般是利用MySQL的主从复制或半同步复制来提供高可用解决方案&#xff0c;但这存在以下几个比较严重的问题&#xff1a; 主从复制间容易发生复制延迟&#xff0c;尤其是在5.6以前的版本…...

《AI大模型开发笔记》MoE模型技术对比(Mixtral,Qwen2-MoE,DeepSeek-v3)

MoE模型技术对比(Mixtral,Qwen2-MoE,DeepSeek-v3) MoE(混合专家)大模型进入爆发期!本期我们对比三大开源MoE LLM:Mixtral、Qwen2-MoE 和最新爆火的 DeepSeek-V3。从 2023 年 Mixtral 开启风潮,到 2024 年 DeepSeek-V3 让全球瞩目,MoE 模型到底经历了怎样的进化? De…...

Vue.js 组件开发深入解析:Vue 2 vs Vue 3

Vue.js 是一个渐进式框架&#xff0c;旨在通过声明式渲染和组件化开发来提高开发效率和可维护性。组件是 Vue 应用的基本组成部分&#xff0c;几乎所有的功能都可以通过组件来实现。随着 Vue 3 的发布&#xff0c;Vue.js 引入了许多新的特性&#xff0c;使得组件的开发变得更加…...

DeepSeek大模型一键部署解决方案:全平台多机分布式推理与国产硬件优化异构计算私有部署

DeepSeek R1 走红后&#xff0c;私有部署需求也随之增长&#xff0c;各种私有部署教程层出不穷。大部分教程只是简单地使用 Ollama、LM Studio 单机运行量化蒸馏模型&#xff0c;无法满足复杂场景需求。一些操作配置也过于繁琐&#xff0c;有的需要手动下载并合并分片模型文件&…...

多个用户如何共用一根网线传输数据

前置知识 一、电信号 网线&#xff08;如以太网线&#xff09;中传输的信号主要是 电信号&#xff0c;它携带着数字信息。这些信号用于在计算机和其他网络设备之间传输数据。下面是一些关于网线传输信号的详细信息&#xff1a; 1. 电信号传输 在以太网中&#xff0c;数据是…...

DeepSeek官方推荐的AI集成系统

DeepSeek模型虽然强大先进&#xff0c;但是模型相当于大脑&#xff0c;再聪明的大脑如果没有输入输出以及执行工具也白搭&#xff0c;所以需要有配套工具才能让模型发挥最大的作用。下面是一个典型AI Agent架构图&#xff0c;包含核心组件与数据流转关系&#xff1a; #mermaid-…...

el-select 添加icon

Element-ui-plus 新版本&#xff1a;Select 选择器 | Element Plus 要实现如上的效果 &#xff0c;要用到具名插槽 prefix&#xff0c;看代码&#xff1a; <template><el-dialog ref"dialogRef" v-model"dialogVisible" :title"title"…...

Qt的QPushButton样式设置

在Qt中&#xff0c;可以通过样式表&#xff08;QSS&#xff09;为QPushButton设置丰富的样式。以下是常见样式设置方法的详细说明&#xff1a; 1. 基础样式 // 设置背景色、文字颜色、圆角边框 button->setStyleSheet("QPushButton {"" background-color…...

Java函数计算冷启动从8s到800ms的优化实录

在函数计算场景中,冷启动性能对用户体验至关重要。本文将分享如何将 Java 函数计算的冷启动时间从 8 秒优化到 800 毫秒,包括具体的技术手段和代码示例。 一、背景介绍 函数计算是一种事件驱动的计算服务,用户只需上传代码,无需管理服务器。但在实际使用中,函数计算的冷…...

通过例子学 rust 个人精简版 1-1

1-1 Hello World fn main() {println!("Hello World!");// 动手试一试println!("Im a Rustacean!"); }Hello World! Im a Rustacean!要点1 &#xff1a;println 自带换行符 注释 fn main() {let x 5 /* 90 */ 5;println!("Is x 10 or 100? x …...

STM32、GD32驱动TM1640原理图、源码分享

一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…...

Centos安装php-8.0.24.tar

查看系统环境 cat /etc/redhat-release 预先安装必要的依赖 yum install -y \ wget \ gcc \ gcc-c \ autoconf \ automake \ libtool \ make \ libxml2 \ libxml2-devel \ openssl \ openssl-devel \ sqlite-devel yum update 1、下载解压 cd /data/ wget https:/…...

VNC远程控制Mac

前言 macOS系统自带有VNC远程桌面&#xff0c;我们可以在控制端上安装配置VNC客户端&#xff0c;以此来实现远程控制macOS。但通常需要在不同网络下进行远程控制&#xff0c;为此&#xff0c;我们可以在macOS被控端上使用cpolar做内网穿透&#xff0c;映射VNC默认端口5…...

基于大数据的北京市天气数据分析系统的设计与实现

【Flask】基于Flask的北京市天气数据分析系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用Python和Flask框架&#xff0c;结合Pandas、NumPy等数据处理库及Echarts进…...

20250214在ubuntu20.04下使用obs studio录制外挂的1080p的USB摄像头【下载安装】

20250214在ubuntu20.04下使用obs studio录制外挂的1080p的USB摄像头 2025/2/14 9:10 缘起&#xff1a;笔记本电脑在ubuntu20.04下使用Guvcview录制自带的摄像头&#xff0c;各种问题。 1、降帧率。WIN10/11自带的相机应用可以满速30fps&#xff0c;马上重启到ubuntu20.04&#…...

OpenEuler学习笔记(三十):在OpenEuler上搭建3D建模环境

在OpenEuler上搭建3D建模环境&#xff0c;通常可以选择一些常见的3D建模软件&#xff0c;如Blender、FreeCAD等。以下以搭建Blender和FreeCAD这两款软件的使用环境为例&#xff0c;为你详细介绍搭建步骤。 搭建Blender 3D建模环境 1. 更新系统软件包 首先&#xff0c;确保系…...

Deepseek R1模型本地化部署+API接口调用详细教程:释放AI生产力

文章目录 前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装ollama2部署DeepSeek R1模型删除已存在模型&#xff0c;以7b模型为例 三、DeepSeek API接口调用Cline配置 前言 随着最近人工智能 DeepSeek 的爆火&#xff0c;越来越多的技术大佬们开始关注如…...

Ubuntu添加桌面快捷方式

以idea为例 一. 背景 在ubuntu中&#xff0c;很多时候是自己解压的文件并没有桌面快捷方式&#xff0c;需要自己找到对应的目录的执行文件手动打开&#xff0c;很麻烦 而只需要在 /usr/share/applications 中创建自定义的desktop文件就能自动复制到桌面 二. 添加方法 创建desk…...

教程:使用 Vue 3 和 arco 实现表格合并

1. 功能概述 本教程将介绍如何使用 Vue 3 和 arco 组件库实现表格合并功能。具体来说&#xff0c;我们会根据表格数据中的某个字段&#xff08;如 type&#xff09;对表格的某一列&#xff08;如入库类型列&#xff09;进行合并&#xff0c;同时将质检说明列合并为一列。 2. …...

【MySQL数据库】Ubuntu下的mysql

目录 1&#xff0c;安装mysql数据库 2&#xff0c;mysql默认安装路径 3&#xff0c;my.cnf配置文件? 4&#xff0c;mysql运用的相关指令及说明 5&#xff0c;数据库、表的备份和恢复 mysql是一套给我们提供数据存取的&#xff0c;更加有利于管理数据的服务的网络程序。下…...

Java实现MinIO上传PDF文件并配置浏览器在线打开而非下载

在Minio中上传PDF文件后&#xff0c;通常文件的访问方式&#xff08;即URL&#xff09;是配置为允许下载文件的&#xff0c;因为大多数Web服务器和存储服务默认将PDF文件视为应下载的内容类型&#xff08;Content-Type: application/pdf&#xff09;。但是&#xff0c;如果你想…...

CSV格式和普通EXCEL格式文件的区别

CSV 文件&#xff08;.csv&#xff09; 普通的 Excel 文件&#xff08;.xlsx 或 .xls) 主要体现在 文件格式、数据存储、功能支持 等方面: 文件格式 比较项CSV 文件 (.csv)Excel 文件 (.xlsx/.xls)文件类型纯文本文件二进制或 XML 格式数据分隔逗号&#xff08;,&#xff09…...

安卓基础(持续更新的笔记)

为什么要这样&#xff1a; // 创建请求体RequestBody body RequestBody.create(MediaType.parse("application/json; charsetutf-8"),jsonObject.toString()); jsonObject 就包含了一个 JSON 数据&#xff0c;它其实就是&#xff1a; {"name": "张…...

大模型Deepseek的使用_基于阿里云百炼和Chatbox

目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了&#xff08;本地&#xff09;部署大语言模型&#xff0c;适合微调、数据高隐私性等场景。随着Deepseek-R1的发布&#xff0c;大语言模型的可及性得到极大提升&#xff0c;应用场景不断增加&#xff0c;对高可用的方…...

数学建模基础训练-1:概念解析

文章目录 数学建模基础训练-1&#xff1a;概念解析问题一&#xff1a;如何找到“概念”&#xff1f;问题二&#xff1a;如何全面理解概念的基础含义&#xff1f;问题三&#xff1a;如何深刻理解概念并作出创新点发掘&#xff1f;实际举例问题一 :研究并给出寒假开学某大学返校交…...

【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis

mybatis 的常用配置 配置数据库连接 #驱动类名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #数据库连接的url spring.datasource.urljdbc:mysql://127.0.0.1:3306/mybatis_test characterEncodingutf8&useSSLfalse #连接数据库的名 spring.datasourc…...

联邦学习中的“参数聚合“机制详解:医疗数据隐私保护的技术实现路径

一、技术原理&#xff1a;参数聚合的数学本质 1.1 核心数学公式 联邦平均算法&#xff08;FedAvg&#xff09;&#xff1a; \theta_{global}^{t1} \sum_{k1}^K \frac{n_k}{N} \theta_k^t其中&#xff1a; K K K&#xff1a;参与本轮训练的客户端数量 n k n_k nk​&#xff…...

LVS 负载均衡集群(NAT模式)

一、环境准备 四台主机&#xff08;一台 LVS、两台 RS、一台客户端&#xff09; 注意每个虚拟机都需要关闭防火墙和 selinux 1.1.LVS 主机 LVS 主机&#xff08;两块网卡&#xff09; 第一块&#xff1a;NAT模式&#xff08;内网&#xff09; 第二块&#xff1a;添加网卡&am…...

Rocky Linux系统修改网卡全攻略

Rocky Linux系统修改网卡全攻略 Rocky Linux系统修改网卡全攻略一、了解网卡相关知识二、查看当前网卡配置(一)使用ip命令(二)使用ifconfig命令(需安装)三、修改网卡配置文件(一)修改IP地址(二)修改网关和DNS服务器(三)保存并退出配置文件四、重启网络服务使配置生…...

常用查找算法整理(顺序查找、二分查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)

常用的查找算法&#xff1a; 顺序查找&#xff1a;最简单的查找算法&#xff0c;适用于无序或数据量小的情况&#xff0c;逐个元素比较查找目标值。二分查找&#xff1a;要求数据有序&#xff0c;通过不断比较中间元素与目标值&#xff0c;将查找范围缩小一半&#xff0c;效率…...

自动化办公|xlwings 数据类型和转换

xlwings 数据类型和转换&#xff1a;Python 与 Excel 的桥梁 在使用 xlwings 进行 Python 和 Excel 数据交互时&#xff0c;理解两者之间的数据类型对应关系至关重要。本篇将详细介绍 Python 数据类型与 Excel 数据类型的对应关系&#xff0c;以及如何进行数据类型转换。 一、…...

Edge浏览器清理主页

我们都知道&#xff0c;Microsoft Edge浏览器是微软创造的搜索浏览器&#xff0c;Windows10、11自带。但是你可以看到&#xff0c;每次你打开Edge浏览器的时候都可以看到许多的广告&#xff0c;如图&#xff1a; 导致打开Edge浏览器的时候会遭受卡顿&#xff0c;广告骚扰&#…...

RedHat8安装postgresql15和 postgis3.4.4记录及遇到的问题总结

安装包对照版本参考 UsersWikiPostgreSQLPostGIS – PostGIS 如果Red Hat系统上有旧版本的PostgreSQL需要卸载 在较新的Red Hat版本&#xff0c;使用dnf包管理器卸载&#xff1a;sudo dnf remove postgresql-server postgresql 旧版本&#xff0c;使用yum包管理器卸载 sudo y…...

Java 大视界 -- 绿色大数据:Java 技术在节能减排中的应用与实践(90)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Python 文本探秘:正则表达式的易错迷宫穿越 -- 7. 正则表达式

正则表达式是 Python 中处理文本的强大武器&#xff0c;但它复杂的语法和规则构成了一个易错迷宫。本文深入剖析了正则表达式模式编写的错误、匹配规则的误解、性能优化的忽视等问题。通过大量的文本处理实例&#xff0c;展示了错误的正则表达式使用方式以及正确的解决方案。帮…...

Ubuntu22.04通过Docker部署Jeecgboot

程序发布环境包括docker、mysql、redis、maven、nodejs、npm等。 一、安装docker 1、用如下命令卸载旧Docker: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done 2、安装APT环境依赖包…...

数据结构 二叉树

一、⼆叉树的定义 ⼆叉树是⼀种特殊的树型结构&#xff0c;它的特点是每个结点⾄多只有2棵⼦树&#xff08;即⼆叉树中不存在度⼤于2的结点&#xff09;&#xff0c;并且⼆叉树的⼦树有左右之分&#xff0c;其次序不能任意颠倒。 ⼆叉的意思是这种树的每⼀个结点最多只有两个孩…...

基于python sanic框架,使用Nacos进行微服务管理

微服务软件系统构建方式,已经很普及了,通过开源的sanic进行微服务管理,便捷,技术也比较成熟,而在项目实际应用过程中,微服务类型不仅有java的,还有nodejs、python等,尤其是结合算法模型构建的python接口,需要在Nacos进行注册管理。本文内容耗时2天踏坑,亲测一切ok。 …...

hbase合并队列超长问题分析

问题现象 hbase集群合并队列超长,有节点上合并任务已经运行超过1天未结束,合并队列总长不断增加。 问题分析 参数配置: 配置参数默认值含义hbase.hregion.memstore.flush.size128MMemStore达到该值会Flush成StoreFilehbase.hregion.memstore.block.multiplier4当region中…...

【设计模式】【行为型模式】解释器模式(Interpreter)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…...

DeepSeek-R1 蒸馏 Qwen 和 Llama 架构 企业级RAG知识库

“DeepSeek-R1的输出&#xff0c;蒸馏了6个小模型”意思是利用DeepSeek-R1这个大模型的输出结果&#xff0c;通过知识蒸馏技术训练出6个参数规模较小的模型&#xff0c;以下是具体解释&#xff1a; - **知识蒸馏技术原理**&#xff1a;知识蒸馏是一种模型压缩技术&#xff0c;核…...

无人机航迹规划:互联银行系统优化(Connected Banking System Optimizer,CBSO)求解无人机路径规划MATLAB

一、互联银行系统优化算法 互联银行系统优化&#xff08;Connected Banking System Optimizer&#xff0c;CBSO&#xff09;算法是2024年由Mehrdad Nemati等人提出的一种智能优化算法&#xff0c;其灵感来源于银行系统之间的连接和交易过程。在银行系统中&#xff0c;核心银行…...

学习web数据埋点

什么是埋点&#xff0c;以及为什么需要埋点 通过代码主动收集用户行为数据&#xff08;如点击、浏览、停留时长等&#xff09;&#xff0c;用于数据分析驱动产品优化。 一、前端埋点 在客户端&#xff08;浏览器、移动端应用&#xff09;直接采集用户行为数据&#xff0c;通…...

Windows 11 安装 Docker

1.以管理员身份打开 Windows PowerShell 2.执行下面三行命令来启动WSL和虚拟机平台 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norest…...

深度学习框架探秘|Keras:深度学习的魔法钥匙

一、引言&#xff1a;深度学习浪潮中的 Keras 前面的文章我们探秘了深度学习框架中的两大明星框架 —— TensorFlow 和 PyTorch 以及 两大框架的对比 在深度学习的众多框架中&#xff0c;还有一款框架备受开发者们的喜爱 —— Keras 。它就像是一位贴心的助手&#xff0c;为我…...

HTML【详解】input 标签

input 标签主要用于接收用户的输入&#xff0c;随 type 属性值的不同&#xff0c;变换其具体功能。 通用属性 属性属性值功能name字符串定义输入字段的名称&#xff0c;在表单提交时&#xff0c;服务器通过该名称来获取对应的值disabled布尔值禁用输入框&#xff0c;使其无法被…...