学习笔记——动态路由——OSPF聚合(汇总)

news2024/11/20 0:48:27

十一、OSPF聚合(汇总)

1、路由聚合(汇总)

路由汇总是一种重要的思想,在大型的项目中是必须考虑的一个重点事项。随着网络的规模越来越大,网络中的设备所需维护的路由表项也就会越来越多,路由表的规模也就会逐渐变大,而路由表是需要占用设备的内存空间的,路由的查询也是需要占用设备的资源的。

因此需要考虑(尤其在一些大型的网络中)在保证网络中路由畅通的同时,减小路由表的规模。在不使用路由汇总的情况下,每个链路的LSA会发送到OSPF骨干一级其他区域中,这就造成了不必要的网络流量和路由开销。假如使用路由汇总,只有汇总的路由会传播到骨干区域,避免了大量LSA占用带宽,CPU以及内存资源。即便链路出现了故障,这种变化也不会传播到骨干网络中,使得骨干网络更加稳定。

几乎所有的路由协议都支持路由汇总。RIP、EIGRP等协议支持自动及手工路由汇总,而OSPF只支持手工路由汇总

路由聚合(Route Aggregation or Route Summarization,路由汇总):是指ABR可以将学习到的具有相同前缀的路由信息,按照一定的规则聚合到一起,只发布一条路由到其它区域。

一般来说,路由汇总可以大大减少设备路由表项和转发表项。一方面可以减轻设备的负担,另一方面也可以让设备保存更多不同地址的路由。

作用:通过汇总路由的方式减小路由表规模以及优化设备资源利用率。

缺陷:最大的问题是它会导致黑洞路由。

(上图)R2将学习到外网10.1.1.0/28的路由发送给R1,R1将这条路由汇总为10.1.1.0/24。如果R2配备了到R1的默认路由,此时如果R1收到发往10.1.1.1/28的数据包,就会转发给R2,而R2上没有到10.1.1.1/28的路由,就会发送数据数据包返回到R1,在这种情况下,会生成一个循环。因此,在配置路由汇总的过程中,需要慎重考虑是否会导致此类问题。

(1)路由聚合的优/缺点

1)针对明细路由做汇总可以有效地减少OSPF路由器的数据库条目也就是路由表条目,合理的节省了设备性能。

2)可以隐藏明细路由不稳定所造成的路由震荡问题。

3)在双出口做路由聚合时,有一个做,有一个没做会影响到路由选路。

(2)OSPF汇总的使用场景

  当OSPF域内某台ASBR(自治域边界路由器)设备重分布了大量的路由进入OSPF域内,而这些路由条目又是连续的,可以汇总成几条子网掩码更大的路由条目的时候,就可以考虑在ASBR设备上做路由汇总,以便向OSPF域内传递的时候只通告这些汇总的路由,减少OSPF域内的路由数量,节约设备资源。

  当OSPF域内某台ABR(区域边界路由器)设备学习到了普通区域传递过来的大量的路由,而这些路由条目又是连续的,可以汇总成几条子网掩码更大的路由条目的时候,就可以考虑在这台ABR设备上做路由汇总,以便这些路由条目经过骨干区域(area 0)传递到其他普通区域的时候只通告这些汇总的路由,减少OSPF域内的路由数量,节约设备资源。

(3)为什么我们需要OSPF路由汇总?

对于OSPF边缘路由器,我们可以配置stub area、total stub area、NSSA area或total NSSA area来减少其存储的LSDB和OSPF路由表项。但是如果骨干路由器上的LSDB表项太多,或者不是骨干但不能配置为特殊区域的区域,如何减少这些路由器上的LSDB和OSPF路由数量呢?

从前面的描述可以知道,可以通过路由汇总来实现。

OSPF是一种链路状态路由协议,因此OSPF路由器不传输路由,而是传输链路状态信息。因此,OSPF路由通过汇总LSA来控制链路状态信息的传输,从而减小LSDB数据库的大小,进而控制路由的汇总。

