ISIS协议(动态路由协议)
ISIS基础
基本概念
IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionLessNetwork Protocol,无连接网络协议)设计的一种动态路由协议。
随着TCP/IP协议的流行,为了提供对IP路由的支持,IETF在RFC1195中对IS-IS进行了扩充和修改,使它能够同时应用在TCP/IP和OSI(Open System Interconnect,开放式系统互联)环境中,我们将扩展后的IS-IS称为集成IS-IS。


NSAP地址
NSAP(Network Service Access Point,网络服务访问点)是OSI协议栈中用于定位资源的地址,主要用于提供网络层和上层应用之间的接口。NSAP包括IDP及DSP,如下图所示:
1.IDP:相当于IPv4地址中的有类网络号
1.AFI:表明分配机构和地址格式 1字节
2.IDI:表明地址分配的域 2字节
2.DSP:相当于IPv4地址中的子网络号和主机地址
1.header older dsp:分割区域 10字节
2.system-id :主机标识 6字节
3.sel :上层标识 1字节
NET地址
NET(Network Entity Title,网络实体名称)是OSI协议栈中设备的网络层信息,主要用于路由计算,由区域地址(Area ID)和System ID组成,可以看作是特殊的NSAP(SEL为00的NSAP)。NET的长度与NSAP的相同,最长为20Byte,最短为8Byte。
在IP网络中运行IS-IS时,只需配置NET,根据NET地址设备可以获取到Area ID以及System ID。
ISIS路由器分类
1.Level-1路由器

Level-1路由器(例如图中的R1)是一种IS-IS区域内部路由器,它只与属于同一区域的Level-1和Level-1-2路由器形成邻接关系,这种邻接关系称为Level-1邻接关系。Level-1路由器无法与Level-2路由器建立邻接关系。
Level-1路由器只负责维护Level-1的链路状态数据库LSDB,该LSDB只包含本区域的路由信息。值得一提的是,Level-1路由器必须通过Level-1-2路由器接入IS-IS骨干区域从而访问其他区域。
2.Level-2路由器
Level-2路由器(例如图中的R4、R5、R6、R7)是IS-IS骨干路由器,它可以与同一或者不同区域的Level-2路由器或者Level-1-2路由器形成邻接关系。Level-2路由器维护一个Level-2的LSDB,该LSDB包含整个IS-IS域的所有路由信息。
所有Level-2级别(即形成Level-2邻接关系)的路由器组成路由域的骨干网,负责在不同区域间通信。路由域中Level-2级别的路由器必须是物理连续的,以保证骨干网的连续性。
3.Level1-2路由器
Level-1-2路由器与OSPF中的ABR非常相似,它也是IS-IS骨干网络的组成部分。
Level-1-2路由器维护两个LSDB,Level-1的LSDB用于区域内路由,Level-2的LSDB用于区域间路由。
同时属于Level-1和Level-2的路由器称为Level-1-2路由器(例如图中的R2和R3),它可以与同一区域的Level-1和Level-1-2路由器形成Level-1邻接关系,也可以与其他区域的Level-2和Level-1-2路由器形成Level-2的邻接关系。
在华为路由器上配置IS-IS时,缺省时,路由器全局Level为Level-1-2。
当然,可以通过命令修改该设备的类型:
[AR1-isis-1]is-level level-1 修改设备级别
ISIS路由器接口分类
ISIS接口分为三类:
- 1.L1接口
- 2.L2接口
- 3.L12接口
修改路由器的接口级别:
[AR1-GigabitEthernet0/0/0]isis circuit-level level-1
注意:
L1设备 和 L1接口 发送L1报文
L1设备 和 L2接口 发送L1报文
L2设备 和 L1接口 发送L2报文
L2设备 和 L2接口 发送L2报文
L12设备 和 L1接口 发送L1报文
L12设备 和 L2接口 发送L2报文
L12设备 和 L12接口 发送L12报文
接口存在级别意义: 当L1/2设备只需要建立某一个级别的邻居时,只需要修改接口级别即可
区域划分
IS-IS在自治系统内采用骨干区域与非骨干区域两级的分层结构:
Level-1路由器部署在非骨干区域。
Level-2路由器和Level-1-2路由器部署在骨干区域。
每一个非骨干区域都通过Level-1-2路由器与骨干区域相连。

