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

交换机VLAN技术和实验(eNSP)

目录

一,交换机的演变

1.1,最小网络单元

 1.2,中继器(物理层)

1.3,集线器(物理层)

1.4,网桥(数据链路层)

二,交换机的工作行为

2.1,行为

2.2,总结

三,VLAN

3.1,VLAN简介

3.2,VLAN的基本概念

四,交换机的链路类型以及VLAN划分

4.1,交换机链路类型(请仔细阅读,对接下来的实验理解有极大帮助)

五,vlan-access&trunk实验

5.1,实现在一个交换机下,同vlan间通信,而不同vlan间隔离的配置。

5.2,实现在不同的交换机下,相同的vlan下的pc可以进行通信

5.3,遗留问题

六,vlan-access&trunk实验

6.1,SW4配置

七,单臂路由实验

7.1,配置细节

7.2,思考

八,三层交换机实现单臂路由效果

8.1,配置细节

最后


一,交换机的演变

1.1,最小网络单元

最小网络单元有有以下三个部分构成:

网卡:将我们的信息转化为电信号

网线:作为传输介质传输电信号

协议栈:类似于两台主机之间沟通的语言,比如说两台主机之间都要支持tcp/ip协议栈才可以进行对应的通信。

缺点:1,网线传输距离短,超过一百米就会开始丢包(丢失数据)。2,要是多台主机之间要通信,这种连接结构显然太麻烦了。

 1.2,中继器(物理层)

 如上图:

我们在网线之间添加一个信号放大器(中继器)用来放大信号,这样可以延长信息在网线上的传输距离。

缺点:因为中继器只有两个口,所以想要进行三台主机之间的通信是不行的。

1.3,集线器(物理层)

 如上图:

集线器上有多个口,用于连接,这样就解决了中继器接口少的问题。

工作模式:当一个接口收到数据之后,集线器会复制这份数据,并且向其他接口发送(不包括收到数据的接口),这种工作模式叫做泛洪

缺点:一个集线器上的所有接口形成了一个冲突域,假如pc1发数据,集线器上收到数据之后,会向其他接口也发送这份数据,这时上图的pc2和pc3在这个时间段都是不可以发送数据的。但是这样的话,我们传输介质的利用率就降低了。

补充:这项防止数据发送冲突的协议叫做CSMA/CD:带碰撞检测的载波侦听多路访问协议。

1.4,网桥(数据链路层)

 如上图:

工作原理简介:

缓存:网桥首先会对收到的数据帧进行缓存并处理

过滤:通过查询mac地址表,判断入帧的目标节点是否位于发送这个帧的网段中(同一端口中) ,如果是,网桥就不把帧转发到网桥的其他端口。(网桥设备中存在一张mac地址表,上面记录着网桥的每个端口下所连接的主机的mac地址)

转发:查询mac地址表之后,发现帧的目标节点位于另一个网络,网桥就将帧发往正确的网段 (向另一端口转发) 

缺点:一个网桥的端口只有两个,所以要先连接多个设备,还是需要添加集线器进行来连接,但是添加了集线器的话就又回到了老问题,冲突域。所以总的来说:网桥的缺点就是,这冲区域他虽然分离了,但是又好像和没分一样。

1.5,交换机

 交换机在网桥的基础上添加了更多的端口,以至于不需要集线器就可以连接多台主机,转发的速度更快。

二,交换机的工作行为

2.1,行为

1,学习:记录数据帧的源MAC以及入接口信息

2,转发
      如果是单播的数据帧,此时根据目的MAC查看MAC地址表,查看是否存在映射关系
        >1.如果存在映射关系,“已知单播数据帧” 直接按照MAC地址表的映射关系转发
        >2.如果不存在映射关系,"未知单播数据帧" 执行泛洪的动作:xxxxx
      如果是广播的数据帧/组播的数据帧
        >1.泛洪:从除了接收端口之外的其他所有端口都复制发送一份
3,丢弃:如果交换机的接口收到某一个数据帧,发现还要将其从接收端口进行转发,此时会将其丢弃

4,现在我们来模拟一个场景看交换机具体如何学习mac地址