由于OSPF路由分为区域内路由、区域间路由和外部路由(即引入OSPF进程的路由),所以区域内路由不需要汇总

概念:将多条具有相同前缀的路由聚合成一条,通告到其他区域

目的:1.减少维护数据库的规模  2.减少路由表维护数量  3.减少其他区域不稳定链路的影响

2、聚合机制

与RIP不同,OSPF不支持自动路由聚合,仅支持手动路由聚合

(1)OSPF路由聚合方式

域间汇总(区域间路由聚合) :可以减少路由信息,从而减小路由表的规模,提高设备的性能。

区域间路由聚合,必须配置在ABR路由器上。ABR把与自己直接相连区域(Area)的路由进行聚合,把Type-1和Type-2 LSA转换成Type-3 LSA时,对生成的Type-3 LSA进行聚合。从而减少传播至与自己直接相连的其他区域的Type-3 LSA的数量。

需要特别强调的是,区域间路由只能聚合由Type-1 LSA或Type-2 LSA产生的路由;如果路由是由外部或其他区域传到本区域的(或者说路由是由Type-5 LSA或 Type-3 LSA生成的),则对于这样的路由ABR是不能够进行聚合的。

域外汇总(外部路由聚合):必须配置在ASBR路由器上,在ASBR路由器上,针对引入OSPF网络的外部路由进行的聚合目的是减少在OSPF网络中的Type-5 LSA的数量

对于NSSA区域,当该区域的ABR将Type-7 LSA转换为Type-5 LSA时,该ABR也可以充当ASBR的角色,并对Type-5 LSA进行聚合。需要注意的是,当NSSA区域存在多台ABR时,必须由Router-ID最大的ABR进行Type-7 LSA到Type-5 LSA的转换操作。

NSSA区域的外部路由聚合有两种方式:

1)在NSSA区域的ASBR上直接对外部路由进行聚合,

2)在NSSA区域中Router-ID最大的、负责将Type-7 LSA转成Type-5 LSA的ABR上进行聚合。

1)OSPF区域间路由汇总(ABR聚合)

仅针对本区域域内路由(以O开头的域内路由)做汇总,本区域的OIA的域间路由没有办法汇总。

ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以通过命令将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于命令指定的聚合网段范围的LSA将不会再被单独发送出去。(如下右图)

OSPF区域间路由聚合是指当OSPF LSA在不同区域间扩散时,通过在ABR上配置,将多条LSA聚合为一个LSA,然后进行扩散操作。

        

(如上左图)假设R1和R2之间的网段是10.1.1.0/24,R2和R3之间的网段是10.1.0.0/24网段,那么在R4和R5上,你会学到两条OSPF路由,即10.1.1.0/24和10.1.0.0/24。如果我们把R1上的这两个网段汇总起来,汇总成10.1.0.0/23,那么R4和R5上就只有一个OSPF网段,即10.1.0.0/23。

需要注意的是,在ABR上配置路由聚合时,需要在区域下进行配置。(如上左图)我们要汇总区域1中的两个网段10.1.0.0/24和10.1.1.0/24,那么需要在R1的区域1下配置聚合。

观察R1和R4上的LSDB数据,我们可以看到R1将10.1.1.0/24和10.1.0.0/24两条路由聚合成一个 LSA发送到区域0。

[R1]display ospf lsdb

OSPF Process 1 with Router ID 10.1.14.1

Link State Database

Area:0.0.0.0

Type          LinkStateID        AdvRouter     Age       Len       Sequence      Metric  

Router        10.1.14.1          10.1.14.1     1353     36       88888886           1

Router        10.1.14.4          10.1.14.4     1362     36       80088083           1

Network       10.1.14.1          10.1.14.1     1353     32       80880002           0

Sum-Net       10.1.0.0           10.1.14.1     1130     28       80888882           2

Area:0.0.0.1

