H3C技术大全复现之高级路由交换技术 1

news2024/9/22 5:06:20

华子目录

  • VLAN 基本技术
    • VLAN
    • IEEE 802.1Q
    • 交换机端口类型
    • MVRP协议
    • 实验
      • 测试
  • VLAN扩展技术
    • Super VLAN
      • 产生背景
      • Super vlan(相当于vlanif接口,也属于虚拟接口,可以充当网关)
      • Sub vlan(普通vlan)
      • 关于代理ARP
        • 普通代理ARP
        • 本地代理ARP
      • Sub vlan间通信原理
      • Sub VLAN与外部二层通信的转发模型
      • Sub VLAN与外部的三层通信
    • 实验
    • Isolate-user-VLAN
  • QinQ 技术
    • 原理
    • 配置
    • 应用案例

VLAN 基本技术

VLAN

  • VLAN(Virtual Local Area Network,虚拟局域网)是一种将局域网(LAN)的设备从逻辑上划分(而不是从物理上划分)成一个个网段,从而实现虚拟工作组的新兴数据交换技术。这一新兴技术主要应用于交换机和路由器中,但主流应用还是在交换机之中。不过,路由器也可以支持VLAN的划分,所以,二者相辅相成,可以更好、更灵活地配置局域网。

  • VLAN的核心思想是通过路由的方式实现处于不同物理位置的网络终端之间的通信。因此,VLAN技术使得网络的组建更加灵活,它突破了传统网络的诸多限制,如物理位置的限制等。

  • VLAN除了能将网络划分为多个广播域,从而有效地控制广播风暴的发生,以及增强网络的安全性和保密性外,还可以使网络管理变得简单、生动和直观。例如,可以跨越不同物理网段、在不同地理位置的网络用户加入到同一虚拟网络。

  • VLAN的划分方式主要有四种:基于端口、基于MAC地址、基于网络层和基于IP组播。不同的划分方式有不同的特点和适用场景,可以根据实际需求和网络拓扑结构来选择合适的划分方式。

总的来说,VLAN技术为现代网络提供了更高的灵活性和安全性,是网络建设中不可或缺的一部分。

IEEE 802.1Q

  • IEEE 802.1Q,也被称为Virtual Bridged Local Area Networks(虚拟桥接局域网,简称“虚拟局域网”)协议,是IEEE标准化组织发布的一种VLAN(Virtual Local Area Network,虚拟局域网)标准。它定义了在以太网上实现VLAN相关功能的协议和机制。

  • IEEE 802.1Q协议的主要功能是解决如何将大型网络划分为多个小网络,使得广播和组播流量不会占据过多带宽,并提高了网络段间的安全性。通过该协议,可以将一个物理局域网划分成多个逻辑上独立的虚拟局域网,使得不同的用户和部门之间的数据流量能够有效区分和管理。

  • 在IEEE 802.1Q协议中,每个数据帧都被打上一个标记,表示该数据帧所属的VLAN编号,称为VLAN标签或VLAN标识符这个标记是在源地址后增加的一个4字节的802.1Q标签,其中包含了标签协议标识(TPID)和标签控制信息(TCI)。标签协议标识IEEE定义的新的类型,表明这是一个加了802.1Q标签的报文标签控制信息包含了VLAN的编号以及其他控制信息。

交换机端口类型

交换机端口类型主要包括以下几种:

  • 按传输介质分类:
    • 光口:使用光纤传输信号的端口,通常用于连接距离较远或需要高速传输的设备。
    • 电口:使用双绞线同轴电缆传输信号的端口,通常用于连接距离较近或不需要高速传输的设备。
  • 按端口速率分类:
    • 10M/100M端口:支持10Mbps和100Mbps两种速率的端口,通常用于连接低速设备。
    • 1GBase-T端口:使用双绞线传输1Gbps数据的端口,是交换机中常见的端口类型。
    • 10Base-T端口:使用双绞线传输10Mbps数据的端口,是交换机中最常见的端口类型。
    • 100Base-TX端口:使用双绞线传输100Mbps数据的端口,是交换机中常见的端口类型。
    • 100Base-FX端口:使用光纤传输100Mbps数据的端口,通常用于连接距离较远的设备。
  • 按端口功能分类:
    • Access端口交换机上用来连接用户主机的端口,它只能连接接入链路。只允许一个VLAN的帧通过该VLAN即为接入端口的默认VLAN。
    • Trunk端口交换机上用来和其他交换机连接的端口允许多个VLAN的帧(带Tag标记)通过,可以指定其中一个VLAN作为默认VLAN如果接收到了不带VLAN的数据帧,则给数据帧加上默认VLAN标签在往外送时,如果VLAN ID和默认VLAN ID相同,则剥离标签。
    • Hybrid端口交换机上既可以连接用户主机,又可以连接其他交换机的端口Hybrid端口也允许多个VLAN通过指定其中一个VLAN作为默认VLAN。在接收到不带VLAN的数据帧时,给数据帧加上默认VLAN标签。

