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

三种生成树(STP,RSTP,MSTP)的基本配置(自我理解)

目录

一、为什么要使用生成树(STP):

二、由于设备冗余而导致的问题:

广播风暴:

三、802.1D生成树基本配置

四、802.1D生成树实验

实验拓扑:

实验配置:

配置完成后,在SW8上观察现象:

从中我们可以总结:

拓展知识:

 实验思路:

一、修改RID

二、修改RPC达到选取根端口的目的(RPC即路径开销,修改时需要在交换机入接口进行修改)

 三、修改BID:

四、修改PID:

配置:

五、RSTP

 为什么要使用RSTP?

本次实验使用两个拓扑来解释RSTP:

一、利用简单的拓扑解释RSTP:

实验配置: 

六、利用802.1D生成树中的拓扑来实现MSTP的功能:

实验配置:

六、MSTP

使用原因:

配置完成后,在SW3上查看实例1和实例2的生成树表:


一、为什么要使用生成树(STP):

  • 以太网交换网络中为了进行链路备份,提高网络可靠性,通常会使用冗余链路。但是使用冗余链路会 在交换网络上产生环路,引发广播风暴以及MAC地址表不稳定等故障现象,从而导致用户通信质量较 差,甚至通信中断。为解决交换网络中的环路问题,提出了生成树协议STP(Spanning Tree)。
  • 随着局域网规模的不断扩大,越来越多的交换机被用来实现主机之间的互连。如图,接入层交换机 单链路上联,则存在单链路故障,也就是如果这根上联链路发生故障,交换机下联用户就断网了。 另一个问题的单点故障,也就是交换机如果宕机,交换机下联用户也就断网了。
  • 为了解决此类问题,交换机在互连时一般都会使用冗余链路来实现备份。冗余链路虽然增强了网络 的可靠性,但是也会产生环路,而环路会带来一系列的问题,继而导致通信质量下降和通信业务中 断等问题。

二、由于设备冗余而导致的问题:

广播风暴:

由于物理之间的备份,在SW3收到来自外界的信号后,会进行洪范,向SW1和SW2进行洪范,且因为交换机中没有类似于TTL值的参数,会导致该广播包一直在交换机中洪范,形成广播风暴及mac地址飘逸。最终结果使整个网络资源被消耗殆尽,网络瘫痪不可用。

三、802.1D生成树基本配置


1. 配置生成树工作模式
[Huawei] stp mode { stp | rstp | mstp }
交换机支持STP、RSTP和MSTP(Multiple Spanning Tree Protocol)三种生成树工作模式,默认情况工
作在MSTP模式。2. (可选)配置根桥
[Huawei] stp root primary
配置当前设备为根桥。缺省情况下,交换机不作为任何生成树的根桥。配置后该设备优先级数值自动为
0,并且不能更改设备优先级3. (可选)备份根桥
[Huawei] stp root secondary
配置当前交换机为备份根桥。缺省情况下,交换机不作为任何生成树的备份根桥。配置后该设备优先级
数值为4096,并且不能更改设备优先级。4. (可选)配置交换机的STP优先级
[Huawei] stp priority priority
缺省情况下,交换机的优先级取值是32768。5. (可选)配置接口路径开销
[Huawei] stp pathcost**-standard** { dot1d-1998 | dot1t | legacy }
配置接口路径开销计算方法。缺省情况下,路径开销值的计算方法为IEEE 802.1t(dot1t)标准方法。
同一网络内所有交换机的接口路径开销应使用相同的计算方法。
[Huawei-GigabitEthernet0/0/1] stp cost cost
设置当前接口的路径开销值。6. (可选)配置接口优先级
[Huawei-intf] stp priority priority
配置接口的优先级。缺省情况下,交换机接口的优先级取值是128。7. 启用STP/RSTP/MSTP
[Huawei] stp enable
使能交换机的STP/RSTP/MSTP功能。缺省情况下,设备的STP/RSTP/MSTP功能处于启用状态。
RSTP
interface g0/0/1
undo stp enable //接口下关闭生成树,此接口不参与生成树构建
port-group group-member g0/0/1 to g0/0/4 //接口组配置,可以把相同配置的接口一次性配置
完毕