Type          LinkStateID        AdvRouter     Age      Len      Sequence      Metric  

Router        10.1.0.2           10.1.0.2      1366     48       88888885           1

Router        10.1.14.1          10.1.14.1     1396     36       88888885           1

Network       10.1.1.1           10.1.14.1     1396     32       88888882           0

Sum-Net       10.1.14.0          10.1.14.1     1438     28       80888881           1

[R4]display ospf lsdb

OSPF Process 1 with Router ID 10.1.14.4

Link State Database

Area:0.0.0.0

Type          LinkStateID        AdvRouter     Age      Len      Sequence      Metric  

Router        10.1.14.1          10.1.14.1     1393     36       808868861          1

Router        10.1.14.4          10.1.14.4     1488     36       800000031          1

Network       10.1.14.1          10.1.14.1     1393     32       800660820          0

Sum-Net       10.1.0.0           10.1.14.1     1170     28       80000002           2

2)OSPF外部路由汇总(ASBR聚合)

配置路由聚合后,如果本地设备是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。

如果本地设备既是ASBR又是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。

    对于NSSA区域,当该区域的ABR将Type-7LSA转换为Type-5LSA时,该ABR也可以充当ASBR的角色,并对Type-5LSA进行聚合。

ASBR:针对重分发进来的外部路由做路由汇总

除了OSPF区域间路由汇总,OSPF引入外部路由时,我们还可以在ASBR上配置路由聚合。

        

与OSPF 区域间路由聚合类似,OSPF 外部路由聚合也是在路由聚合完成后根据聚合路由生成LSA 进行扩散。

查看R2上的LSDB,可以看到聚合的LSA。

3、汇总(聚合)计算方法

(1)简单的,同一子网的汇总

(下左图)判断第几位发生变化,转换成二进制,将不变的位,保留下来作为子网掩码的位数=16+5=21。也可以算变化的位24-3=21,变化的位全部值为0,那么这个时候的网络地址就是汇总后的地址。

192.168.00000000.0/21=192.168.0.0/21(255.255.248.0)

案例1:

IP地址                                                                          

二进制

172.18.129.0/24                                                            

129:10000001

172.18.130.0/24                                                            

130:10000010

172.18.132.0/24                                                            

132:10000100

172.18.133.0/24                                                            

133:10000101

前5位相同(10000),后3位不同

相同的前缀有21位,保留相同位数,将相同比特后面的数(到末尾)填充为0将不相同的3个001比特填充为0,得到10000000,根据8\4\2\1法计算出,十进制为128。

结果:路由汇聚的Ip地址就是172.18.128.0,172.18.128.0/21。掩码=8+8+5,前21位比特为1不能变,变化为后11位。

不变的10000:128+64+32+16+8=128+80+40=248掩码为255.255.248.0。

案例2:

IP地址                                                                          

二进制

202.113.79.128/27                                                        

128:1000 0000

202.113.79.160/27                                                        

160:1010 0000

202.113.79.192/27                                                        

192:1100 0000

202.113.79.224/27                                                        

133:1110 0000

相同的前缀有25位,保留相同位数,将不相同比特后面的数(到末尾)填充为0。

将不相同的比特填充为0,得到10000000,根据8\4\2\1法计算出,十进制为128。

结果:路由汇聚的Ip地址就是202.113.79.128。202.113.79.128/25。掩码=8+8+8+1,前25位比特为1不能变,变化为后7位。可用地址数为2^7-2=126。

(2)复杂的,不同子网的汇总

首先判断是第几段的地址位发生变化,后面的可以忽略,汇总成这个段的地址的主网络号,其次使用上面简单的处理方法 ,汇总后子网为8+1=9 或者16-7=9

4、配置OSPF路由汇总

配置OSPF路由聚合分为:配置OSPF域间路由聚合和配置OSPF外部路由聚合。

注意:OSPF区域间路由聚合只能在ABR上配置,OSPF外部路由聚合只能在ASBR上配置。

