OSPF链路状态数据库

news2024/11/25 12:52:22

原理概述

OSPF是一种基于链路状态的动态路由协议,每台OSPF路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。

LSA有多种不同的类型,不同类型的LSA的功能和作用是不同的,下面介绍几种常见的LSA。

Type-1 LSA(Router LSA):每台路由器都会产生,用来描述路由器的直连链路状态和开销值。Type-1 LSA 只能在所属区域内部泛洪,不能泛洪到其他区域。

Type-2 LSA(Network LSA):它是由DR产生的,主要用来描述该DR所在网段的网络掩码以及该网段内有哪些路由器。Type-2 LSA只能在所属区域内部泛洪,不能泛洪到其他区域。

Type -3 LSA ( Network Summary LSA ):它是由 ABR ( Area Boundary Router )产生的, ABR 路由器将所连区域的 Type-1和 Type-2 LSA 转换为 Type-3 LSA ,用来描述区域间的路由信息。 Type-3 LSA 可以泛洪到整个 AS ( Autonomous System ,自治域)内部,但不能泛洪到 Totally Stub 区域和 Totally NSSA ( Not-So-Stubby Area )区域。

Type -4 LSA ( ASBR Summary LSA ):它是由 ASBR ( Autonomous System Boundary Router )所在区域的 ABR 产生的,用来描述到 ASBR 的路由。 Type -4 LSA 可以泛洪到整个 AS 内部,但不能泛洪到 Stub 区域、 Totally Stub 区域、 NSSA 区域和 Totally NSSA 区域中。

Type -5 LSA ( AS External LSA ):它是由 ASBR 产生的,用来描述到 AS 外部网络的路由。 Type -5 LSA 可以泛洪到整个 AS 内部,但不能泛洪到 Stub区域、 Totally Stub 区域、 NSSA 区域和 Totally NSSA 区域中

 Type-6 LSA :用于 OSPF 组播。

 Type-7 LSA ( NSSA LSA ):它是由 NSSA 区域或 Totally NSSA 区域的 NSSA ASBR 产生的,用来描述到 AS 外部的路由。 Type-7 LSA 只能出现在所属 NSSA 区域或 Totally NSSA 区域内部

实验目的

理解 OSPF 中不同类型的 LSA 的作用
熟悉 OSPF 中不同类型的 LSA 的泛洪范围
熟悉 LSA 中重要字段的含义 

实验内容

实验拓扑如图所示。本实验模拟了一个企业总部与两个分支机构的网络场景,R2、R3、R5之间的链路属于区域0,R1与R2之间的链路属于区域1,R3与R4之间的链路属于区域2,R1和R4的 Loopback 1接口用来表示以后有合作伙伴加入时的网络。区域1为普通区域,区域2为 NSSA 区域。在区域0中,R5为 DR ,R2为 BDR ,R3为 DRother 。实验过程中会大量地展示和分析链路状态数据库,以加深对不同类型 LSA 的认识和理解。 

实验拓扑 

 

1.基本配置

根据拓扑图进行相应的基本配置,并使用ping命令检测R1与R2之间的连通性。 

 其余直连网段的连通性测试过程在此省略。

2.配置OSPF路由协议

在每台路由器上配置OSPF路由协议,R1与R2之间的链路属于区域1,R3与R4之间的链路属于区域2,R2、R3、R5之间的链路属于区域0,区域2是NSSA区域。

[R1]router id 10.0.1.1

[R1]ospf 10
[R1-ospf-10]area 1
[R1-ospf-10-area-0.0.0.1]net 10.0.12.0 0.0.0.255
[R1-ospf-10-area-0.0.0.1]net 10.0.1.1 0.0.0.0

 

[R2]router id 10.0.2.2
[R2]ospf 10
[R2-ospf-10]area 1
[R2-ospf-10-area-0.0.0.1]net 10.0.12.0 0.0.0.255
[R2-ospf-10-area-0.0.0.1]net 10.0.2.2 0.0.0.0
[R2-ospf-10-area-0.0.0.1]area 0
[R2-ospf-10-area-0.0.0.0]net 10.0.235.0 0.0.0.255

 