四、802.1D生成树实验

实验拓扑:

 我们选取SVI的实验来进行总结生成树中的知识:

其中LSW2和LS8是汇聚层的交换机,两者之间互相连线实现设备和线路冗余,而LSW4和LS5则s是接入层交换机,实现终端的接入。


实验配置:

SW2:

#
sysname sw2
#
vlan batch 10 200 300 400                    #创建vlan
#
stp mode stp                                 #生成树模式变更为stp
stp instance 0 root primary                  #配置当前设备为根桥。配置后该设备优先级数值自动                                为0,并且不能更改设备优先级。#
interface Vlanif10ip address 192.168.0.1 255.255.255.252ospf network-type p2p
#
interface Vlanif200ip address 192.168.20.1 255.255.255.0dhcp select interface
#
interface Vlanif300ip address 192.168.30.1 255.255.255.0dhcp select interface
#
interface Vlanif400ip address 192.168.40.1 255.255.255.0dhcp select interface
#
interface MEth0/0/1
#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 10stp disable
#
interface GigabitEthernet0/0/2port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200
#
interface GigabitEthernet0/0/3port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 300 400
#
interface GigabitEthernet0/0/4port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200 300 400
#
interface GigabitEthernet0/0/5port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200 300 400stp instance 0 port priority 0        

SW8:

#
sysname sw8
#
stp mode stp
stp instance 0 root secondary                    # 配置当前交换机为备份根桥。#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200 300 400stp instance 0 cost 1
#
interface GigabitEthernet0/0/2port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200 300 400stp instance 0 cost 1
#
interface GigabitEthernet0/0/3port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200
#
interface GigabitEthernet0/0/4port link-type trunkundo port trunk allow-pass vlan 1stp disable
#
interface GigabitEthernet0/0/5port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 300 400

SW4:

sysname sw4
#
vlan batch 200
#
stp mode stp
#
cluster enable
ntdp enable
ndp enable
#
drop illegal-mac alarm
#
diffserv domain default
#
drop-profile default
#
aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http
#
interface Vlanif1
#
interface MEth0/0/1
#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200
#
interface GigabitEthernet0/0/2port link-type accessport default vlan 200
#
interface GigabitEthernet0/0/3port link-type accessport default vlan 200
#
interface GigabitEthernet0/0/4port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 200

SW5:

#
sysname sw5
#
vlan batch 300 400
#
stp mode stp
#
cluster enable
ntdp enable
ndp enable
#
drop illegal-mac alarm
#
diffserv domain default
#
drop-profile default
#
aaaauthentication-scheme defaultauthorization-scheme defaultaccounting-scheme defaultdomain defaultdomain default_adminlocal-user admin password simple adminlocal-user admin service-type http
#
interface Vlanif1
#
interface MEth0/0/1
#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 300 400
#
interface GigabitEthernet0/0/2port link-type accessport default vlan 300
#
interface GigabitEthernet0/0/3port link-type accessport default vlan 400
#
interface GigabitEthernet0/0/4port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 300 400
#

配置完成后,在SW8上观察现象:

  • 由于实验设置SW2交换机是根网桥,所以只有SW2在配置完成后发送BPDU,其他交换机在之后只进行选取根端口。
  • 从图中我们可以发现G0/0/1是根接口。而G0/0/2则是阻塞端口,DISCARDING代表阻塞状态。

从中我们可以总结:

  • DESI则代表指定端口,结束后状态归为转发状态(从一开始down到listening到learning到forwarding)
  • listening状态代表已经选取完根网桥,当接口处于该状态时,STP初步认定该接口为根接口或指定接口,但接口依然处于STP计算的过程中,此时接口可以收发BPDU,但是不能收发业务数据帧,也不会进行MAC地址学习。
  • leaning状态代表当接口处于该状态时,会侦听业务数据帧(但是不能转发业务数据帧),并且在收到业务数据帧后进行MAC地址学习。
  • forwarding状态代表处于该状态的接口可以正常地收发业务数据帧,也会进行BPDU处理。接口的 角色需是根接口或指定接口才能进入转发状态。