主机 A 向主机 D 发送数据:A 发送数据帧,数据帧的源 MAC 地址是 11:11:11:11:11:11 ,目的 MAC 地址是 44:44:44:44:44:44 。交换机端口 1 收到数据帧,记录源 MAC 地址和端口的对应到 MAC 地址表项。交换机不知道目的 MAC 地址在哪个端口,于是将数据帧进行泛洪,即转发到除端口 1 之外的所有端口。B 和 C 发现目的 MAC 地址不是自己,将丢弃数据帧。

D 发现是发送给自己的数据帧,于是发送应答数据帧,源 MAC 地址是 44:44:44:44:44:44 ,目的 MAC 地址是 11:11:11:11:11:11 。交换机端口 4 收到数据帧,记录 D 的 MAC 地址表项。于是交换机知道了主机 A 和主机 D 的 MAC 地址信息,之后会根据 MAC 地址表进行转发。交换机通过同样的方式,可以学习到主机 B 和主机 C 的 MAC 地址。

2.2,总结


1.学习:学习源MAC以及入接口 构建MAC地址表[CAM]
B=广播 M=组播 U=unknow 未知单播帧
2.转发:对于BUM数据帧,执行泛洪的行为,对于已知单播数据帧,执行查表进行转发行为。
3.丢弃:收到数据将数据从该接口还要进行发送,此时则会丢弃。
学习:报文学习=动态MAC地址表 静态MAC地址表=人为配置的MAC地址表信息
MAC地址表存在时间=300S 老化时间 =5M
五分钟如果没有关于该MAC的数据信息,此时该MAC对应的MAC地址表项,会自然老化。
意外:与MAC地址表关联的物理接口故障后,此时与该接口关联的所有动态的MAC地址信息将被全部删除。
特点:交换机的一个接口可以同时对应多个不同的MAC地址;对于某一个相同的MAC地址,交换机只会有一个对应接口。

三,VLAN

3.1,VLAN简介


定义:
VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接通信,从而将广播报文限制在一个VLAN内。

目的:
以太网是一种基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通讯介质的数据网络通讯技术。当主机数目较多时会导致冲突严重、广播泛滥、性能显著下降甚至造成网络不可用等问题。通过交换机实现LAN互连虽然可以解决冲突严重的问题,但仍然不能隔离广播报文和提升网络质量。

在这种情况下出现了VLAN技术,这种技术可以把一个LAN划分成多个逻辑的VLAN,每个VLAN是一个广播域,VLAN内的主机间通信就和在一个LAN内一样,而VLAN间则不能直接互通,这样,广播报文就被限制在一个VLAN内。

3.2,VLAN的基本概念


VLAN标签:
要使设备能够分辨不同VLAN的报文,需要在报文中添加标识VLAN信息的字段。IEEE 802.1Q协议规定,在以太网数据帧的目的MAC地址和源MAC地址字段之后、协议类型字段之前加入4个字节的VLAN标签(又称VLAN Tag,简称Tag),用以标识VLAN信息。

VLAN帧格式:

体现在报文上就是这样,这是在trunk口下抓的报文(在一般的口上抓不到,因为access口会剥掉tag,untagged hybrid也是抓不到的,还可以在tagged hybrid抓,因为他也是不剥tag的)


TPID:Tag protocol ID: 802.1Q=0x8100 =公有化的802.1Q 2B
pri:优先级 3bit 2^3=8 代表vlan数据的优先级==QOS-服务质量
CFI:第一个1bit为 0=以太网数据帧=经典格式, 1=非以太网数据帧 不经典
默认交换机所有的接口属于VLAN-1
Vlan-id:VLAN号 12bit 2^12=4,096,所有的VLAN-ID号有0-4095,但是0和4095保留,所以可以使用的就是1-4094(这一点在我们的实验中会有体现)
TCI:tag control information:tag控制信息 
将接口划分进VLAN后,每个接口都会有所属的链路类型,此时不同的链路类型对于数据有不同的处理行为。