[R3]router id 10.0.3.3
[R3]ospf 10
[R3-ospf-10]area 2
[R3-ospf-10-area-0.0.0.2]nssa
[R3-ospf-10-area-0.0.0.2]net 10.0.34.0 0.0.0.255
[R3-ospf-10-area-0.0.0.2]net 10.0.3.3 0.0.0.0
[R3-ospf-10-area-0.0.0.2]area 0
[R3-ospf-10-area-0.0.0.0]net 10.0.235.0 0.0.0.255

 

[R4]router id 10.0.4.4
[R4]ospf 10
[R4-ospf-10]area 2
[R4-ospf-10-area-0.0.0.2]nssa 
[R4-ospf-10-area-0.0.0.2]net 10.0.34.0 0.0.0.255
[R4-ospf-10-area-0.0.0.2]net 10.0.4.4 0.0.0.0

 

[R5]router id 10.0.5.5
[R5]ospf 10

[R5-ospf-10]area 0
[R5-ospf-10-area-0.0.0.0]net 10.0.235.0 0.0.0.255
[R5-ospf-10-area-0.0.0.0]net 10.0.5.5 0.0.0.0

配置完成后,在R2、R5的G0/0/0接口上修改接口优先级的值,使R5成为DR,R2成为BDR。 

[R2-ospf-10]int g0/0/0
[R2-GigabitEthernet0/0/0]ospf dr-priority 50

[R5]int g0/0/0
[R5-GigabitEthernet0/0/0]ospf dr-priority 100 

在R2、R3、R5上重启OSPF进程,下面仅示意了R5的重启方法。

<R5>reset ospf process
Warning: The OSPF process will be reset. Continue? [Y/N]:y 

在R3上查看DR与BDR的选举情况。

 

可以看到,在R1、R3、R5组成的广播网络中,目前R5是DR,R2是BDR。接下来查看每台路由器上的路由表。

 

可以看到,每台路由器都已获得了非直连网络的路由条目。接下来使用ping命令检测连通性 。

 

可以看到,各个网段之间的通信是正常的。 

区域1是普通区域,区域2是NSSA区域,区域1的R1和区域2的R4都需要引入Loopback1接口所连接的外部网络路由。在R1和R4上使用Route-Policy精确匹配Loopback1接口的直连路由并引入OSPF进程。

[R1]acl 2000
[R1-acl-basic-2000]rule permit source 192.168.1.0 0.0.0.255
[R1-acl-basic-2000]route-policy 10 permit node 1
[R1-route-policy]if-match acl 2000
[R1-route-policy]ospf 10
[R1-ospf-10]import-route direct route-policy 10

 

[R4]acl 2000
[R4-acl-basic-2000]rule permit source 172.16.1.0 0.0.0.255
[R4-acl-basic-2000]route-policy 10 permit node 1
[R4-route-policy]if-match acl 2000
[R4-route-policy]ospf 10
[R4-ospf-10]import-route direct route-policy 10

 配置完成后,在R5上查看由R1和R4引入的两条路由。

可以看到,在R5的路由表中,这两条路由都显示为O_ASE,且优先级与开销也都相同,不同之处是这两条路由的下一跳,因为它们是由不同的路由器发送给R5的。

3.查看Type-1 LSA, Type-2 LSA,Type-3 LSA

在区域0的R5上查看LSDB

可以看到,R5的 LSDB 中共有5种 LSA ,它们分别是 Router LSA (或称 Type-1 LSA )、 Network LSA (或称 Type-2 LSA )、Sum-Net LSA (或称 Type-3 LSA , Network Summary LSA )、 Sum- Asbr LSA (或称 Type-4 LSA , ASBR Summary LSA )和 External LSA (或称 Type-5 LSA , AS External LSA )。 

