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

扼杀网络中的环路:STP、RSTP、MSTP

目录

前言:

一、STP(Spanning Tree Protocol)

1.1 STP功能

1.2 STP应用

二、RSTP(Rapid Spanning Tree Protocol)

2.1 RSTP功能

2.2 RSTP应用

三、MSTP(Multiple Spanning Tree Protocol)

3.1 MSTP功能

四、STP、RSTP、MSTP对比

4.1 功能对比

4.2 性能对比

4.3 适用场景对比

小总结

五、STP、RSTP、MSTP配置

5.1 华为设备

STP配置和拓扑

RSTP配置和拓扑

MSTP配置和拓扑

5.2 思科设备

STP配置和拓扑

RSTP配置和拓扑

MSTP配置和拓扑

5.3 Juniper设备

STP配置和拓扑

RSTP配置和拓扑

MSTP配置和拓扑

六、总结


前言:

        在计算机网络中,网络拓扑的稳定性和可靠性是非常重要的。为了解决网络中的环路和冗余路径带来的问题,产生了一系列的网络协议,其中包括STP、RSTP和MSTP。本文将介绍这三种协议的基本概念、工作原理和应用场景。

图片

一、STP(Spanning Tree Protocol)

        STP(生成树协议)是一种用于构建环路无环的网络拓扑的协议。它通过选择一条主干链路,将其它冗余链路置为阻塞状态,从而避免数据包在网络中产生环路。STP使用一种分布式算法,称为根桥选举算法,来确定主干链路和阻塞链路。当网络中的拓扑变化时,STP会重新计算生成树,确保网络的稳定性。

图片

生成树协议(STP)是一种用于防止网络环路和提供网络冗余的网络协议。
在一个局域网中,如果存在多条路径连接两个设备,可能会导致广播风暴和MAC地址学习错误。
STP的主要作用是通过建立一棵生成树,禁用环路中的某些链路,以消除环路。

STP的工作原理如下:

  1. 每个网络设备(交换机)都有一个桥优先级(Bridge Priority)和一个桥ID(Bridge ID)。

  2. 每个设备通过发送BPDU(Bridge Protocol Data Unit)消息来与其它设备进行通信。

  3. 每个设备根据接收到的BPDU消息来确定根桥和最短路径。

  4. 设备选择根桥,并将自己的端口设置为根端口或非根端口。

STP适用于较小规模的网络,但它的收敛速度较慢,对网络中的拓扑变化反应不够迅速。

1.1 STP功能

  1. 防止环路:通过计算生成树并禁用环路中的某些链路,STP可以防止环路的形成。

  2. 提供冗余:在生成树中,如果某一链路发生故障,STP会重新计算生成树,并启用替代链路。

  3. 根选举:STP会选举一个根桥(Root Bridge)作为生成树的根节点,以确定生成树的拓扑结构。

1.2 STP应用

  1. 防止广播风暴:STP可以防止广播帧在网络中不断循环,从而避免广播风暴。

  2. 实现网络冗余:STP可以动态地调整生成树,确保在链路故障时网络仍然可用。

  3. 实现多层交换设备互联:STP可以在多层交换设备之间建立生成树,以实现互联。

二、RSTP(Rapid Spanning Tree Protocol)

        为了改善STP的收敛速度和性能,RSTP(快速生成树协议)被引入。RSTP是STP的改进版本,它在保持STP基本原理的同时,引入了一些新的机制来加快网络的收敛速度。

图片

快速生成树协议(RSTP)是生成树协议(STP)的一种改进,它解决了STP收敛速度慢的问题。
RSTP通过引入新的端口角色和状态,以及快速收敛算法,实现了生成树的快速收敛。

RSTP的主要改进包括:

  • 端口状态的改变:RSTP将端口状态划分为三种:指定(designated)、根(root)和备份(alternate),相比STP的端口状态,RSTP减少了状态切换的次数,从而加快了收敛速度。

  • 快速收敛:RSTP通过减少BPDU的发送间隔和超时时间来加快收敛速度。当网络拓扑发生变化时,RSTP可以更快地重新计算生成树。

  • 持续监听:RSTP通过定期发送BPDU消息来持续监听网络状态。当RSTP设备在一定时间内没有收到BPDU消息时,它会假设网络中的链路出现故障,并快速重新计算生成树,以确保网络的稳定性。