缺省VLAN:
缺省VLAN又称PVID(Port Default VLAN ID)。前面提到,设备处理的数据帧都带Tag,当设备收到Untagged帧时,就需要给该帧添加Tag,添加什么Tag,就由接口上的缺省VLAN决定。

接口收发数据帧时,对Tag的添加或剥除过程。

对于Access接口,缺省VLAN就是它允许通过的VLAN,修改缺省VLAN即可更改接口允许通过的VLAN。
对于Trunk接口和Hybrid接口,一个接口可以允许多个VLAN通过,但是只能有一个缺省VLAN。接口的缺省VLAN和允许通过的VLAN需要分别配置,互不影响

其他知识点:

PVID===port vlan-id:接口的VLAN-ID号
对于交换机的泛洪:会向除接受端口之外其他能够转发本VLAN的端口进行泛洪。
1.接收方向不会进行TAG的剥离。
2.交换机内部处理的都是带TAG的数据帧。

四,交换机的链路类型以及VLAN划分

4.1,交换机链路类型(请仔细阅读,对接下来的实验理解有极大帮助)

1,Access(接入类型)特点:只能属于某一个VLAN,此时只能为1个VLAN打/剥离标签。用于:连接终端设备 PC/打印机/摄像机/路由器/

           接收方向:

  1.  如果收到空白的数据帧,打上接口的PVID,进入交换机内部处理。            
  2.  如果收到携带标签的数据帧,首先查看数据的VLAN-ID和接口的PVID是否一致,如果一致,则正常接收,进入交换机内部处理,如果不一致,直接丢弃。

           发送方向:

  1. 发送时数据与PVID相同的VLAN-ID号剥离掉。 

2,Trunk(干道类型)特点:同时允许多个不同的VLAN通过。列表:VLAN的允许列表 // 通过的前提条件 保证存在该VLAN,作用: 交换机与交换机互联的链路

         接受方向:

第一种可能:

  1. 如果收到空白的数据帧,则首先打上接口的PVID,然后执行下一步。
  2. 查看VLAN允许列表,如果不存在,则丢弃,如果存在,则接收,数据进入交换机内部处理。

第二种可能: 

  1. 如果收到携带标签的数据帧,直接查看VLAN允许列表,如果不存在,则丢弃,如果存在,则
    接收,数据进入交换机内部处理。

        发送方向: 

  1. 查看数据存在的VLAN是否在接口的VLAN允许列表中,如果不存在,则丢弃,如果存在,则
    进行下一步。
  2. 此时会将数据中VLAN-ID号与接口的PVID进行比对,根据不同的结果进行不同的处理行为。如果相同:此时会将该VLAN剥离掉发送;如果不同:此时不会对数据进行任何的修改动作。

3,Hybrid(混杂端口) 特点:同时能够为多个不同的VLAN在发送方向时 剥离标签

        接受方向:

第一种可能:

  1. 如果收到空白的数据帧,则首先打上接口的PVID,然后执行下一步。
  2. 查看VLAN允许列表,如果不存在,则丢弃,如果存在,则接收,数据进入交换机内部处理。

 第二种可能:

  1. 如果收到携带标签的数据帧,直接查看VLAN允许列表,如果不存在,则丢弃,如果存在,则
    接收,数据进入交换机内部处理。

        发送方向:

  1. 查看数据存在的VLAN是否在接口的VLAN允许列表中,如果不存在,则丢弃,如果存在,则
    进行下一步
  2. Hybrid根据接口的发送方向,定义多个VLAN以带标签/不带标签的方式通过。

                如果是tagged模式,则带着VLAN-标签发送。 ===Trunk/多个vlan通过

                如果是untagged模式,则剥离VLAN-标签发送。 ==Access/叠加式Access ()

4,补充 

4.1,当接口配置了PVID之后,此时如果Hybrid接口下没有对该VLAN 执行任何的untagged 或tagged,则此时vlan允许列表中,无该VLAN。

4.2,交换机如果修改PVID之后,且两端的PVID号不一致,可能会导致相同的VLAN之间无法通信,不同的VLAN之间可以通信,所以通常,不会修改接口的PVID。

4.3,无论Access/Trunk:最多同时可以为1个vlan剥离标签。