在R5上查看 Router-ID 为10.0.2.2产生的 Router LSA 的详细信息。

 下面解释一下显示信息中的部分参数的含义。
 ①Type :显示信息中, Type 表示了 LSA 的类型,这里表示的是 Router LSA 。不同类型的 LSA 的作用和泛洪范围是不相同的。 Router LSA 描述了路由器的直连链路或接口,泛洪范围为所在区域的内部,以使本区域的其他路由器了解其直连链路或接口的状态信息。
 ②Ls id :对于 Router LSA , Ls id 就是产生该 Router LSA 的路由器的 Router-ID 。
 Adv rtr : Adv rtr 描述了 LSA 是由哪台路由器产生的。对于 Router LSA 来讲, Adv rtr 就是产生该 Router LSA 的路由器的 Router-ID 。
 ④Seq #:每一条 LSA 都会维护一个 Seq #(序列号),产生这条 LSA 的路由器默认会以30s的周期泛洪这条 LSA ,每次泛洪时,序列号就加1LSA 的序列号越大,表明这条 LSA 越新。
 ⑤Chksum : chksum (校验和)用来校验 LSA 的完整性。所有的 LSA 都保存在路由器的 LSDB 中,每5min会计算一次。如果路由器收到了同一条 LSA ,且序列号相同,则会比较它们的校验和,校验和越大就被认为相应的 LSA 越新
 Ls age : Ls age 是指 LSA 的老化时间,用来表示 LSA 已经存活了多长时间,最大值为3600s。当一台路由器产生一条 LSA 的时候,路由器会将 LSA 的老化时间设置为0。 LSA 在产生之后,无论是停留在路由器的 LSDB 内,还是在传递过程之中,老化时间都会不断增加。为了防止因 LSA 的过期而造成路由回馈,路由器会每隔30min泛洪自己产生的 LSA 。若序列号与校验和的比较都不能确定出最新的 LSA 时,则会比较老化时间。在 LSDB 中,如果老化时间相差大于15min以上,则 Ls age 的值越小,说明 LSA 越新;如果相差在15min内,则认为两条 LSA 是一样的

在上面的显示信息中, Link count 以上的参数信息通常被称为 LSA 头部信息 Link count 及以下部分为具体的链路描述信息。 Link count 标识了这条 LSA 描述的链路信息的数量,对于 P-2-P 链路类型, Link ID 是指链路上邻居接口的 IP 地址;对于 TransNet 链路类型, Link ID 是指 DR 接口的 IP 地址。 Data 是指自身接口的 IP 地址, Link Type 是指接口的链路类型, Metric 是指路由器自己到达这条链路的 Cost 值。需要说明的是, OSPF 协议会把 Broadcast 和 NBMA 这两种具有多路访问能力的网络都认为是 TransNet 网络。

从上得知,R2的 Router LSA 描述了自己连接到了某个 TransNet 网络,网络的 DR 接口的 IP 地址为10.0.235.5(R5),自己使用10.0.235.2连接到该网络中,且到达这个网络的 Cost 值为1

Network LSA 是由 DR 产生的,它的主要作用是描述 TransNet 网络的掩码信息和连接到 TransNet 网络的路由器的信息。在多路访问网络中,每台路由器都产生 Network LSA 是没有必要的,因为这会导致 Network LSA 的重复。
R5是 TransNet 网络的 DR ,在R5上查看它产生和发送的 Network LSA 的详细信息。 

可以看到,这条 Network LSA 说明了 TransNet 网络的掩码为255.255.255.0,连接到这个 TransNet 网络的路由器有10.0.5.5(R5)、10.0.2.2(R2)、10.0.3.3(R3)。 Network LSA 中没有携带路径的开销,原因是 Router LSA 已经描述了自己到 TransNet 网络的 Cost 值。

在R2、R3、R5上查看区域0的 LSDB 。

 

可以发现,R2、R3、R5的 LSDB 中区域0的 Router LSA 和 Network LSA 是完全一样的。

Router LSA 和 Network LSA 可以完全描述本区域的网络拓扑,但这些 LSA 不能泛洪到其他区域。当 OSPF 网络包含多个区域时,通过 Router LSA 和 Network LSA 就无法进行区域间路由的计算了。区域间路由的计算需要利用 Sum-Net LSA 来实现, ABR 路由器会将自己相连区域的 Router LSA 和 Network LSA 转换为 Sum-Net LSA ,然后泛洪到其他区域。