这些端口类型与交换机的报文转发原理密切相关。数据帧进入交换机时,会添加一些字段,其中一个重要的字段是Tag标签用于标记接口所属的VLAN。这些端口类型可以根据网络需求灵活配置,以实现不同设备之间的有效连接和数据传输。

MVRP协议

  • MVRP(Multiple VLAN Registration Protocol)是一种网络管理协议,用于自动注册和管理 VLAN 成员关系的变化。它允许交换机在 VLAN 成员变化时自动更新 VLAN 信息,而无需手动干预。MVRP 主要用于管理 VLAN 的成员关系,以确保交换机之间的 VLAN 配置保持一致性。
  • MVRP是多VLAN注册协议(Multiple VLAN Registration Protocol)的缩写,它是一种网络协议,用于自动管理和维护VLAN成员关系的交换机协议。
  • MVRP是IEEE 802.1ak标准定义的协议,它在与交换机相连的网络设备之间进行通信,用于进行VLAN成员关系的动态注册和管理。其目的是在交换机之间实现动态的VLAN端口成员关系的通知和协商。
  • MVRP的核心功能是允许交换机之间自动协商和传递VLAN成员关系的信息。当一个交换机上的端口被加入或移除一个VLAN时,该交换机将使用MVRP将该信息广播到其相邻的交换机上。接收到这个通知的相邻交换机会更新其自己的VLAN成员关系表,以反映最新的VLAN成员状态。
  • MVRP的自动机制可以减轻网络管理员的手动配置负担,特别是在大规模的网络中,当需要频繁地添加、删除或移动VLAN成员时。它提供了一种集中的动态管理方式,以确保所有相关的交换机都能及时了解到VLAN成员的变化。
  • 需要注意的是,MVRP是一种可选的协议,不是所有的交换机都支持该协议。在使用MVRP之前,需要确保使用的交换机或设备支持并启用了该协议。
  • 当设备启动了MVRP之后,设备将本地的VLAN配置信息向其他设备发送,同时还能够接收来自其他设备的VLAN配置信息,并动态更新本地的VLAN配置信息。这样,所有设备的VLAN信息都能达成一致,极大地减少了网络管理员的VLAN配置工作。
  • MVRP有三种注册模式,不同注册模式对动态VLAN的处理方式有所不同。此外,在网络拓扑发生变化后,MVRP还能根据新的拓扑重新发布及学习VLAN配置信息,确保VLAN配置信息实时与网络拓扑同步更新。
  • 总结:MVRP(Multiple VLAN Registration Protocol)是一种用于自动管理和维护VLAN成员关系的交换机协议。它允许交换机之间动态地协商和传递VLAN成员关系的信息,减轻了网络管理员的配置负担,特别是在大规模的网络中。

实验

在这里插入图片描述

<H3C>system-view    #进入系统模式
[H3C]sysname sw1    #修改设备名称
[sw1]
[sw1]display interface brief  #查看接口所属类型,以及pvid

[sw1]display vlan   #查看交换机中存在的vlan
 Total VLANs: 1
 The VLANs include:
 1(default)

[sw1]display vlan brief  #查看每个vlan中划分的接口

[sw1]vlan 2 3   #在交换机上创建vlan2和3
[sw1]vlan 2 to 10  #创建vlan2到10

[sw1]undo vlan 2 3  # 删除vlan2和3


