Spring Cloud | “微服务“ 架构 与 Spring Cloud
“微服务” 架构 与 Spring Cloud
目录:
- "微服务" 架构 与 Spring Cloud
- 1. 认识架构
- "单体" 架构
- "SOA" 架构
- "微服务" 架构
- 2. "微服务架构" 的功能 :
- ① 微服务架构的 "自动化部署"
- ② 服务 "集中化管理"
- ③ 支持 "熔断机制"
- 3. 初识 Spring Cloud
- 3.1 Spring Cloud 概述
- 3.2 Spring Cloud 特点
- 3.3 Spring Cloud 微服务架构 的 "组件" :
- (1) Spring Cloud Confg
- (2) Spring Cloud Netflix
- (3) Spring Cloud Bus
- (4) Spring Cloud Stream
- (5) Spring Cloud Sleuth
- 3.4 Spring Cloud 的版本号
- 3.5 Spring Cloud与 Spring Boot 的兼容性
作者简介 :一只大皮卡丘,计算机专业学生,正在努力学习、努力敲代码中! 让我们一起继续努力学习!
该文章参考学习教材为:
《Spring Cloud微服务架构开发》 黑马程序员 / 编著
文章以课本知识点 + 代码为主线,结合自己看书学习过程中的理解和感悟 ,最终成就了该文章文章用于本人学习使用 , 同时希望能帮助大家。
欢迎大家点赞👍 收藏⭐ 关注💖哦!!!(侵权可联系我,进行删除,如果雷同,纯属巧合)
- 互联网的飞速发展给人们的工作和生活带来了翻天覆地的变化,人们在享受互联网带来的便捷同时,也对互联网产品提出了 更为严格的要求。而 传统架构下的 互联网产品,面对复杂的业务需求,在 降低业务之间 耦合性、快速部署项目、轻松持续改进项目 上都已 显得力不从心。为了解决上述问题,微服务架构 应运而生。
- Spring Cloud 是一套完整的 微服务架构解构 和 解决方案。
1. 认识架构
“单体” 架构
一个典型的单体架构就是将所有业务场景的 ① 表示层、② 业务逻辑层 和 ③ 数据访问层 放在一个 “project工程” 中,最终经过 编译、打包,部署 在 一台 服务器上。
例如,开发一个进销存的系统,我们可以 将项目打包成war包并 部署到 服务器上。这样的 一个 war 包涵盖了很多模块,如下图所示 :
如上图所示的 单体架构,随着业务越来越复杂,应用程序需要增加 的 功能越来越多,单体架构的代码量越来越大,代码可读性、可维护性和 扩展性会 下降。同时,使用 单体架构 带来的 隐患会比较多,同时由于 系统过于庞大以及 关联较多,应用中的任何一个 Bug ( 漏洞、错误 )都有可能导致整个系统宕机。
“SOA” 架构
针对传统的单体架构存在的问题,人们设计出了一种 SOA 架构。
( SOA 架构 : 是一种 “面向服务” 的架构方式,将原来 "单体架构" 按照"功能" 细分为不同的 “子系统” )
SOA 架构 是一个 面向服务 的 架构。它是一个 组件模型。SOA架构将应用程序的 不同功能单元( 称为 服务 ) 进行 拆分,这些 服务 通过 定义良好的接口和契约 “联系起来”。 接口 是采用 中立的方式进行 定义的,它 独立于实现服务的硬件平台、操作系统和编程语言。这使构建在 各种各样的系统 中的 服务 可以 使用一种统一 和 通用 的方式进行 交互。
SOA 架构 将原来的 单体架构 “按照功能细分” 为 不同的子系统。SOA架构如下图所示 :
由上图可知,一个完整的项目会分为多个模块,数据库 分为 主库 与 从库 两种,并且 “主库” 与 “从库” 是 数据同步 的。这样的 SOA架构 “解决” 了 单体式架构所遗留下 的 问题。
但 S0A架构本身也存在一些缺点。S0A架构一般使用某种集中式管理,比如会有审查委员会、主架构师或架构委员会等部门来严格定义每个系统组件应当做什么、如何执行,相同类型的功能可能会在多个组件中分别定义和记录,每个组件使用的语言或者工具集可以是统一的,也可以不是。
在 SOA架构中,系统和服务的界定比较模糊,而且 服务的接口协议不固定,且 种类繁多,不利于系统维护。
“微服务” 架构
学习了 单体架构和 SOA架构,我们可以知道,系统中的模块与模块之间直接相互访问或 某个模块本身的错误都有可能影响整个系统的使用。在大数据以及高并发的环境下,系统架构面对更加严苛的挑战。为解决这些问题,微服务架构 就诞生了。
微服务架构的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发、管理和部署。在分散的组件中使用微服务云架构和平台,使部署、管理和服务功能交互变得更加简单。
微服务架构是一种将单一应用程序作为一套小型服务开发的方法。每种应用程序都在其自己的进程中运行,并与轻量级机制 [通常是HTTP资源的应用程序接口 (Application Programming Imterface,API)] 进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。
相比单体架构和 SOA架构,如何理解微服务架构的集中化管理? 因为 微服务架构的每个业务功能都是一个独立的项目,各个项目之间的 耦合性很低,所以开发人员可以使用不同的编程语言编写程序、使用不同的存储系统计算存储数据。前面提到的进销存系统,如果使用微服务架构来开发,可以采用下图所示的结构 :
从上图可以看出,微服务架构中每个服务都有自己独立的 数据库,数据库之间 没有任何联系 。这样的 好处 是,随着业务的不断扩张,不同服务与服务之间 不需要提供数据库集成,而是提供 API相互调用。独立的数据库使系统的维护变得简单,性能明显提高,迁移也比较方便。在微服务架构中,数据的存储不仅可以使用关系型数据库,还可以使用非关系型数据库。一个典型的微服务架构系统,每个服务对应的数据库可能各不相同,建议大家根据业务需求选择合适的数据库。
微服务架构是直接通过 HTTP 进行通信的,也可以采用消息队列来通信,如采用 RabbitMQ 、Kafka 等进行通信。微服务采用不同的编程语言,使用不同的存储技术,进行自动化部署减少了人为控制,降低了出错概率。
2. “微服务架构” 的功能 :
- 微服务 的概念源于 2014年3月 Martin Fowler( 马丁·福勒)所写的一篇文章“Microservices” (微服务 )。文中表达了一种观念,微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。
- 微服务架构是一种架构风格,一个大型复杂软件应用由多个微服务架构组成。系统中的 各个微服务架构可 被独立部署 ,各个微服务架构之间是松耦合的。每个微服务架构仅关注于完成一项任务并很好地完成该任务。在所有情况下,每项任务代表着一个小的业务能力。微服务架构的功能如下 。
① 微服务架构的 “自动化部署”
- 微服务架构中,系统会被拆分为 若干个微服务架构,每个微服务架构又是一个 独立的应用程序。单体架构中的应用程序只需要部署一次,而微服务架构中 有多少 服务就需要部署多少次。随着服务数量的增加,部署的难度就会增加。业务的 粒度划分得越细,微服务 架构的数量就越多。因此就出现了 自动化部署技术,例如 Docker 容器自动化部署技术方便了微服务架构项目下 各模块在服务器上的 部署。
② 服务 “集中化管理”
- 微服务架构系统是按照 "业务单元" 来 划分的,服务数量越多,管理起来 越复杂。在这里,微服务架构提供了集中化管理组件 : Spring Cloud Config ,可以在 Spring Cloud Config 配置文件中统一配置服务 , 这个操作很大程度上方便了对项目的集中化管理。
③ 支持 “熔断机制”
- 微服务架构 就是 分布式的。在分布式系统中,服务之间是相互依赖的,如果一个服务出现了故障或者网络延迟,在高并发的情况下,就会导致线程阻塞,在很短的时间内该服务的线程资源会消耗殆尽,最终使得该服务不可用。
- 由于服务相互依赖,这样可能会导致整个服务的不可用,这就是“雪崩”效应。熔断机制是应对“雪崩”效应的一种微服务架构链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护 ; 股票交易中,如果股票指数过高,就也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当一条链路的某个微服务架构不可用或者响应时间太长时,会进行 服务的降级,进而调用熔断该节点的微服务架构,快速返回错误 的 响应信息 ;当检测到该节点微服务架构调用响应正常后,恢复调用链路。
3. 初识 Spring Cloud
3.1 Spring Cloud 概述
- Spring Cloud 是一个基于 Spring Boot 实现的 “微服务开发” 架构。它利用 Spring Boot 的 开发便利性巧妙地简化了 分布式系统 的 开发。
例如 配置管理、服务发现、断器使用、智能路由、控制总线等操作,都可以使用Spring Boot 做到 一键启动 和 部署。- 可以说,Spring Cloud 将 Spring Boot 框架进行 再封装,屏蔽掉了 复杂的配置 和 实现原理,最终给开发者留出了一套 简单易懂、易部署 和 易维护 的 分布式系统开发工具包。
3.2 Spring Cloud 特点
① 组件丰富,功能齐全
Spring Cloud 拥有 Spring 这个强大后盾,框架的源码也是开源的,而且开发者在不断完善 Spring Cloud 下的组件,其中包括 Eureka服务注册发现中心,主要负责完成微服务架构中的服务管理功能 ; Spring Cloud Confg分布式配置中心,可以实现动态修改配置文件 ; Hystrix熔断器,通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。这些组件基本覆盖了日常开发的各个方面
② 开箱即用,快速启动
Spring Cloud 是基于 Spring Boot 开发的,Spring Boot 具有 快速构建 Spring应用、直接嵌入服务器、自动化配置 的优点,Spring Cloud 继承 了 Spring Boot 快速构建 和 自动化配置的优点有开箱即用、快速启动的特点。
③ 模块部署方便,项目维护难度降低
Spring Cloud 采用 模块化开发,按照项目功能将项目拆分为不同的模块,每个模块独立开发运行,模块之间不会互相影响。模块开发完成后,每个模块部署时可以使用 Docker 进行 自动化部署,使得项目部署更加方便。维护时只需要维护具体的模块,不需要改动其他模块的代码,从而降低了模块后期维护的成本。
④ 项目扩展性和稳定性较好
基于 Spring Cloud 的 微服务架构中,每个模块基本都是一个 Spring Boot 项目,它们都有独立的数据库,模块下的功能是横向开发的。如果需要扩展新的功能,就可以新建该功能对应的独立数据库以及新的模块,不需要在之前的模块上修改,这样项目 扩展更方便,项目稳定性更好。
⑤ 具有容错处理机制
项目实际开发中会因为网络连接失败、超时、服务器硬件故障等原因 导致其中某个模块无法正常运行,从而 导致整个项目发生异常,所以 容错机制变得尤为重要。SpringCloud 提供了Hystrix 组件,该组件专门用于 处理容错,从而能保证某个模块出错后系统有其他备用模块或者善后处理。
3.3 Spring Cloud 微服务架构 的 “组件” :
Spring Cloud 是 一系列框架的 有序集合,为开发人员构建微服务架构提供了完整的解决方案。Spring Cloud 根据分布式服务协调治理的需求 成立了许多 “子项目” ,每个项目通过特定的组件去实现。
基于 Spring Cloud 的 微服务架构 如下图所示 :
Spring Cloud 包含的 常用组件以及模块 的 具体内容如下所示。
(1) Spring Cloud Confg
Spring Cloud Confg : 分布式配置中心,负责把配置 放到远程服务器上,集中化管理集群配置。目前支持 ① 本地存储、② Git 和 ③ Subversion。
(2) Spring Cloud Netflix
Spring Cloud Netflix : 核心组件,负责 对多个 Netflix 0SS 开源套件进行整合。
- Eureka : 服务注册发现中心,基于REST服务的分布式中间件,主要用于服务管理。
- Hystrix : 熔断器,容错管理工具,旨在通过 熔断机制控制服务 和 第三方库的节点 , 从而对 延迟和 故障提供 更强大的容错能力’'。
- Ribbon : 云端负载均衡器。支持多种 负载均衡策略,可配合服务发现 和 熔断器使用,在客户端 实现负载均衡。
- Feign : 一个 REST 客户端,基于 Ribbon 和 Hystrix 的声明式服务调用组件。
- Zuul : 服务网关,为微服务架构集群提供代理、过滤、路由等功能。
(3) Spring Cloud Bus
Spring Cloud Bus : 事件、消息总线,用于在 集群 (例如配置变化事件) 中传播状态变化,可 与 Spring Cloud Confg 联合实现热部署。
(4) Spring Cloud Stream
Spring Cloud Stream : 数据流操作开发包,可与 Redis、RabbitMO、Kalka等架构进行消息发送与接收。
(5) Spring Cloud Sleuth
Spring Cloud Sleuth : 服务追踪框架,可以与 Zipkin、Apache Htrace 和 ELK 等数据分析、服务跟踪系统进行整合,为跟踪服务、解决问题提供了便利。
3.4 Spring Cloud 的版本号
Spring Cloud 的 版本号 :
① SNAPSHOT : 快照版本,可能会被修改。
② M( MileStone ) : 里程碑版本,M1 表示第一个里程碑版本。一般同时标注 PRE,表示预览版本。③ SR (Service Release ) : 正式版本。如果正式版有多个,就使用数字标识不同的正式版本,例如SR1表示第一个正式版本,同时一般会标记 GA(GenerallyAvailable) ,表示 稳定版本。
3.5 Spring Cloud与 Spring Boot 的兼容性
通过前面的学习知道 Spring Cloud 是基于Spring Boot开发的。Spring Boot 专注于 快速、方便集成 单个微服务架构,而 Spring Cloud 是 关注全局的服务治理框架 。SpringCloud 依赖于 Spring Boot。
由于 Spring Cloud 和 Spring Boot 都发布了多个版本,选择这些版本时 需要考虑兼容性,两者的兼容关系如下表所示 :
Spring Cloud版本 Spring Boot版本 Greenwich版本 兼容 Spring Boot 2.1.x Finchley 版本 兼容 Spring Boot 2.0.x Dalston版本 和 Edgware 版本 兼容 Spring Boot 1.5.x Camden 版本 兼容 Spring Boot 1.4.x Brixton 版本 兼容 Spring Boot 1.3.x Angel版本 兼容 Spring Boot 1.2.x 在实际操作中,选择Spring Boot与 Spring Cloud 版本时,没有限制必须使用某一版本,一般标注 GA (稳定)的 版本都可以使用。但有 一点要注意,Spring Cloud 版本一定要 与 Spring Boot 版本兼容,以 兼容为第一要务。
相关文章:

Spring Cloud | “微服务“ 架构 与 Spring Cloud
“微服务” 架构 与 Spring Cloud 目录: "微服务" 架构 与 Spring Cloud1. 认识架构"单体" 架构"SOA" 架构"微服务" 架构 2. "微服务架构" 的功能 :① 微服务架构的 "自动化部署"② 服务 "集中化管理"③…...

win10禁止自动更新的终极方法
添加注册表值 1.运行,输入regedit 2.打开注册表编辑器依次进入以下路径“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings”。 3.在Settings项中,新建DWORD(32位)值(D),重命名为以下命名“Fl…...

笨方法自学python(二)-注释
注释和#号 程序里的注释是很重要的。它们可以用自然语言告诉你某段代码的功能是什么。在你想要临时移除一段代码时,你还可以用注解的方式将这段代码临时禁用。 # A comment, this is so you can read your program later. # Anything after the # is ignored by py…...

wireshark的安装使用及相关UDP、TCP、 ARP
初步了解: 进入wireshark后如图: 从图中可以看到很多网络连接在操作的时候我们需要监测哪些 我们可以直接在本地的运行框中输入ipconfig来查看 如图: 从以上图片中我们可以清楚地看到哪些网络连接已经连接的我们只需要按需监测他们即可 但…...

