各种场景的ARP攻击描述笔记(超详细)

1、ARP报文限速 

        上一章我们说过ARP报文也是需要上送CPU进行处理的协议报文,如果设备对收到的大量ARP报文全部进行处理,可能导致CPU负荷过重而无法处理其他业务。因此,在处理之前需要对ARP报文进行限速,以保护CPU资源。

1.根据源MAC地址或源IP地址进行ARP限速

        当设备检测到某一个用户在短时间内发送大量的ARP报文,可针对该用户配置基于源MAC地址或源IP地址的ARP报文限速。在1s时间内,如果该用户的ARP报文数目超过设定阈值(全局配置,适用于所有接口),则丢弃超出阈值部分的ARP报文。

  • 根据源MAC地址进行ARP报文限速时,如果指定MAC地址,则针对指定源MAC地址的ARP报文,根据限速值进行限速;如果不指定MAC地址,则针对每一个源MAC地址的ARP报文,根据限速值进行限速。(仅S5720EI、S5720HI、S6720EI、S6720HI和S6720S-EI子系列,以及框式系列交换机支持该功能
  • 根据源IP地址进行ARP报文限速时,如果指定IP地址,则针对指定源IP地址的ARP报文,根据限速值进行限速;如果不指定IP地址,则针对每一个源IP地址的ARP报文,根据限速值进行限速。

根据任意源MAC进行限速

SW1
system
sysname SW1
arp speed-limit source-mac maximum 100 //对任意源MAC限速

根据指定源MAC进行限速

arp speed-limit source-mac 0003-0f8c-1011 maximum 100 //对指定源MAC进行限速

根据任意源IP进行限速

arp speed-limit source-ip maximum 100 //对任意源IP进行限速

根据指定源IP进行限速

arp speed-limit source-ip 1.1.1.1 maximum 100

2.针对全局、VLAN和接口的ARP报文限速
        设备支持在全局、VLAN和接口下配置ARP报文的限速值和限速时间,接口下的配置优先级最高,其次是VLAN下的配置,最后是全局的配置。

配置基于全局的ARP报文限速

arp anti-attack rate-limit enable

配置基于VLAN的ARP报文限速

vlan 1
arp anti-attack rate-limit enable

配置基于接口的ARP报文限速

interface g0/0/1
arp anti-attack rate-limit enable

我们也可以配置ARP报文的限速时间以及指定持续丢弃超过ARP报文限速值的接口下收到的所有ARP报文的时长。

arp anti-attack rate-limit 200 block timer 200

我们还可以配置告警阈值,当丢弃的ARP报文数超过告警阈值时,设备将产生告警信息。

arp anti-attack rate-limit alarm enable
arp anti-attack rate-limit alarm threshold 200

        另外,如果设备的某个接口在ARP报文限速时间内接收到的ARP报文数目超过了设定阈值(ARP报文限速值),则丢弃超出阈值部分的ARP报文,并在接下来的一段时间内(即阻塞ARP报文时间段)持续丢弃该接口下收到的所有ARP报文。

  • 针对全局的ARP报文限速;在设备出现ARP攻击时,限制全局处理的ARP报文数量。
  • 针对VLAN的ARP报文限速;在某个VLAN内的所有接口出现ARP攻击时,限制处理收到的该VLAN内的ARP报文数量,配置本功能可以保证不影响其他VLAN内所有接口的ARP学习。
  • 针对接口的ARP报文限速;在某个接口(二层或三层物理接口)出现ARP攻击时,限制处理该接口收到的ARP报文数量,但不影响其他接口的ARP学习。

2、ARP Miss消息限速

        如果网络中有用户向设备发送大量目标IP地址不能解析的IP报文(即路由表中存在该IP报文的目的IP地址所对应的路由表项,但设备上却没有该路由表项下一跳对应的ARP表项),这样就没办法对报文进行帧封装了,于是会导致设备触发大量的ARP Miss消息来解析下一跳IP地址对应的MAC地址。

        这种触发ARP Miss消息的IP报文(即ARP Miss报文)会被上送到CPU进行处理,设备会根据ARP Miss消息生成和下发大量临时ARP表项(这类表项中的MAC地址的显示的是incomplete)并向目的网络发送大量的ARP请求报文,这样就增加了设备CPU的负担,同时严重消耗目的网络的带宽资源。

        为了避免这种IP报文攻击所带来的危害,设备提供了如下几类针对ARP Miss消息的限速功能(其实与上节介绍的针对ARP报文的限速功能即配置方法都差不多)。

1.基于源IP地址进行ARP Miss消息限速

        当设备检测到某一源IP地址的IP报文在1s内触发的ARP Miss消息数量超过了ARP Miss消息限速值,就认为此源IP地址存在攻击。此时如果设备对ARP Miss报文的处理方式是block(阻止方式),设备会丢弃超出限速值部分的ARP Miss报文,并下发一条ACL来丢弃该源IP地址的后续所有ARP Miss报文;如果是none-block方式,设备只会通过软件限速的方式丢弃超出限速值部分的ARP Miss报文。

        根据源IP地址进行ARP Miss消息限速,如果指定了IP地址,则针对指定源IP地址的ARP Miss消息,根据限速值进行限速;如果不指定IP地址,则针对任意源IP地址的ARP Miss消息,根据限速值进行限速。仅S5720EI、S5720HI、S5720S-SI、S520SI、S5730-EI、S5730SI、S6720EI、S6720HI、S6720LI、S6720-EI、S6720S-LI、S6720S-SI和S6720S,以及框式系列交换机支持该功能。


根据任意源IP进行ARP Miss消息限速

arp-miss speed-limit source-ip maximum 100

根据指定源IP进行ARP Miss消息限速并设置处理方式

arp-miss speed-limit source-ip 1.1.1.1 maximum 100 block timer 200

2.针对全局、VLAN和接口的ARP Miss消息限速

        设备支持在全局、VLAN和接口下配置ARP Miss消息限速。这3个位置的配置的有效顺序为接口优先,VLAN其次,最后为全局。(与ARP报文限速一致)

配置基于全局的ARP Miss消息限速功能

arp-miss anti-attack rate-limit enable

配置基于VLAN的ARP Miss消息限速功能

vlan 1
arp-miss anti-attack rate-limit enable

 配置基于接口的ARP Miss消息限速功能

interface g0/0/1
arp-miss anti-attack rate-limit enable

同样我们也可以配置告警信息

arp-miss anti-attack rate-limit alarm enable
arp-miss anti-attack rate-limit alarm threshold 200
  • 针对全局的ARP Miss消息限速:在设备出现目标IP地址不能解析的IP报文攻击时,限制全局处理的ARP Miss消息数量。
  • 针对VLAN的ARP Miss消息限速:在某个VLAN内的所有接口出现目标IP地址不能解析的IP报文攻击时,限制处理该VLAN内报文触发的ARP Miss消息数量,配置本功能可以保证不影响其他VLAN内所有接口的IP报文转发。
  • 针对接口的ARP Miss消息限速:在某个接口(同样可以是二层或三层物理接口)出现目标IP地址不能解析的IP报文攻击时,限制处理该接口收到的报文触发的ARP Miss消息数量,配置本功能可以保证不影响其他接口的IP报文转发。

3.配置临时ARP表项的老化时间

        当IP报文触发ARP Miss消息时,设备会根据ARP Miss消息生成临时ARP表项,并且向目的网段发送ARP请求报文。临时ARP表项有老化时间,而且可以基于三层接口(可以时VLANIF接口或三层物理接口)手动配置。

        1.在临时ARP表项老化时间范围内:

  • 设备收到ARP应答报文前,匹配临时ARP表项的IP报文将被丢弃并且不会触发ARP Miss消息;
  • 设备收到ARP应答报文后,则生成正确的ARP表项来替换临时ARP表项。

        2.当老化时间超时过后,设备会清楚临死ARP表项。此时如果设备转发IP报文匹配不到对应的ARP表项,则会重新触发ARP Miss消息并生成临时ARP表项,如此循环重复。

        当判断设备收到攻击时,可以增大临时ARP表项的老化时间,减小设备ARP Miss消息的触发频率,从而减小攻击对设备的影响。

配置临时ARP表项的老化时间

int vlan 1
arp-fake expire-time 100

3、ARP表项严格学习

         如果大量用户在同一时间段内向设备发送大量的ARP报文,或者攻击者伪造正常用户的ARP报文发送给设备,则会造成如下伤害。

  • 设备因处理大量ARP报文而导致CPU负荷过重,同时设备学习大量的ARP报文可能导致设备ARP表项资源被无效的ARP表项耗尽,造成合法用户的ARP报文不能继续生成ARP表项,导致用户无法正常通信。
  • 伪造的ARP报文将错误地更新设备ARP表项,导致合法用户无法正常通信。

        为避免上述危害,可以在网关设备上配置ARP表项严格学习功能。配置该功能后,只有本设备主动发送的ARP请求报文的应答报文才能触发本设备学习ARP,其他设备主动向本设并发送的ARP报文不能触发本设备学习。这样,可以拒绝大部分的ARP报文攻击。

        ARP表项严格学习功能可以在全局和三层接口(三层VLANIF接口或三层物理接口)视图下进行配置。如果全局使能该功能,则设备的所有三层接口均进行ARP表项严格学习;如果接口下使能该功能,则只有该三层接口进行ARP表项严格学习,接口下配置的优先级高于侵权剧配置的优先级。

全局下配置ARP表项严格学习

arp learning strict

接口下配置ARP表项严格学习

int vlan 1
arp learning strict force-enable

4、ARP表项限制

        ARP表项限制功能应用在网关设备上,可以限制设备的某个接口(二层或三层物理接口、三层以太网子接口和VLANIF接口都可以)学习动态ARP表项的数目。

接口下配置ARP表项限制

interface g0/0/1
arp-limit vlan 1 maximum 100

VLANIF接口下配置ARP表项限制

interface vlanif 1
arp-limit maximum 100

        默认情况下,接口可以学习的动态ARP表项数目规格与全局的ARP表项规格保持一致。当部署完ARP表项限制功能后,如果指定接口下的动态ARP表项达到了允许学习的最大数目,将不再允许该接口继续学习动态ARP表项,以保证当严格接口所接入的某一用户主机发起ARP攻击时,不会导致整个设备的ARP表资源都被耗尽。


5、禁止接口学习ARP表项

        当某接口(仅可是VLANIF接口)下学习了大量动态ARP表项时,出于安全考虑,可以通过配置禁止该接口的动态ARP表项学习功能,以防止该接口下所接入的用户主机发起ARP攻击使整个设备的ARP表资源都被耗尽。

        禁止接口学习ARP表项功能和ARP表项严格学习功能配置起来使用,可以使设备对接口下动态ARP的学习进行更加细致的控制。

VLANIF接口下配置禁止ARP学习表项

interface vlanif 1
arp learning disable

6、ARP表项固化

        为了防止网关欺骗攻击,可在网关上配置ARP表项固化功能,这样网关设备在第一次学习到某IP地址的ARP表项以后,不再允许用户更新此ARP表项,或只允许更新此ARP表项的部分信息,或者通过发送单播ARP请求报文的方式对更新ARP条目的报文进行合法性确认。

        华为设备提供了以下3种ARP表项固化模式,且是互斥关系。

  • fixed-mac方式:这种固化模式是以报文中源MAC地址与ARP表中现有对应IP地址表项中的MAC地址是否匹配为审查的关机依据。当这两个MAC地址不匹配时,则直接丢弃该ARP报文;如果这两个MAC地址是匹配的,但是报文中的接口或VLAN信息与ARP表中对应表项不匹配时,则可以更新对应ARP表项中的接口和VLAN信息。这种模式适用于静态配置IP地址,但网络存在冗余链路(这样可以改变出接口和VLAN)的情况。当链路切换时,ARP表项中的接口信息可以快速改变。
  • fixed-all方式:这种固化方式是仅当ARP报文对应的MAC地址、接口、VLAN信息和ARP表中对应表项的信息完全匹配时,设备才可以更新ARP表项的其他内容。这种模式匹配最严格,适用于静态配置IP地址,网络没有冗余链路(这样不可以改变出接口和VLAN),且同一IP地址用户不会从不同接口接入的情况。
  • send-ack方式:这种模式是当设备收到严格涉及MAC地址、VLAN、接口修改的ARP报文时,不会立即更新ARP表项,而是向待更新的ARP表项现有MAC地址对应的用户发送一个单播的ARP请求报文,再根据用户的确认结果决定是否更新ARP表项中的MAC地址、VLAN和接口信息。此方式适用于动态分配IP地址,有冗余链路的网络。

        可以在全局和VLANIF接口下配置ARP表项固化功能。全局配置该功能后,缺省设备上所有VLNAIF接口的ARP表项固化功能均已使能。当全局和VLANIF接口下同时配置了该功能时,VLNAIF接口下的配置优先生效。

全局下配置ARP表项固化

arp anti-attack entry-check fixed-mac enable

接口下配置ARP表项固化

int vlan 1
arp anti-attack entry-check fixed-mac enable

7、动态ARP检测(DAI)

         中间人攻击(Man-int-the-middle attack)是常见的ARP欺骗攻击防止之一。所谓"中间人攻击"是指攻击者与通信的两端分别创建独立的联系,并交换其所收到的数据,使通信的两端认为与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通信双方的通话并插入新的内容。

PC2与PC3在互相访问时都会先将报文转发给PC1,在由PC1转发给对方,这样数据在交互过程中都会先经过PC1。

        为了防御中间人攻击,避免合法用户的数据被中间人窃取,可以使能DAI(Dynamic ARP Inspection,动态ARP检测)功能,仅适用于启用了DHCP Snooping的场景。这样,设备会将ARP报文中的源IP、源MAC、接口、VLNA信息和DHCP Snooping中的绑定表(或者手动添加静态绑定表)信息进行比较,如果匹配,说明发送该ARP报文的用户是合法用户,允许此用户的ARP报文通过,否则就认为是攻击,丢弃该ARP报文。

注意:设备使能DHCP Snooping功能后,当DHCP用户上线时设备会自动生成DHCP Snooping绑定表。对于静态配置IP地址的用户,设备不会生成DHCP Snooping绑定表,所以需要手动添加静态绑定表。可用user-bind static命令配置IP地址、MAC地址、接口和内/外层VLNA的静态用户绑定表项。

        如果希望仅匹配绑定表中某一项或某两项内容的特俗ARP报文也能够通过,则可用配置对ARP报文进行绑定表匹配检查时只检查某一项或某两项内容。如果希望设备在丢弃不匹配绑定表的ARP报文数量较多时能够以告警的方式提醒网络管理员,则可以使能动态ARP检查丢弃报文告警功能。这样,当丢弃的ARP报文数超过告警阈值时,设备将产生告警信息。

        可在接口(仅限二层物理接口,Eth-Trunk接口和端口组)视图或VLAN视图下配置动态ARP检查功能,在接口视图下使能时,对该接口收到的所有ARP报文进行绑定表匹配检查:在VLAN视图下使能时,对加入该VLAN的接口收到的属于该VLAN的ARP报文进行绑定表匹配检查。

接口或VLAN上使能动态ARP检查功能

interface g0/0/1
arp anti-attack check user-bind enable
vlan 1
arp anti-attack check user-bind enable

接口或VLAN上使能动态ARP部分检查功能

interface g0/0/1
arp anti-attack check user-bind check-item ip-address
vlan 1
arp anti-attack check user-bind check-item ip-address

默认情况下对ARP报文的IP地址、MAC地址和接口信息都进行检查 

接口使能动态ARP告警功能

interface g0/0/1
arp anti-attack check user-bind alarm enable
arp anti-attack check user-bind alarm threshold 200

8、ARP防网关冲突

        如果攻击者仿冒网关,在局域网内部发送源IP地址是网关IP地址的ARP报文,就会导致局域网内其他用户主机的ARP表记录错误的网关地址映射关系。这样,其他用户主机就会把发往网关的流量均发送给了攻击者,攻击者可轻易地窃取听到他们发送的数据内容,并且最终会造成这些用户主机无法访问网络。这就是我们最常见的一种ARP攻击类型--网关欺骗ARP攻击

        

我们将SW1的VLAN1的IP设置为192.168.1.254,然后让PC1去访问192.168.1.254,PC1就会形成关于这个地址的ARP表项

此时我们再将AR1的接口配置为192.168.1.254/24就会发送一份免费ARP,则会刷新PC1的ARP表项

        攻击者B将伪造网关的ARP报文发送给用户A,使用户A误以为攻击者即为网关。用户A的ARP表中会记录错误的网关地址映射关系,使得用户A跟网关的正常数据通信中断。

        为了防范攻击者仿冒网关,可以在网关设备上使能ARP防网关冲突功能。仅S5720EI、S5720HI、S5720S-SI、S5720SI、S5730S-EI、S5730SI、S6720EI、S6720HI、S6720LI、S6720S-EI、S6720S-LI、S6720S-SI和S6720SI,以及框式系列交换机支持该功能。

        当设备收到的ARP报文存在下列情况之一,设备就认为该ARP报文是与网关地址冲突的ARP报文,设备将生成ARP防攻击表项,并在后续一段时间内丢弃该接口收到的同VLAN以及同源MAC地址的ARP报文,这样可以防止与网关地址冲突的ARP报文在VLAN内广播。此时,还可以在设备上通过下面介绍的使能发送免费ARP报文功能,通过广播发送正确的免费ARP报文到所有用户,迅速将已经被攻击的用户记录的错误网关地址映射关系修正正确。

在全局模式下配置ARP防网关冲突

arp anti-attack gateway-duplicate enable

9、配置发送免费ARP报文

        如果有攻击者向其他用户发送仿冒网关的ARP报文,会导致其他用户的ARP表中记录错误的网关地址映射关系,从而造成其他用户的正常数据不能被网关接收。

        此时可以在网关设备上配置发送免费ARP报文的功能,用来定期更新合法用户的ARP表项,使得合法用户ARP表项中记录正确的网关地址映射关系。

        可在网关设备上全局或VLANIF接口下配置发送免费ARP报文功能。全局配置该功能后,则缺省设备上所有接口的发送ARP免费报文功能均已使能。当全局和VLANIF接口下同时配置了该功能时,VLANIF接口下的配置优先生效。

全局或接口下使能发送免费ARP报文功能

arp gratuitous-arp send enable
interface vlanif 1
arp gratuitous-arp send enable

全局或接口下配置免费ARP报文发送时间间隔

arp gratuitous-arp send interval 200
interface vlanif 1
arp gratuitous-arp send interval 200

上面我们说了一般情况下我们都会使用ARP防网关冲突和发送免费ARP报文两个功能来实现安全防护,这是因为ARP防网关冲突在第一次网关欺骗时不能起到防护的效果。我们可以通过以下实验来进一步了解。

 这里我们先让PC1去访问网关形成ARP表项

形成ARP表项之后我们在路由器的接口上配置一个与网关同一个IP的地址并发出免费ARP

 

我们能看到PC1的ARP表项更新了,网关的MAC变为了路由器的MAC,这就是网关欺骗攻击

现在我们在交换机上配置ARP防网关冲突看看能不能防止这种攻击,我们先把路由器上的IPundo掉,再让PC1重新去ping一次网关学习到正确的ARP表项。

随后我们去交换机上配置网关冲突的相关指令,随后去路由器上配置IP地址发出免费ARP报文

可以看到PC1的ARP表项还是刷新了,我们再去看看交换机上的防网关冲突表项有没有记录这条IP地址

我们发现交换机是有记录的那为什么PC1的ARP表项还是刷新了呢?

这是因为路由器的免费ARP在第一次到达交换机时还没有形成相应的表项,所以免费ARP可以被转发到PC1,所以如果只配置防网关冲突的话,只能够防止第二次的攻击,第一次的攻击防止不了。此时就需要结合我们的发送免费ARP报文来实现安全防护。


10、ARP网关保护功能

        当网络中存在攻击者Attacker仿冒网关或用户误配主机IP地址为网关地址时,其发送的ARP报文会使得网络中其他用户误以为Attacker是网关设备,造成正常用户跟网关的数据通信中断。在设备与网关相连的接口上配置ARP网关保护功能,可以防止伪造网关攻击,仅盒式交换机系列交换机支持。当来自网关的ARP报文到达设备时:

  • 开启了对网关地址保护功能的接口,正常接收转发该ARP报文;
  • 未开启对网关地址保护功能的接口,丢弃该ARP报文;

  • 开启了对网关IP地址:192.168.1.254保护功能的接口,正常接收转发该ARP报文;
  • 未开启对网关IP地址:192.168.1.254保护功能的接口,丢弃该ARP报文;

ARP网关保护功能是在二层物理接口下配置

interface g0/0/1
arp trust source 192.168.1.254

11、ARP报文内MAC地址一致性检查

        ARP报文内MAC地址一致性检查功能主要应用于网关设备上,可以防御以太网数据帧头部中的源/目的MAC地址和ARP报文数据区中的源/目的MAC地址不同的ARP攻击。配置该功能后,网关设备在进行ARP表项学习前将对ARP报文进行检查。如果以太网帧头部中的源/目的MAC地址和ARP报文数据区中的源/目的MAC地址不同,则认为是攻击报文,将其丢弃;否则,继续进行ARP学习。

ARP报文内MAC地址一致性检查配置

interface g0/0/1
arp validate source-mac destination-mac

12、ARP报文合法性检查

        为了防止非法ARP报文的攻击,可以在接入设备或网关设备上配置ARP报文合法性检查功能,用来对MAC地址和IP地址不合法的ARP报文进行过滤。设备提供以下3中可以任意组合的检查项配置。

  • IP地址检查:设备会检查ARP报文中的源IP和目的IP地址,全0、全1或者组播IP地址都是不合法的,需要丢弃。对于ARP应答报文,源IP和目的IP地址都进行检查;对于ARP请求报文,只检查源IP地址。
  • 源MAC地址检查:设备会检查ARP报文中的源MAC地址和以太网数据帧头部中的源MAC地址是否一致,一致则认为合法,否则丢弃该报文。
  • 目的MAC地址检查:设备会检查ARP应答报文中的目的MAC地址是否和以太网数据帧头部中的目的MAC地址一致,一致则认为合法,否则丢弃报文。

ARP报文合法性检查配置

arp anti-attack packet-check sender-mac

全局使能ARP报文合法性检查功能(作用于所有接口接收的ARP报文)。


13、DHCP触发ARP学习

        在DHCP用户场景下,当DHCP用户数目很多时,设备进行大规模ARP表项的学习和老化会对设备性能和网络环境形成冲击。为了避免此问题,可以在网关设备上使能DHCP触发ARP学习功能。当DHCP服务器给用户分配了IP地址,网关设备会根据VLANIF接口上收到的DHCP ACK报文直接生成该用户的ARP表项。

注意:DHCP触发ARP学习功能生效的前提是已在二层交换设备全局和对应二层接口上通过dhcp snooping enable命令使能了DHCP Snooping功能。

        DHCP触发ARP学习的配置方法仅在网关设备对应的VLANIF接口视图下执行。缺省情况下,没有使能DHCP触发ARP学习功能。

DHCP触发ARP学习配置
 

arp learning dhcp-trigger

以上就是本章的全部内容了,觉得博主做的还可以的可以给博主点一个关注,我们下一章来介绍ARP安全实验经典使用场景实验配置,部分内容可能与教材雷同,有意可联系博主删除,谢谢你的流量观看!

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

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

相关文章

Django 创建CSV文件

Django使用Python内置的CSV库来创建动态的CSV(逗号分隔值)文件。我们可以在项目的视图文件中使用这个库。 让我们来看一个例子,这里我们有一个Django项目,我们正在实现这个功能。创建一个视图函数 getfile() 。 Django CSV例子 …

HTTPS为何仍有安全漏洞?解析加密协议下的攻击面

本文深度剖析HTTPS协议在传输层、证书体系、配置管理三个维度的安全盲区,揭示SSL/TLS加密掩盖下的11类攻击路径。基于Equifax、SolarWinds等重大事件的技术复盘,提供包含自动化证书巡检、动态协议升级、加密流量威胁检测的立体防御方案。 HTTPS不等于绝…

MyBatis 动态 SQL 使用详解

&#x1f31f; 一、什么是动态 SQL&#xff1f; 动态 SQL 是指根据传入参数&#xff0c;动态拼接生成 SQL 语句&#xff0c;不需要写多个 SQL 方法。MyBatis 提供了 <if>、<choose>、<foreach>、<where> 等标签来实现这类操作 ✅ 二、动态 SQL 的优点…

乐观锁与悲观锁的使用场景

悲观锁的应用场景 悲观锁的基本思想是假设并发冲突会发生&#xff0c;因此在操作数据时会先锁定数据&#xff0c;直到完成操作并提交事务后才释放锁。这种方式适用于写操作较多、并发冲突可能性较高的场景。 高写入比例的数据库操作&#xff1a;如果系统中有很多写操作&#x…

cpp(c++)win 10编译GDAL、PROJ、SQLite3、curl、libtiff

cpp&#xff08;c&#xff09;编译GDAL、PROJ、SQLite3 Sqlite3libtiffcurlprojGDAL Sqlite3 1、下载 Sqlite3 源码、工具、二进制预编译 exe Sqlite3 官网&#xff1a;https://www.sqlite.org/download.html 下载 sqlite-amalgamation-3430200.zipsqlite-dll-win64-x64-3430…

【愚公系列】《高效使用DeepSeek》062-图书库存管理

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…

链表算法中常用操作和技巧

目 1.常用技巧 1.1.画图 1.2.添加虚拟头节点 1.3.大胆引入中间变量 1.4.快慢双指针 1.4.1判断链表是否有环 1.4.2找链表中环的入口 ​2.常用操作 2.1. 创建一个新节点 2.2.尾插 2.3.头插 1.常用技巧 1.1.画图 画图可以让一些抽象的文字语言更加形象生动 画图&#…

【9】数据结构的串篇章

目录标题 串的定义顺序串的实现初始化赋值打印串求串的长度复制串判断两个串长度是否相等连接两个串比较两个串内容是否相等插入操作删除操作调试与代码合集 串的模式匹配算法朴素的模式匹配算法KMP算法实现模式匹配 串的定义 定义&#xff1a;由0个或多个字符组成的有限序列&…

GMSL Strapping Pins CFG0/CFG1 应用

GMSL device 使用起来还是比较简单 ADI 已经充分考虑了用户的需求&#xff0c;尽可能的降低的芯片的使用和配置复杂度 一对加串器和解串器&#xff0c;只要工作模式匹配得当&#xff0c;Link Locked&#xff0c;便能够正常工作 如果遇到 Link 无法建立&#xff08;Locked&…

`uia.WindowControl` 是什么:获取窗口文字是基于系统的 UI 自动化接口,而非 OCR 方式

uia.WindowControl 是什么:获取窗口文字是基于系统的 UI 自动化接口,而非 OCR 方式 uia.WindowControl 通常是基于 Windows 系统的 UI 自动化框架(如 pywinauto 中的 uia 模块)里用于表示窗口控件的类。在 Windows 操作系统中,每个应用程序的窗口都可以看作是一个控件,ui…

Easysearch VS Opensearch 数据写入与存储性能对比

本文记录 Easysearch 和 Opensearch 数据写入和数据存储方面的性能对比。 准备 压测工具&#xff1a;INFINI Loadgen 对比版本&#xff1a; Easysearch 1.11.1&#xff08;lucene 8.11.4&#xff09;Opensearch 2.19.1&#xff08;lucene 9.12.1&#xff09; 节点 JVM 配置…

力扣题解:142. 环形链表 II

在链表学习中&#xff0c;我们已经了解了单链表和双链表&#xff0c;两者的最后一个结点都会指向NULL&#xff1b;今天我们介绍的循环列表则不同&#xff0c;其末尾结点指向的这是链表中的一个结点。 循环链表是一种特殊类型的链表&#xff0c;其尾节点的指针指向头节点&#…

区间 dp 系列 题解

1.洛谷 P4342 IOI1998 Polygon 我的博客 2.洛谷 P4290 HAOI2008 玩具取名 题意 某人有一套玩具&#xff0c;并想法给玩具命名。首先他选择 W, I, N, G 四个字母中的任意一个字母作为玩具的基本名字。然后他会根据自己的喜好&#xff0c;将名字中任意一个字母用 W, I, N, G …

天基光学图像仿真原理简介

一、原理简介 天基光学图像仿真通过数学模型和算法模拟空间目标在光学系统中的成像过程&#xff0c;核心原理可归纳为以下四部分&#xff1a; 1. 目标与背景建模‌ 目标运动建模‌&#xff1a;利用轨道动力学模型&#xff08;如SGP4&#xff09;解析空间目标轨迹&#xff0c;…

Jetpack Compose 状态保存机制全面解析:让UI状态持久化

在Android开发中&#xff0c;Jetpack Compose 的状态管理是一个核心话题&#xff0c;而状态保存则是确保良好用户体验的关键。本文将深入探讨Compose中各种状态保存技术&#xff0c;帮助你在配置变更和进程重建时保持UI状态。 一、基础保存&#xff1a;rememberSaveable reme…

【Json-Rpc #1】项目背景及环境搭建

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人博客&#xff1a;island ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 生活总是不会一帆风顺&#xff0c;前进…

WPF轮播图动画交互 动画缩放展示图片

WPF轮播图动画交互 动画缩放展示图片 效果如下图&#xff1a; XAML代码&#xff1a; <Window x:Class"Caroursel.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/20…

为什么 npm list -g 没显示 node_modules?✨

揭秘&#xff1a;为什么 npm list -g 没显示 node_modules&#xff1f;&#x1f575;️‍♂️✨ 嗨&#xff0c;各位代码探险家&#xff01;&#x1f44b; 今天我们要破解一个 npm 小谜团&#xff1a;运行 npm list -g --depth0 时&#xff0c;为什么输出的路径里看不到 node_…

都江堰与郑国渠

目录标题 一、历史背景&#xff1a;地缘博弈下的水利突围都江堰&#xff1a;化水患为天府的千年大计郑国渠&#xff1a;间谍引发的战略反转 二、工程智慧&#xff1a;超越时代的科技奇迹都江堰&#xff1a;生态治水的典范郑国渠&#xff1a;泥沙资源化的创举 三、后世影响&…

链路聚合+vrrp

1.链路聚合 作用注意事项将多个物理接口&#xff08;线路&#xff09;逻辑上绑定在一起形成一条逻辑链路&#xff0c;起到叠加带宽的作用1.聚合接口必须转发速率一致。2.聚合设备两端必须一致 配置命令 方法一 [Huawei]interface Eth-Trunk 0----先创建聚合接口&#xff0c;…