拓展知识:

若想将SW8上的跟接口修改为g0/0/2,只需要进行简单的配置即可。
下述图是BPDU(桥协议数据单元)的报文格式,我们可以修改底下的参数,到达修改根端口的效果。

 实验思路:

一、修改RID

由于Root ID 均为SW2,所以修改SW2无法到达选取根接口的目的。(Root ID是由优先级+MAC地址得到

二、修改RPC达到选取根端口的目的(RPC即路径开销,修改时需要在交换机入接口进行修改)

我们先在g0/0/1的接口查看stp的具体参数,不难发现一开始RPC值为20000,所以我们进行修改。所以我们可以修改RPC值为1,越小越优,从而导致根接口为g/0/0/2。 

 实验配置:

interface GigabitEthernet0/0/2
stp instance 0 cost 1

查询根接口:

 三、修改BID:

由于BID(桥ID)也是MAC地址+优先级计算出值,但因为SW8到达SW2的路径是一样的,故MAC地址是一样的,所以修改优先级无法达成实验效果,故通过BID无法到达选取效果。

四、修改PID:

由于PID(Port ID)是接口号+优先级计算出值,由于接口号不同,所以只需修改优先级便可完成实验需求。

 从LW8上截图我们可以发现优先级是128(或128的倍数),只需要在LSW2上修改优先级即可达成实验要求。(优先级在根网桥上进行,RPC在根端口上进行)

配置:

SW2:
stp instance 0 port priority 0

从SW8上查看根接口:

 此时,G0/0/2为根接口。

五、RSTP

 为什么要使用RSTP?

解释:

  • STP协议虽然能够解决环路问题,但是由于网络拓扑收敛慢,影响了用户通信质量。如果网络中的 拓扑结构频繁变化,网络也会随之频繁失去连通性,从而导致用户通信频繁中断,这是用户无法忍 受的。
  • STP没有细致区分接口状态和接口角色,不利于初学者学习及部署。
  • 网络协议的优劣往往取决于协议是否对各种情况加以细致区分。
  • 从用户角度来讲,Listening、Learning和Blocking状态并没有区别,都同样不转发用户流 量。 从使用和配置角度来讲,接口之间最本质的区别并不在于接口状态,而是在于接口扮演的角 色。
  • 根接口和指定接口可以都处于Listening状态,也可能都处于Forwarding状态。
  • STP算法是被动的算法,依赖定时器等待的方式判断拓扑变化,收敛速度慢。
  • STP算法要求在稳定的拓扑中,根桥主动发出配置BPDU报文,而其他设备进行处理,传遍整个STP 网络。这也是导致拓扑收敛

本次实验使用两个拓扑来解释RSTP:

一、利用简单的拓扑解释RSTP:

实验拓扑:

实验配置: 

SW1(其余两台设备配置与其相同):

stp mode rstp

SW2:

stp instance 0 root primary            #设置其优先级为0.默认该设备为根桥。

SW3:

stp instance 0 root secondary             #设置优先级为4096,默认为根桥的备份

此时,我们查看SW1,SW2,SW3上的生成树:

SW1:

一个接口角色为ALTE,代表他是根接口的备份。状态时DISCARDING(即不转发数据也不学习mac地址,在802.1D生成树中,disabled,blocking,listening都与其一样)

SW3:

 一个接口角色为ALTE,代表他是根接口的备份。而一个接口为BACK,此为desigenation(即指定端口)的备份,这是因为SW3为根网桥备份,所以G0/0/2的接口此时为角色。而其余接口状态均为forwarding(即转发)。


六、利用802.1D生成树中的拓扑来实现MSTP的功能:

实验拓扑: 

 

实验配置:

SW8:

<sw8>
#
stp mode rstp                                   #修改生成树类型为rstp
stp instance 0 root secondary
#stp root-protection
#
interface GigabitEthernet0/0/5stp root-protection                            #根保护,目的是防止外来接入设备而导致的生成    树动荡#interface GigabitEthernet0/0/2                 stp tc-protection 
#tc保护,tc本身是生成树创造出来为了应付拓扑变更而设置的,即tcn。而如果被恶意用户侵占,伪造大量TC置位的RST BPDU并向外发送。SW2收到这些RST BPDU后,会频繁执行MAC地址表项的删 除操作形成巨大负担。(从某个接口收到tc消息,将会删除该接口的mac地址)。                                                                                                                                                                                             

SW4:

<sw4>
#
stp mode rstp                            #修改生成树类型rstp
stp bpdu-protection                      #开启bpdu保护,是防止边缘端口中有恶意攻击交换设备,交        换设备会自动将边缘端口设置为非边缘端口,并重新进行生                                         成树计算,从而引起网络震荡。 
#
interface GigabitEthernet0/0/2stp edged-port enable                   #开启边缘端口,让下游的终端接口不参与生成树计算。   #
interface GigabitEthernet0/0/4stp loop-protection                     #开启环路保护,主要目的是为了防止光纤的的单向链路故障        或链路堵塞而导致的成环问题。

六、MSTP

使用原因:

STP在STP基础上进行了改进,实现了网络拓扑快速收敛。但在划分VLAN的网络中RSTP/STP,局域网内所有的VLAN共享一棵生成树,被阻塞后的链路将不承载任何流量,无法在 VLAN间实现数据流量的负载均衡,导致链路带宽利用率、设备资源利用率较低。故诞生了MSTP。

实验拓扑:

 SW1:

#
vlan batch 2 to 5                             #创建VLAN    #
stp instance 1 root primary                   #将此交换机设置为实例1的主根
stp instance 2 root secondary                 #将此交换机设置为实例2的备份根
#
stp region-configuration                      #进入MSTP域视图   region-name nnn                              #每个域中的MSTP名字应一样instance 1 vlan 2 to 3                       #将vlan2 3 划分到 实例1 中 域中每个路由器配置            相同instance 2 vlan 4 to 5active region-configuration                  #启动MSTP域
#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 4
#
interface GigabitEthernet0/0/2port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 4
#
interface GigabitEthernet0/0/3port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5stp root-protection
#
interface GigabitEthernet0/0/4port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5stp root-protection                        #根保护

SW2: 

#
vlan batch 2 to 5
#
stp instance 1 root secondary                #与SW1配置相同
stp instance 2 root primary
#
stp region-configuration                     #整个域配置相同region-name nnninstance 1 vlan 2 to 3instance 2 vlan 4 to 5active region-configuration
#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5
#
interface GigabitEthernet0/0/2port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5
#
interface GigabitEthernet0/0/3port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5stp root-protection
#
interface GigabitEthernet0/0/4port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5stp root-protection

SW3:

#
vlan batch 2 to 5
#
stp bpdu-protection                            #设置BPDU保护,防止边缘端口出问题
#
stp region-configurationregion-name nnninstance 1 vlan 2 to 3instance 2 vlan 4 to 5active region-configuration
#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5stp loop-protection                           #设置环路保护
#
interface GigabitEthernet0/0/2port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5
#
interface GigabitEthernet0/0/3port link-type accessport default vlan 2stp edged-port enable                         #设置边缘端口
#
interface GigabitEthernet0/0/4port link-type accessport default vlan 3stp edged-port enable
#
interface GigabitEthernet0/0/5port link-type accessport default vlan 4stp edged-port enable
#
interface GigabitEthernet0/0/6port link-type accessport default vlan 5stp edged-port enable

SW4:

 <A2>dis cur	
<A2>dis current-configuration 
#
sysname A2
#
vlan batch 2 to 5
#
stp bpdu-protection
#
stp region-configurationregion-name nnninstance 1 vlan 2 to 3instance 2 vlan 4 to 5active region-configuration
#
interface GigabitEthernet0/0/1port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5
#
interface GigabitEthernet0/0/2port link-type trunkundo port trunk allow-pass vlan 1port trunk allow-pass vlan 2 to 5stp loop-protection
#
interface GigabitEthernet0/0/3port link-type accessport default vlan 2stp edged-port enable
#
interface GigabitEthernet0/0/4port link-type accessport default vlan 3stp edged-port enable
#
interface GigabitEthernet0/0/5port link-type accessport default vlan 4stp edged-port enable
#
interface GigabitEthernet0/0/6port link-type accessport default vlan 5stp edged-port enable    

配置完成后,在SW3上查看实例1和实例2的生成树表:

instance1:



instance2: 

此刻,由于instance1 的存在,vlan 2 3 的流量走g0/0/1 接口,而vlan 4 5 的流量走g0/0/2接口。

至此,MSTP结束。

相关文章:

三种生成树(STP,RSTP,MSTP)的基本配置(自我理解)

目录 一、为什么要使用生成树&#xff08;STP)&#xff1a; 二、由于设备冗余而导致的问题&#xff1a; 广播风暴&#xff1a; 三、802.1D生成树基本配置 四、802.1D生成树实验 实验拓扑&#xff1a; 实验配置&#xff1a; 配置完成后&#xff0c;在SW8上观察现象&…...

FRP内网穿透,配置本地电脑作为服务器

FRP内网穿透&#xff0c;配置本地电脑作为服务器 下载FRP服务端客户端 参考链接&#xff1a; https://www.it235.com/实用工具/内网穿透/pierce.html https://www.cnblogs.com/007sx/p/17469301.html 由于没有公网ip&#xff0c;所以尝试内网穿透将本地电脑作为服务器&#xff…...

Linux基础指令

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 目录 前言 正文 查看当前用户whoami 查看当前目录路径pwd 清理屏幕clear 查看目录下文件指令ls 进入目录指令cd 以树状结构显示目录文件tree 创建普通文件指…...

基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 LSTM: GRU 2.算法运行软件版本 matlab2022a 3.部分核心程序 %构建GRU网络模型 layers [ ...sequenceInputLayer(N_feature)gruLayer(N_hidden)f…...

windows上ffmpeg如何录制双屏幕中的一个屏幕上的视频

首先&#xff0c;如何在window上安装ffmpeg自己查找scoop安装ffmpeg. 如题&#xff1a; 如果你有两个屏幕&#xff0c;如何让ffmpeg来录制其中的一个屏幕的视频呢。 很简单&#xff0c;首先你要查看另外一个屏幕的分辨率&#xff1a; 第一步&#xff1a;进入系统中 第二步&am…...

使用Python搭建服务器公网展示本地电脑文件

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 Python作为热度比较高的编程语言&#xff0c;其语法简单且语句清晰&#xff0c;而且python有…...

Java IO流(五)Netty实战[TCP|Http|心跳检测|Websocket]

Netty入门代码示例(基于TCP服务) Server端 package com.bierce.io.netty.simple; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGro…...

C#基础进阶

C#基础进阶 泛型 http://www.runoob.com/csharp/csharp-generic.html 匿名函数 http://www.runoob.com/csharp/csharp-anonymous-methods.html 扩展方法 https://blog.csdn.net/u011127019/article/details/54728886 https://docs.microsoft.com/zh-cn/dotnet/csharp/pr…...

Java:ArrayList集合、LinkedList(链表)集合的底层原理及应用场景

ArrayList集合的底层原理及应用场景 LinkedList&#xff08;链表&#xff09;集合的底层原理及应用场景 单向链表 增加数据 删除数据 双向链表 LinkedList的应用场景之一:可以用来设计队列 入队 出队 LinkedList的应用场景之一:可以用来设计栈 压栈&#xff08;push),addFirst…...

【Python】json文件的读取

文章目录 1. json简介2.json的使用规范3.json文件的书写4.json文件的读取 1. json简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于将结构化数据进行传输和存储。它基于JavaScript语法&#xff0c;但可以被多种编程…...

专用杂凑函数的消息鉴别码算法学习记录

声明 本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 范围 GB/T 15852的本部分规定了三种采用专用杂凑函数的消息鉴别码算法。这些消息鉴别码算法可用作数据完整性检验&#xff0c;检验数据是否被非授权地改变。同样…...

Golang使用消息队列(RabbitMQ)

最近在使用Golang做了一个网盘项目&#xff08;类似百度网盘&#xff09;&#xff0c;这个网盘项目有一个功能描述如下&#xff1a;用户会删除一个文件到垃圾回收站&#xff0c;回收站的文件有一个时间期限&#xff0c;比如24h&#xff0c;24h后数据库中记录和oss中文件会被删除…...

Apache Spark远程代码执行漏洞(CVE-2023-32007)漏洞复现

漏洞描述 Apache Spark是美国阿帕奇&#xff08;Apache&#xff09;基金会的一款支持非循环数据流和内存计算的大规模数据处理引擎。 Apache Spark 3.4.0之前版本存在命令注入漏洞&#xff0c;该漏洞源于如果ACL启用后&#xff0c;HttpSecurityFilter中的代码路径可以允许通过…...

春秋云镜 :CVE-2020-21650(MyuCMS后台rce)

一、题目 靶标介绍&#xff1a; MyuCMS开源内容管理系统,采用ThinkPHP开发而成的社区商城聚合&#xff0c;插件&#xff0c;模板&#xff0c;轻便快捷容易扩展 其2.2版本中admin.php/config/add方法存在任意命令执行漏洞. 进入题目&#xff1a; exp&#xff1a; url/index.p…...

测试框架pytest教程(7)实现 xunit 风格的setup

pytest支持setup和teardown&#xff0c;对于使用unittest和nose框架的用户来说对这些很熟悉&#xff0c;但是在pytest可以使用功能更强大的fixture来实现固定装置。 模块级别 如果单个模块中有多个测试函数和测试类&#xff0c;您可以选择实现以下固定方法&#xff0c;这些方…...

用队列实现栈

目录 题目题目要求示例 解答方法一、实现思路时间复杂度和空间复杂度代码 方法二、实现思路时间复杂度和空间复杂度代码 方法三、实现思路时间复杂度和空间复杂度代码 总结 题目 用队列实现栈 题目要求 题目链接 示例 解答 方法一、 使用两个队列来实现栈。 实现思路 题…...

Anolis 8.6 下 Redis 7.2.0 集群搭建和配置

Redis 7.2.0 搭建和集群配置 一.Redis 下载与单机部署1.Redis 下载2.虚拟机配置3.Redis 单机源码安装和测试4.Java 单机连接测试1.Pom 依赖2.配置文件3.启动类4.配置类5.单元测试6.测试结果 二.Redis 集群部署1.主从1.从节点配置2.Java 测试 2.哨兵1.哨兵节点配置2.复制一个哨兵…...

综合能源系统(8)——综合能源系统支撑技术

综合能源系统关键技术与典型案例  何泽家&#xff0c;李德智主编 1、大数据技术 1.1、大数据技术概述 大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合&#xff0c;是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高…...

MySQL5.7数据目录结构

以CentOS7为例&#xff0c;数据目录为/var/lib/mysql/&#xff0c;其内容如下&#xff1a; [rootscentos szc]# ll /var/lib/mysql/ total 122952 -rw-r----- 1 mysql mysql 56 Jan 15 16:02 auto.cnf -rw------- 1 mysql mysql 1680 Jan 15 16:02 ca-key.pem -rw-r…...

Python Opencv实践 - 图像直方图均衡化

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR) print(img.shape)#图像直方图计算 #cv.calcHist(images, channels, mask, histSize, ranges, hist, accumulate) #images&…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...