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

SOAP API 和 REST API

SOAP API 和 REST API 是两种主流的 Web 服务通信架构,它们在设计理念、数据格式、协议支持和应用场景上有显著差异。以下是两者的核心对比及典型应用场景:


1. 核心概念与设计哲学

特性SOAP APIREST API
本质协议(基于 XML 的标准化协议)架构风格(基于 HTTP 的轻量级设计理念)
规范严格性严格遵循 W3C 标准,强类型约束无强制规范,遵循 REST 原则即可
通信方式通常基于 HTTP/S、SMTP、JMS 等传输仅依赖 HTTP/S 协议
数据格式仅支持 XML支持 JSON(主流)、XML、HTML、纯文本等
状态管理可支持有状态操作(如 WS-* 扩展)严格无状态(每次请求独立)

2. 技术实现对比

(1) 请求/响应结构
  • SOAP 示例

<!-- 请求 -->
POST /UserService HTTP/1.1
Content-Type: text/xml
<soap:Envelope><soap:Header><!-- 安全令牌、事务ID等 --></soap:Header><soap:Body><getUserRequest><userId>123</userId></getUserRequest></soap:Body>
</soap:Envelope><!-- 响应 -->
<soap:Envelope><soap:Body><getUserResponse><name>John Doe</name><email>john@example.com</email></getUserResponse></soap:Body>
</soap:Envelope>

REST 示例

# 请求
GET /users/123 HTTP/1.1
Accept: application/json# 响应
HTTP/1.1 200 OK
Content-Type: application/json
{"id": 123,"name": "John Doe","email": "john@example.com"
}
(2) 接口定义
  • SOAP
    依赖 WSDL(Web Services Description Language) 文件定义接口,包含方法、参数、数据类型等元数据。
    示例 WSDL 片段:

    <portType name="UserService"><operation name="getUser"><input message="tns:getUserRequest"/><output message="tns:getUserResponse"/></operation>
    </portType>

  • REST
    无强制接口定义,但常用 OpenAPI/Swagger 描述 API 规范:

paths:/users/{userId}:get:summary: Get user by IDparameters:- name: userIdin: pathrequired: trueschema: { type: integer }responses:200:description: User detailscontent:application/json:schema:$ref: '#/components/schemas/User'

3. 典型应用场景

场景SOAP 适用性REST 适用性
企业级系统集成✅ 适合(如 SAP、银行间交易)⚠️ 可能需扩展(需结合 JSON Schema 等)
移动/Web 应用后端❌ 复杂度过高✅ 主流选择(轻量、易调试)
高安全性需求✅ 内置 WS-Security 规范(加密、签名)✅ 依赖 HTTPS + OAuth2/JWT
事务性操作✅ 支持 WS-AtomicTransaction 规范❌ 需自行实现(如 Saga 模式)
实时消息通信✅ 可与 MQTT、JMS 结合⚠️ 需 WebSocket 或其他协议补充

4. 优缺点对比

维度SOAP 优点SOAP 缺点REST 优点REST 缺点
标准化强规范,跨语言兼容性好灵活性差,修改成本高灵活,快速迭代缺乏统一标准,易产生设计不一致
性能XML 冗长,解析开销大高延迟,带宽占用多JSON 轻量,解析高效无状态需额外管理会话(如 Token)
可扩展性通过 WS-* 扩展(如 WS-Security、WS-Addr)扩展实现复杂易扩展(如 HATEOAS 超媒体控制)过度扩展可能导致 API 设计混乱
工具链支持成熟工具多(如 SoapUI、WSDL 生成器)开发调试复杂度高生态丰富(Postman、Swagger、OpenAPI)部分高级功能需自行实现(如分页、过滤)

5. 如何选择?

  • 选择 SOAP

    • 需要严格的事务支持(如银行转账)。

    • 企业级系统间集成且已有 WSDL 规范。

    • 必须使用 WS-Security 等高级安全协议。

  • 选择 REST

    • 面向移动端或浏览器客户端(JSON 友好)。

    • 快速原型开发或敏捷迭代项目。

    • 需要高并发、低延迟的云原生应用。


6. 混合使用场景