[sw1]int g1/0/1  #先进入接口
[sw1-GigabitEthernet1/0/1]port link-type ?  #修改接口工作类型,华三二层交换机默认为access口
  access  Set the link type to access
  hybrid  Set the link type to hybrid
  trunk   Set the link type to trunk

[sw1-GigabitEthernet1/0/1]port access vlan 2  #将接口划分为vlan 2

[sw1]int g1/0/3
[sw1-GigabitEthernet1/0/3]port access vlan 3

#配置trunk干道
[sw1-GigabitEthernet1/0/4]port link-type trunk  
[sw1-GigabitEthernet1/0/4]port trunk permit vlan all
[sw1-GigabitEthernet1/0/4]int g1/0/2
[sw1-GigabitEthernet1/0/2]port link-type trunk
[sw1-GigabitEthernet1/0/2]port trunk permit vlan all
[sw2]vlan 2 3
[sw2]int g1/0/2
[sw2-GigabitEthernet1/0/2]port access vlan 2
[sw2-GigabitEthernet1/0/2]int g1/0/3
[sw2-GigabitEthernet1/0/3]port access vlan 3
[sw2-GigabitEthernet1/0/3]quit

#创建trunk干道
[sw2]int g1/0/1
[sw2-GigabitEthernet1/0/1]port link-type trunk
[sw2-GigabitEthernet1/0/1]port trunk permit vlan all

#配置子接口
[R1]int g0/0.1
[R1-GigabitEthernet0/0.1]ip address 192.168.1.1 24
[R1-GigabitEthernet0/0.1]vlan-type dot1q vid 2 #封装dot1q协议并指明对应的vlan号为2,会自动开启arp


[R1]int g0/0.2
[R1-GigabitEthernet0/0.2]ip address 192.168.2.1 24
[R1-GigabitEthernet0/0.2]vlan-type dot1q ?
  default   Process frames that are not processed by any other subinterface
  untagged  Enable handling 802.1Q untagged frames
  vid       Specify the first-tier VLAN IDs

[R1-GigabitEthernet0/0.2]vlan-type dot1q vid 3  #封装dot1q协议并指明对应的vlan号为3,会自动开启arp

[R1]display ip interface brief  #查看IP接口信息
#配置dhcp服务,(不需要在接口调用,配置完成即可生效)
[R1]dhcp enable
[R1]dhcp server ip-pool vlan2
[R1-dhcp-pool-vlan2]network 192.168.1.0 mask 255.255.255.0
[R1-dhcp-pool-vlan2]gateway-list 192.168.1.1
[R1-dhcp-pool-vlan2]dns-list 8.8.8.8
[R1-dhcp-pool-vlan2]quit

[R1]dhcp server ip-pool vlan3
[R1-dhcp-pool-vlan3]network 192.168.2.0 mask 255.255.255.0
[R1-dhcp-pool-vlan3]gateway-list 192.168.2.1
[R1-dhcp-pool-vlan2]dns-list 8.8.8.8

在这里插入图片描述

在这里插入图片描述

测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

VLAN扩展技术

Super VLAN

Super VLAN详解,请参考该博文
https://blog.csdn.net/m0_49864110/article/details/127941250

产生背景

  • 在大型局域网组网中,常采用接入层和核心层二层结构的组网方式,所有的网关都设在核心层设备上。由于每个VLAN都需要一个接口实现路由互通,这样问题就来了,如果因为特殊的需要,网络中划分了成百上千个VLAN,此时核心层设备就会出现VLAN接口数量不足的情况。那么,如果拥有一种技术,可以对VLAN进行聚合,就可以大幅度缩减实际需要的VLAN接口数量,交换机支持VLAN接口少的问题就可以得到解决。为了解决上面的问题,Super VLAN技术出现了。

super VLAN技术引入Super VLAN和Sub VLAN两个概念

Super vlan(相当于vlanif接口,也属于虚拟接口,可以充当网关)

  • 是一个逻辑的三层概念,虚拟三层接口。为Sub VLAN(相当于普通的vlan)提供三层转发,它依赖于所包含的Sub VLAN中存在UP状态的物理接口。