【软考】模拟考卷错题本2024-05-11
1 设计模式- 适配器模式 基本上上述的图解已经涵盖了绝大多数主流的设计模式和其特点。理解记忆下即可,这里对下午的考题也有帮助的。 2 计算机组成原理 cpu 访问速度 这个真的是憨憨咯~看到内存就选内存,题目都没审好。这里的速度比cpu内部的要比外部的…...

VMware虚拟机提示内存不足
VMware虚拟机,k8s集群搭建内存不足的问题 疑问:我的电脑是8G8G双通道的内存,当我在搭建k8s集群时给master-2G内存,node1-3G内存,node2-3G内存; 当依次打开虚拟机到node2时VM提示“物理内存不足,…...

视频批量剪辑指南:一键合并视频并添加背景音乐,高效便捷
在数字化时代,视频剪辑已经成为了一项常见且重要的技能。无论是制作家庭影片、工作展示还是社交媒体内容,掌握高效的视频剪辑技巧都能极大地提升我们的工作效率和创作质量。本文将为您介绍云炫AI智剪中高效的视频批量剪辑方法,让您能够一键合…...

讲讲C++四种类型转换
在C中,类型转换(或称为类型转换运算符)是用来将一个数据类型转换为另一个数据类型的机制。C提供了四种类型转换:静态类型转换(Static Cast)、动态类型转换(Dynamic Cast)、重新解释类…...