4.4,VLAN-ID等于PVID时,trunk接口才会剥离标签。

五,vlan-access&trunk实验

网络拓扑图如下,

拓扑图1

实验要求:

1,使用vlan技术实现在pc3可以和pc7通信但是不可以和pc4通信。

2,在不同的交换机下,相同的vlan下的pc是可以进行通信的,比如说上图的pc3可以和pc5通信。

3,具体信息已在拓扑图中标出。

5.1,实现在一个交换机下,同vlan间通信,而不同vlan间隔离的配置。

首先实现在一个交换机下,同vlan间通信,而不同vlan间隔离的配置。

对pc的配置:pc7的配置如下,这里没有配置网关,因为本实验没有涉及三层。

在SW2中做如下配置

1,进入系统视图

2,修改设备名字(以便于区别设备,我这里是改为SW2)

3,创建需要的vlan,我们这里需要vlan 10和vlan 20(命令:vlan batch 10 20)

4,进入接口,为接口配置链路类型,在这里g0/0/2和g0/0/1用到的接口类型都是access(命令:port link-type access 可简写为 p l a,如下图)

5,然后,为接口配置对应的vlan,在这里g0/0/2用的vlan是20(命令:port defualt vlan 20,简写为:p d v 20),

进行上面的操作后,我们对SW2的g0/0/2接口就操作完成了。那么对于g0/0/1和g0/0/4接口,我们如法炮制即可,只是我们要想pc3可以和pc7通信而不可以和pc4通信,那么我们需要将g0/0/4也配为vlan10,g0/0/1配为vlan20即可。

然后,我们使用pc3 ping pc4和pc7测试一下。我们发现达到了要求。

5.2,实现在不同的交换机下,相同的vlan下的pc可以进行通信

现在我们再来实现在不同的交换机下,相同的vlan下的pc可以进行通信的要求。

对于SW3的接口g0/0/1和g0/0/2接口的配置我这里就不展示了,如上都是配置access口。

现在展示,SW3的接口g0/0/3接口的配置,注意在这里我们要配置接口为trunk口。

配置如下:

1,port link-type trunk 简写为 p l t。

2,port trunk allow-pass vlan all,意思是允许所有的vlan报文通过,包括vlan10和20,这里我们也可以写port trunk allow-pass vlan 20 10也就是说只允许vlan10和20的包通过。

3,同时要注意,我们要在对端也就是SW2的g0/0/3接口也要做如下配置,也是trunk口。

做好配置之后,我们使用pc3 ping pc5 我们会发现ping通了。那么实验成功了。

补充:其实一开始默认我们交换机所有的接口都属于vlan 1,如下图:

5.3,遗留问题

5.3.1,为什么SW2下的g0/0/1,2,4是access口?

首先,我们已经知道了access口的工作原理,当交换机收到pc3访问pc7的数据时,交换机首先会检查数据是否带有vlan-id,如果带有vlan-id,他会检查vlan-id是否和本接口的pvid一致(接口的pvid我们可以使用 dispaly vlan命令查看,如下图,我们发现接口的pvid和我们的配的vlan一致,这是access接口的一个特点),如果一致,则数据进入交换机内部处理。如果不一致,那么他就会丢弃此数据,如果没有vlan-id,那么他就会打上当前接口规定的pvid,所以现在交换机位收到的pc3数据打上vlan 10的pvid,然后,发给同pvid的接口g0/0/4,然后再将打上的pvid剥离后发给pc7.

5.3.2,为什么SW2的g0/0/3和SW3的g0/0/3都是trunk口?

在我们知道了trunk口的工作原理下,我们可以来推测pc3 ping pc5的过程,首先pc3来没有写的vlan id的数据帧给交换机,此时交换机为数据帧打上接口的pvid,然后,交换机查表看此pvid是否可以通过此trunk口,因为我们配置 port trunk allow-pass vlan all,所以都可以通过,到了SW3的g0/0/3接口,由于接口的配置也是 port trunk allow-pass vlan all,所以SW3就接收了该数据,然后就是老套路,由g0/0/1接口去掉tag之后发给pc5。