Sub vlan(普通vlan)

  • Sub VLAN只能包含物理接口,不能建立三层VLAN接口。它与外部的三层通信靠Super VLAN的接口来实现。
  • 使用代理ARP可以实现Sub VLAN间的三层互访,从而在实现普通VLAN功能的同时,达到了节省交换机VLAN 接口的目的。
  • 在这里插入图片描述
  • 如上:交换机创建了Sub VLAN2和Sub VLAN3,二者属于不同的广播域,所以Super VLAN技术很好的隔离了它们Super VLAN10则属于另一个独立的广播域它与Sub VLAN2 和Sub VLAN3之间建立了映射关系它不存在物理接口,只拥有一个vlanif接口用该接口为所有映射的Sub VLAN 提供三层路由通信服务。

关于代理ARP

普通代理ARP

普通代理ARP:想要互通的主机分别连接到设备的不同三层接口上,且这些主机不在同一个广播域。
在这里插入图片描述

  • 上图为普通ARP的工作原理:
  • HostA要与HostC通信,由于目的IP本机的IP地址在同一个网段,HostA直接发送ARP请求,解析HostC的MAC地址。运行了代理ARP的交换机接收到ARP请求后代理HostA在1.1.2.0网段发出ARP请求,解析HostC的MAC地址。
  • HostC认为交换机向它发出了ARP请求,所以回应ARP请求,通告自己的MAC地址000F-E203-3333交换机收到ARP响应后也向HostA发送ARP响应,但通告的MAC地址是其连接到1.1.1.0网段的VLAN1接口的MAC地址000F-E202-2222。所以在HostA的ARP表中,会形成IP地址1.1.2.3与MAC地址000F-E202-2222的映射项。即HostA会将所有要发送给HostC的数据包发送到交换机上,然后交换机再转发给HsotC。
本地代理ARP

本地代理ARP:想要互通的主机连接到设备的同一个三层接口上,且这些主机不在同一个广播域。

  • 在这里插入图片描述
  • 上图为本地ARP代理:
  • 这是Super VLAN的典型应用,HostA和HostB分别属于Sub VLAN2和Sub VLAN3,HostA的IP为1.1.1.1/24,HostB的IP为1.1.1.2/24,虽然HostA和HostB的IP在同一个网段,但它们分别属于不同的广播域通过SWA的Super VLAN10的三层接口上开启本地代理ARP功能可以实现HostA和HostB的三层互通。

Sub vlan间通信原理

  • 在这里插入图片描述
  • 如上图,PCA需要发送报文给PCBPCA发现目的IP地址和自己是同一网段,所以发送ARP请求,而PCB在VLAN3的广播域内,并不能收到这个ARP请求。因此PCA不能及时收到PCB的ARP应答,但是Super VLAN10可以收到这个ARP广播。又因为Super VLAN10开启了本地代理ARP,所以当PCA发出ARP请求时,三层交换机开始在路由表里查找发现下一跳为直连路由接口则在Sub VLAN3内发送新的ARP请求PCB的MAC地址;得到PCB的回应后,Super VLAN10就把自己接口的MAC地址当做PCB的MAC地址在Sub VLAN2内给予PCA响应。之后,PCA发送普通IP报文给PCB时,通过Supr VLAN接口进行正常的三层报文转发。

Sub VLAN与外部二层通信的转发模型

  • 在这里插入图片描述
  • 因为Super VLAN不同于普通的VLAN,它不包含物理接口,所以VLAN10内根本不可能携带VLAN10标签的数据帧发送到其他交换机,反之,如果接收到来自Trunk链路上VLAN10的数据帧,交换机也无法转发所以在开启了Super VALN的交换机上,Trunk链路将自动禁止Super VLAN的VLAN流量通过。
  • 上图中,PCA属于SWB的VLAN2PCC属于SWA的VLAN2PCA访问PCC时,从SWB的E1/0/1 进入的数据帧会被打上VLAN2的标签,在SWB中这个标签不会改变,SWB把数据帧从Trunk口E1/0/24转发出去,依然是VLAN2的数据帧。对于SWA而言,SWB上有效的VLAN只有VLAN2和VLAN3从PCC返回的到SWB的数据帧可以在VLAN2中转发 。(SWA和SWB只负责普通交换机的作用,只起转发作用,因为PCA和PCC在同一vlan中)