如图所示,整个骨干区域不仅包括Area49.0002中的所有路由器,还包括其它区域的Level2和Level-1-2路由器。
以上拓扑结构图可以体现IS-IS与OSPF的不同点:
- 在IS-IS中,每个路由器都只属于一个区域;而在OSPF中,一个路由器的不同接口可以属于不同的区域。
- 在IS-IS中,单个区域没有骨干与非骨干区域的概念;而在OSPF中,Area0被定义为骨干区域。
- 在IS-IS中,Level-1和Level-2级别的路由都采用SPF算法,分别生成最短路径树SPT(Shortest Path Tree);而在OSPF中,只有在同一个区域内才使用SPF算法,区域之间的路由需要通过骨干区域来转发。
OSPF封装于网络层之上,服务于IP层
ISIS封装于数据链路层(数据帧)之上,服务于IP层
网络类型
IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型, IS-IS支持两种类型的网络:
广播(Broadcast): 如Ethernet。
点到点(P2P): 如PPP、 HDLC等。
ISIS开销
IS-IS使用Cost(开销)作为路由度量值,Cost值越小,则路径越优。IS-IS链路的Cost与设备的接口有关,与OSPF类似,每一个激活了IS-IS的接口都会维护接口Cost。然而与OSPF不同的是,IS-IS接口的Cost在缺省情况下并不与接口带宽相关(在实际部署时,IS-IS也支持根据带宽调整Cost值),无论接口带宽多大,缺省时Cost为10。
一条IS-IS路径的Cost等于本路由器到达目标网段沿途的所有链路的Cost总和。

开销更改:
1.接口开销:
[AR2-GigabitEthernet0/0/0]isis cost
2.全局开销:
[AR2-isis-1]circuit-cost 该命令可以同时改变所有的接口的开销
3.根据带宽自动计算开销:
[AR2-isis-1]auto-cost enable 开启自动计算
[AR2-isis-1]bandwidth-reference 设置参考带宽
优先级由高到低: 接口> 全局 > 自动计算
ISIS报文及状态机
报文
IIH报文
类似于OSPF的Hello报文,用来建立和维护邻居关系,广播网络中的Level-1 IS-IS路由器使用Level-1 LAN IIH;广播网络中的Level-2 IS-IS路由器使用Level-2 LAN IIH;点到点网络中则使用P2P IIH。
CSNP报文

全序列号PDU,类似于OSPF的DD报文,用来发布链路状态通告摘要,分为L1 CSNP、L2 CSNP。
PSNP报文

部分序列号PDU,类似于OSPF的LSR报文、LSAck报文,分为L1 PSNP、L2 PSNP。
*如果PSNP携带的摘要LSP,序列号为全0 则表示LSR 用来请求完整的链路状态信息,序列号不为全0 则表示LSAck 用来确认收到的链路状态信息。

