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

【CCNP】第七章 动态路由协议-BGP

第一节 BGP的基本概念

BGP(Border Gateway Protocol),边界网关协议

        是运行在网络和网络之间的协议,是一款EGP(外部网关协议)

BGP基于TCP协议工作,目的端口号179。源端口随机,由路由器自行选择,一般来说在万以上(如20000)。

TCP可以基于不可靠的连接去建立一种可靠的连接关系,BGP需要跨越广域网,因此可靠就显得尤为重要。

BGP的AS域:

BGP的AS号:
公有AS号:0~64511
私有AS号:64512~65535

BGP的报文:

Open:用于建立BGP邻居关系
​
Keepalive:用于维护BGP邻居关系
​
Update:用于更新路由条目
​
Notification:用于差错控制,只要在BGP运行过程中发送了
​
Notification报文,BGP就会立马断开邻居关系,不再继续运行。
​
Route-Refresh:刷新路由,当路由出现变更时刷新路由(一般来说就是属性的改变)

BGP的邻居状态机:

Idle:该状态下,运行BGP的路由器会查找到达BGP邻居的路由,如果找到了就进入下一个状态(connect),如果找不到,没路由,就始终卡在Idle状态。
​
Connect:该状态下,运行BGP的路由会发送TCP报文,进行TCP的三次握手,如果握手成功进入Opensent状态,如果握手失败则进入Active状态。
​
Active:当TCP连接建立失败时置为该状态,且在该状态下一直重新尝试建立TCP连接关系,一直重新尝试进行TCP三次握手。
​
OpenSent:发送Open报文。该状态下等待对端的Open报文,如若能够收到对端邻居的Open报文则进入OpenConfirm状态;如若收不到对端的Open报文,则发送Notification报文并且断开邻居关系
​
OpenConfirm:发送Keepalive包欧文,收到对端Keepalive报文进入Established状态,否则回到Idle状态。此状态下可能会发生Keepalive时间的选举,默认为180s,如若遇到两端Keepalive时间不一致,则选择较小的。
​
Established:交换Update报文,互相传递路由信息。

第二节 BGP邻居的建立

BGP的邻居关系分为两种,即内部邻居关系(iBGP)和外部邻居关系(eBGP)

        iBGP:内部BGP,即运行的BGP AS号相同的设备之间建立的邻居关系。

        eBGP:外部BGP,即运行的BGP AS号不同的设备之间建立的邻居关系。

传统的IGP协议(EIGRP、OSPF)可以自动地发现网络中的其它设备,从而形成邻居关系。但BGP并不具备该功能,因此BGP所有的邻居都需要进行手工指定。

建立eBGP邻居:

(config)#router bgp AS号
(config-router)# bgp router-id x.x.x.x # 手动指定router-id
(config-router)# neighbor 对端设备的物理接口的IP地址 remote-as 对端设备的AS号

在建立eBGP邻居关系时,建立eBGP邻居时发出的数据包,其TTL(Time To Live)值为1,当数据包每经过一台三层设备(路由器或三层交换机),其TTL值就会减去1,当TTL值为0时候,该数据包会被三层设备丢弃,不再继续转发。

而在建立iBGP邻居关系时候,建立iBGP邻居时发出的数据包,其TTL(Time To Live)值为255,为最大值,没有此顾虑。

因此,如果在建立eBGP邻居关系时,出现跨设备建立,而TTL值不满足条件,可修改TTL值。

(config)#router bgp AS号
(config-router)# neighbor 对端设备的物理接口的IP地址 ebgp-multihop a(1-255) # 调整eBGP报文的TTL值。

建立iBGP邻居关系:

(config)#router bgp AS号
(config-router)# bgp router-id x.x.x.x # 手动指定router-id
(config-router)# neighbor 对端设备的环回口IP地址 remote-as 对端设备的AS号 # 在内部邻居时,往往推荐使用环回口地址,更加稳定。
(config-router)# neighbor 对端设备的环回口IP地址 update-source 接口编号,如lo0  # 修改更新源,确保TCP连接的正常建立。
​

查看BGP邻居表:

show ip bgp summary 

其中字段State/PfxRcd:如果是State(邻居状态机中的状态中的任何一个),表明邻居建立的过程还没有完全结束。但如果是PfxRcd(数字),表明邻居已经建立完成。Tips:即便该数字是0都是正常的。