配置区域间路由汇总

[R1] ospf 1

[R1-ospf-1] area 1

[R1-ospf-1-area-0.0.0.1] abr-summary 10.1.0.0 255.255.254.0

配置外部路由汇总

[R3] ospf 1

[R3-ospf-1] asbr-summary 1.1.0.0 255.255.252.0

(1)OSPF路由汇总案例(一)

 

(上图所示)R1、R2、R3、R4及R5运行OSPF,OSPF区域的规划如图。

  R5将三个直连网段(172.16.1.0/24、172.16.2.0/24、172.16.3.0/24)都network到OSPF。

  R1将三个直连网段(10.1.1.0/24、10.1.2.0/24、10.1.3.0/24)都重发布到OSPF。

完成上述配置后,所有的路由器应该都能学习到全网的路由。在ABR上执行路由汇总(下图所示)

在R3(ABR)上对Area2内的路由执行汇总:

  [R3]router ospf 1

  [R3]area 2 range 172.16.0.0 255.255.0.0 cost ?

注意,这种汇总方式(area range)只能在ABR上配置,而且只能对ABR直接连接的区域中的Intra-Area路由(区域内部路由)执行汇总。

R3执行汇总后,R1及R2的路由表中将出现172.16.0.0/16的汇总路由,而不会再学习到明细路由。如此一来,R1及R2的路由表就精简了,而且当它们需要访问R5下挂的那三个网段时,可以通过这条汇总路由到达。

  要强点的是,如果不是在R3,而是在R2上对R5下挂的网段进行汇总,则无法实现。因此此时R3作为ABR,已经将描述这些网段的3类LSA注入到了Area0,而在R2上,是无法对这些3类LSA进行路由汇总的。 在ASBR上执行路由汇总(下图所示)

 

在R1上对其自己重发布进OSPF的路由执行汇总:

  router ospf 1

  summary-address 10.1.0.0 255.255.0.0

  完成上述配置后,R2、R3、R4及R5都会学习到一条10.1.0.0/16的汇总路由(使用Type-5 LSA描述),而不会再学习到10.1.1.0/24、10.1.2.0/24以及10.1.3.0/24这三条明细路由。

在NSSA的ABR上执行路由汇总

 

  将网络做一点小小的变更,Area1被配置为NSSA。R1将三条直连路由引入NSSA,R2会学习到这三条外部路由(Type-7 LSA),并执行Type-7 LSA转Type-5 LSA的动作,因此其实R2既是ABR又是ASBR,这些Type-5 LSA是由其产生的,那么R2也能执行路由汇总:

  router ospf 1

  summary-address 10.1.0.0 255.255.0.0

OSPF汇总路由的防环设计

 

   在上图所示的场景中,R3将R5下挂的三个子网汇总成172.16.0.0/16并向R2通告这条汇总路由。R1则下发一条OSPF默认路由到整个OSPF域。此时R5下挂的某个子网里有PC中毒,疯狂扫描一个并不存在的子网的IP地址(如172.16.222.0/24子网),这些数据包被发给网关R5,R5通过路由表查询,最终将这些报文依照默认路由进行转发,也就是发送给R4,而R4也一样,将报文依照默认路由转发给R3,R3再转给R2,而R2由于已经收到R3传递过来的汇总路由(172.16.0.0/16),因此经过路由表查询后,数据包的目的地址匹配上了这条汇总路由,于是它又把这些数据包丢回去给R3,数据包的目的地址在R3处匹配了默认路由,又被丢回R2,如此反复,直到报文的TTL递减为0。这就出现了环路。

  OSPF为了解决这个问题,在执行路由汇总时,会在本地自动产生一条指向Null0的路由。例如在R3处执行了路由汇总,则它会自动产生一条指向Null0的路由:

  O       172.16.0.0/16 is a summary, 00:00:02, Null0

  这样一来当再有类似事件发生,数据包将在R3这就被丢弃(匹配Null0路由)。