现代系统常结合两者优势:

  • 内部服务:使用 SOAP 保证事务和安全性(如支付网关)。

  • 外部接口:暴露 REST API 供第三方集成(如地图服务)。

  • 协议转换:通过 API 网关将 SOAP 服务转换为 REST 接口(适配老旧系统)。


总结

  • SOAP 是“重剑”,适合需要强规范、高可靠性的复杂企业场景。

  • REST 是“快刀”,适用于敏捷开发、资源导向的现代应用。

  • 选择时需权衡 性能需求安全级别开发效率 和 系统生态

相关文章:

SOAP API 和 REST API

SOAP API 和 REST API 是两种主流的 Web 服务通信架构&#xff0c;它们在设计理念、数据格式、协议支持和应用场景上有显著差异。以下是两者的核心对比及典型应用场景&#xff1a; 1. 核心概念与设计哲学 特性SOAP APIREST API本质协议&#xff08;基于 XML 的标准化协议&…...

简单了解Java的I/O流机制与文件读写操作

一、理解Java的I/O流机制 字节流 Java中的字节流主要由 InputStream 和 OutputStream 这两个抽象类及其子类构成。字节流以字节&#xff08;byte&#xff09;为基本处理单元&#xff0c;适用于处理所有类型的数据&#xff0c;包括文本、图片、音频、视频等。 1. InputStream…...

PCIe 转 U.2 接双硬盘指南 - 超微(Supermicro)主板

前言 公司服务器空间不够想扩容&#xff0c;尝试折腾了下超微&#xff08;Supermicro&#xff09;服务器的 PCIe 转 U.2&#xff0c;踩了一点小坑&#xff0c;特地写下来给大家参考一下。 现在市面上 U.2 接口的企业级固态硬盘相对其他类型接口的固态硬盘 便宜很多 &#xff…...

【上位机——MFC】文档

相关类 CDocument提供了一个用于管理数据的类&#xff0c;封装了关于数据的管理(数据提取、数据转换、数据存储等)&#xff0c;并和视图类进行数据交互。 文档类使用 定义一个自己的文档类&#xff0c;派生自CDocument 程序的创建过程 1.利用框架类对象地址pFrame调用Load…...

JavaEE-多线程实战02

接上 多线程编程实战01 第三个多线程程序 package thread.test;//定义了一个叫MyThread3的类&#xff0c;实现了Runable接口,所以它必须重写run()方法 class MyThread3 implements Runnable {Overridepublic void run() {//线程执行的具体内容//进入一个无限循环&#xff0c;…...

计算机网络 | 应用层(6) -- 套接字编程

&#x1f493;个人主页&#xff1a;mooridy &#x1f493;专栏地址&#xff1a;《计算机网络&#xff1a;自顶向下方法》 大纲式阅读笔记_mooridy的博客-CSDN博客 &#x1f493;本博客内容为《计算机网络&#xff1a;自顶向下方法》第二章应用层第七节知识梳理 关注我&#x1f…...

基于大模型的急性肠套叠全流程预测与诊疗方案研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义与创新点 二、急性肠套叠概述 2.1 定义与分类 2.2 病因与发病机制 2.3 流行病学特征 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 用于急性肠套叠预测的可行性分析 四、术前风险…...

游戏遭遇DDoS攻击如何快速止损?实战防御策略与应急响应指南

是不是很抽象 我自己画的 一、游戏DDoS攻击特征深度解析 游戏行业DDoS攻击呈现复合型特征&#xff0c;2023年监测数据显示&#xff0c;针对游戏服务器的攻击中&#xff0c;63%采用UDP反射放大HTTP慢速攻击组合&#xff0c;攻击峰值达3.2Tbps。攻击者利用游戏协议特性&#xff…...

Linux电源管理(2)_常规的电源管理的基本概念和软件架构

原文&#xff1a; Linux电源管理(2)_Generic PM之基本概念和软件架构 1. 前言 Linux系统中那些常规的电源管理手段&#xff0c;包括关机&#xff08;Power off&#xff09;、待机&#xff08;Standby or Hibernate&#xff09;、重启&#xff08;Reboot&#xff09;等。这些…...

回文链表力扣234