BGP报头:

Marker:全F
Length:报文长度
Type:指明BGP的报文类型

OEPN报文:

Version:BGP的版本,现网运行的一般都是BGP-4的版本。
My AS:本地的AS号
Hold Time:协商keepalive的时间间隔,默认是180s。
BGP Identifier:BGP Router-id

第三节 BGP的路由传递

1.路由传递

BGP路由传递为两种方式:本地宣告和重分发,其中重分发较多。

(1)本地宣告

(config)# router bgp AS-Number
(config-router)#network 网络号 mask 掩码

需要注意的是,BGP本地宣告中的网络号和掩码必须和现有的IP地址完全一致,如需要宣告1.1.1.1/32,则可以键入“network 1.1.1.1 mask 255.255.255.255”

(2)重分发

(config)# router bgp AS-Number
(config-router)# redistribute 路由来源(static/rip/eigrp x /ospf y)  # BGP协议无Metric值概念,BGP内部选路依靠BGP特有的选路原则。

2.查看BGP路由

查看BGP路由表:

#show ip route bgp

查看BGP数据表:

#show ip bgp    

通过BGP传递来的路由会先被放进BGP的数据表中,由BGP进行判断,如果判断该路由为优选路由,再将其放入BGP路由表中。


3.eBGP和iBGP在传递路由时的区别:

eBGP在传递路由时,下一跳属性会自动进行改变。

iBGP在传递路由时,下一跳属性是不会改变的。所以,为了保证iBGP路由的正常传递,在同时拥有eBGP和iBGP邻居的路由器上在和iBGP邻居建立时需要加“next-hop-self”参数来调整下一跳。

(config)#router bgp 200
(config-router)# neighbor 4.4.4.4 next-hop-self

4.BGP路由黑洞解决方法:

(1)IBGP全互联

内部邻居每两两之间建立iBGP邻居关系

(config)#router bgp 200
(config-router)# neighbor 对端环回口地址 remot 200
(config-router)# neighbor 对端环回口地址update-source lo0
(config-router)# neighbor 对端环回口地址next-hop-self

(2)物理链路全互联

(3)MPLS(多协议标签交换,IE内容,暂不要求掌握)

(config)# ip cef # 开启思科快速转发,默认开启。
(config)# mpls label protocol ldp # 指定标签分发协议为LDP
(config)# mpls ldp router-id lo0 force # 强制使用lo0地址建立LDP邻居
(config)# int eX/y 
(config-if)# mpls ip

(4)开启BGP同步(不推荐)

(config)# router bgp 300
(config-router)# synchronization # 开启BGP同步,默认关闭。

第四节 BGP的防环机制

BGP的防环分为eBGP防环和iBGP防环

1.eBGP防环

        根据AS-Path属性,AS-Path属性描述了经过的AS,如 200 100,则代表先穿越100,再穿越200,最终来到本AS。

eBGP含有水平分割机制:

        如果一条BGP路由中的AS-Path已经由本地的AS号,则拒绝接收该路由


打破eBGP防环规则:

        1.allowas-in # 允许带有AS-Path属性和自己本地AS号相同的路由进入

        部署位置:接收路由的设备上

(config)# router bgp 100
(config-router)# neighbor 对端物理接口地址/环回口地址 allowas-in

        2.as-override # AS号覆盖,将不同于自己AS号的值用本地AS号进行覆盖

        部署位置:发送路由的设备上

(config)# router bgp 100
(config-router)# neighbor 对端物理接口地址/环回口地址 as-override

2.iBGP防环

        iBGP的水平分割机制:

                从一个iBGP邻居收到的路由不会再发送给另一个iBGP邻居


打破iBGP防环机制:

        1.iBGP邻居全互联

                两两内部邻居建立邻居关系

(config)# router bgp 200
(config-router)# neighbor 对端环回口地址 remot-as 200
(config-router)# neighbor 对端环回口地址 update-source lo0
(config-router)# neighbor 对端环回口地址 next-hop-self

2.路由反射器

路由反射器会将收到的路由条目反射出去,具体情况如下:

        如若是从非客户发来的路由,则RR(路由反射器)只会反射给客户,不会反射给其它的非客户;

        如若是从客户发来的路由,则RR(路由反射器)是可以同时传递给客户和非客户的。