RSTP相对于STP来说,具有更快的收敛速度和更好的性能。它适用于中等规模的网络,并能够更好地适应网络拓扑的变化。

2.1 RSTP功能

  1. 快速收敛:RSTP通过新的收敛算法实现了生成树的快速收敛。

  2. 向后兼容STP:RSTP与STP协议兼容,可以在STP和RSTP混合的网络环境中工作。

2.2 RSTP应用

  1. 提高生成树收敛速度:RSTP使得生成树在链路故障或网络拓扑变化时能够更快地收敛,减少了网络不可用的时间。

  2. 实现网络冗余和环路防护:与STP相同,RSTP可以防止环路的形成,并提供网络冗余。

三、MSTP(Multiple Spanning Tree Protocol)

        在一些大规模的网络中,需要同时支持多个VLAN(虚拟局域网),而STP和RSTP只能为整个网络构建一个生成树。为了解决这个问题,MSTP(多生成树协议)被引入。MSTP允许在一个网络中为每个VLAN构建独立的生成树,从而提供更好的灵活性和可伸缩性。

图片

多生成树协议(MSTP)是一种进一步优化生成树协议的方法,
它允许在一个网络中创建多个生成树实例,每个实例负责不同的VLAN。
这样,可以实现更好的负载均衡和资源利用。

MSTP的主要特点包括:

  • 实例化:MSTP将网络分为多个实例,每个实例对应一个或多个VLAN。这样,可以为每个实例构建独立的生成树。

  • 区域:MSTP将网络划分为多个区域,每个区域可以有独立的根桥和生成树。这样,可以减少生成树计算的复杂度,并提高网络的可扩展性。

  • VLAN到实例的映射:MSTP通过将VLAN映射到相应的实例,使得每个VLAN都可以有自己的生成树。

MSTP在大规模网络中具有很好的适应性和可伸缩性。它可以更灵活地配置和管理生成树,以满足不同VLAN和区域的需求。

3.1 MSTP功能

  1. 多生成树实例:MSTP允许在一个网络中创建多个生成树实例,每个实例负责不同的VLAN。

  2. 负载均衡:通过将不同的VLAN分配到不同的生成树实例,MSTP可以实现链路资源的负载均衡。

  3. 向后兼容RSTP和STP:MSTP与RSTP和STP协议兼容,可以在混合的网络环境中工作。

四、STP、RSTP、MSTP对比

4.1 功能对比

下表对比了STP、RSTP和MSTP在功能方面的特点:

功能STPRSTPMSTP
环路消除
快速收敛
支持多VLAN
拓扑可扩展适用于小规模网络适用于中等规模网络适用于大规模网络和多VLAN环境

4.2 性能对比

下表对比了STP、RSTP和MSTP在性能方面的特点:

性能STPRSTPMSTP
收敛速度
状态切换频繁较少适中
配置复杂度较高
可伸缩性适用于小规模网络适用于中等规模网络和小规模多VLAN网络适用于大规模网络和多VLAN环境
网络规模较小中等

4.3 适用场景对比

下表对比了STP、RSTP和MSTP在适用场景方面的特点:

适用场景STPRSTPMSTP
小型网络
中等规模网络
大规模网络和多VLAN环境
需要快速收敛的环境
需要灵活配置不同生成树的环境
  • STP适用于小型网络,它具备环路消除的功能,但收敛速度较慢。

  • RSTP适用于中等规模网络,具有快速收敛和较少的状态切换。它是对STP的改进版本,提供了更好的性能和响应速度。

  • MSTP适用于大规模网络和多VLAN环境,具备快速收敛和拓扑可扩展性。它允许为每个VLAN构建独立的生成树,提供了更大的灵活性和可伸缩性。

五、STP、RSTP、MSTP配置

        华为、思科和Juniper是全球领先的网络设备供应商,它们提供了各种网络设备和解决方案,包括交换机、路由器等。在这些设备中,STP(生成树协议)、RSTP(快速生成树协议)和MSTP(多生成树协议)被广泛应用于构建稳定、可靠的网络拓扑。下面将详细介绍在华为设备、思科设备和Juniper设备上配置和使用STP、RSTP和MSTP的方法和拓扑结构。

5.1 华为设备