R2同时连接了区域0和区域1,所以是一台 ABR 路由器。查看R2的 LSDB 。

可以看到,R2的区域0中有一条 LinkState ID 为10.0.12.0的 Sum-Net LSA ,它的 AdvRouter 为10.0.2.2。网段10.0.12.0/24本是属于区域1的网络,现在被 ABR 路由器R2转换为 Sum-Net LSA 并泛洪到了区域0中。10.0.235.0/24本是属于区域0的网络,现在被 ABR 路由器R2转换为 Sum- Net LSA 并泛洪到了区域1中。实际上, Sum-Net LSA 是 ABR 利用自己相连区域的 Router-LSA 和 Network-LSA 来计算得到的路由信息的。

在R2上查看 LinkState ID 为10.0.12.0的这条 Sum-Net LSA 的详细信息。

可以看到,这条 LSA 的 Type 为 Sum-Net , Ls id 表明了目的网络地址为10.0.12.0,Net mask 表明了目的网络的掩码为255.255.255.0, Metric 表明了 ABR 路由器R2去往目的网络的 Cost 值为1。

在R5上查看 LSDB ,并查看路由表中关于10.0.12.0/24的路由信息。 

可以看到, R5 的 LSDB 中存在10.0.12.0这条 Sum-Net LSA ,R5的路由表中关于10.0.12.0/24的这条路由信息表明R5去往10.0.12.0/24Cost 为2。R5通过这条 Sum-Net LSA 得知网络中存在10.0.12.0/24网段,这个网段的 AdvRouter 为10.0.2.2(R2),R2自已到达10.0.12.0/24 Cost 为1。R5和R2同属于区域0,所以R5可以通过 Router LSA 和 Nerwork LSA 计算出自己到R2Cost 为1,因此,R5可以计算出自己到10.0.12.0/24 Cost 值为1+1=2。

区域间的路由是根据 Sum-Net LSA 并结合 Router LSA 及 Network-LSA 计算出来的。对于某个区域的一台 OSPF 路由器来说,它无需了解其他区域的链路状态信息,但可以通过 Sum-Net LSA 并结合 Router LSA 及 Network-LSA 计算出区域间路由;计算区域间路由时,采用的不再是链路状态算法,而是距离矢量算法。 

在R2上查看 LinkStateID 为10.0.34.0/24这条 LSA 的信息。 

可以看到,10.0.34.0/24是属于区域2的网络, ABR 路由器R3将关于10.0.34.0/24的路由信息以 Sum-Net LSA 的方式通告进了区域0, Cost 为1。然后, ABR 路由器R2又继续将此信息以 Sum- Net LSA 的方式通告进了区域0。
对于 ABR 来说,如果在自己相连的某个区域的 LSDB 中存在某条 Sum-Net LSA ,并且该 Sum-Net LSA 的 AdvRouter 不是自己的 Router-ID 时,就会将这条 Sum-Net LSA 的 AdvRouter 修改为自己的 Router-ID ,并重新计算自己到达这条 Sum-Net LSA 的 Cost 值,然后将之泛洪到与自己相连的其他区域中。

4.查看 Type-4 LSA 和 Type-5 LSA 

路由器可以通过 Router LSA 和 Network LSA 计算区域内的路由,可以通过 Sum-Net LSA 并结合 Router LSA 和 Network LSA 计算区域间的路由,可以通过 Sum-Asbr LSA 和 External LSA 计算 AS 外部的路由

R1的 Loopback 1是外部路由,被 ASBR 路由器R1引入到了 OSPF 网络中。查看R1的 LSDB 。

 可以看到,R1的 LSDB 中存在一条 Type 为 External , LinkState ID 为192.168.1.0,
 AdvRouter 为10.0.1.1的 LSA 。在R1上查看这条 LSA 的具体信息。

可以看到,这条 LSA 的 Type 是 External , AdvRouter 为10.0.1.1(R1),这条 LSA 实际上是一条目的网络为192.168.1.0/24的 AS 外部路由,显示信息中的 E Type ( External Type )的值为2
 External LSA 可以在整个 AS 内部泛洪(但不能泛洪到 Stub 区域、 Totally Stub 区域、 NSSA 区域和 Totally NSSA 区域中),在泛洪过程中其各个参数不会被改变。