我们可以看看带tag和不带tag的报文。

六,vlan-Hybrid实验

拓扑图2

实验要求:

1,vlan划分如上图所示。

2,pc8可以访问pc10,但是pc8不可以访问pc9

6.1,SW4配置

首先我们来配置SW4

1,进入系统视图

2,修改设备名字(以便于区别设备,我这里是改为SW4)

3,创建需要的vlan,我们这里需要vlan 2,3,100(命令:vlan batch 2 3 100)

4,进入接口,为接口配置链路类型,在这里g0/0/3,g0/0/2和g0/0/1用到的接口类型都是hybrid(命令:port link-type hybrid 可简写为 p l a,如下图)

5,进入接口配置接口的pvid,千万记得配(我当时就是没配,就出错了),这一步在配置access接口是是没有的,因为一个access接口只属于一个vlan,所以接口的pvid就等于vlan id

6,配置接口的vlan,以及对收到的vlan的处理方式,

g0/0/1的配置同上我就不展示了,因为只有通过的vlan要改,由于不可以通过vlan 2的数据但是要通过vlan100的数据,所以是port hybrid untagged vlan 2 100

而g0/0/3的配置如下:注意这里不用配pvid,因为我这段没有配vlan呀!(也就是SW4和SW5之间)

最后,我们再用pc8测试一下,我们发现,配置满足要求,实验成功。

七,单臂路由实验

拓扑图一

实验要求:pc11和pc12现在在不同的网段,不同的vlan,他们之间需要相互通信

7.1,配置细节

首先,我们知道,主机之间需要跨网段通信的时候,那我们就需要网关,帮助我们查表转发,在我们没有三层交换机的时候,我们实现此要求必定会用到路由器,路由器有一项技术——虚拟子接口(subinterface)应用于单臂路由。

首先我们在交换机上进行配置,配置要求如下:这里我就不展现配置细节了,配置access口和trunk口上面都已经讲过了。

这里我们主要来配置路由器,路由器的配置如下:

1,进入系统视图。

2,创建子接口。注意:在华为的设备上创建子接口的方式是 int 原有的接口.子接口序号。如下:我创建了 int g0/0/0.1

3,在子接口上配置IP作为网关IP。这里的 g0/0/0.1字接口是作为pc11的网关,所以配置IP为192.168.1.1

4,配置允许在此子接口上通信的vlan号,dot1q termination vid 10 意思是允许vlan 10的包通信 注意是 dot1q 而不是dotlq。

5,最后,我们还要在接口上开启转发arp报文的功能,这个功能在华为设备上需要手动开启,在思科设备上则是默认开启的。(之后我们来讲一下为什么要开启)

6,我们再创建int g0/0/0.2进行如上的操作,只是我们的网关要改为192.168.2.1.(在此之前我们已经在电脑上配置了网关,所以可以直接配置)

之后,我们使用pc11 ping pc12测试一下。如下:现象满足要求,实验成功!

7.2,思考

为什么路由器需要开启arp转发功能?

首先,我们在如下位置抓包看一下,使用pc11 ping pc12

我们在g0/0/0接口抓到的包如下:

由我们抓到的包,我们可以知道以下流程:

1,pc11由于没有网关的mac地址,pc11发送arp广播询问谁是192.168.1.1

2,路由器收到arp广播包之后,填上路由器int g0/0/0接口的mac地址,以单播的形式发回,如下:

3,路由器收到192.168.1.11(pc11)请求192.168.2.12(pc12)的报文时,路由器查询arp表,发现没有192.168.2.12的mac地址进行下一步

4,路由器查询路由表,看是否有去往192.168.2.0/24网段的路由,如果有,路由器则发送广播arp询问192.168.2.12的mac地址,没有则不进行操作。如下表:

我们可以知道去往192.168.2.0/24网段的路由,所以路由器发送广播arp询问192.168.2.12的mac地址

5,pc12收到询问自己mac地址的arp报文之后,发送填上自己mac地址的arp单播报文给路由器,至此路由器拥有了pc11和pc12的mac地址。

6,之后,pc11和pc12就可以开始通信了。