LSP报文
链路状态PDU,类似于OSPF的LSU报文,用于交换链路状态信息。LSP分为两种:Level–1 LSP和Level–2 LSP。Level–1 LSP由Level-1路由器传送,Level–2 LSP由Level-2路由器传送,Level-1-2路由器则可传送以上两种LSP。
状态机
状态机:
1.down:设备接口未使能ISIS。
2.init:收到hello报文,但hello报文中不存在自身的MAC地址。
3.up:收到的hello报文中携带了自身的MAC地址。
ISIS邻接关系建立过程
广播网络
1.设备处于down状态,没有使能ISIS
2.设备处于init状态,发送hello报文,收到hello报文,但hello报文中不存在自身的MAC地址
3.设备处于up状态,收到的hello报文中携带了自身的MAC地址
*设备根据交互的hello报文进行DIS设备的选举(DIS类似于OSPF中的DR)
根据报文内的优先级值,值越大越优先;如果值相等,则比较接口的MAC地址,地址越大越优先
*DIS主要用于在广播型网络中连接所有物理设备的虚拟设备,负责伪节点LSP的通告和维护
*DIS是可以抢占的
*DIS没有明确的备份设备,广播网络内的所有设备都在监听DIS
选举为DIS的设备会周期10/3s发送hello报文,这样可以确保DIS出现故障时能够被更快速地被发现.
*设备接口优先级值为0,也会参与DIS的选举
4.邻接关系建立完成后,设备会通告自身所有的LSP通过LSP报文给DIS设备(目标地址为0180-c200-0014)
5.DIS设备会周期(10s)通告CSNP报文(会携带DIS设备具有的所有LSP信息摘要)(目标地址为0180-c200-0014)
6.广播内的其他设备收到CSNP报文后,根据报文内的摘要进行对比自身的LSDB
1.如果自身LSDB和CSNP报文携带的摘要同步,则不做理会
2.如果自身LSDB不存在CSNP报文携带的摘要,则发送PSNP报文,请求自身缺少的LSP(目标地址为0180-c200-0014)
7.DIS设备收到PSNP报文后,回复LSP报文
IS-IS中DIS与OSPF协议中DR(Designated Router)的区别:
- 在IS-IS广播网中,优先级为0的路由器也参与DIS的选举,而在OSPF中优先级为0的路由器则不参与DR的选举。
- 在IS-IS广播网中,当有新的路由器加入,并符合成为DIS的条件时,这个路由器会被选中成为新的DIS,原有的伪节点被删除。此更改会引起一组新的LSP泛洪。而在OSPF中,当一台新路由器加入后,即使它的DR优先级值最大,也不会立即成为该网段中的DR。
- 在IS-IS广播网中,同一网段上的同一级别的路由器之间都会形成邻接关系,包括所有的非DIS路由器之间也会形成邻接关系。而在OSPF中,路由器只与DR和BDR建立邻接关系。
p2p网络
1.设备处于down状态,没有使能ISIS
2.设备处于init状态,发送hello报文,收到hello报文,但hello报文中不存在自身的system-id
3.设备处于up状态,收到的hello报文中携带了自身的system-id地址
*P2P网络不会选举DIS
4.邻接关系建立完成后,会将自身完整的LSP信息通过LSP报文发送
5.对端收到LSP报文后,会发送PSNP报文进行确认
6.LSP同步完成后,发送CSNP报文进行LSDB的同步检测
如果收到的CSNP报文和自身的LSDB同步,则不予理会
如果收到的CSNP报文和自身的LSDB不同步,则会发送PSNP报文进行请求
收到PSNP报文后,会发送LSP报文
收到LSP报文,回复PSNP进行确认
ISIS路由计算
区域内路由计算
ISIS根据学习到的LSP,分析所有链路状态,先通过SPF算法计算出拓扑树,SPF算法计算出拓扑树后,直接将路由信息当作叶子挂载在拓扑节点上。
所有的链路开销默认都为10,路由的开销是迭加计算的。
区域间路由计算
L2设备如何计算L1设备的路由信息?
L1/2设备会将L1的路由信息 当作叶子挂载在自身产生的L2-LSP上
路由信息挂载时,会携带明细的开销值
从L2设备视角看,该路由相当于是L1/2设备的路由信息
L1设备如何计算L2设备的路由信息?
L1设备组成的非骨干区域类似于OSPF的特殊区域
即L1设备通过缺省路由访问L2设备的路由信息
*L1设备的缺省路由如何得到?
L1设备收到L1/2设备产生的L1-LSP中 ATT bit置位为1
自动生成一条下一跳指向L1/2设备的缺省路由
*L1/2的L1-LSP中ATT bit如何置位?
1.产生该L1-LSP的设备一定是 L1/2设备
2.L1/2设备存在L2的邻居关系
3.L1/2设备收到不同区域的L2-LSP
L1访问L2设备路由信息的次优问题:
L1设备通过ATT bit计算的缺省路由开销,都是到达L1/2设备的开销,没有L2设备路由的明细开销,容易出现次优路径。
如果解决次优路径?
通过路由渗透实现
*什么是路由渗透?
就是L1/2设备上 执行L2路由 引入到 L1
[AR2-isis-1]import-route isis level-2 into level-1
多台L1/2设备,都要执行渗透
区域外路由计算
ISIS本质上不区分内外部路由,都是将路由信息当作叶子挂载在自身的LSP上,ISIS的外部路由,在设备引入后,通过分片LSP进行携带。
L1/2设备进行路由渗透时,会把内部、外部路由信息都当作叶子节点挂载在L1的LSP上。
ISIS设备在引入外部路由时,要根据设备的级别来执行引入,即外部路由默认的引入级别为L2。
L1/2设备在执行外部路由引入时,必须是L1-2的引入,因为单一的级别不支持路由渗透的操作
注意:ISIS外部路由的引入,根据设备的级别 指定引入路由时的级别。
ISIS路由更新和撤销、开销风格
内部路由更新和撤销
内部路由:都是更新式的路由更新 和 更新式的路由撤销
更新:1200s ,seq 是顺序排列的值 携带需要更新的信息

撤销:1200s ,seq 是更新的seq+1(大于原序列号) 不携带需要撤销的信息

外部路由更新和撤销
外部路由: 存在更新式更新、撤销 也存在时间老化的撤销
更新:第一条外部路由引入,时间1200s,seq是顺序排列的值,携带更新的信息