查看R2、R3、R4、R5的 LSDB 中是否也存在这条 LSA 。

 

 

从上面的显示信息可以看到,R2、R3、R5的 LSDB 中都存在这条 External LSA ,而且 AdvRouter (10.0.1.1)等参数信息没有任何变化。需要注意的是,R4的 LSDB 中没有这条 External LSA ,这是因为R4处于 NSSA 区域中而 External LSA 是不允许进入 NSSA 区域的

R5通过 Link id 为192.168.1.0的 External LSA 得知,从自己去往192.168.1.0/24是可以通过10.0.1.1(R1)到达的,并且知道从R1去往192.168.1.0/24的 Cost 为1。然而,R5并不知道从自己去往 ASBR 路由器R1的路由及 Cost ,所以R5还无法计算出从自己到达外部网络192.168.1.0/24的路由及 Cost 。在 OSPF 协议中, Sum - Asbr LSA 是用来描述去往 ASBR 的路由信息的
查看R5的 LSDB 中 LinkState ID 为10.0.1.1的 Sum- Asbr LSA 的具体信息。 

可以看到,这条 Sum - Asbr LSA 的 AdvRouter 是 ABR 路由器R2(10.0.2.2),并且表明了从 ABR 路由器R2到 ASBR 路由器R1(10.0.1.1)的 Cost 值为1。

在R5上使用 display ospf abr-asbr 命令查看到达 ABR 和 ASBR 的 Cost 值。 

可以看到,从R5到达 ABR 路由器R2的 Cost 值为1,从R5到达 ASBR 路由器R1的 Cost 值为2。由此可见,R5其实是通过 Router LSA 和 Network LSA 先计算出到达 ABR 路由器R2的 Cost 值,然后加上 Sum-Asbr LSA 所表示的从 ABR 路由器R2到达 ASBR 路由器 RI 的 Cost 值,最终得出从自己到达 ASBR 路由器R1的 Cost 值。 

Sum-Net LSA 和 Sum-Asbr LSA 的相同点是它们都由 ABR 产生,并且其 AdvRouter 在泛洪过程中会作相应的改变,不同点在于 Sum-Net LSA 是用来计算区域间的路由的,而 Sum-Asbr LSA 是用来计算到达 ASBR 的路由的。如果网络中不存在 ASBR ,那就不会产生 Sum- Asbr LSA ,这也说明有 External LSA 存在时,才会有 Sum- Asbr LSA
 

在 RI 上使用 undo import-route 取消路由的引入。 

[R1]ospf 10
[R1-ospf-10]undo import-route direct

在R5上查看 LSDB 。 

可以看到, LinkStateID 为192.168.1.0的 External LSA 消失了, LinkState ID 为10.0.1.1的 Sum- Asbr LSA 也随之消失了。

5.查看Type-7 LSA

NSSA 区域是不允许 External LSA 存在的,但 NSSA 区域允许通过 import - route 命令引入外部路由,那么如何来描述在 NSSA 区域中的 AS 外部路由呢? NSSA 区域引入的外部路由不能以 External LSA 的形式出现,取而代之的是使用 NSSA LSA 来描述 NSSA 区域中的 AS 外部路由,且 NSSA LSA 只能出现在 NSSA 区域中。 NSSA LSA 由 NSSA 区域的 NSSA ASBR 产生。

R4为 NSSA 区域的 ASBR ,查看R4的 LSDB 。

可以看到,R4为外部路由172.16.1.0产生了相应的 NSSA LSA 。

在R4上查看这条LSA 的详细信息。

可以注意到, NSSA LSA 的参数信息基本上和 External LSA 相同。
NSSA  LSA是特殊类型的 LSA ,只会出现在 NSSA 区域中,不能泛洪到其他任何区域,那么其他区域的路由器又是如何计算去往 NSSA LSA 所表示的外部网络的路由呢?原来, NSSA 区域的 ABR 会将 NSSA LSA 转换为 External LSA ,并泛洪到其他区域。
R3为 NSSA 区域的 ABR 路由器,在R3上查看 LSDB 信息。