思路: 对于这个题同样的找出题目的要求 1.判断回文 那么我们思考一下判断回文的方法&#xff0c;对于字符串我们只需要翻转一下就行&#xff0c;但是这不是通用的方法&#xff0c;在思考一下&#xff0c;我们是不是可以用双指针&#xff0c;一个在前一个在后&#xff0c;向中…...

互联网的下一代脉搏:深入理解 QUIC 协议

互联网的下一代脉搏&#xff1a;深入理解 QUIC 协议 互联网是现代社会的基石&#xff0c;而数据在其中高效、安全地传输是其运转的关键。长期以来&#xff0c;传输层的 TCP&#xff08;传输控制协议&#xff09;一直是互联网的主力军。然而&#xff0c;随着互联网应用场景的日…...

榕壹云国际版短剧系统:基于Spring Boot+MySQL+UniApp的全球短剧创作平台

一、项目背景与简介 在短视频行业高速发展的今天,短剧内容已成为全球用户娱乐消费的新宠。为满足市场对高质量、多样化短剧的需求,我们基于Spring Boot + MySQL + UniApp技术栈开发了榕壹云国际版短剧系统,这是一款面向全球市场的短剧创作与分发平台。系统不仅提供丰富的基…...

为什么选择 Spring Boot? 它是如何简化单个微服务的创建、配置和部署的?

为什么选择 Spring Boot&#xff1f; Spring Boot 的核心目标就是简化 Spring 应用的初始搭建以及开发过程。它并不是要取代 Spring Framework&#xff0c;而是构建在其之上&#xff0c;通过一系列“约定优于配置”的原则和自动化手段&#xff0c;让开发者能够更快的创建出独立…...

方向倒数、梯度和梯度下降的对比关系

一、方向导数与梯度的定义 ‌方向导数‌ 方向导数描述多元函数在某点沿特定方向的变化率。对于函数f(x,y)&#xff0c;在点(x0​,y0​)沿单位向量u(u1​,u2​)的方向导数定义为&#xff1a; 其物理意义是函数值沿该方向的瞬时变化速率&#xff0c;正负表示增减趋势&#xff0c…...

全星APQP软件系统:驱动芯片半导体行业研发管理迈向高效与合规新高度

全星APQP软件系统&#xff1a;驱动芯片半导体行业研发管理迈向高效与合规新高度 在芯片半导体行业&#xff0c;一款芯片的研发周期长达数年&#xff0c;涉及设计验证、工艺开发、良率爬坡、量产交付等数百个关键节点&#xff0c;任何一个环节的偏差都可能导致数千万美元的损失…...

文章记单词 | 第50篇(六级)

一&#xff0c;单词释义 fun&#xff1a;英 [fʌn] 美 [fʌn]&#xff0c;名词&#xff0c;意为 “享乐&#xff1b;乐趣&#xff1b;快乐&#xff1b;嬉戏&#xff1b;有趣的事&#xff1b;玩笑&#xff1b;逗乐”&#xff1b;形容词&#xff0c;意为 “逗乐的&#xff1b;有…...

RISC-V MCU定时器架构与低功耗设计

RISC-V核低功耗MCU在定时器架构和功耗控制方面具有以下特点&#xff1a; 定时器配置 高级控制定时器&#xff1a;支持互补PWM输出和刹车功能&#xff0c;适合电机控制等场景 通用定时器&#xff1a;提供输入捕获、输出比较和单脉冲模式等基础功能 系统定时器&#xff1a;内置6…...

redis_Windows中安装redis

①Windows安装包下载地址&#xff1a;https://github.com/tporadowski/redis/releases 当前最新版本截图 ②根据自己系统平台的实际情况选择对应的安装包&#xff0c;如&#xff1a;64位win10系统可选择Redis-x64-5.0.14.msi ③下载完成后运行安装&#xff0c;没有特殊要求的话…...

Spring中生成Bean的方式总结-笔记

1. 概略版 Spring生成Bean方式有如下几种&#xff0c;可根据需求选择合适的方式&#xff0c;通常优先使用注解驱动的声明式配置&#xff08;如Component、Bean&#xff09;&#xff0c;复杂场景结合条件或作用域控制。 方式特点适用场景Component 组件扫描简单直观&#xff…...

学习insightface 的人脸识别