八,三层交换机实现单臂路由效果

拓扑图二

实验要求:

使用三层交换机实现不同vlan,不同网段下的主机通信。

pc13:192.168.1.13/24 网关:192.168.1.1

pc14:192.168.2.14/24 网关:192.168.2.1

8.1,配置细节

1,创建需要的vlan

2,创建处理对应vlan的vlanif接口如下Vlanif10

3,配置vlanif接口的ip地址

4,为交换机的接口配置接口类型,这里是access口

5,为交换机的接口配置vlan

6,查看交换机的路由表看配置是否成功,没错三层交换机有自己的路由表

做完以上配置之后,我们可以测试一下。如下,实验成功

最后

本篇博客对交换机,VLAN技术和实验的介绍和实验就到这里了,如果本篇博客对你有帮助的话请点赞收藏支持一下,谢谢!答应我!不要白嫖好吗?哈哈哈!咱们下篇博客见。

相关文章:

交换机VLAN技术和实验(eNSP)

目录 一,交换机的演变 1.1,最小网络单元 1.2,中继器(物理层) 1.3,集线器(物理层) 1.4,网桥(数据链路层) 二,交换机的工作行为 2.…...

8.Winform界面打包成DLL提供给其他的项目使用

背景 希望集成一个Winform的框架,提供权限菜单,根据权限出现各个Winform子系统的菜单界面。不希望把所有的界面都放放在同一个解决方案下面。用各个子系统建立不同的解决方案,建立代码仓库,进行管理。 实现方式 将Winform的UI界…...

海量数据存储组件Hbase