路由反射器的配置:

        路由反射器的配置思路为在反射器上设置客户端,如需要将2.2.2.2这个邻居设置成客户端。

(config)# router bgp AS-Number
(config-router)# neighbor 2.2.2.2 route-reflector-client # 将2.2.2.2这个邻居设置本台反射器的客户端

3.联盟

        联盟的核心思想是在一个大的AS中划分若干个小的AS,每个小的AS之间独立开来,舍弃从前的iBGP邻居关系,改为eBGP邻居关系,就不会出现由于iBGP防环机制导致不发送路由的问题。

(config)# router bgp AS-Number # 此处写小AS号
(config-router)# bgp confederation identifier AS号 # 声明自己处于哪一个联盟(大AS)中
(config-router)# bgp confederation peers AS-Number # 此处如果要在联盟内部和别的小的AS建立eBGP邻居关系,则需要在此处声明自己和哪个AS相连

第五节 BGP的对等体组

对等体组

        作用:用来简化邻居建立的配置命令。

(config)# router bgp AS-Number
(config-router)# neighbor Name peer-group # 定义名为Name的对等体组

接下来可以开始定义对等体组内的语句

(config-router)# neighbor Name remote-as 200
(config-router)# neighbor Name update-source lo0
……………… # 此处还可以有其它命令
(config-router)# neighbor 4.4.4.4 peer-group Name # 将名为Name的对等体组调用4.4.4.4邻居之上 / 将邻居4.4.4.4加入对等体组

第六节 BGP的聚合

BGP的聚合(汇总)部署思路和之前完全一致。

        配置语法:

(config)# router bgp AS-Number 
(config-router)# aggregate-address 聚合后的网络号 聚合后网络号的掩码 
# 发送聚合路由,但同时也会发送明细路由

要想只收到聚合路由,不收明细路由,则可以在后面加上参数“summary-only”,意为只发送聚合路由

(config-router)# aggregate-address 聚合后的网络号 聚合后网络号的掩码 summary-only 

第七节 BGP的属性

BGP属性分为四大类

        1.公认必遵属性

                指所有运行BGP的设备都必须能够支持和识别的属性,如Origin等

        2.公认自决属性

                指运行BGP的设备在发送Update报文时可以自由选择是否包含的属性,如本地优先级

        3.可选可传递属性

                指运行BGP的设备可以不支持此类属性,但必须原模原样的传递给其它运行BGP的设备

        4.可选非传递属性

                指运行BGP的设备若不支持该属性,则可以选择忽略掉这类属性


属性详解:

公认必遵属性

        (1)Origin,起源属性

                用于标识路由的来源。

                起源属性属性值:

i:指通过network进BGP的路由
e:指来自EGP的路由
?:Incomplete,指未知来源,常见于重分发进BGP的路由

        起源属性的属性值是可以进行修改的,结合工具Route-map

(config)# ip prefix-list Origin permit 1.1.1.1/32
(config)# route-map Origin permit 10
(config-route-map)# match ip address prefix-list Origin
(config-route-map)# set origin <igp/incomplete>
(config)# route-map Origin permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map Origin in/out #

        在和x.x.x.x邻居关系下调用Route-map,注意进方向和出方向,如果该路由是要发送给邻居就是出方向,反之,如果是从邻居接收该路由,则是进方向。

        其中neighbor x.x.x.x route-map Origin in/out #为部署方式的其中一种,还可以在宣告进BGP的时候顺带做配置

(config)# router bgp AS-Number
(config-router)# network 1.1.1.1 mask 255.255.255.255 route-map Origin

        (2)AS-Path,路径属性

                路径属性代表一条路由条目从源AS到目的AS过程所经过的路径,切记从右至左观察

                AS-Path属性值可以进行增加,依旧需要结合route-map

(config)# ip prefix-list AS-Path permit 1.1.1.1/32
(config)# route-map AS-Path permit 10
(config-route-map)# match ip address prefix-list AS-Path
(config-route-map)# set as-path prepend AS1 AS2 # 添加AS号
(config)# route-map Origin permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map AS-Path in/out

        (3)Next-Hop,下一跳属性

                下一跳属性的修改:

(config)# ip prefix-list NH permit 1.1.1.1/32
(config)# route-map NH permit 10
(config-route-map)# match ip address prefix-list NH
(config-route-map)# set ip next-hop a.b.c.d # 设置下一跳地址为a.b.c.d
(config)# route-map NH permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map NH out/in  