1.Insightface_pytorch版本的自定义数据准备过程 https://github.com/artintel/LearningCode/blob/master/insightface_pytorch_datasets_make/README.md https://github.com/artintel/LearningCode/tree/master/insightface_pytorch_datasets_make 2.mxnet_insightface开源…...

【MQ篇】RabbitMQ之消费失败重试!

目录 引言&#xff1a;消息不丢是底线&#xff0c;失败了优雅重试是修养&#xff01;消费失败了&#xff0c;为啥不能老是原地复活&#xff1f;&#x1f914;智能重试策略一&#xff1a;本地重试&#xff08;Spring Retry 的魔法&#xff09;&#x1f3e0;✨智能重试策略二&…...

权力结构下的人才价值重构:从 “工具论” 到 “存在论” 的转变​

引言​ 在现在的公司管理里&#xff0c;常常能听到这样一种说法&#xff1a;“我用你&#xff0c;你才是人才&#xff1b;不用你&#xff0c;你啥都不是。” 这其实反映了一种很常见的评判人才价值的标准&#xff0c;就是只看公司的需求&#xff0c;把人才当作实现公司目标的工…...

【上位机——MFC】视图

相关类 CView及其子类&#xff0c;父类为CWnd类&#xff0c;封装了关于视图窗口的各种操作&#xff0c;以及和文档类的数据交互。 视图窗口的使用 1.定义一个自己的视图类(CMyView)&#xff0c;派生自CView&#xff0c;并重写父类成员纯虚函数OnDraw。 2.其余框架类和应用程…...

Unity:Sprite Shapes(精灵形状)

游戏世界的基本构建单位——精灵&#xff08;Sprite&#xff09; Sprite&#xff08;精灵&#xff09;是什么&#xff1f; Sprite指的是一张小图片&#xff0c;在游戏里代表一个角色、道具、背景元素。 在2D游戏里&#xff0c;比如滑雪游戏&#xff0c;角色、小树、雪地……很…...

火语言RPA--钉钉群通知

【组件功能】&#xff1a;向钉钉群发送文本或markdown消息 在钉钉群创建自定义机器人&#xff08;Webhook&#xff09;&#xff0c;在组件配置Webhook地址、密钥、文本内容即可向钉钉群发送文本或markdown消息&#xff0c;还可以at群成员或所有人。 配置预览 配置说明 Webho…...

详细图解 Path-SAM2: Transfer SAM2 for digital pathology semantic segmentation

✨ 背景动机 数字病理中的语义分割&#xff08;semantic segmentation&#xff09;是非常关键的&#xff0c;比如肿瘤检测、组织分类等。SAM&#xff08;Segment Anything Model&#xff09;推动了通用分割的发展&#xff0c;但在病理图像上表现一般。 病理图像&#xff08;Pa…...

驯龙日记:用Pandas驾驭数据的野性

引言&#xff1a;为什么选择Pandas&#xff1f; "NumPy是手术刀&#xff0c;Pandas是急救箱" 手术刀&#xff08;NumPy&#xff09;&#xff1a;精密的数值计算 急救箱&#xff08;Pandas&#xff09;&#xff1a;处理现实数据的全套工具 维度NumPy数组Pandas Se…...

产品经理面经(1)

今天开一个新的栏目&#xff0c;是关于产品经理方面的。产品经理这个岗位每年的需求都是不少的&#xff0c;尤其是近年来AI的兴起造就了产品经理与AI方面深度融合从而催生了“AI产品经理”这种类型的岗位。具体数据如下 总体规模&#xff1a; 2020 年&#xff1a;受疫情影响&am…...

【黑马JavaWeb+AI知识梳理】前端Web基础02 - JS+Vue+Ajax

JS&#xff08;行为/交互效果&#xff09; JavaScript&#xff08;JS&#xff09;跨平台、面向对象&#xff0c;是用来控制网页行为&#xff0c;实现页面交互效果的脚本语言。 和Java完全不同&#xff0c;但基础语法类似。 组成&#xff1a; ECMAScript&#xff1a;规定了JS…...

Unity Post Processing 小记 【使用泛光实现灯光亮度效果】