可以看到,由10.0.4.4产生的 NSSA LSA 被R3转换成了 External LSA ,并泛洪到其他区域。 

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

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

相关文章

YOLOv8的训练、验证、预测及导出[目标检测实践篇]

这一部分内容主要介绍如何使用YOLOv8训练自己的数据集&#xff0c;并进行验证、预测及导出&#xff0c;采用代码和指令的两种方式&#xff0c;参考自官方文档&#xff1a;Detect - Ultralytics YOLOv8 Docs。实践篇不需要关注原理&#xff0c;只需要把流程跑通就行&#xff0c;…

【Mac】LRTimelapse 6(延迟摄影编辑渲染软件) v6.5.4安装汉化教程

软件介绍 LRTimelapse 6 for Mac是一款专业的时间轴摄影和时间堆栈软件&#xff0c;它被广泛用于创建流畅的时间轴视频&#xff0c;适用于风光摄影、延时摄影和其他类型的摄影项目。它与Adobe Lightroom和Adobe Camera Raw完美集成&#xff0c;可以在Lightroom中编辑和处理RAW…

iOS xib布局

1.多次启动发现启动图和截屏的图片不一致,设置launch storyboard 不能到顶部 https://blog.csdn.net/u011960171/article/details/104053696/ 2.multipiler是比例&#xff0c;需要控制顺序1.视图&#xff0c;2父视图&#xff0c;选择宽度比例&#xff0c;默认是1 3.Aspect R…

如何开发自己的深度学习优化算法

深度学习优化算法 如何开发自己的深度学习优化算法理解优化算法的基础**核心组件**&#xff1a; 设计自定义优化算法的步骤**步骤 1: 定义问题和目标****步骤 2: 研究现有算法****步骤 3: 开发初步想法****步骤 4: 创建原型****步骤 5: 系统测试与优化** 关键建议 如何开发自己…

WMS仓储管理系统库存分类的详细讲解

在当今日益复杂和快速变化的商业环境中&#xff0c;仓库管理成为了一个企业不可或缺的关键环节。WMS仓储管理系统解决方案凭借其自动化和信息化的优势&#xff0c;为企业带来了革命性的改变&#xff0c;特别是在库存分类方面。接下来&#xff0c;我们将深入探讨WMS仓储管理系统…

下载源代码并交叉编译riscv FreeBSD系统和内核

RISCV系统曾经让人神秘到无法接触&#xff0c;交叉编译更是只有耳闻&#xff0c;现在随着RISCV的普及&#xff0c;它们神秘的面纱已经被慢慢揭开。 交叉编译作为RISCV系统中的一个重要环节&#xff0c;也随着RISCV的普及而变得更加容易理解和操作。交叉编译允许开发者在一个平…

AI数据中心网络技术选型,InfiniBand与RoCE对比分析

InfiniBand与RoCE对比分析&#xff1a;AI数据中心网络选择指南 随着 AI 技术的蓬勃发展&#xff0c;其对数据中心网络的要求也日益严苛。低延迟、高吞吐量的网络对于处理复杂的数据密集型工作负载至关重要。本文分析了 InfiniBand 和 RoCE 两种数据中心网络技术&#xff0c;帮助…

4步快速配置Java、MySQL、Maven环境(windows)

每次入职一家新公司或者用一台其他的临时电脑或者新电脑时都要重新配置Java开发环境&#xff0c;很麻烦&#xff0c;因此我在这里记录一下快速配置环境的方式&#xff0c;四步搞定&#xff01;此处以win为操作系统进行讲解。 第一步&#xff1a;下载链接 下载链接&#xff1a…

Poisson_Image-Editing

1.算法介绍 快速泊松图像编辑&#xff08;Fast Poisson Image Editing&#xff09;是一种图像处理算法&#xff0c;用于将源图像的某个区域无缝地嵌入到目标图像中。它基于泊松方程的性质&#xff0c;通过求解离散化的泊松方程来实现图像的融合。该算法的核心思想是&#xff0c…

