【路由交换方向IE认证】BGP选路原则之AS-Path属性
文章目录
- 一、路由器BGP路由的处理过程
- 控制平面和转发平面
- 选路工具
- 二、BGP的选路顺序
- 选路的前提
- 选路顺序
- 三、AS-Path属性选路原则
- AS-Path属性特性
- AS-Path管进还是管出呢?
- 使用AS-Path对进本AS的路由进行选路
- 验证AS-Path不接收带本AS号的路由
- 四、BGP邻居建立配置
一、路由器BGP路由的处理过程
路由器对BGP路由的处理过程,简单来说就是BGP中的选路过程
控制平面和转发平面
一、控制平面 :是从起点到目的地所使用的IGP,BGP等路由协议从而控制产生路由表,VPNV4路由表,标签转发表等,由这些表去控制我们的FIB表,也就是数据转发表
二、转发平面 :也叫做数据平面,根据刚刚产生的路由表,VPNV4路由表,标签转发表从而产生一个数据转发表(FIB表)去进行数据的从起点到目的地的转发,
如图1-1,
选路工具
在 BGP 选路中有两个重要的概念:
一、策略机 : 相当于route-map,能够对属性值进行修改,影响路由表的生成(在控制平面上:是一个过程),从而影响用户的数据转发
①输入策略机:路由进入本地时的route-map,我们可以理解为 in 方向,会影响自身和下游的路由器
②输出策略机:路由离开本地时的route-map,我们可以理解为 out 方向,只会影响下游的路由器,不会影响自身
二、路由决策 : 根据刚刚的策略机(route-map)选择出最佳的路径,并且将最佳的路径添加到路由表中,简单来说就是去哪里,哪条路比较方便或近
如图1-2,就是BGP路由的处理过程
二、BGP的选路顺序
选路的场景主要面对同一个目的网络存在多种去的方式
如图2-1,对于R3来说,去往192.168.10.0/24有去往R1或R2两条路可以选
选路的前提
我们选路的前提是路由的下一跳可达,如果说路由的下一跳不可达的话,那么选路将不具有任何意义
选路顺序
-
我们之前学过的那么多个BGP属性都是能够应用到BGP路由的选路当中的,但是也是存在依照属性进行选路的顺序的,并且如果较为前的属性已经选出最佳路径,那么后面的属性将不会影响到属性
-
例如:路由器已经依照Local Preference选出了最佳的路径,而MED值无论在怎么进行修改都是无济于事的
选路顺序如下
- 优选Weight值较高的;
- 优选Local Preference值较高的;
- 优选AS-Path长度较短的;
- 按照Origin属性为IGP、EGP、Incomplete类型的路由进行选路;(IGP > EGP > Incomplete)
- 优选MED值较小的路由
- 按照EBGP路由,接着是联盟EBGP路由,最后是IBGP路由的顺序
- 优越最近的IGP邻居通告的路由
- 执行等价负载均衡(默认是没有开启等价负载均衡的)
- 优选BGP Router-ID 小的 Peer 通告的路由
- 优选Cluster-list长度较短的路由
- 优选较小的 Peer 地址路由器通告的路由
这么多一串顺序我们将会逐一进行讲解,本文章所分享的是排位第三个的属性,AS-Path属性,该属性即可进行选路们还具有防环的作用
讲解Weight属性的文章:【路由交换方向IE认证】BGP选路原则之Weight属性-CSDN博客
讲解AS-Path属性的文章:【路由交换方向IE认证】BGP选路原则之Local Preference属性-CSDN博客
三、AS-Path属性选路原则
AS-Path属性特性
AS-Path优选原则,AS-Path长度越短越优先,在AS-Path选路当中,我们的策略机依然是使用route-map
如图3-1,由于AS-Path属性的不只含有选路这一个属性,还可以进行路由的防环
所以我们在调整AS-Path属性长度进行选路的时候,尽量地不要去减少AS-Path的长度,这样就产生了AS-Path的第一个调整原则,①:只增不减
除此之外,AS-Path的route-map在使用时,in方向或是out方向,都会对结果造成不同
如图3-2,当route-map使用在in方向的时候,则 AS 号添加到原始AS号的左侧;当route-map使用在out方向的时候,则 AS 号添加到原始AS号的右侧
由于AS-Path的来源是经过的各个AS-Path,所以对于IBGP Peer和EBGP Peer之间传递的AS-Path是否发生改变是不一样的
结论是:IBGP Peer 之间传递路由的时候,由于AS-Path没有发生了变化,AS-Path值并不会发生改变;EBGP Peer 之间传递路由的时候,由于AS-Path发生了变化,所以相对应的AS-Path也会发生变化
如图3-3,当R1传递给R2路由时,由于是EBGP Peer 关系,所以路由中的AS-Path属性会发生变化;当R2传递路由给R4时,由于是IBGP Peer关系,所以传递的路由中AS-Path属性不会发生变化
在特殊的情况下,我们不想让AS-Path属性进行选路,而是只让其发挥防环的作用,可以通过下述命令来使AS-Path属性不参加选路
R1>en
R1#conf
R1(config)#router bgp 100
R1(config-router)#bgp bestpath as-path ignore //使得AS-Path不参与选路
R1(config-router)#ex
AS-Path管进还是管出呢?
我们所说的管进还是管出,是相对于本AS来说的,仔细回想起来,我们的AS-Path属性是公认必遵属性,可以传播到BGP网络中的任意一个角落,相比于Local Preference,不需要考虑跨AS能否传递的问题,所以我们AS-Path属性是能够管进也能管出的
如图3-4与图3-5,分别是AS-Path进入本公司和AS-Path出本公司的选路示意图
使用AS-Path对进本AS的路由进行选路
在实际的生产环境中,由于我们能进行配置的只有本公司的设备,所以无法在R1上进行配置,我们的AS-Path选路需要在R2或者R3上进行
使用AS-Path进行选路需求:① 控制R1进本公司的选路;② 控制R1访问4.4.3.4走R3,控制R1访问4.4.4.4走R2(奇数走奇数,偶数走偶数);
思路:根据AS-Path长度越小越优先的原则,我们要让R3发出4.4.4.4路由中的AS-Path属性更长,让R2发出4.4.3.4路由中的AS-Path属性更长,如图3-7,调整AS-Path值如图所示
但我们回过头来一想,4.4.4.4是默认走的就是R2这条路径,所以,我们并不是非常低有必要去更改R2对于4.4.4.4向R1发出的AS-Path值,如图3-8
这就极大的减少了我们配置的工作量,现在只需要在R2上对于4.4.3.4向R1发出的 AS-Path值进行修改
如图3-9,prepend表示对整个路由的AS-Path值的增加,replace表示对整个路由的AS-Path值的替换
在R2上进行配置操作
R2(config)#access-li 10 per 4.4.4.4 0.0.0.0
R2(config)#route-map AS-P per 10
R2(config-route-map)#mat ip add 10
R2(config-route-map)#set as-path prepend 200
R2(config-route-map)#ex
R2(config)#route-map AS-P per 20
R2(config-route-map)#ex
R2(config)#router bgp 200
R2(config-router)#nei 12.1.1.1 route-map AS-P out
R2(config-router)#ex
如图3-10,在R1上执行show ip bgp的命令,可以发现选路情况已经发生了变化,并且已经达到了预期;在标注处也显示AS-Path的长度修改成功
验证AS-Path不接收带本AS号的路由
如图3-11,我们可以在route-map中设置发出路由的AS 号中增加 AS 100,在R1上观察BGP路由表会发生什么变化
在R2上的配置如下
R2>en
R2#conf
R2(config)#route-map AS-P per 10
R2(config-route-map)#set as-path prepend 100
R2(config-route-map)#ex
在R1上执行show ip bgp的命令,观察BGP路由表,如图3-12,发现对于4.4.4.4这条路由来说,已经中断了与R2的邻居关系
四、BGP邻居建立配置
附上配置过程
R1
Router(config)#hos R1
R1(config)#int g0/0
R1(config-if-GigabitEthernet 0/0)#ip add 12.1.1.1 24
R1(config-if-GigabitEthernet 0/0)#ex
R1(config)#int g0/1
R1(config-if-GigabitEthernet 0/1)#ip add 12.1.2.1 24
R1(config-if-GigabitEthernet 0/1)#ex
R1(config)#int lo0
R1(config-if-Loopback 0)#ip add 1.1.1.1 32
R1(config-if-Loopback 0)#ex
R1(config)#int lo1
R1(config-if-Loopback 1)#ip add 1.1.2.1 32
R1(config-if-Loopback 1)#ip add 1.1.2.1 32
R1(config-if-Loopback 1)#ex
R1(config)#router bgp 100
R1(config-router)#bgp router-id 1.1.1.1
R1(config-router)#nei 12.1.1.2 remote-as 200
R1(config-router)#nei 12.1.2.3 remote-as 200
R1(config-router)#netw 1.1.1.1 mask 255.255.255.255
R1(config-router)#netw 1.1.2.1 mask 255.255.255.255
R1(config-router)#ex
R2
R2>en
R2#conf
R2(config)#hos R2
R2(config)#int g0/0
R2(config-if-GigabitEthernet 0/0)#ip add 12.1.1.2 24
R2(config-if-GigabitEthernet 0/0)#ex
R2(config)#int g0/1
R2(config-if-GigabitEthernet 0/1)#ip add 12.1.3.2 24
R2(config-if-GigabitEthernet 0/1)#ex
R2(config)#int lo0
R2(config-if-Loopback 0)#ip add 2.2.2.2 32
R2(config-if-Loopback 0)#ex
R2(config)#router ospf 10
R2(config-router)#rou 2.2.2.2
Change router-id and update OSPF process! [yes/no]:yes
R2(config-router)#netw 2.2.2.2 0.0.0.0 area 0
R2(config-router)#netw 12.1.3.0 0.0.0.255 area 0
R2(config-router)#ex
R2(config)#router bgp 200
R2(config-router)#bgp router-id 2.2.2.2
R2(config-router)#nei 12.1.1.1 remote-as 100
R2(config-router)#nei 4.4.4.4 remote-as 200
R2(config-router)#nei 4.4.4.4 update-sou lo0
R2(config-router)#nei 4.4.4.4 next-hop-self
R2(config-router)#ex
R3
Router>en
Router#conf
Router(config)#hos R3
R3(config)#int g0/0
R3(config-if-GigabitEthernet 0/0)#ip add 12.1.2.3 24
R3(config-if-GigabitEthernet 0/0)#ex
R3(config)#int g0/1
R3(config-if-GigabitEthernet 0/1)#ip add 12.1.4.3 24
R3(config-if-GigabitEthernet 0/1)#ex
R3(config)#int lo0
R3(config-if-Loopback 0)#ip add 3.3.3.3 32
R3(config-if-Loopback 0)#ex
R3(config)#router ospf 10
R3(config-router)#rou 3.3.3.3
Change router-id and update OSPF process! [yes/no]:yes
R3(config-router)#netw 3.3.3.3 0.0.0.0 area 0
R3(config-router)#netw 12.1.4.0 0.0.0.255 area 0
R3(config-router)#ex
R3(config)#router bgp 200
R3(config-router)#bgp router-id 3.3.3.3
R3(config-router)#nei 12.1.2.1 remote-as 100
R3(config-router)#nei 4.4.4.4 remote-as 200
R3(config-router)#nei 4.4.4.4 update-sou lo0
R3(config-router)#nei 4.4.4.4 next-hop-self
R3(config-router)#ex
R4
R4>en
R4#conf
R4(config)#hos R4
R4(config)#int g0/0
R4(config-if-GigabitEthernet 0/0)#ip add 12.1.3.4 24
R4(config-if-GigabitEthernet 0/0)#ex
R4(config)#int g0/1
R4(config-if-GigabitEthernet 0/1)#ip add 12.1.4.4 24
R4(config-if-GigabitEthernet 0/1)#ex
R4(config)#int lo0
R4(config-if-Loopback 0)#ip add 4.4.4.4 32
R4(config-if-Loopback 0)#ex
R4(config)#int lo1
R4(config-if-Loopback 1)#ip add 4.4.3.4 32
R4(config-if-Loopback 1)#ex
R4(config)#router ospf 10
R4(config-router)#rou 4.4.4.4
Change router-id and update OSPF process! [yes/no]:yes
R4(config-router)#netw 4.4.4.4 0.0.0.0 area 0
R4(config-router)#netw 12.1.3.0 0.0.0.255 area 0
R4(config-router)#netw 12.1.4.0 0.0.0.255 area 0
R4(config-router)#ex
R4(config)#router bgp 200
R4(config-router)#nei 2.2.2.2 remote-as 200
R4(config-router)#nei 2.2.2.2 update-sou lo0
R4(config-router)#nei 3.3.3.3 remote-as 200
R4(config-router)#nei 3.3.3.3 update-sou lo0
R4(config-router)#netw 4.4.4.4 mask 255.255.255.255
R4(config-router)#net 4.4.3.4 mask 255.255.255.255
R4(config-router)#ex
相关文章:
【路由交换方向IE认证】BGP选路原则之AS-Path属性
文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、AS-Path属性选路原则AS-Path属性特性AS-Path管进还是管出呢?使用AS-Path对进本AS的路由进行选路验证AS-Path不接收带本AS号的路由 四、BGP邻居建立配置 一…...
《软件设计师》复习笔记(14.3)——设计模式
目录 一、设计模式分类 1. 创建型模式(Creational Patterns) 2. 结构型模式(Structural Patterns) 3. 行为型模式(Behavioral Patterns) 真题示例: 一、设计模式分类 架构模式 高层设计决…...
Windows10,11账户管理,修改密码,创建帐户...
在这里,我们使用微软操作系统的一款工具:netplwiz 它可以非常便捷的管理用户账户. 一:修改密码(无需现在密码) 01修改注册表 运行命令:regedit 在地址栏输入: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Passwor…...
数据类型相关问题导致的索引失效 | OceanBase SQL 优化实践
背景 针对在OceanBase 论坛中遇到的一些典型SQL调优问题,进行记录与总结,分享给大家。本文介绍的事3个场景:数据类型不匹配、字符集相关属性不匹配,和过滤/联接条件上包含系统函数。 场景一:数据类型不匹配 类型不匹…...
银行卡风险画像在社交行业网络安全的应用
据中国支付清算协会统计,2023年银行卡欺诈案件造成的经济损失同比增长21%,而社交平台中超过35%的诈骗行为涉及金融账户盗用。本文将讲述如何使用风险画像技术助力社交网络安全。 银行卡风险画像的核心逻辑 银行卡风险画像是通过多维度数据分析构建的用…...
C++程序设计基础实验:C++对C的扩展特性与应用
C程序设计基础实验:C对C的扩展特性与应用 🔥 本文详细讲解C基础实验,包含C对C语言的扩充与增强特性,从零开始掌握函数重载、引用、指针等核心概念,附详细代码分析与运行结果。适合C初学者和有C语言基础想学习C的同学&a…...
极狐GitLab 外部授权控制机制是怎样的?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 外部授权控制 (BASIC SELF) 在高度控制的环境中,访问策略可能需要由外部服务控制,该服务允许基于项目…...
告别Feign:基于Spring 6.1 RestClient构建高可用声明式HTTP客户端
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
极狐GitLab 项目和群组的导入导出速率限制如何设置?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 项目和群组的导入导出速率限制 (BASIC SELF) 您可以为项目和群组的导入和导出配置速率限制: 更改速率限制&#…...
中华传承-医山命相卜-铁板神数
铁板神数 子平法 子平法 徐子平 倪海夏 一月(公历2025年1月29日-2025年2月27日) 运势:事业开局不利,难以快速适应工作节奏,可能面临上级的质疑或竞争压力。财富方面容易财来财去,需留意理财陷阱。 原因&…...
C++学习:六个月从基础到就业——面向对象编程:接口设计
C学习:六个月从基础到就业——面向对象编程:接口设计 本文是我C学习之旅系列的第十五篇技术文章,重点讨论在C中进行接口设计的原则、技术和最佳实践。查看完整系列目录了解更多内容。 引言 在面向对象的软件开发中,良好的接口设计…...
工作总结(十二)——迁移svn单项目到gitlab上,保留历史提交记录
文章目录 前言一、目的二、操作步骤1.创建项目库2.复制历史提交者账号3.复制待迁移项目以及历史记录4.push到gitlab远程仓库 总结 前言 本系列文章主要记录工作中一些需要记录的内容 一、目的 因为一些原因,我需要将svn库上的某个项目迁移到公司的gitlab库管理平台…...
PS中制作一张扣洞贴图
要在PS制作如下一张贴图,如下图所示 步骤: 1.首先复制一张图层 2.将最底层图层的透明度调整为0 3.选择画笔的模式为清除 4.设置画笔大小 5.选中需要清除的图层,然后就可以将图层的像素点清除了 6.导出成PNG文件即可 注࿱…...
STM32 HAL库 Freertos创建多任务
1. 引言 STM32F407 是 ST 公司推出的一款高性能微控制器,具有丰富的外设资源和强大的处理能力。HAL(Hardware Abstraction Layer)库是 ST 为其微控制器提供的硬件抽象层,它简化了硬件操作,提高了开发效率。FreeRTOS 是…...
android测试硬件工具 安卓硬件测试命令
Android开发常用ADB命令大全 在Android开发过程中,ADB(Android Debug Bridge)是一个非常重要的调试工具。掌握这些命令可以大大提高开发效率。如果你正在使用克魔开发助手(Keymob)这样的开发工具,你会发现它已经集成了很多ADB功能,让调试变得…...
第12篇:Linux程序访问控制FPGA端Switch<一>
Q:如何写.c代码访问读取FPGA端的滑动开关SW的值? A:DE1-SoC开发板上有10个滑动开关连接到DE1_SoC_Computer系统的并行输入端口,该端口只有一个10位只读Data寄存器映射到地址0xFF200040,对Data寄存器进行读操作并将读出…...
硬盘变废为宝!西部数据携微软等启动稀土回收 效率可达90%
快科技4月18日消息,西部数据(Western Digital)宣布,与微软、Critical Materials Recycling及PedalPoint Recycling携手,在美国启动一项跨产业前导计划-稀土回收。 目前,西部数据已经成功从报废硬盘&#x…...
元宇宙概念兴起,B 端数字孪生迎来哪些新机遇?
在科技飞速发展的当下,元宇宙概念如同一颗璀璨新星,迅速吸引了全球的目光。随着元宇宙的兴起,与之紧密相关的 B 端数字孪生技术也迎来了前所未有的发展机遇。元宇宙与 B 端数字孪生的融合,正悄然改变着多个行业的运作模式…...
用 NLP + Streamlit,把问卷变成能说话的反馈
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
stl 容器 – map
stl 容器 – map 1. map 和 multimap的使用文档 参考文档 参考文档点这里哟 🌈 😘 2. map 类的介绍 map的声明如下 template < class Key, // map::key_type class T, // map::mapped_type class Compare less<Key>, // map::key_…...
20250417-vue-动态插槽名
动态指令参数在 v-slot 上也是有效的,即可以定义下面这样的动态插槽名: <base-layout><template v-slot:[dynamicSlotName]>...</template><!-- 缩写为 --><template #[dynamicSlotName]>...</template> </base…...
010301-cdn_waf-web扩展1-基础入门-网络安全
文章目录 1 WAF1.1WAF 的核心功能1.2 WAF 的部署类型1.3 WAF 的应用场景1.4 主流 WAF 产品1.5 如何选择 WAF?1.6 注意事项1.7 waf总结和演示 2 CDN2.1 核心原理2.2 关键功能2.3 典型应用场景2.4 优势2.5 主流CDN服务商2.6 技术实现2.7 注意事项2.8cdn安全测试和演示…...
CentOS7执行yum命令报错 Could not retrieve mirrorlist http://mirrorlist.centos.org
CentOS7执行yum命令报错 引更新yum源备份原有源创建新的源文件清理并重建缓存 引 CentOS 7 系统无法连接到 CentOS 的官方镜像站点。这通常是由于网络问题或 CentOS 7 已停止维护导致的(2024年6月30日后 CentOS 7 已进入 EOL) 报错明细: 已…...
在阿里云虚拟主机上启用WordPress伪静态
在阿里云虚拟主机上启用WordPress伪静态,需要根据虚拟主机的Web服务器类型(Nginx或Apache)进行相应的设置。以下是具体步骤: 1. 确认虚拟主机的Web服务器类型 登录阿里云虚拟主机管理控制台。 查看主机的配置信息,确认是使用Nginx还是Apac…...
【java 13天进阶Day06】Map集合,HashMapTreeMap,斗地主、图书管理系统,排序算法
Map集合 Collection是单值集合体系。 Map集合是另一个集合体系,是一种双列集合,每个元素包含两个值。 Map集合的每个元素的格式:keyvalue(键值对元素)。 Map集合也被称为“键值对集合”。 Map集合的完整格式:{key1value1 , ke…...
从代码学习深度学习 - 小批量随机梯度下降 PyTorch 版
文章目录 前言一、数据准备与处理1.1 数据集简介1.2 数据加载与预处理二、训练工具与辅助类三、可视化工具四、模型训练五、执行训练总结前言 深度学习是人工智能领域的核心技术之一,而小批量随机梯度下降(Mini-Batch Stochastic Gradient Descent, SGD)是训练神经网络的基…...
03、GPIO外设(三):标准库代码示例
标准库代码示例 1、点亮LED2、LED闪烁3、LED流水灯4、按键控制LED5、蜂鸣器 本章源代码链接: 链接: link 1、点亮LED 实验要求:点亮LED ①LED.c文件的代码如下: #include "LED.h"/*** LED引脚初始化*//* 定义数组,想要添加引脚…...
PyTorch 深度学习实战(37):分布式训练(DP/DDP/Deepspeed)实战
在上一篇文章中,我们探讨了混合精度训练与梯度缩放技术。本文将深入介绍分布式训练的三种主流方法:Data Parallel (DP)、Distributed Data Parallel (DDP) 和 DeepSpeed,帮助您掌握大规模模型训练的关键技术。我们将使用PyTorch在CIFAR-10分类…...
MCP系列之架构篇:深入理解MCP的设计架构
前言 在上一篇《MCP系列之基础篇》中,我们初步了解了MCP(模型上下文协议)的基本概念和价值。本篇文章将深入探讨MCP的技术架构,帮助开发者和技术爱好者更全面地理解这一协议的内部工作机制。我们将剖析MCP的核心组件、通信模型和工作流程,解析Host、Client和Server三者之…...
RT-Thread RTThread studio 初使用
RT-Thread Studio 下载 https://www.rt-thread.org/studio.html 安装使用 https://bbs.elecfans.com/jishu_2425653_1_1.html 4 编译问题解决 问题一:error: unknown type name clock_t 具体的类型值是在sys/_types.h中定义的,需要包含sys/_types.h 这个…...
设计模式 --- 外观模式
外观模式是一种结构型设计模式,为复杂子系统提供统一的高层接口,通过定义一个外观类来简化客户端与子系统的交互,降低系统耦合度。这种模式隐藏了子系统的复杂性,将客户端与子系统的实现细节隔离开来,…...
第十二节:原理深挖-React Fiber架构核心思想
链表结构、时间切片(Time Slicing) 优先级调度实现(如用户输入>网络请求) React Fiber架构深度解析:从链表到优先级调度的革命性升级 一、Fiber架构核心设计思想 React Fiber是React 16的底层协调算法重构&#x…...
利用DeepSeek设计一个HTML批量转换工具设计
需求词:需要设计一个能够批量转换HTML文件格式的网页在线工具,界面简洁易用 功能概述 设计一个网页在线工具,允许用户批量上传HTML文件并进行格式转换,包括: HTML美化/格式化 HTML压缩/最小化 HTML到XHTML转换 HT…...
TypeScript 从入门到精通:完整教程与实战应用(一)
1. TypeScript 简介 什么是 TypeScript? TypeScript 是 JavaScript 的超集,添加了静态类型系统,由微软开发并开源。它编译成纯 JavaScript 运行在任何 JavaScript 环境中。 为什么使用 TypeScript? 类型安全:在编译时…...
什么是Python单例模式
什么是Python单例模式 Python单例模式是一种创建型设计模式,目的是确保一个类仅有一个实例,并提供一个全局访问点来获取该实例。以下从作用和示例进行介绍: 作用 控制资源使用:避免对系统资源的重复消耗,像数据库连接、文件句柄等稀缺资源,只创建一个实例来管理使用,防…...
PHP8.2.9NTS版本使用composer报错,扩展找不到的问题处理
使用composer install时报错: The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension, you can disable this error, at y our own risk, by setting the ‘disable-tls’ option to true.…...
memcache使用
Memcache 是一款高性能的分布式内存对象缓存系统,以下是其使用方法: 安装与配置 • 安装 Memcached :在 CentOS 7 系统中,可使用命令sudo yum install memcached进行安装,也可从源码编译安装,如下载 memca…...
旅游资源网站登录(jsp+ssm+mysql5.x)
旅游资源网站登录(jspssmmysql5.x) 旅游资源网站是一个为旅游爱好者提供全面服务的平台。网站登录界面简洁明了,用户可以选择以管理员或普通用户身份登录。成功登录后,用户可以访问个人中心,进行修改密码和个人信息管理。用户管理模块允许管…...
Nacos 中使用了哪些缓存?缓存的目的是什么?是如何实现的?
Nacos 在服务端和客户端都广泛的使用了缓存机制,下面着重介绍一下。 一、 Nacos 服务端缓存 (Server-Side Caching) Nacos 服务端缓存的主要目的是提高读取性能、降低对底层存储(数据库或磁盘文件)的压力,并加速对客户端请求的响…...
「GitHub热榜」AIGC系统源码:AI问答+绘画+PPT+音乐生成一站式
—零门槛搭建私有化AI内容工厂,源码开放商业落地指南 为什么全栈AIGC系统成为企业刚需? 1. 传统方案的致命缺陷 痛点 使用ChatGPTMidjourneyCanva 本全栈方案 工具割裂 需切换5平台 一个系统全搞定 成本 年费50万 一次部署永久免费 数据安全 …...
Dify LLM大模型参数(一)
深入了解大语言模型(LLM)的参数设置 模型的参数对模型的输出效果有着至关重要的影响。不同的模型会拥有不同的参数,而这些参数的设置将直接影响模型的生成结果。以下是 DeepSeek 模型参数的详细介绍: 温度(Tempera…...
快速使用工具Cursor
Cursor 是一款面向开发者的集成开发环境,用途如下: 代码编写:支持多语言,有语法高亮、智能补全与格式化功能。代码生成:能依据自然语言描述生成代码。协作开发:支持多人实时协作编辑项目。调试程序&#x…...
JVM之经典垃圾回收器
一、垃圾回收算法 1. 标记-清除(Mark-Sweep) 步骤: 标记:遍历对象图,标记所有存活对象。清除:回收未被标记的垃圾对象。 特点:简单,但会产生内存碎片。 2. 标记-复制(…...
【“星瑞” O6 评测】—NPU 部署 face parser 模型
前言 瑞莎星睿 O6 (Radxa Orion O6) 拥有高达 28.8TOPs NPU (Neural Processing Unit) 算力,支持 INT4 / INT8 / INT16 / FP16 / BF16 和 TF32 类型的加速。这里通过通过官方的工具链进行FaceParsingBiSeNet的部署 1. FaceParsingBiSeNet onnx 推理 首先从百度网盘…...
hadoop的三大结构及其各自的作用
Hadoop 主要有三大核心组件,分别是 HDFS(Hadoop Distributed File System)、MapReduce 和 YARN,以下是它们各自的作用: HDFS(Hadoop Distributed File System) 存储数据:HDFS 是一个…...
免费将静态网站部署到服务器方法(仅支持HTML,CSS,JS)
原视频链接:把HTML免费部署到网站上,实现别人也能访问的教程来啦QAQ_哔哩哔哩_bilibili 注意:仅支持HTML、CSS、JS。不支持Vue等框架。 1.打开网站www.wordpress.org 点击红框按钮 点击红框按钮下载wordpress模板文件并解压。 将自己编写的…...
2、SpringAI接入ChatGPT与微服务整合
2、SpringAI接入ChatGPT与微服务整合 小薛博客AI 大模型资料 1、SpringAI简介 https://spring.io/projects/spring-ai Spring AI是一个人工智能工程的应用框架。其目标是将Spring生态系统的设计原则(如可移植性和模块化设计)应用于人工智能领域&#…...
6.7.图的深度优先遍历(英文缩写DFS)
树是特殊的图,没有回路的图就是树 BFS与DFS的区别在于,BFS使用了队列,DFS使用了栈 一.深度优先遍历: 1.树的深度优先遍历: 树的深度优先遍历分为先根遍历和后根遍历。 以树的先根遍历为例: 上述图片里…...
若依同步企业微信架构及ACTIVITI
企业微信配置 1.进入企业微信后台管理应用管理,新建应用 2.配置网页授权及JS-SDK 将验证文件下载到项目的pubilc下 启动项目 npm run dev 然后验证域名归属 3.配置企业可信IP 公网IP地址即可,仅此IP的服务可调用企业微信接口信息 4.构造域名回调域&a…...
PyTorch分布式训练调试方法(跟踪调用过程)
PyTorch分布式训练调试方法(跟踪调用过程) 背景 在分布式深度学习训练场景中,通信操作(如AllReduce、Send/Recv)和CUDA操作的时序问题往往难以调试。本工具通过以下方式提供调试支持: 拦截所有PyTorch张量操作并记录调用栈监控分布式通信操作的完整生命周期自动生成带时间…...