一、前言 本篇适用于Unity 2018 - 2019及以上版本&#xff0c;以默认渲染管线为例。文章内容源于个人研究尝试与网络资料收集&#xff0c;可能存在不准确之处。初衷是因新版本制作时老的Bloom插件失效&#xff0c;经研究后分享开启Bloom效果的方法。若在项目中使用Post Proces…...

NFC 碰一碰发视频贴牌技术,音频功能的开发实践与技术解析

在数字化营销与信息交互场景中&#xff0c;NFC 碰一碰技术凭借其便捷性和高效性&#xff0c;成为快速传递多媒体内容的新选择。通过 NFC 实现视频音频的快速传输&#xff0c;不仅能提升用户体验&#xff0c;还能为各类场景带来创新应用。本文将深入探讨该功能开发过程中的关键技…...

新型“电力寄生虫“网络钓鱼攻击瞄准能源企业与知名品牌

本周发布的综合威胁报告显示&#xff0c;自2024年以来&#xff0c;一场名为"电力寄生虫"&#xff08;Power Parasites&#xff09;的复杂网络钓鱼活动持续针对全球能源巨头和知名品牌展开攻击。 该攻击活动主要通过精心设计的投资骗局和虚假招聘信息&#xff0c;冒用…...

如何将数据输入到神经网络中

引言 在前面的文章学习中&#xff0c;我们初步了解到神经网络在人工智能领域扮演着至关重要的角色&#xff0c;它具备实现真正人工智能的潜力。真正的人工智能意味着机器能够像人类一样进行感知、学习、推理和决策等复杂活动。而神经网络作为实现这一目标的关键技术&#xff0c…...

【quantity】2 Unit 结构体(unit.rs)

一、源码 下面代码实现了一个基于类型级别的物理量单位系统&#xff0c;使用Rust的类型系统在编译期保证单位运算的正确性。 use typenum::{Integer, Sum, Diff, Z0, // 0P1, P2, P3, P4, // 1, 2, 3, 4N1, N2, N3 // -1, -2, -3 }; use std::marker::PhantomData; use st…...

OpenCV 图形API(66)图像结构分析和形状描述符------将一条直线拟合到三维点集上函数fitLine3D()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 拟合一条直线到3D点集。 该函数通过最小化 ∑iρ(ri) 来将一条直线拟合到3D点集&#xff0c;其中 ri 是第 i 个点与直线之间的距离&#xff0c;…...

uniapp: 低功耗蓝牙(BLE)的使用

在微信小程序中实现蓝牙对接蓝牙秤的重量功能&#xff0c;主要依赖微信小程序提供的低功耗蓝牙&#xff08;BLE&#xff09;API。以下是一个清晰的步骤指南&#xff0c;帮助你完成从连接蓝牙秤到获取重量数据的开发流程。需要注意的是&#xff0c;具体实现可能因蓝牙秤的协议和…...

谢飞机的Java面试之旅:从Spring Boot到Kubernetes的挑战

场景:互联网大厂Java求职 在一家知名互联网大厂的面试现场,严肃的面试官坐在谢飞机的对面,开始了面试。 第一轮:基础技术与平台 面试官: 谢先生,您能简单介绍一下Java SE 8的主要新特性吗? 谢飞机: 当然,Java 8引入了Lambda表达式、Stream API和新的日期时间API。 …...

Shadertoy着色器移植到Three.js经验总结

Shadertoy是一个流行的在线平台&#xff0c;用于创建和分享WebGL片段着色器。里面有很多令人惊叹的画面&#xff0c;甚至3D场景。本人也移植了几个ShaderToy上的着色器。本文将详细介绍移植过程中需要注意的关键点。 1. 基本结构差异 想要移植ShaderToy的shader到three.js&am…...

基于BenchmarkSQL的OceanBase数据库tpcc性能测试

基于BenchmarkSQL的OceanBase数据库tpcc性能测试 安装BenchmarkSQL及其依赖安装软件依赖编译BenchmarkSQLBenchmarkSQL props文件配置数据库和测试表配置BenchmarkSQL压测装载测试数据TPC-C压测(固定事务数量)TPC-C压测(固定时长)生成测试报告重复测试流程梳理安装Benchmar…...

Flutter 泛型 泛型方法 泛型类 泛型接口

目录 泛型简单使用 泛型类的简单使用 泛型接口的使用 通俗理解:泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验) 泛型简单使用 main(){print(getData2("XXX"));getData2<String>("XXX");getData2<int>(1);}Str…...