华为设备使用Spanning Tree Protocol (STP)、Rapid Spanning Tree Protocol (RSTP)和Multiple Spanning Tree Protocol (MSTP)来实现生成树功能。

STP配置和拓扑

在华为设备上配置STP,可以使用以下命令:

<Huawei> system-view
[Huawei] stp mode stp
[Huawei] stp enable

为了优化拓扑结构,可以通过以下命令调整STP的优先级:

[Huawei] stp priority <priority>

华为设备的STP拓扑结构如下:

图片

RSTP配置和拓扑

在华为设备上配置RSTP,可以使用以下命令:

<Huawei> system-view
[Huawei] stp mode rstp
[Huawei] stp enable

为了优化拓扑结构,可以通过以下命令调整RSTP的优先级:

[Huawei] stp priority <priority>

华为设备的RSTP拓扑结构与STP相同。

MSTP配置和拓扑

在华为设备上配置MSTP,可以使用以下命令:

<Huawei> system-view
[Huawei] stp mode mstp
[Huawei] stp region-configuration
[Huawei-mstp] revision-level <revision-level>
[Huawei-mstp] instance <instance-id> vlan <vlan-id>
[Huawei-mstp-instance] active
[Huawei-mstp-instance] exit
[Huawei] stp enable

为了优化拓扑结构,可以通过以下命令调整MSTP的优先级:

[Huawei-mstp] instance <instance-id> priority <priority>

华为设备的MSTP拓扑结构如下:

图片

5.2 思科设备

思科设备使用Spanning Tree Protocol (STP)、Rapid Spanning Tree Protocol (RSTP)和Multiple Spanning Tree Protocol (MSTP)来实现生成树功能。

STP配置和拓扑

在思科设备上配置STP,可以使用以下命令:

Switch(config)# spanning-tree mode stp
Switch(config)# spanning-tree vlan <vlan-id> root primary

思科设备的STP拓扑结构如下:

图片

RSTP配置和拓扑

在思科设备上配置RSTP,可以使用以下命令:

Switch(config)# spanning-tree mode rapid-pvst
Switch(config)# spanning-tree vlan <vlan-id> root primary

思科设备的RSTP拓扑结构与STP相同。

MSTP配置和拓扑

在思科设备上配置MSTP,可以使用以下命令:

Switch(config)# spanning-tree mode mst
Switch(config)# spanning-tree mst configuration
Switch(config-mst)# revision <revision-level>
Switch(config-mst)# instance <instance-id> vlan <vlan-id>
Switch(config-mst)# spanning-tree instance <instance-id> root primary

思科设备的MSTP拓扑结构如下:

图片

5.3 Juniper设备

Juniper设备使用Spanning Tree Protocol (STP)、Rapid Spanning Tree Protocol (RSTP)和Multiple Spanning Tree Protocol (MSTP)来实现生成树功能。

STP配置和拓扑

在Juniper设备上配置STP,可以使用以下命令:

[edit protocols]
user@juniper# set spanning-tree protocol-version stp

Juniper设备的STP拓扑结构如下:

图片

RSTP配置和拓扑

在Juniper设备上配置RSTP,可以使用以下命令:

[edit protocols]
user@juniper# set spanning-tree protocol-version rstp

Juniper设备的RSTP拓扑结构与STP相同。

MSTP配置和拓扑

在Juniper设备上配置MSTP,可以使用以下命令:

[edit protocols]
user@juniper# set spanning-tree protocol-version mstp
[edit protocols mstp]
user@juniper# set instance <instance-id> vlan <vlan-id>
user@juniper# set instance <instance-id> priority <priority>

Juniper设备的MSTP拓扑结构如下:

图片

  • 在华为设备上,可以使用stp mode命令配置STP、RSTP和MSTP,通过调整优先级设置拓扑结构。

  • 在思科设备上,可以使用spanning-tree mode命令配置STP、RSTP和MSTP,通过设置根桥优先级调整拓扑结构。

  • 在Juniper设备上,可以使用spanning-tree protocol-version命令配置STP、RSTP和MSTP,通过设置实例和优先级调整拓扑结构。