实际上,当执行路由汇总时,自动在本地路由表产生一条指向Null0的路由是一种非常常规的防环手段,许多动态路由协议都具备这个特征。

(2)OSPF路由汇总案例(二)

域间汇总,在ABR上进行

R1配置:

  router ospf 100

  router-id 1.1.1.1

  network 1.1.1.1 0.0.0.0 area 0

  network 12.1.1.0 0.0.0.255 area 0

R2配置:

  router ospf 100

  router-id 2.2.2.2

  network 2.2.2.2 0.0.0.0 area 0

  network 12.1.1.0 0.0.0.255 area 0

   network 23.1.1.0 0.0.0.255 area 1

  network 24.1.1.0 0.0.0.255 area 2

R3配置:

  router ospf 100

  router-id 3.3.3.3

  network 3.3.3.3 0.0.0.0 area 1

  network 192.168.20.1 0.0.0.255 area 1

  network 192.168.21.1 0.0.0.255 area 1

  network 192.168.22.1 0.0.0.255 area 1

  network 192.168.23.1 0.0.0.255 area 1

  network 23.1.1.0 0.0.0.255 area 1

R4配置:

  router ospf 100

  router-id 4.4.4.4

  network 4.4.4.4 0.0.0.0 area 2

  network 192.168.32.0 0.0.0.255 area 2

  network 192.168.33.0 0.0.0.255 area 2

  network 192.168.34.0 0.0.0.255 area 2

  network 192.168.35.0 0.0.0.255 area 2

  network 192.168.36.0 0.0.0.255 area 2

  network 192.168.37.0 0.0.0.255 area 2

  network 192.168.38.0 0.0.0.255 area 2

  network 192.168.39.0 0.0.0.255 area 2

  network 24.1.1.0 0.0.0.255 area 2

  show ip route 查看路由表可以看见,由于域间路由的传播,R1上多达进20条路由,有R3宣告的4个。R4宣告的8个192.68网段的路由如果不进行汇总,会泛洪到全网,所以我们应该在Area 1和Area 2的ABR,也就是R2上进行汇总操作,具体操作如下:  

  R2(config)#router ospf 100 

  R2(config-router)#area 1 range 192.168.20.0 255.255.252.0

  R2(config-router)#area 2 range 192.168.32.0 255.255.248.0

此时查看R1的路由表,发现

  O IA 192.168.20.0/22 [110/21] via 12.1.1.2

   O IA 192.168.32.0/21 [110/12] via 12.1.1.2

  可以看见,Area 1和Area 2上的192.168网段已经完成了汇总。这样会节省很多资源,拓扑发生变化也不会影响Area 0的路由表。

  域外汇总,在ASBR上进行

  拓扑图不变,但将Area 2变为EIGRP 

R2更改配置

  router ospf 100

  no network 24.1.1.0 0.0.0.255 area 2

  router eigrp 90

  no auto-summary

  network 24.1.1.0 0.0.0.255

R4更改配置

  no router ospf 100

  router eigrp 90

  no auto-summary

    network 24.1.1.0 0.0.0.255

    network 4.4.4.4 0.0.0.0

    network 192.168.32.0 0.0.0.255

    network 192.168.33.0 0.0.0.255

    network 192.168.34.0 0.0.0.255

    network 192.168.35.0 0.0.0.255

    network 192.168.36.0 0.0.0.255

    network 192.168.37.0 0.0.0.255

    network 192.168.38.0 0.0.0.255

    network 192.168.39.0 0.0.0.255

之后在R2上进行双向重分发

     router ospf 100

    redistribute eigrp 90 subnets

     router eigrp 90

    redistribute ospf 100 metric 1000 1 255 1 1500

  可以看见O E2标记的为外部的EIGRP路由,并没有汇总。

在R2上进行域间路由汇总

     router ospf 100

    summary-address 192.168.32.0 255.255.248.0