SpringBoot中这样用ObjectMapper

每次new一个单例化个性化配置小结 你要说他有问题吧&#xff0c;确实能正常执行&#xff1b;可你要说没问题吧&#xff0c;在追求性能的同学眼里&#xff0c;这属实算是十恶不赦的代码了。 首先&#xff0c;让我们用JMH对这段代码做一个基准测试&#xff0c;让大家对其性能有个…

详细分析Mybatis与MybatisPlus中分页查询的差异(附Demo)

目录 前言1. Mybatis2. MybatisPlus3. 实战 前言 更多的知识点推荐阅读&#xff1a; 【Java项目】实战CRUD的功能整理&#xff08;持续更新&#xff09;java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09; 本章节主要以Demo为例&#xff…

安卓自动化脚本制作流程详解!

在移动应用日益普及的今天&#xff0c;安卓自动化脚本制作成为了开发者提高工作效率、减少重复劳动的重要手段&#xff0c;本文将详细介绍安卓自动化脚本的制作流程&#xff0c;并通过五段源代码的实例&#xff0c;帮助读者更好地理解和掌握这一过程。 一、安卓自动化脚本制作…

407627-60-5,AF647 NHS酯一种高亮度的红色荧光试剂

一、产品概述 中文名称&#xff1a;Alexa Fluor 647活化酯&#xff0c;AF647 NHS酯&#xff0c;AF 647 琥珀酰亚胺酯 英文名称&#xff1a;AF647 NHS&#xff0c;Alexa Fluor 647 NHS ester CAS号&#xff1a;1620475-28-6&#xff0c;407627-60-5&#xff0c;1453856-34-2 …

(1day)致远M3 log 敏感信息泄露漏洞(Session)复现

前言 系统学习web漏洞挖掘以及项目实战也有一段时间了,发现在漏洞挖掘过程中难免会碰到一些历史漏洞,来帮助自己或是提高自己挖洞和及时发现漏洞效率,于是开始创建这个专栏,对第一时间发现的1day以及历史漏洞进行复现,来让自己更加熟悉漏洞类型以及历史漏洞,方便自己在后续的项…

【Linux】17. 进程间通信 --- 管道

1. 什么是进程间通信(进程间通信的目的) 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。 通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了…

上市公司财务困境模型​MertonDD、OScore、RLPM、ZScore四种模型​(1992-2022年)

01、数据介绍 上市公司财务困境模型是用于预测和评估上市公司是否可能陷入财务困境的一种模型。这个模型通常基于一系列的财务比率和其他相关变量&#xff0c;通过统计分析方法来构建。​ 数据名称&#xff1a;上市公司财务困境模型MertonDD、OScore、RLPM、ZScore五种模型 …

62-USB转JTAG or SPI电路设计

视频链接 USB转JTAG or SPI电路设计01_哔哩哔哩_bilibili USB 转 JTAG or SPI电路设计 第07课---USB转串口电路设计第 34&#xff5e;40课---USB硬件电路设计 第22课---SPI Flash电路设计 第31课---JTAG电路设计&#xff08;JLINK&XILINX&ALTERA&#xff09; 第…

CSS学习笔记之基础教程(一)

1、CSS语法 CSS 规则集&#xff08;rule-set&#xff09;由选择器和声明块组成&#xff1a; 选择器指向您需要设置样式的 HTML 元素。 声明块包含一条或多条用分号分隔的声明。 每条声明都包含一个 CSS 属性名称和一个值&#xff0c;以冒号分隔。 多条 CSS 声明用分号分隔…

工厂模式应用实例

引言 设计模式概念 设计模式&#xff08;Design Pattern&#xff09;的官方概念可以表述为&#xff1a;在软件设计中&#xff0c;设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它是针对特定问题或特定场景的解决方案&#xff0c;是一种经过…

flutter报错

组件相关 type ‘List’ is not a subtype of type ‘List’ children: CardList.map((item) > Container( 加上 *** < Widget>*** 正常 type ‘(dynamic, dynamic) > Container’ is not a subtype of type ‘(CardType) > Widget’ of ‘f’ children: CardL…