hdfs hbase NoSQL数据库 支持海量数据的增删改查 基于Rowkey查询效率特别高 kudu 介于hdfs和hbase之间 hbase依赖hadoopzookeeper,同时整合框架phoenix(擅长读写),hive(分析数据) k,v 储存结构 稀疏的(为空的不存…...

(一)基于Spring Reactor框架响应式异步编程|道法术器

在执行程序时: 通常为了提供性能,处理器和编译器常常会对指令进行重排序。 从排序分为编译器重排序和处理器重排序两种 * (1)编译器重排序: 编译器保证不改变单线程执行结构的前提下,可以调整多线程语句执行顺序; * (2)处理器重排序: 如果不存在数据依赖…...

Vue3 让localstorage变响应式

Hook使用方式: import {useLocalStore} from "../js/hooks"const aauseLocalStore("aa",1) 需求一: 通过window.localStorage.setItem可以更改本地存储是,还可以更新aa的值 window.localStorage.setItem("aa&quo…...

【深度学习】InST,Inversion-Based Style Transfer with Diffusion Models,论文,风格迁移,实战

代码:https://github.com/zyxElsa/InST 论文:https://arxiv.org/abs/2211.13203 文章目录 AbstractIntroductionRelated WorkImage style transferText-to-image synthesisInversion of diffusion models MethodOverview ExperimentsComparison with Sty…...

【CSS】3D卡片效果

效果 index.html <!DOCTYPE html> <html><head><title> Document </title><link type"text/css" rel"styleSheet" href"index.css" /></head><body><div class"card"><img…...

OrderApplication

目录 1 OrderApplication 2 /// 查询订单 2.1.1 //补充商品单位 2.1.2 //补充门店名称 2.1.3 //补充门店名称 2.1.4 //订单售后 2.1.5 //订单项售后 OrderApplication...

如何在保健品行业运用IPD?

保健品是指能调节机体功能&#xff0c;不以治疗为目的&#xff0c;并且对人体不产生任何急性、亚急性或者慢性危害的产品。保健品是食品的一个种类&#xff0c;具有一般食品的共性&#xff0c;其含有一定量的功效成分&#xff0c;能调节人体的机能&#xff0c;具有特定的功效&a…...

Flink系列之:动态发现新增分区

Flink系列之&#xff1a;动态发现新增分区 一、动态发现新增分区二、Flink SQL动态发现新增分区三、Flink API动态发现新增分区 为了在不重新启动 Flink 作业的情况下处理主题扩展或主题创建等场景&#xff0c;可以将 Kafka 源配置为在提供的主题分区订阅模式下定期发现新分区。…...

eclipse版本与jdk版本对应关系

官网&#xff1a;Eclipse/Installation - Eclipsepedia eclipse历史版本&#xff08;2007-&#xff09;&#xff1a;Older Versions Of Eclipse - Eclipsepedia Eclipse Packaging Project (EPP) Releases | Eclipse Packages...

File类的学习

java.io.File类 文件和目录路径的抽象表达形式是一个与操作系统无关的类&#xff0c;任何一个操作系统都可以使用这个类中的方法 File.pathSeparator 文件路径分隔符&#xff0c;windows是分号&#xff0c;linux是&#xff1a; File.separator 文件名分隔符&#xff0c;window…...

Linux 操作系统 Red Hat Enterprise Linux 安装教程

文章目录 笔者的操作环境&#xff1a; 制作环境&#xff1a; Win32 Disk Imager 1.0.0 Windows 10 教育版 ISO&#xff1a; Red Hat Enterprise Linux 9.2 x86_64 Red Hat Enterprise Linux&#xff08;RHEL&#xff09;是一种 Linux 操作系统。安装此操作系统的难题在于&a…...

关于拓扑排序

又重新学了一下拓扑排序&#xff0c;这次发现就十分简单了&#xff0c;拓扑排序的步骤 1.他必须是一个有向无环图&#xff0c;起点我们就是入度为0的点 2.我们首先要输出的就是入度为0的点&#xff0c;然后依次删除这些点连向的点&#xff0c;使这些点的入度-1&#xff0c;如果…...

【C++】开源:Boost库常用组件配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Boost库常用组件配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c…...

用python通过http实现文件传输,分为发送端和接收端

要使用Python通过HTTP实现文件传输&#xff0c;可以使用Python的 requests 库来发送和接收HTTP请求。以下是一个示例代码&#xff0c;其中包括发送端和接收端的实现。 发送端&#xff1a; import requestsdef send_file(file_path, url):with open(file_path, rb) as file:re…...

数据结构--图的遍历 DFS

数据结构–图的遍历 DFS 树的深度优先遍历 //树的先根遍历 void PreOrder(TreeNode *R) {if(R ! NULL){visit(R); //访问根节点while(R还有下一个子树T)PreOrder(T);//先根遍历下一棵子树} }图的深度优先遍历 bool visited [MAX_VERTEX_NUM]; //访问标记数组 void DFS(Grap…...

SpringBoot集成MyBatisPlus+MySQL(超详细)

前言 查看此文章前强烈建议先看这篇文章&#xff1a;Java江湖路 | 专栏目录 该文章纪录的是SpringBoot快速集成MyBatis Plus&#xff0c;每一步都有记录&#xff0c;争取每一位看该文章的小伙伴都能操作成功。达到自己想要的效果~ 文章目录 前言1、什么是MyBatisPlus2、Spring…...

一边是计算机就业哀鸿遍野,一边是高考生疯狂涌向计算机专业

在张雪峰推荐的几大专业里&#xff0c;计算机专业是其中之一。近几年&#xff0c;计算机专业报考热度不减&#xff0c;但就业前景却令人堪忧&#xff0c;互联网裁员接二连三&#xff0c;许多码农找不到工作。 一位网友感叹&#xff1a;一边是计算机就业哀鸿遍野&#xff0c;一…...

解决外部主机无法访问Docker容器的方法

使用Docker启动了一个tomcat容器&#xff0c;并做了端口映射&#xff0c;但是外部主机仍然无法访问。 编辑centos上的配置文件 vi /etc/sysctl.conf net.ipv4.ip_forward1 systemctl restart network保存以后即可生效&#xff0c;这个配置是开启linux的ip数据包转发功能&#…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Java面试专项一-准备篇

一、企业简历筛选规则 一般企业的简历筛选流程&#xff1a;首先由HR先筛选一部分简历后&#xff0c;在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如&#xff1a;Boss直聘&#xff08;招聘方平台&#xff09; 直接按照条件进行筛选 例如&#xff1a…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...