然后查看R1的路由表

  O IA 192.168.20.0/22 [110/21] via 12.1.1.2

  O E2 192.168.32.0/21 [110/20] via 12.1.1.2

  已经完成汇总。


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】

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

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

相关文章

【智能算法应用】麻雀搜索算法SSA优化Kmeans图像分割

目录 1.算法原理2.数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法(SSA)原理及实现 2.数学模型 Kmeans是一种无监督的聚类算法,由于参数简洁,时间复杂度低已成功应用于图像分割,取得了良好的分割效果。但传统的 K 均值聚…

45 mysql truncate 的实现

前言 truncate 是一个我们也经常会使用到的命令 其作用类似于 delete from $table; 但是 他会比 delete 块很多,这里我们来看一下 它的实现 delete 的时候会逐行进行处理, 打上 删除标记, 然后 由后台任务 进行数据处理 truncate table 的实现 执行 sql 如下 …

计算机图形学入门24:材质与外观

1.前言 想要得到一个漂亮准确的场景渲染效果,不只需要物理正确的全局照明算法,也要了解现实中各种物体的表面外观和在图形学中的模拟方式。而物体的外观和材质其实就是同一个意思,不同的材质在光照下就会表现出不同的外观,所以外观…

HTTP与HTTPS的主要区别

HTTP(超文本传输协议)与HTTPS(超文本传输安全协议)的主要区别在于安全性、数据传输方式、默认使用的端口以及对网站的影响。 一、安全性: HTTP是一种无加密的协议,数据在传输过程中以明文形式发送&#x…

使用myCobot280和OAK-D OpenCV DepthAI摄像头制作一个实时脸部跟踪的手机支架!

引言 由于YouTube和Netflix的出现,我们开始躺着看手机。然而,长时间用手拿着手机会让人感到疲劳。这次我们制作了一个可以在你眼前保持适当距离并调整位置的自动移动手机支架,让你无需用手拿着手机。请务必试试! 准备工作 这次我们…

最新版本Anaconda 2024.06-1安装设置

最新版本Anaconda 2024.06-1安装设置 零、时光宝盒 做自己的光,不需要很亮 太阳很强大,耀眼夺目,给世界带来温暖和阳光。 萤火虫很弱小,若隐若现,却给黑暗中前行的人带来希望。 发光不是强者的权利,我们…

CTF入门知识点

CTF知识点 md5函数 <?php$a 123;echo md5($a,true); ?> 括号中true显示输出二进制 替换成false显示输出十六进制绕过 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c&#xff0c;这个字符串前几位刚好是 or 6 而 Mysql 刚好又会把 …

课题申报书中要用的思路图(技术路线图)30张,超高清!

最近在弄课题申报书的时候&#xff0c;需要画“技术路线图”&#xff1b;和小伙伴们探讨才发现很多人居然不会画这种图&#xff0c;还有很多人在Word里面一点一点拼凑…… 我给大家收集了网上非常热门的30张“技术路线图”&#xff0c;但网上流传的都太模糊了&#xff0c;想看…

Python用户宝典:了解并实现遗传算法

遗传算法是一种基于自然选择的技术&#xff0c;用于解决复杂问题。由于问题很复杂&#xff0c;遗传算法&#xff08;而不是其他方法&#xff09;被用来得出解决问题的合理方案。本文介绍遗传算法的基础知识以及如何用Python来实现。 遗传算法的要素 适应度函数 适应度函数衡…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54~55循环神经网络的从零开始实现和简洁实现

54循环神经网络的从零开始实现 import math import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l import matplotlib.pyplot as plt import liliPytorch as lp# 读取H.G.Wells的时光机器数据集 batch_size, num_steps 32, …

鸿蒙‘ohpm‘ 不是内部或外部命令,也不是可运行的程序-解决方案