六、总结

        STP、RSTP和MSTP是在计算机网络中用于构建稳定、可靠拓扑的协议。STP是最早的生成树协议,它通过选举根桥和设置端口状态来构建环路无环的网络。RSTP是对STP的改进版本,它通过减少状态切换次数和加快收敛速度来提高性能。MSTP则在大规模网络中支持多个VLAN,允许为每个VLAN构建独立的生成树,提供更好的灵活性和可伸缩性。

        根据网络规模和需求,选择适合的生成树协议是非常重要的。STP适用于较小规模的网络,RSTP适用于中等规模的网络,而MSTP适用于大规模网络和多VLAN环境。了解这些协议的原理和特点,可以帮助开发人员设计和配置网络拓扑,以实现稳定性、可靠性和性能的平衡。

        总之,STP、RSTP和MSTP是网络中常用的生成树协议,它们在构建稳定、可靠的拓扑结构方面发挥着重要作用。随着网络规模的增长和需求的变化,选择合适的协议对于确保网络的正常运行至关重要。开发人员应该根据网络规模、拓扑结构和功能要求来选择合适的生成树协议,并合理配置和管理网络,以实现高效、可靠的数据传输和通信。

相关文章:

扼杀网络中的环路:STP、RSTP、MSTP

目录 前言&#xff1a; 一、STP&#xff08;Spanning Tree Protocol&#xff09; 1.1 STP功能 1.2 STP应用 二、RSTP&#xff08;Rapid Spanning Tree Protocol&#xff09; 2.1 RSTP功能 2.2 RSTP应用 三、MSTP&#xff08;Multiple Spanning Tree Protocol&#xff0…...

青少年如何从零开始学习Python编程?有它就够了!

文章目录 写在前面青少年为什么要学习编程 推荐图书图书特色内容简介 推荐理由粉丝福利写在最后 写在前面 本期博主给大家带来一本非常适合青少年学习编程的图书&#xff0c;快来看看吧~ 青少年为什么要学习编程 青少年学习编程&#xff0c;就好比在他们年轻时就开始掌握一种…...

触发HTTP preflight预检及跨域的处理方法

最近在做需求的过程中&#xff0c;遇到了很多跨域和HTTP预检的问题。下面对我所遇到过的HTTP preflight和跨域的相关问题进行总结&#xff1a; 哪些情况会触发HTTP preflight preflight属于cors规范的一部分&#xff0c;在有跨域的时候&#xff0c;在一定情况下会触发preflig…...

【算法可视化】搜索算法专题

运行平台 Algorithm Visualizer 选数 [NOIP2002 普及组] 选数 // 导入可视化库 { const { Tracer, Array1DTracer, LogTracer, Layout, VerticalLayout } require(algorithm-visualizer); // }const N 4, K 3; //从包含4个元素的集合中选出3个数 let ans 0 //方案数 co…...

编写dockerfile挂载卷、数据容器卷

编写dockerfile挂载卷 编写dockerfile文件 [rootwq docker-test-volume]# vim dockerfile1 [rootwq docker-test-volume]# cat dockerfile1 FROM centosVOLUME ["volume01","volume02"]CMD echo "------end------" CMD /bin/bash [rootwq dock…...

理解OAuth 2.0

OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;在全世界得到广泛应用&#xff0c;目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程&#xff0c;做一个简明通俗的解释&#xff0c;主要参考材料为RFC 6749。 一、应用场景 为了…...

8. Go实现Gin服务优雅关机与重启

文章目录 优雅关机优雅重启 无论是优雅关机还是优雅重启归根结底都是通过监听特定系统信号&#xff0c;然后执行一定的逻辑处理保障当前系统正在处理的请求被正常处理后再关闭当前进程。 优雅关机 优雅关机就是服务端关机命令发出后不是立即关机&#xff0c;而是等待当前还在…...

SQL 注入攻击 - cookie base64编码注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、Base64编码介绍 原理 Base64编码的原理是将三个字节的二进制数据(共24位)转换成四个ASCII字符。由于每个ASCII字符可以表示64种状态(2^6),刚好可以用来表示24位二进制数…...

Outlook邮箱后缀如何修改?怎么添加后缀?

Outlook邮箱后缀是什么&#xff1f;Outlook邮箱后缀可以改吗&#xff1f; Outlook邮箱广泛应用于企业和个人用户之间。在使用过程中&#xff0c;有时我们可能会因为某些原因需要修改Outlook邮箱后缀。那么&#xff0c;Outlook邮箱后缀如何修改呢&#xff1f;下面&#xff0c;A…...