第二条外部路由引入,时间1200s,seq是上一个更新的seq+1,携带更新的信息

后面以此类推......
撤销:当存在多条外部路由,撤销其中一条,时间1200s,seq是上一个更新的seq+1,不携带需要撤销的信息

如果所有外部路由都被撤销,时间 0s,seq 是上一个更新的seq(不变) ,不携带撤销的信息

开销风格
开销风格: 发送报文类型 接收报文类型
窄风格(默认的) 窄 窄
窄兼容 窄 窄、宽
兼容 窄、宽 窄、宽
宽风格 宽 宽
宽兼容 宽 窄、宽
相邻设备如果开销风格不一致,不会影响邻居的建立,会影响路由信息的计算
ISIS认证、汇总、过滤
认证
1.接口认证:对于ISIS邻居建立的Hello报文认证
[AR1-GigabitEthernet0/0/0]isis authentication-mode md5 plain Huawei@123 ?
也可以在接口认证时指定是发送L1-hello认证 还是L2-hello认证
接口认证配置时,可以设置send-only参数,表示只发送带有认证的hello报文,本端不检测对方的hello认证(防止修改认证密码时邻居断开)
2.区域认证:L1的LSP和SNP报文做认证
[AR1-isis-1]area-authentication-mode md5 plain Huawei@123 ?
all-send-only 发送LSP和SNP报文时携带认证,但是接收对端的LSP和SNP报文不做检测
snp-packet 对SNP报文选择认证,LSP报文做认证
[AR1-isis-1]area-authentication-mode md5 plain Huawei@123 snp-packet ?
authentication-avoid 发送时不携带认证,接收时不做认证检测
send-only 发送时携带认证,接收时不做认证检测
*做区域认证,默认对LSP和SNP报文进行认证
通过参数snp-packet,来指定是否对SNP报文做认证
1.LSP报文一定携带认证
2.SNP报文可以通过参数配置是否携带认证
3.路由域认证:L2的LSP和SNP报文做认证
[AR4-isis-1]domain-authentication-mode md5 plain Huawei
和区域认证配置相同,且参数也相同,只是报文的级别发生了变化
汇总
1.内部路由汇总
1.可以在ISIS视图下使用summary命令执行汇总操作
[AR4-isis-1]summary 4.4.4.0 255.255.255.0
2.必须是叶子路由挂载的节点设备来执行路由汇总
3.如果是L1/2设备执行了渗透,则汇总时需要指定汇总的级别为L1
2.外部路由汇总
和内部路由汇总一致
*汇总条目和明细条目关系:
1.从LSP上来看,内部路由汇总:汇总后的LSP信息会直接替换明细的LSP信息
2.从LSP上来看,外部路由汇总:汇总后不会存在分片LSP,只会使用实节点LSP进行携带
3.汇总路由会继承明细路由最小的开销值
过滤
1、在ISIS视图下使用:
filter-policy import:对于接收到的LSP,计算路由后是否加入到路由表中
[AR1]acl 2000
[AR1-acl-basic-2000]rule 5 deny source 4.4.4.0 0
[AR1-acl-basic-2000]rule 10 permit
[AR1]isis
[AR1-isis-1]filter-policy 2000 import
filter-policy export:针对于外部路由信息,在发出时过滤
[AR4]acl 2000
[AR4-acl-basic-2000]rule 5 deny source 192.168.4.4 0
[AR4-acl-basic-2000]rule 10 permit
[AR4]isis
[AR4-isis-1]filter-policy 2000 export
*该命令只在ASBR设备上引入外部路由后生效
2、filter 过滤:L1/2设备在路由渗透时执行的操作
#
acl number 2000
rule 5 deny source 1.1.1.1 0
rule 10 permit
#
isis
import-route isis level-1 into level-2 filter-policy 2000
*可以做L2到L1的过滤,也可以执行L1到L2的过滤
*因为ISIS不区分内外部路由,且所有的路由都是叶子挂载的
相关文章:
ISIS协议(动态路由协议)
ISIS基础 基本概念 IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionL…...
大数据(7.1)Kafka实时数据采集与分发的企业级实践:从架构设计到性能调优
目录 一、实时数据洪流下的技术突围1.1 行业需求演进曲线1.2 传统方案的技术瓶颈 二、Kafka实时架构设计精要2.1 生产者核心参数矩阵2.1.1 分区策略选择指南 2.2 消费者组智能负载均衡 三、实时数据管道实战案例3.1 电商大促实时看板3.2 工业物联网预测性维护 四、生产环境性能…...
UniApp 实现兼容 H5 和小程序的拖拽排序组件
如何使用 UniApp 实现一个兼容 H5 和小程序的 九宫格拖拽排序组件,实现思路和关键步骤。 一、完整效果图示例 H5端 小程序端 git地址 二、实现目标 支持拖动菜单项改变顺序拖拽过程实时预览移动位置拖拽松开后自动吸附回网格兼容 H5 和小程序平台 三、功能…...
C,C++,C#
C、C 和 C# 是三种不同的编程语言,虽然它们名称相似,但在设计目标、语法特性、运行环境和应用场景上有显著区别。以下是它们的核心区别: 1. 设计目标和历史 语言诞生时间设计目标特点C1972(贝尔实验室)面向过程&#…...
MySQL | 三大日志文件
Undo Log(回滚日志) 实现原理与分类 原理:Undo Log 记录的是数据修改前的旧值,通过这些旧值可以将数据恢复到修改之前的状态。它采用的是逻辑日志,即记录的是如何撤销操作,而不是物理数据的实际值。 分类…...
【网络协议】WebSocket讲解
目录 webSocket简介 连接原理解析: 客户端API 服务端API(java) 实战案例 (1)引入依赖 (2)编写服务端逻辑 (3)注册配置类 (4)前端连接 WebSocket 示例…...
啥是Spring,有什么用,既然收费,如何免费创建SpringBoot项目,依赖下载不下来的解决方法,解决99%问题!
一、啥是Spring,为啥选择它 我们平常说的Spring指的是Spring全家桶,我们为什么要选择Spring,看看官方的话: 意思就是:用这个东西,又快又好又安全,反正就是好处全占了,所以我们选择它…...
一天时间,我用AI(deepseek)做了一个配色网站
前言 最近在开发颜色搭配主题的相关H5和小程序,想到需要补充一个web网站,因此有了这篇文章。 一、确定需求 向AI要答案之前,一定要清楚自己想要做什么。如果你没有100%了解自己的需求,可以先让AI帮你理清逻辑和思路,…...
Day14:关于MySQL的索引——创、查、删
前言:先创建一个练习的数据库和数据 1.创建数据库并创建数据表的基本结构 -- 创建练习数据库 CREATE DATABASE index_practice; USE index_practice;-- 创建基础表(包含CREATE TABLE时创建索引) CREATE TABLE products (id INT PRIMARY KEY…...
Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(二)
Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(二) 7. 实现条件WGAN-GP # 训练条件WGAN-GP def train_conditional_wgan_gp():# 用于记录损失d_losses []g_losses []# 用于记录生成样本的多样性(通过类别分…...
Spring - 13 ( 11000 字 Spring 入门级教程 )
一: Spring AOP 备注:之前学习 Spring 学到 AOP 就去梳理之前学习的知识点了,后面因为各种原因导致 Spring AOP 的博客一直搁置。。。。。。下面开始正式的讲解。 学习完 Spring 的统一功能后,我们就进入了 Spring AOP 的学习。…...
Spring Cloud Alibaba微服务治理实战:Nacos+Sentinel深度解析
一、引言 在微服务架构中,服务发现、配置管理、流量控制是保障系统稳定性的核心问题。Spring Cloud Netflix 生态曾主导微服务解决方案,但其部分组件(如 Eureka、Hystrix)已进入维护模式。 Spring Cloud Alibaba 凭借 高性能、轻…...
设计模式之迭代器模式:遍历的艺术与实现
引言 迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种顺序访问聚合对象中各个元素的方法,而又不暴露其底层实现。迭代器模式将遍历逻辑与聚合对象解耦,使得我们可以用统一的方式处理不同的集合结构。…...
红宝书第三十六讲:持续集成(CI)配置入门指南
红宝书第三十六讲:持续集成(CI)配置入门指南 资料取自《JavaScript高级程序设计(第5版)》。 查看总目录:红宝书学习大纲 一、什么是持续集成? 持续集成(CI)就像咖啡厅的…...
Java—HTML:3D形变
今天我要介绍的是在Java HTML中CSS的相关知识点内容之一:3D形变(3D变换)。该内容包含透视(属性:perspective),3D变换,3D变换函数以及案例演示, 接下来我将逐一介绍&…...
什么是音频预加重与去加重,预加重与去加重的原理是什么,在什么条件下会使用预加重与去加重?
音频预加重与去加重是音频处理中的两个重要概念,以下是对其原理及应用条件的详细介绍: 1、音频预加重与去加重的定义 预加重:在音频信号的发送端,对音频信号的高频部分进行提升,增加高频信号的幅度,使其在…...
免费下载 | 2025清华五道口:“十五五”金融规划研究白皮书
《2025清华五道口:“十五五”金融规划研究白皮书》的核心内容主要包括以下几个方面: 一、五年金融规划的重要功能与作用 凝聚共识:五年金融规划是国家金融发展的前瞻性谋划和战略性安排,通过广泛听取社会各界意见,凝…...
微信小程序实战案例 - 餐馆点餐系统 阶段 4 - 订单列表 状态
✅ 阶段 4 – 订单列表 & 状态 目标 展示用户「我的订单」列表支持状态筛选(全部 / 待处理 / 已完成)支持分页加载和实时刷新使用原生组件编写 ✅ 1. 页面结构:文件结构 pages/orders/├─ index.json├─ index.wxml├─ index.js└─…...
如何为C++实习做准备?
博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇…...
【docker】--部署--安装docker教程
文章目录 环境方法一:脚本安装方法二:手动安装**步骤 1:卸载旧版本(如有)****步骤 2:更新系统并安装依赖****步骤 3:添加 Docker 官方 GPG 密钥****步骤 4:设置 Docker 仓库****步骤…...
【开发记录】服务外包大赛记录
参加服务外包大赛的A07赛道中,最近因为频繁的DEBUG,心态爆炸 记录错误 以防止再次出现错误浪费时间。。。 2025.4.13 项目在上传图片之后 会自动刷新 没有等待后端返回 Network中的fetch /upload显示canceled. 然而这是使用了VS的live Server插件才这样&…...
Cesium.js(6):Cesium相机系统
Camera表示观察场景的视角。通过操作摄像机,可以控制视图的位置、方向和角度。 帮助文档:Camera - Cesium Documentation 1 setView setView 方法允许你指定相机的目标位置和姿态。你可以通过 Cartesian3 对象来指定目标位置,并通过 orien…...
AI 代码生成工具如何突破 Java 单元测试效能天花板?
一、传统单元测试的四大痛点 时间黑洞:根据 JetBrains 调研,Java 开发者平均花费 35% 时间编写测试代码覆盖盲区:手工测试覆盖率普遍低于 60%(Jacoco 全球统计数据)维护困境:业务代码变更导致 38% 的测试用…...
AF3 ProteinDataset类的_patch方法解读
AlphaFold3 protein_dataset模块 ProteinDataset 类 _patch 方法的主要目的是围绕锚点残基(anchor residues)裁剪蛋白质数据,提取一个局部补丁(patch)作为模型输入。 源代码: def _patch(self, data):"""Cut the data around the anchor residues."…...
客户端负载均衡与服务器端负载均衡详解
客户端负载均衡与服务器端负载均衡详解 1. 客户端负载均衡(Client-Side Load Balancing) 核心概念 定义:负载均衡逻辑在客户端实现,客户端主动选择目标服务实例。典型场景:微服务内部调用(如Spring Cloud…...
vue-element-plus-admin的安装
文档链接:开始 | vue-element-plus-admin 之前尝试按照官方文档来安装,运行npm run dev命令却不能正常打开访问浏览器,换一个方式 首先在目录下打开命令窗口 1、克隆项目 从 GitHub 获取代码 # clone 代码 git clone https://github.com…...
基于springboot的“流浪动物管理系统”的设计与实现(源码+数据库+文档+PPT)
基于springboot的“流浪动物管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:springboot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…...
爬虫解决debbugger之替换文件
鼠鼠上次做一个网站的时候,遇到的debbugger问题,是通过打断点然后编辑断点解决的,现在鼠鼠又学会了一个新的技能 首先需要大家下载一个reres的插件,这里最好用谷歌浏览器 先请大家看看案例国家水质自动综合监管平台 这里我们只…...
奇怪的电梯——DFS算法
题目 题解 每到一层楼都面临了两种选择:上还是下?因此我们可以定义一个布尔数组用来记录选择。 终止条件其实也明显,要么到了B层,要么没有找到楼层。 如果找到了,选择一个步骤少的方式。又怎么表示没有找到楼层&…...
Open GL ES-> 工厂设计模式包装 SurfaceView + 自定义EGL的OpenGL ES 渲染框架
XML文件 <?xml version"1.0" encoding"utf-8"?> <com.example.myapplication.EGLSurfaceView xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"…...