&#x1f525; 博客主页&#xff1a; 小韩本韩&#xff01; ❤️ 感谢大家点赞&#x1f44d;收藏⭐评论✍️ 在鸿蒙的DevEco Studio的终端下输入 onpm -v 或者 你需要下载第三方ohpm包的时候提示‘ohpm‘ 不是内部或外部命令&#xff0c;也不是可运行的程序- 主要是因为我们…

节省上千元的SSL多域名证书申请方法

在数字化时代的浪潮中&#xff0c;网络安全问题日益凸显其重要性。 作为网络安全的核心组成部分&#xff0c;SSL证书&#xff08;安全套接层证书&#xff09;在确保数据传输的机密性、完整性和真实性方面发挥着至关重要的作用。 申请便宜SSL证书步骤 1. 登录来此加密网站&am…

2024年特种设备(电梯作业)题库考试题库

1.直接作用式液压电梯轿厢与柱塞&#xff08;缸筒&#xff09;之间的连接应为&#xff08;&#xff09;。 A.刚性连接 B.固定连接 C.法兰连接 D.挠性连接 答案&#xff1a;D 2.正常情况下&#xff0c;当电磁式继电器线圈得电时&#xff0c;其常开触点将&#xff08;&…

【数据结构】08.堆及堆的应用

一、堆的概念及结构 堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。 堆是非线性数据结构&#xff0c;相当于一维数组&#xff0c;有两个直接后继。 如果有一个关键码的集合K { k₀&#xff0c;k₁&#xff0c;k₂ &#…

MySQL数据库树状结构查询

一、树状结构 MySQL数据库本身并不直接支持树状结构的存储&#xff0c;但它提供了足够的灵活性&#xff0c;允许我们通过不同的方法来模拟和实现树状数据结构。具体方法看下文。 数据库表结构&#xff1a; 实现效果 查询的结果像树一样 二、使用 以Catalog数据表&#xff0c…

ctfshow-web入门-文件包含(web82-web86)条件竞争实现session会话文件包含

目录 1、web82 2、web83 3、web84 4、web85 5、web86 1、web82 新增过滤点 . &#xff0c;查看提示&#xff1a;利用 session 对话进行文件包含&#xff0c;通过条件竞争实现。 条件竞争这个知识点在文件上传、不死马利用与查杀这些里面也会涉及&#xff0c;如果大家不熟悉…

照片边框添加 | Python | 免费无广告

演示图 说明 照片边框添加 | Python | 免费无广告 &#x1f505;理论上Mac及Windos都可运行&#xff0c;只需要python环境即可~~~ &#x1f505;目前提供了两种样式&#xff0c;白色边框以及透明边框:P2是原图&#xff0c;P3是白色边框的效果&#xff0c;P4是透明边框效果。 …

python: create Envircomnet in Visual Studio Code 创建虚拟环境

先配置python开发环境 1.在搜索栏输入“>" 或是用快捷组合键ctrlshiftP键 就会显示”>",再输入"python:" 选择已经安装好的python的版本,选定至当前项目中&#xff0c;都是按回车 就可以看到创建了一个虚拟环境的默认的文件夹名".venv" 2 …

动手学深度学习(Pytorch版)代码实践 -循环神经网络-53语言模型和数据集

53语言模型和数据集 1.自然语言统计 引入库和读取数据&#xff1a; import random import torch from d2l import torch as d2l import liliPytorch as lp import numpy as np import matplotlib.pyplot as plttokens lp.tokenize(lp.read_time_machine())一元语法&#xf…

FreeBSD@ThinkPad x250因电池耗尽关机后无法启动的问题存档

好几次碰到电池耗尽FreeBSD关机&#xff0c;再启动&#xff0c;网络通了之后到了该出Xwindows窗体的时候&#xff0c;屏幕灭掉&#xff0c;网络不通&#xff0c;只有风扇在响&#xff0c;启动失败。关键是长按开关键后再次开机&#xff0c;还是启动失败。 偶尔有时候重启到单人…