边缘函数:全栈开发的最后1毫秒性能革命

一、边缘计算的时空折叠术 1. 传统CDN vs. 智能边缘网络 全球电商平台实测数据&#xff1a; 场景云端处理延迟边缘处理延迟转化率提升搜索建议320ms8ms18%个性化推荐450ms12ms27%实时库存检查680ms9ms42%欺诈检测920ms15ms63% 二、边缘全栈架构的量子纠缠 1. 代码的时空分布…...

网店专用版批量转账系统,覆盖淘宝、拼多多、抖店订单信息自动核对+插旗自动备注,支持微信支付宝批量转账

不少电商人在运营过程中&#xff0c;需要用转账工具来解决日常运营过程中的返款问题。 但在实际操作过程中&#xff0c;往往有很多问题。东哥在这里梳理下&#xff0c;方便大家了解&#xff1a; 1.错返/漏返的情况时有发生 为什么会错返和漏返&#xff1f; 实际来看&#x…...

AUTOSAR_RS_ClassicPlatformDebugTraceProfile

AUTOSAR经典平台调试、跟踪与分析支持 AUTOSAR组件调试、跟踪与分析功能详解 目录 简介ARTI核心扩展 核心特定ARTI扩展结构核心参数定义 操作系统和任务扩展 OS特定ARTI扩展任务特定ARTI扩展软件组件特定扩展 总体架构 组件结构接口定义 错误处理 默认错误跟踪器(DET) 总结 1.…...

vue中将html2canvas转成的图片传递给后台 Python Flask 服务

下面将详细介绍如何在 Vue 项目里把 html2canvas 转换得到的图片传递给后台的 Python Flask 服务。 前端&#xff08;Vue&#xff09;步骤 1. 安装依赖 首先要确保已经安装了 html2canvas 和 axios&#xff0c;若未安装&#xff0c;可在终端执行以下命令&#xff1a; npm i…...

基于深度学习的智能交通流量监控与预测系统设计与实现

基于深度学习的智能交通流量监控与预测系统设计与实现 摘要 随着城市化进程的加速和机动车保有量的激增&#xff0c;交通拥堵、事故频发、环境污染等问题日益严峻&#xff0c;对传统的交通管理方式提出了巨大挑战。智能交通系统&#xff08;ITS&#xff09;作为解决这些问题的…...

鸿蒙系统应用开发全栈指南

一、开发环境搭建与工具链配置 1. DevEco Studio深度解析 作为鸿蒙生态的官方IDE&#xff0c;DevEco Studio 4.2版本已集成ArkTS 3.0编译器与AI代码助手功能。安装过程需注意&#xff1a; 系统要求&#xff1a;Windows 10 21H2或macOS Monterey以上环境依赖&#xff1a;Node…...

STC32裸机项目集成FreeRTOS的实战问题解析

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…...

振弦式应变计在混凝土结构长期监测中的应用与特点 久岩传感 GEO-explorer

振弦式应变计在混凝土结构长期监测中的应用与特点 久岩传感 GEO-explorer 振弦式应变计是一种专为长期埋设于水工建筑物及各类混凝土结构内部而设计的测量仪器&#xff0c;可广泛应用于梁体、柱体、桩基、挡土墙、隧道衬砌、桥墩及基岩等结构的应变与应力监测&#xff0c;同时具…...

AVFormatContext 再分析

说明 &#xff1a;将 avfromatContext 的变量依次打印分析&#xff0c;根据ffmpeg 给的说明&#xff0c;猜测&#xff0c;结合网上的文章字节写测试代码分析。 从常用到不常用依次分析 1. unsigned int nb_streams; 代表 avfromatContext 中 AVStream **streams 的个数 /** …...

力扣hot100,739每日温度(单调栈)详解

时隔多久又遇到单调栈的题了&#xff0c;上次记得是接雨水的题&#xff0c;简单讲一下单调栈的适用场景和定义。 意义:看名字就知道单调栈是一个栈里面的数据是单调的 。 解决问题: 单调栈主要用于解决需要**快速找到某个元素附近更大或更小的元素**的问题&#xff0c;其核心…...