公认自决属性:

        (1)本地优先级(Local-Preference)

                衡量路由的优先程度,越高越优先。

                本地优先级值的修改:

全局修改:
(config)# router bgp AS-Number
(config-router)# bgp default local-preference 150 # 将本地宣告进BGP的路由优先级设置为150
​
​
部分修改:
(config)# ip prefix-list LPF permit 1.1.1.1/32
(config)# route-map LPF permit 10
(config-route-map)# match ip address prefix-list LPF
(config-route-map)# set local-preference x # 设置本地优先级的值
(config)# route-map LPF permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map LPF out/in 

        (2)原子聚合(atomic-aggregate):

                是一个标志,表明该路由是否是聚合路由

可选可传递属性

        (1)aggregator:聚合者,即聚合路由的起源路由器,是对公认自决属性中的原子聚合属性的补充说明

                参数:

                        aggregator AS:聚合路由的起源AS

                        aggregator Origin:聚合者

        (2)Community:团体属性

                团体属性分为公有团体属性和私有团体属性

                默认情况下,团体属性不会随着路由的传递而传递,如确需在传递路由时同时传递团体属性,则可以补充语句

(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x send-community # 发送团体属性
​

公有Community:

Internet:默认属性,所有的路由都有此属性,同时不可变更。可随意传递给其它任何邻居(包括内部邻居和外部邻居)
No-Export:不能传递给其它的AS,但是联盟内可以互传。
No-Advertise:不能传递给任何邻居。
Local-AS:路由只能在本AS内进行传递,但联盟内不可以互传。

公有团体属性的配置:

(config)# ip prefix-list A permit 8.8.8.8/32
(config)# route-map A permit 10
(config-route-map)# match ip address prefix-list A
(config-route-map)# set community no-advertise / no-export / local-as
(config)# route-map A permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map A in/out

                私有Community:

                        (1)纯数字,如:123456

                        (2)aa:nn,如1:1

     注:即使配置成aa:nn格式,也会自动转换成纯数字形式,若想查看团体属性时看到aa:nn形式,则需要在全局下输入命令来转换

(config)# ip bgp new-format

                私有团体属性的配置:

(config)# ip prefix-list A permit 8.8.8.8/32
(config)# route-map A permit 10
(config-route-map)# match ip address prefix-list A
(config-route-map)# set community 1:1
(config)# route-map A permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map A in/out

                团体属性列表:

(config)# ip community-list 1 permit aa:nn 
(config)# route-map A permit 10
(config-route-map)# match community 1
(config)# router bgp AS-Number
(config-bgp)# neighbor x.x.x.x route-map in/out

可选非传递属性

        (1)MED,Multi-exit-discrimination,多出口鉴别

                当某一条路由在进入BGP之前已经有Metric值,则进入BGP后,该Metric值=MED值

                当某一条路由在进入BGP之前无Metric值,则MED=0

                MED值是可以修改的

(config)# ip prefix-list MED permit 1.1.1.1/32
(config)# route-map MED permit 10
(config-route-map)# match ip address prefix-list MED
(config-route-map)# set metric x # 设置MED的值
(config)# route-map MED permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map MED out/in  

        (2)Originator_ID:起源者的标识,标识路由发送者和的Router-id,用于防环

        (3)Cluster-List:集群列表,当路由每经过一台路由反射器,该反射器就会将自己的Router-id添加到集群列表中。

                如果Cluster-List中已有本地的Router-id,则拒绝接收该路由,达到防环的效果。

第八节 BGP的选路原则

BGP选路将依据如下顺序进行选路

        1.Weight(权重值,Cisco私有属性)

                权重值越大,则该条路由越优先

                权重值默认:

                        32768,始发于本地的路由 ​ 0,其它路由

修改权重值:

(config)# ip prefix-list 8 permit 8.8.8.8/32
(config)# route-map 8 permit 10
(config-route-map)# match ip address prefix-list 8
(config-route-map)# set weight x # 设置权重值
(config)# route-map 8 permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map in # 权重值只有在in方向上调用才会生效。

        2.本地优先级(Local Preference)

                越大越优

                修改本地优先级的方法:

全局修改:

(config)# router bgp AS-Number
(config-router)# bgp default local-preference 200 # 将本地传递出去的路由优先级设置为200

部分修改:

(config)# ip prefix-list LPF permit 1.1.1.1/32
(config)# route-map LPF permit 10
(config-route-map)# match ip address prefix-list LPF
(config-route-map)# set local-preference x # 设置本地优先级的值
(config)# route-map LPF permit 20
(config)# router bgp AS-Number
(config-router)# neighbor x.x.x.x route-map LPF out/in  

3.优选始发于本地的路由

        当Next-hop字段内容为0.0.0.0的时候,代表下一跳是本身

        如果同一目标网络前缀,有多个下一跳,且0.0.0.0存在时,则下一跳是0.0.0.0的路由会被优选。

4.AS-Path:越短越优

5.Origin:IGP>EGP>Incomplete

6.MED:越小越优

7.EBGP路由优先于IBGP路由

8.优选IGP路径最优的

9.优选配置了BGP的负载均衡(最大路径数)的

maximum-paths 2 # 针对EBGP路由(常用)
maximum-paths ibgp 2 # 针对iBGP路由(不常用)

10.对于eBGP路由,优选最老的

11.Router-ID,越小越优

12.Cluster-List,越少越优

13.邻居的物理接口地址,越小越优

第九节 BGP的下放默认

BGP下放默认路由的方式:

        前提是下发默认路由的设备本地路由表中有默认路由

        1.重分发加下发

(config)# router bgp 100
(config-router)# redistribute static
(config-router)# default-information originate

2.邻居上强制下发

(config)# router bgp 100
(config-router)# neighbor 1.1.1.1 default-originate

相关文章:

【CCNP】第七章 动态路由协议-BGP

第一节 BGP的基本概念 BGP&#xff08;Border Gateway Protocol&#xff09;&#xff0c;边界网关协议 是运行在网络和网络之间的协议&#xff0c;是一款EGP&#xff08;外部网关协议&#xff09; BGP基于TCP协议工作&#xff0c;目的端口号179。源端口随机&#xff0c;由路由…...

java学习--day24(stream流)

文章目录 今天的内容1.Stream【难点】1.1获取流的对象1.2Stream流对象下面1.2.1count和forEach1.2.2filter方法1.2.3limit1.2.4map方法1.2.5skip1.2.6concat 1.3收集流 1.基于接口和抽象类的匿名内部类的写法 abstract class Person {public abstract void eat(); } public sta…...

Multi-Grade Deep Learning for Partial Differential Equations

论文阅读&#xff1a;Multi-Grade Deep Learning for Partial Differential Equations with Applications to the Burgers Equation Multi-Grade Deep Learning for Partial Differential Equations with Applications to the Burgers Equation符号定义偏微分方程定义FNN定义PI…...

Docker部署rustdesk

查看镜像版本 https://hub.docker.com/r/rustdesk/rustdesk-server/tags 拉取镜像 docker pull rustdesk/rustdesk-server:1.1.8-2创建挂载目录 mkdir -p /opt/rustdesk/{hbbr,hbbs}/root运行hbbs –nethost 仅适用于 Linux&#xff0c;它让 hbbs/hbbr 可以看到对方真实的…...

win1011安装MG-SOFT+MIB+Browser+v10b

文章目录 安装MG-SOFTSNMP服务配置安装MG-SOFT启动MIB-Browser以及错误解决MIB Browser使用 安装MG-SOFT win10和win11安装基本一样&#xff0c;所以参照下面的操作即可&#xff01; SNMP服务配置 打开设置&#xff0c;应用和功能&#xff0c;可选功能&#xff0c;选择添加功…...

PCL点云处理之Pcd文件读取、法线与曲率计算、多线程加速、属性字段合并 (二百零八)

PCL点云处理之Pcd文件读取、法线与曲率计算、多线程加速、属性字段合并(二百零八) 一、相关介绍二、算法实现1.代码一、相关介绍 (夜深人不静) 法线和曲率的计算是点云处理中常用的关键特征,PCL提供了特有的点类型PointNormal来记录这些信息,通过OMP多线程对相关的计算函…...

JavaEE-文件IO操作

构造方法 一般方法&#xff0c;有很多&#xff0c;我们以下只是列举几个经常使用的 注意在上述的操作过程中&#xff0c;无论是绝对路径下的这个文件还是相对路径下的这个文件&#xff0c;都是不存在的 Reader 使用 --> 文本文件 FileReader类所涉及到的一些方法 Fil…...

二蛋赠书四期:《Go编程进阶实战:开发命令行应用、HTTP应用和gRPC应用》

前言 大家好&#xff01;我是二蛋&#xff0c;一个热爱技术、乐于分享的工程师。在过去的几年里&#xff0c;我一直通过各种渠道与大家分享技术知识和经验。我深知&#xff0c;每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此&#xff0c;我非常感激大家一直…...

MySQL数据库基本操作-DQL-排序查询

介绍 如果我们需要对读取的数据进行排序&#xff0c;我们就可以使用 MySQL 的 order by 子句来设定你想按哪个字段哪种方式来进行排序&#xff0c;再返回搜索结果。 语法 select 字段名1&#xff0c;字段名2&#xff0c;…… from 表名 order by 字段名1 [asc|desc]&#xf…...

这是一篇测试文章

这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章这是一篇测试文章…...

Ubuntu plt画图 新罗马字体网格marker刻度朝内

* 字体文件&#xff1a;坚果云下code包&#xff0c;新罗马字体 参考链接&#xff1a;Linux下Matplotlib画图New Times Roman字体设置 - 知乎 * 刻度朝内 plt.rcParams[font.sans-serif] [Times New Roman]plt.rcParams[xtick.direction]in#设置x轴刻度向内plt.rcParams[ytic…...

flutter布局中的一些细节

前言 记录flutter使用中遇到的一些细节和坑&#xff0c;希望能帮助到大家 Column中不能直接嵌套ListView, &#xff08;需要指定ListView的高度或者加上shrinkWrap: true属性&#xff09;需要限制button的大小&#xff0c;可以在外部嵌套一个Container或SizedBox来限制在List…...

论文解析——AMD EPYC和Ryzen处理器系列的开创性的chiplet技术和设计

ISCA 2021 摘要 本文详细解释了推动AMD使用chiplet技术的挑战&#xff0c;产品开发的技术方案&#xff0c;以及如何将chiplet技术从单处理器扩展到多个产品系列。 正文 这些年在将SoC划分成多个die方面有一系列研究&#xff0c;MCM的概念也在不断更新&#xff0c;AMD吸收了…...

第二证券:汽车产业链股活跃,恒勃股份、博俊科技“20cm”涨停

轿车产业链股9日盘中走势活跃&#xff0c;截至发稿&#xff0c;恒勃股份、博俊科技“20cm”涨停&#xff0c;德迈仕涨超17%&#xff0c;上声电子涨超14%&#xff0c;川环科技涨超10%&#xff0c;圣龙股份、科华控股、沪光股份、上海沿浦、日盈电子、赛力斯等均涨停。 工作方面…...

孙帅Spring源码

【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】【微信号&#xff1a;suns45】...

jenkins工具系列 —— 插件 使用Changelog获取commit记录

文章目录 安装changelog插件重启jenkins配置 ChangelogExecute shell 使用 changelog邮件中html格式也可以使用构建测试&#xff08;查看构建项 -> 控制台输出&#xff09; 安装changelog插件 插件文件可通过 V 获取 点击 左侧的 Manage Jenkins —> Plugins ——> …...

【JavaScript】浅拷贝与深拷贝

引言 浅拷贝、深拷贝是对引用类型而言的。 引用类型的变量对应一个栈区地址&#xff0c;这个栈区地址处存储的值是存放的真正的数据的堆区地址。 基本数据类型的变量也对应一个栈区地址&#xff0c;但是该地址存储的是其真正的值。 let a b发生了什么&#xff1f; let obj…...

如何下载IEEE Journal/Conference/Magazine的LaTeX/Word模板

当你准备撰写一篇学术论文或会议论文时&#xff0c;使用IEEE&#xff08;电气和电子工程师协会&#xff09;的LaTeX或Word模板是一种非常有效的方式&#xff0c;它可以帮助你确保你的文稿符合IEEE出版的要求。无论你是一名研究生生或一名资深学者&#xff0c;本教程将向你介绍如…...

nvidia 驱动问题

https://stackoverflow.com/questions/43022843/nvidia-nvml-driver-library-version-mismatch https://zhuanlan.zhihu.com/p/643773939...

PDF编辑和OCR文字识别工具ABBYY FineReader PDF

ABBYY FineReader PDF是一款专业的OCR文字识别和PDF编辑工具&#xff0c;可以帮助用户更好地处理和管理PDF文档。以下是ABBYY FineReader PDF的一些特点&#xff1a; 1. 文字识别精准&#xff1a;ABBYY FineReader PDF具有强大的OCR文字识别功能&#xff0c;可以将PDF中的文字…...

什么是网络流量监控

随着许多服务迁移到云&#xff0c;网络基础架构的维护变得复杂。虽然云采用在生产力方面是有利的&#xff0c;但它也可能让位于未经授权的访问&#xff0c;使 IT 系统容易受到安全攻击。 为了确保其网络的安全性和平稳的性能&#xff0c;IT 管理员需要监控用户访问的每个链接以…...

ubuntu 终端 中文显示unicode码、乱码

Ubuntu默认的中文字符编码 locale命令查看 LANG 等参数是否无UTF-8等参数&#xff1f;比如 为空&#xff1f; Ubuntu默认的中文字符编码为zh_CN.UTF-8&#xff0c;这个可以在 /etc/environment中看到&#xff1a; sudo gedit /etc/environment 可以看到如下内容&#xff1a; P…...

作用域理解

概念:它是指对某一变量和方法具有访问权限的代码空间, 在JS中, 作用域是在函数中维护的。表示变量 或函数起作用的区域,指代了它们在什么样的上下文中执行,亦即上下文执行环境。 ES5的作用域只有两种:全局作用域和局部作用域 全局作用域 var a1; //全局作用域 function fn1(…...

Stream 流式编程创建及其常用操作方法

目录 Stream 对象如何创建 Stream 常用的操作方法 1.过滤&#xff08;Filter&#xff09; 2.映射&#xff08;Map&#xff09; 3.扁平映射&#xff08;FlatMap&#xff09; 4.截断&#xff08;Limit&#xff09; 5.跳过&#xff08;Skip&#xff09; 6.排序&#xff08…...

Can 通信-协议

概述 CAN 是 Controller Area Network 的缩写&#xff08;以下称为 CAN&#xff09;&#xff0c;是 ISO国际标准化的串行通信协议。 在当前的汽车产业中&#xff0c;出于对安全性、舒适性、方便性、低公害、低成本的要求&#xff0c;各种各样的电子控制系统 被开发了出来。由于…...

rustlings本地开发环境配置

克隆自己的仓库 首先我们要在github上找到自己仓库并把它克隆到本地 git clone https://github.com/LearningOS/rust-rustlings-2023-autumn-******.git下载插件 rust-analyzer和Git Graph一个可以用来解析rust代码&#xff0c;另一个可以可视化管理git代码库 下载rustling…...

希尔排序:优化插入排序的精妙算法

排序算法在计算机科学中扮演着重要的角色&#xff0c;其中希尔排序&#xff08;Shell Sort&#xff09;是一种经典的排序算法。本文将带您深入了解希尔排序&#xff0c;包括其工作原理、性能分析以及如何使用 Java 进行实现。 什么是希尔排序&#xff1f; 希尔排序&#xff0c…...

新能源电动汽车安全性能检测中采集车架号及BMS电池数据的难点

按照新能源电动汽车安全性能检测&#xff0c;必须采集到汽车的车架号及BMS电池数据做对应的评测。国内电动汽车主要以比亚迪、特斯拉、广汽埃安、五菱新能源、长安新能源、大众、理想、蔚来、哪吒等主流为主。与传统燃油车不同的是&#xff0c;电动汽车不用执行OBD2标准&#x…...

函数reshape(-1,)里的-1的意思

reshape函数是对narray的数据结构进行维度变换&#xff0c;由于变换遵循对象元素个数不变&#xff0c;在进行变换时&#xff0c;假设一个数据对象narray的总元素个数为N&#xff0c;如果我们给出一个维度为&#xff08;m&#xff0c;-1&#xff09;时&#xff0c;我们就理解为将…...

名词作形容词的用法

【名词作形容词的用法】 有考英语二的同学问我&#xff0c;为什么名词能修饰名词&#xff0c;比如spending proportion&#xff08;支出比例&#xff09;, job satisfaction(工作满意度)&#xff0c;之前老师不是说这种写法不能乱用么&#xff1f; 那我在这里简单说明一下“形…...