探索LLM在广告领域的应用——大语言模型的新商业模式和新个性化广告的潜力
概述 在网络搜索引擎的领域中,广告不仅仅是一个补充元素,而是构成了数字体验的核心部分。随着互联网经济的蓬勃发展,广告市场的规模已经达到了数万亿美元,并且还在持续扩张。广告的经济价值不断上升,它已经成为支撑大…...

MBR与GPT分区表
文章目录 MBR分区表MBR分区表结构MBR分区表项查看U盘的分区表信息查看系统中所有磁盘的分区类型获取分区表信息 GPT分区表保护性MBRGPT分区表头格式GPT分区表项格式分区类型分区属性分区表项内容 MBR分区表 CHS :磁头(Heads)、柱面(Cylinder…...

OGG几何内核开发-BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound比较
最近在与同事讨论BRepAlgoAPI_Fuse与BRep_Builder.MakeCompound有什么区别。 一、从直觉上来说,BRepAlgoAPI_Fuse会对两个实体相交处理,相交的部分会重新的生成相关的曲面。而BRep_Builder.MakeCompound仅仅是把两个实体组合成一个新的实体,…...

C语言 | Leetcode C语言题解之第67题二进制求和
题目: 题解: void reserve(char* s) {int len strlen(s);for (int i 0; i < len / 2; i) {char t s[i];s[i] s[len - i - 1], s[len - i - 1] t;} }char* addBinary(char* a, char* b) {reserve(a);reserve(b);int len_a strlen(a), len_b st…...

油泼辣子在食品类别可以申请成商标不!
前阵韩国人在美国申请“chili crunch”油泼辣子作为商标,还准备禁止华人餐馆使用投诉侵权并索赔,普推知产老杨在USPTO上面检索发现,这个人申请的主要是30类方便食品的调味品,商标分类是全球通用的。 商标名称不能申请本类所属的通…...

深入探索MySQL视图
前言 在数据库的世界里,MySQL视图作为数据抽象的一把利剑,为我们提供了一种灵活而高效的方式来管理和查询数据。它不仅能够简化复杂的查询逻辑,还能在不改动底层数据结构的前提下,实现数据的定制化展示与访问控制。本文旨在深入解…...

C语言逻辑语句
叠甲:以下文章主要是依靠我的实际编码学习中总结出来的经验之谈,求逻辑自洽,不能百分百保证正确,有错误、未定义、不合适的内容请尽情指出! 文章目录 1.何为控制语句2.控制语句-分支语句2.1.if2.2.switch 3.控制语句-循…...

C++青少年简明教程:基础知识
C青少年简明教程:基础知识 电脑程序设计(Computer programming),或称程序设计(programming),是给出解决特定问题程序的过程,程序设计往往以某种程序设计语言为工具,给出这…...

[AutoSar]lauterbach_001_ORTI_CPUload_Trace
目录 关键词平台说明一、ORTI概述二、ORTI文件的生成三、ORTI文件的导入四、Trace 功能4.1 Trace 功能菜单介绍4.2 Trace功能的配置4.3 Trace MCDS 设置4.4 Task Switches断点的设置4.5 Trace 数据的录取4.6 CPU 负载和Task调度的查看 关键词 嵌入式、C语言、autosar、OS、BSW…...

课程设计 大学生竞赛系统
课程设计 大学生竞赛系统 wx:help-assignment 学生用户: wx:help-assignment 首页:推荐一些竞赛,热门活动等; 广场:用户可以通过广场来发表动态,同时也可以查看别人发布的动态,并且可以 关注…...

优先队列全面讲解
主题: 优先队列是一种非常有用的数据结构,它让你能够管理一组数据,使得每次访问或移除数据时,总是得到当前集合中优先级最高(或最低)的那个元素。这个特性让优先队列非常适用于需要快速访问集合中最重要元…...

即插即用篇 | YOLOv8 引入多光谱通道注意力 | 频率领域中的通道注意力网络
本改进已集成到 YOLOv8-Magic 框架。 注意力机制,尤其是通道注意力,在计算机视觉领域取得了巨大成功。许多工作聚焦于如何设计高效的通道注意力机制,同时忽略了一个基本问题,即通道注意力机制使用标量来表示通道,这很困难,因为会造成大量信息的丢失。在这项工作中,我们从…...

Topaz Video AI 5.0.3激活版 AI视频无损缩放增强
Topaz Video AI专注于很好地完成一些视频增强任务:去隔行,放大和运动插值。我们花了五年时间制作足够强大的人工智能模型,以便在真实世界的镜头上获得自然的结果。 Topaz Video AI 还将充分利用您的现代工作站,因为我们直接与硬件…...

ppt通过修改幻灯片母版修改页脚
修改幻灯片母版 幻灯片母版就可以了,就可以修改页脚...

【数组算法】598. 区间加法
给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] [ai, bi] 意味着当所有的 0 < x < ai 和 0 < y < bi 时, M[x][y] 应该加 1。 在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。 示例 1: …...

Java | Leetcode Java题解之第68题文本左右对齐
题目: 题解: class Solution {private String line(List<String> list,int maxWidth,int totalLength,boolean isLast){StringBuilder sb new StringBuilder();sb.append(list.get(0));if(list.size() 1){String ap " ".repeat(maxW…...

Windows安装MySQL 8.4.0免安装版
下载地址:MySQL :: Begin Your Download 1 管理员权限打开cmd,切换到MySQL安装路径的bin目录下 cmd> C: cmd> cd ..\mysql-8.4.0-winx64\bin 2 移除已安装的MySQL服务(若有) 2.1 停止老的MySQL服务 net stop mysql …...

初识java--javaSE(3)--方法,递归,数组,
文章目录 一 方法的使用1.1 什么是方法?main方法注意事项 1.2 方法的调用嵌套调用在方法调用时形参与实参的关系: 1.3 方法的重载方法重载的意义?总结方法重载:方法签名: 二 递归什么是递归?递归的精髓&…...

AWS ECS Fargate: 如何获取正在运行的服务
AWS Fargate 是一个无服务器计算引擎,用于容器,可以与 Amazon Elastic Container Service (ECS) 配合使用,实现容器的自动部署、管理、扩展和调整。在日常的开发和运维过程中,了解哪些服务正在运行及其状态是非常重要的。本文将介绍如何使用 Python 和 AWS SDK(boto3)来检…...

Rust 常用 Web 开源代码库
Rust的web开发有许多优秀的开源库可供选择,以下是一些值得关注的库: Web框架: Axum:由Rust社区的异步事实标准Tokio团队开发,以高性能和强大的异步支持著称。其特点包括使用无宏API将请求路由到处理程序、使用提取器以…...

零代码平台助力中国石化江苏油田实现高效评价体系
概述: 中国石化集团江苏石油勘探局有限公司面临着评价体系依赖人工处理数据、计算繁琐且容易出错的挑战。为解决这一问题,他们决定借助零代码平台明道云开发江苏油田高质量发展经济指标评价系统。该系统旨在实现原始数据批量导入与在线管理、权重及评分…...

[优选算法]------滑动窗⼝——209. 长度最小的子数组
目录 1.题目 1.解法⼀(暴⼒求解)(会超时): 2.解法⼆(滑动窗⼝): 1.算法思路: 2.手撕图解 3.代码实现 1.C 2.C语言 1.题目 209. 长度最小的子数组 给定一个含有 n…...