[LeetBook]【学习日记】图书整理 II——用两个栈实现队列

题目 图书整理 II 读者来到图书馆排队借还书&#xff0c;图书管理员使用两个书车来完成整理借还书的任务。书车中的书从下往上叠加存放&#xff0c;图书管理员每次只能拿取书车顶部的书。排队的读者会有两种操作&#xff1a; push(bookID)&#xff1a;把借阅的书籍还到图书馆。…...

5G智能制造食品工厂数字孪生可视化平台,推进食品行业数字化转型

5G智能制造食品工厂数字孪生可视化平台&#xff0c;推进食品行业数字化转型。随着科技的飞速发展&#xff0c;食品工业正迎来一场前所未有的数字化转型。在这场转型中&#xff0c;5G智能制造工厂数字孪生可视化平台发挥着至关重要的作用。它不仅提高了生产效率&#xff0c;降低…...

一个系列很多样式的wordpress外贸建站模板

菌菇干货wordpress跨境电商模板 食用菌、羊肚菌、牛肝菌、香菇、干黄花菜、梅干菜、松茸wordpress跨境电商模板。 https://www.jianzhanpress.com/?p3946 餐饮调味wordpress跨境电商模板 豆制品、蛋黄糖、烘焙、咖啡、调料、调味酱、餐饮调味wordpress跨境电商模板。 http…...

Wireshark_labs TCP

在本实验中&#xff0c;我们将详细研究著名的TCP协议的行为。我们将通过从您的电脑向远程服务器传输一份150KB 的文件(一份Lewis Carrol 的“爱丽丝梦游仙境”文本)&#xff0c; 并分析TCP传输内容的发送和接收过程来实现。我们将研究TCP对序列和确认号的使用&#xff0c;以提供…...

Linux程序崩溃调试

一、简单点的 编译时主动带-g&#xff0c;生成的程序带调试信息&#xff0c;而且开启生成dump文件&#xff0c;这时候可以使用core dump来调试程序&#xff0c;定位问题。可以参考&#xff1a;linux 程序crash 调试、原因分析及问题定位-CSDN博客 二、稍微复杂点 假设生成的可执…...

Day37 socket、TCP、UDP

socket类型 流式套接字(SOCK_STREAM) TCP 提供了一个面向连接、可靠的数据传输服务&#xff0c;数据无差错、无重复的发送且按发送顺序接收。内设置流量控制&#xff0c;避免数据流淹没慢的接收方。数据被看作是字节流&#xff0c;无长度限制。 数据报套接字(SOCK_DGRAM) UD…...

从 Language Model 到 Chat Application:对话接口的设计与实现

作者&#xff1a;网隐 RTP-LLM 是阿里巴巴大模型预测团队开发的大模型推理加速引擎&#xff0c;作为一个高性能的大模型推理解决方案&#xff0c;它已被广泛应用于阿里内部。本文从对话接口的设计出发&#xff0c;介绍了业界常见方案&#xff0c;并分享了 RTP-LLM 团队在此场景…...

无人机|LQR控制算法及其无人机控制中的应用仿真

前言 LQR全称Linear Quadratic Regulator&#xff08;线性二次调节器&#xff09;&#xff0c;顾名思义用于解决形如 x ˙ A x B u y C x D u \begin{aligned}\dot{x}&AxBu\\y&CxDu\end{aligned} x˙y​AxBuCxDu​ 线性时不变系统的一种线性控制方法&#xff0c;…...

ubuntu环境下docker容器详细安装使用

文章目录 一、简介二、ubuntu安装docker1.删除旧版本2.安装方法一3. 安装方法二&#xff08;推荐使用&#xff09;4.运行Docker容器5. 配置docker加速器 三、Docker镜像操作1. 拉取镜像2. 查看本地镜像3. 删除镜像4. 镜像打标签5. Dockerfile生成镜像 四、Docker容器操作1. 获取…...

vue2源码分析-vue入口文件global-api分析

文章背景 vue项目开发过程中,首先会有一个初始化的流程,以及我们会使用到很多全局的api,如 this.$set this.$delete this.$nextTick,以及初始化方法extend,initUse, initMixin , initExtend, initAssetRegisters 等等那它们是怎么实现,让我们一起来探究下吧 源码目录 global-…...