Sub VLAN与外部的三层通信

  • 在这里插入图片描述
  • PCA发送IP报文到PCC,PCA检查发现PCC与自己属于不同的IP网段,所以将报文发送给自己的网关Super VLAN10。因此PCA检查自己的网关IP地址和MAC地址信息,发现只有IP没有MAC地址信息,于是发送ARP请求报文,请求网关的MAC地址。请求报文在Sub VLAN2内发送并被SWB接收,SWB没有对应的VLAN2接口,但它发现Sub VLAN2被映射到了Super VLAN10,Super VLAN10提供三层服务,所以交换机给予ARP响应,并在Sub VLAN2内发送。
  • 至此,PCA成功学习到了网关的MAC地址,接下来,PCA发送目的MAC为Super VLAN 10、目的IP为30.1.1.2的报文。Sub VLAN2接收到报文后,检测到目的MAC,知道应该进行三层转发,就去查找路由表,发现下一跳地址为20.1.1.2,出接口为VLAN 20,于是把报文送给SWA,SWA根据正常的转发流程把报文发送给PCC。
  • PCC返回给PCA的报文到达SWB时,正常IP转发检查发现出接口为Super VLAN10的三层接口,但在Super VLAN10内没有包含任何物理接口,开启了Super VLAN的交换机注意到,如果存在Super VLAN,那么需要从Super VLAN转发出去的报文都应该寻找其对应的Sub VLAN,并在Sub VLAN 内按照ARP和MAC表项进行匹配。所以最终将报文发给PCA,完成双向通信。(这时,SWA和SWB起路由作用

实验

在这里插入图片描述

[SWA]vlan 2
[SWA-vlan2]port GigabitEthernet 1/0/1   #将接口划分到vlan2
[SWA]vlan 3
[SWA-vlan3]port GigabitEthernet 1/0/2  #将接口划分到vlan3
[SWA-vlan3]quit
[SWA]vlan 10
[SWA-vlan10]supervlan                 #将vlan10作为super vlan
[SWA-vlan10]subvlan 2 3              #划分管理的sub vlan
[SWA-vlan10]quit
[SWA]interface vlan 10               
[SWA-Vlan-interface10]ip address 192.168.1.1 24    #配置虚拟IP地址作网关
[SWA-Vlan-interface10]local-proxy-arp enable   #开启本地代理功能
[SWA-Vlan-interface10]quit
[SWA]vlan 20
[SWA-vlan20]port GigabitEthernet 1/0/3
[SWA-vlan20]quit
[SWA]interface vlan 20
[SWA-Vlan-interface20]ip address 192.168.2.1 24  #配置vlanif接口IP地址
[SWA-Vlan-interface20]quit
[SWB]vlan 20
[SWB-vlan20]port GigabitEthernet 1/0/3
[SWB-vlan20]quit
[SWB]int vlan 20
[SWB-Vlan-interface20]ip address 192.168.2.2 24
[SWB-Vlan-interface20]quit
[SWB]ip route-static 0.0.0.0 0 192.168.2.1   #配置回包的路由
[SWA]display supervlan   #查看交换机上super vlan管理的sub vlan
 Super VLAN ID: 10
 Sub-VLAN ID: 2-3

Isolate-user-VLAN

QinQ 技术

原理

  • QinQ技术,也被称为VLAN Stacking或Double VLAN,是由IEEE 802.1ad标准定义的一种扩展VLAN空间的技术。其基本原理是在原有的802.1Q标签报文的基础上再增加一层802.1Q的Tag,从而达到扩展VLAN空间的目的。具体来说,当用户报文进入运营商网络之前,设备会为其封装上一个运营商网络的VLAN Tag,同时保留用户报文原有的VLAN Tag作为数据部分,使报文能够带着两层VLAN Tag穿越运营商网络。

  • QinQ技术的出现主要是为了解决随着网络规模的扩大,IEEE 802.1Q中定义的VLAN ID数量无法满足网络扩容需求的问题。通过QinQ技术,VLAN的数量可以从原来的4096个增加到4094×4094个,极大地扩展了VLAN空间。

  • 此外,QinQ报文带着两层Tag穿越运营商网络时,内层Tag透明传送,这种特性使其成为一种简单、实用的VPN技术。在企业网中,不同的业务可以封装不同的VLAN Tag,实现不同业务按需获取不同的资源。例如,PC、VOIP和IPTV由于应用场景和需求不同,在企业内部可以属于不同的VLAN,当它们访问公网时,可以针对不同的内层VLAN Tag添加不同的外层VLAN Tag。

  • 总的来说,QinQ技术通过其独特的双层Tag机制,不仅扩展了VLAN空间,还提高了网络的安全性和灵活性,使得运营商能够用一个VLAN为含有多个VLAN的用户网络服务。同时,QinQ技术也为企业网络提供了更精细化的业务管理和资源分配能力。

配置

应用案例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1534954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【c++入门】命名空间,缺省参数与函数重载

&#x1f525;个人主页&#xff1a; Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 朋友们大家好&#xff01;本篇内容我们进入一个新的阶段&#xff0c;进入c的学习&#xff01;希望我的博客内容能对你有帮助&#xff01; 目录 1.c关键字2.第一个c代码3.命名空间3.1 nam…

python智慧农业小程序flask-django-php-nodejs

当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#xff0c;国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统智慧农业采取了人工的管理方法&#xff0c;但这…

导航栏还是侧栏?flutter 跨平台适配指南

介绍 引言&#xff1a;Flutter 的跨平台特性 Flutter 是由 Google 开发的一款跨平台应用开发框架&#xff0c;它具有许多优点&#xff0c;包括性能优异、开发效率高以及良好的用户体验等。其中&#xff0c;最引人注目的特性之一就是其出色的跨平台能力。通过编写一套代码&…

【SpringSecurity】十六、OAuth2.0授权服务器、资源服务器的配置(理论部分)

文章目录 0、OAuth2服务端结构1、授权服务配置2、授权服务器 ⇒ 配置客户端详情3、授权服务器 ⇒ 管理令牌配置4、授权服务器&#xff1a;配置端点访问的安全约束5、资源服务器配置 相关&#x1f4d5;&#xff1a; 【OAuth2授权服务器配置完整Demo】 0、OAuth2服务端结构 OAu…

微信小程序分销返佣模式--小程序1-3级分销插件--小程序分销--

团购小程序是一种基于社区团购模式的电商平台&#xff0c;主要面向社区居民用户。 如果你想要开发一款分销团购小程序可以参考以下功能需求进行开发制作。 1、用户注册和登录 提供用户注册和登录功能&#xff0c;使用户能够创建和管理他们的账户。 2、会员管理 包括会员注…

sentinel使用控制台实现

1、添加依赖 <!--整合控制台--><dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-transport-simple-http</artifactId> <version>1.8.0</version></dependency> 此项方法&#xff0…

【RPG Maker MV 仿新仙剑 战斗场景UI (六)】

RPG Maker MV 仿新仙剑 战斗场景UI 六 法术战斗窗口代码仿新仙剑效果 法术战斗窗口 这次来水点内容 由于之前已经做过了仿新仙剑的法术及物品窗口因此本次两篇内容&#xff0c;就来水点内容&#xff01;&#xff01;&#xff01; 由于帮助窗口之前已经做过&#xff0c;因此直接…

uniApp中使用小程序XR-Frame创建3D场景(1)环境搭建

1.XR-Frame简介 XR-Frame作为微信小程序官方推出的3D框架&#xff0c;是目前所有小程序平台中3D效果最好的一个&#xff0c;由于其本身针对微信小程序做了优化&#xff0c;在性能方面比其他第三方库都要高很多。 2.与Three.js的区别 做3D小程序的同学们对Three.js一定不陌生…

蓝桥杯STM32 G431 hal库开发速成——输入捕获

蓝桥杯的输入捕获较为简单&#xff0c;基本不涉及溢出的问题。所以这里就不介绍溢出了。文末有源码。 一、Cubemx配置 二、代码编写 1.在捕获回调函数中 void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {if(htim->InstanceTIM3){switch(count){case 1:{jishu1…

Mysql数据库的SQL语言详解

目录 一、数据库的基础操作 1、数据库的基本查看和切换 1.1 查看数据库信息 1.2 切换数据库 1.3 查看数据库中的表信息 1.4 查看数据库或数据库中表的结构&#xff08;字段&#xff09; 1.5 数据类型 1.5.1 整数型 1.5.2 浮点型(float和double) 1.5.3 定点数 1.5.4…

鸿蒙一次开发,多端部署(五)页面开发的一多能力介绍

本章介绍如何使用方舟开发框架“一多”能力&#xff0c;开发出在多设备上正常显示的页面。方舟开发框架推荐开发者使用声明式开发范式开发应用&#xff0c;故本章的内容和示例都主要基于声明式开发范式。本章主要包含如下内容&#xff1a; 布局能力 布局决定了页面中的元素按照…

Day75:WEB攻防-验证码安全篇接口滥用识别插件复用绕过宏命令填入滑块类

目录 图片验证码-识别插件-登录爆破&接口枚举 登录爆破 接口枚举 图片验证码-重复使用-某APP短信接口滥用 滑块验证码-宏命令-某Token&Sign&滑块案例 知识点&#xff1a; 1、验证码简单机制-验证码过于简单可爆破 2、验证码重复使用-验证码验证机制可绕过 3、…

九、C#桶排序算法

简介 桶排序是一种线性时间复杂度的排序算法&#xff0c;它将待排序的数据分到有限数量的桶中&#xff0c;每个桶再进行单独排序&#xff0c;最后将所有桶中的数据按顺序依次取出&#xff0c;即可得到排序结果。 实现原理 首先根据待排序数据&#xff0c;确定需要的桶的数量。…

pycharm中的Mark Directory As 里的 Sources Root、Excluded...

这里主要提到两个文件夹的作用&#xff0c;分别是Sources Root、Excluded 1、Sources Root 1、场景 平时使用pycharm&#xff0c;有时出现导包问题&#xff0c;将那个目录Mark Directory as sources root&#xff0c;然后就可以正常运行代码了 2、原理 其实主要就是将那个目录…

算法沉淀——贪心算法七(leetcode真题剖析)

算法沉淀——贪心算法七 01.整数替换02.俄罗斯套娃信封问题03.可被三整除的最大和04.距离相等的条形码05.重构字符串 01.整数替换 题目链接&#xff1a;https://leetcode.cn/problems/integer-replacement/ 给定一个正整数 n &#xff0c;你可以做如下操作&#xff1a; 如果…

Svg Flow Editor 原生svg流程图编辑器(三)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;一&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;二&#xff09; Svg Flow Editor 原生svg流程图编辑器&#xff08;三&#xff09; 实现对齐辅助线 在 logicFlow 中&#xff0c;辅助线的实现是通…

《云计算:数字时代的引擎》

在数字化时代&#xff0c;云计算技术以其强大的计算能力和灵活的应用方式&#xff0c;成为推动各行各业发展的引擎。本文将围绕云计算的技术进展、技术原理、行业应用案例、面临的挑战与机遇以及未来趋势进行详细探讨。 云计算的技术进展 云计算的技术进展涵盖了多个方面&…

Spring框架本身自带的一些好用的工具类

1 Assert 很多时候&#xff0c;我们需要在代码中做判断&#xff1a;如果不满足条件&#xff0c;则抛异常。 有没有统一的封装呢? 其实Spring给我们提供了Assert类&#xff0c;它表示断言。 1.1 断言参数是否为空 断言参数是否空&#xff0c;如果不满足条件&#xff0c;则…

Day23 集合

Day23 集合 一、含义 集合是Java API所提供的一系列类&#xff0c;可以用于动态存放多个对象 (集合只能存对象)集合与数组的不同在于&#xff0c;集合是大小可变的序列&#xff0c;而且元素类型可以不受限定&#xff0c;只要是引用类型。(集合中不能放基本数据类型&#xff0c…

flutter实现视频播放器,可根据指定视频地址播放、设置声音,进度条拖动,下载等

需要装依赖&#xff1a; gallery_saver: ^2.3.2video_player: ^2.8.3 实现代码 import dart:async; import dart:io;import package:flutter/material.dart; import package:gallery_saver/gallery_saver.dart; import package:path_provider/path_provider.dart; import pac…