Javascript原型 ,原型链如何理解使用 ?有什么特点?

文章目录 图解原型原型链总结有需要的请私信博主&#xff0c;还请麻烦给个关注&#xff0c;博主不定期更新&#xff0c;或许能够有所帮助&#xff01;&#xff01;请关注公众号 图解 原型 常被描述为 — 种基于原型的语言–每个对象拥有一个原型对象 当试图访问 一个对象的属性…...

Flutter混合栈管理方案对比

1.Google官方&#xff08;多引擎方案&#xff09; Google官方建议的方式是多引擎方案&#xff0c;即每次使用一个新的FlutterEngine来渲染Widget树&#xff0c;存在的主要问题是每个引擎都要有比较大的内存等资源消耗&#xff0c;虽然Flutter 2.0之后的FlutterEngineGroup通过在…...

Asp .Net Core 集成 Newtonsoft.Json

简介 Newtonsoft.Json是一个在.NET环境下开源的JSON格式序列化和反序列化的类库。它可以将.NET对象转换为JSON格式的字符串,也可以将JSON格式的字符串转换为.NET对象。这个类库在.NET开发中被广泛使用,因为它功能强大、易于使用,并且有良好的性能。 使用Newtonsoft.Json,…...

GPT对话知识库——ARM-Cortex架构分为哪几个系列?每个系列有几种工作模式?各种工作模式之间的定义和区别?每种架构不同的特点和应用需求?

目录 1&#xff0c;问&#xff1a; 1&#xff0c;答&#xff1a; 2&#xff0c;问&#xff1a; 2&#xff0c;答&#xff1a; Cortex-A系列 Cortex-R系列 Cortex-M系列 3&#xff0c;问&#xff1a; 3&#xff0c;答&#xff1a; ARM Cortex-A架构 ARM Cortex-R架构…...

795. 前缀和(acwing)

文章目录 795.前缀和题目描述前缀和 795.前缀和 题目描述 输入一个长度为n的整数序列。 接下来再输入m个询问&#xff0c;每个询问输入一对l, r。 对于每个询问&#xff0c;输出原序列中从第l个数到第r个数的和。 输入格式 第一行包含两个整数n和m。 第二行包含n个整数&a…...

1910_野火FreeRTOS教程阅读笔记_prvStartFirstTask函数

1910_野火FreeRTOS教程阅读笔记_prvStartFirstTask函数 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 这是教程中的一个函数&#xff0c;通过汇编来实现的。注释部分以及结合后面的讲解部分&#xff0c;可能还是有一点点细节的地方让初学者疑惑。我结合我自己的理解…...

图论练习5

Going Home Here 解题思路 模板 二分图最优匹配&#xff0c;前提是有完美匹配&#xff08;即存在一一配对&#xff09;左右集合分别有顶标&#xff0c;当时&#xff0c;为有效边&#xff0c;即选中初始对于左集合每个点&#xff0c;选择其连边中最优的&#xff0c;然后对于每…...

[C++] Volatile 和常量Const优化

Volatile的作用 volatile 表明某个变量的值可能在外部被改变&#xff0c;因此对这些变量的存取不能缓存到寄存器&#xff0c;每次使用时需要重新存取。 Const 和 Volatile的示例 示例1 int main() {const int a 1;int* pa const_cast<int*>(&a);*pa 4;cout &l…...

嵌入式学习day32 网络

htons()&#xff1b;//host to network short 将端口号转换为网络通信中的大端存储 eg:htons(50000); ntohs()&#xff1b;//host to network short 将大端存储转换为主机端口号 inet_addr();将IP地址转换为二进制 eg:inet_addr(192.168.1.170)&#xff1b; inet_ntoa()…...

算法D33 | 贪心算法3 | 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果

1005.K次取反后最大化的数组和 本题简单一些&#xff0c;估计大家不用想着贪心 &#xff0c;用自己直觉也会有思路。 代码随想录 Python: class Solution:def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:nums.sort(keylambda x: abs(x), reverseT…...

html地铁跑酷

下面是一个简单的HTML代码来展示一个地铁跑酷游戏&#xff1a; <!DOCTYPE html> <html> <head><title>地铁跑酷</title><style>#player {position: absolute;top: 0;left: 0;width: 50px;height: 50px;background-color: red;}</style…...