FRRouting配置与OSPF介绍,配置,命令,bfd算法:
文章目录
- 1、frrouting的配置:
- 2、ospf
- 2.1、检测和维护邻居关系
- 2.2、ospfDR和BDR
- 2.3、odpf邻居表
- 2.4、ospf常用命令
- 2.5、bfd配置
1、frrouting的配置:
sudo service zebra start
sudo service ospfd start
telnet localhost 2604
en
configure terminal
router ospf
ospf router-id 192.168.30.2
network 192.168.142.0/24 area 0
network 192.168.30.0/24 area 0
quit
quit
write
quit
service zebra start:启动Zebra守护进程。Zebra是FRR的核心守护进程,负责管理路由表,并与操作系统的内核进行交互。
service ospfd start:启动OSPF守护进程。OSPF(Open Shortest Path First)守护进程负责处理OSPF路由协议相关的操作,如建立邻居关系、交换路由信息等。
通过Telnet连接到OSPF守护进程
● telnet:使用Telnet协议连接到指定的主机和端口。
● localhost:连接到本地主机。
● 2604:OSPF守护进程的默认端口。
router ospf:进入OSPF路由协议的配置模式。在这个模式下,你可以配置OSPF的具体设置。
ospf router-id 192.168.30.2:设置OSPF的Router ID。Router ID是一个唯一的标识符,用于标识OSPF路由器。通常设置为路由器的某个接口IP地址,但也可以是任何唯一的32位值。
network 192.168.142.0/24 area 0
network是一个关键字,用于指定OSPF路由器在其配置中宣布的网络。这个命令告诉OSPF进程某个特定的IP网络需要参与OSPF路由计算,并通告给其他OSPF路由器。
area:
分隔网络 ,
● 同一个区域内的 OSPF 路由器,会自动寻找并建立邻居关系。成功建立邻居关系的路由器会交换链路状态数据库(LSDB),确保区域内的所有路由器在链路状态和路由信息上保持一致。
● 当同一区域内的某个路由器检测到拓扑变化(如接口状态变化),会生成新的 LSA 并进行泛洪(flooding),使该区域内的所有路由器更新其 LSDB。
● 同一个区域内的网络才会进行计算路由
● DR 和 BDR 是在 每个广播网络段 上进行选举的,而不是在整个区域范围内选举。
● 本项目域内网段全是aera0 域间连接的网段全是aera1
2、ospf
2.1、检测和维护邻居关系
OSPF(开放最短路径优先)协议通过以下几个步骤来检测和维护邻居关系:
- 发送Hello包
OSPF通过在每个启用了OSPF的接口上定期发送Hello包来检测邻居。Hello包是OSPF的特殊报文,用于邻居发现和保持邻居关系。 - 接收Hello包
当一个OSPF路由器接收到来自其他路由器的Hello包时,它会检查包中的信息,以确定是否要建立或维护与发送者的邻居关系。 - 交换Hello包
如果两个路由器的Hello包中包含匹配的信息(如区域ID、子网掩码、Hello间隔和死间隔等),它们将成为邻居,并开始交换更多详细的OSPF信息。 - 建立邻居关系
建立邻居关系的步骤如下:
发送和接收Hello包:两个路由器交换Hello包并验证它们的兼容性。
双向通信状态:如果Hello包中包含对方的Router ID,表明对方已经收到并认可它的Hello包,邻居状态将变为双向。
交换数据库描述(DBD)包:邻居关系进入Exchange状态,路由器开始交换DBD包,其中包含链路状态数据库的摘要信息。
发送链路状态请求(LSR):路由器请求尚未拥有的链路状态信息。
发送链路状态更新(LSU):路由器响应LSR请求,发送LSU包,提供详细的链路状态信息。
数据库同步完成:一旦链路状态数据库完全同步,邻居状态进入Full状态,表示邻居关系完全建立。
OSPF 邻居关系的状态转换通常经历以下几个阶段:
- Down:初始状态,没有任何 OSPF 邻居。
- Init:邻居发现,但未完全建立。
- 2-Way:双方确认彼此的存在。
- Exstart:准备交换 LSA。
- Exchange:交换 LSA。
- Loading:加载缺失的 LSA。
- Full:完全建立邻接关系。 . 完成邻接建立 LSA 交换 SPF 计算 :路由器可以使用收到的 LSA 来执行最短路径优先(SPF)算法,计算到网络中其他路由器的最佳路径。 “Full” 状态的邻居会参与 OSPF 的路由选择过程,从而在 OSPF 路由表中添加有效的路由
- 定期发送Hello包
邻居关系建立后,OSPF路由器会定期发送Hello包来维持邻居关系。如果在规定的时间间隔内(通常是死间隔的四倍)没有收到邻居的Hello包,OSPF将认为该邻居不可达,并删除其邻居条目。
示例说明
假设有两个OSPF路由器A和B,它们连接在同一以太网交换机上,并配置在同一网段 192.168.1.0/24:
路由器A的接口配置:
interface GigabitEthernet0/1
ip address 192.168.1.1 255.255.255.0
ip ospf 1 area 0
路由器B的接口配置:
interface GigabitEthernet0/1
ip address 192.168.1.2 255.255.255.0
ip ospf 1 area 0
在这种配置下:
路由器A和B在同一网段 192.168.1.0/24 内。
它们使用组播地址 224.0.0.5 发送Hello包。
它们的Hello包中包含相同的区域ID、Hello间隔、死间隔和子网掩码。
因此,路由器A和B会相互发现并建立邻居关系。
在大多数情况下,OSPF邻居关系是在同一网段内建立的。这意味着OSPF邻居之间的接口IP地址和子网掩码必须匹配,确保它们在同一网络范围内。这种机制确保了OSPF路由器能够正确地发现和维护邻居关系,从而保证路由信息的准确性和一致性。
2.2、ospfDR和BDR
在OSPF(Open Shortest Path First)协议中,DR(Designated Router,指定路由器)和BDR(Backup Designated Router,备份指定路由器)是两个重要的角色,它们在多接入网络(如以太网)中扮演着关键的作用,用以优化网络中的OSPF流量和减少网络带宽的消耗。
Designated Router (DR)
DR是OSPF网络中每个多接入网络(如以太网)中被选举出来的一个路由器。它的主要作用是代表该网络中的其他路由器进行OSPF通信。当一个网络中存在多个路由器时,如果这些路由器都相互发送OSPF链路状态通告(LSA),那么网络中的OSPF流量将会非常庞大,从而可能导致网络拥塞。通过选举一个DR,网络中的其他路由器只需与DR交换LSA,而DR则负责将这些LSA转发给网络中的其他路由器以及自治系统内的其他路由器。这样,就大大减少了网络中的OSPF流量。
BDR
是DR的备份,它的作用是在DR失效时能够迅速接管DR的职责,从而保证网络的稳定性和连续性。与DR类似,BDR也会监听网络中的LSA,但通常不会转发给网络内的其他路由器,除非DR失效。BDR的选举过程与DR相同,但优先级稍低,确保在DR正常工作时,BDR处于待命状态。
选举过程
DR和BDR的选举过程基于以下几个因素:
- 路由器优先级:每个路由器都可以配置一个OSPF优先级(默认为1),优先级最高的路由器将被选为DR,次高的则被选为BDR。如果优先级相同,则根据路由器的Router ID(通常基于IP地址)来选择。
- 全连接性:为了被选为DR或BDR,路由器必须能够与网络中的其他所有OSPF路由器形成邻接关系。
2.3、odpf邻居表
● FULL:表示已经建立了完全的邻居关系,并同步了 LSDB。
● Init:表示接口已经接收到 Hello 报文,但还没有完成整个邻居关系建立过程。
● DR/BDR:表示该邻居是 Designated Route(DR(指定路由器)r 或 Backup Designated Router(备份指定路由器)。
● 在OSPF协议中,每个路由器都必须有一个唯一的Route ID
● DR负责在该网络内广播路由信息,而BDR则作为DR的备份。其他路由器则被称为DROther,它们只与DR和BDR交换路由信息,而不直接与其他DROther路由器交换信息。
2.4、ospf常用命令
vtysh 是一个集成的命令行接口,用于访问所有FRR守护进程(例如,zebra、ospfd等)
show ip ospf 查看ospf的全局状态
show ip ospf interface 查看OSPF接口信息
show ip ospf neighbor # 查看 OSPF 邻居状态
show ip ospf neighbor # 查看指定接口的 OSPF 邻居
show ip ospf neighbor detail # 查看 OSPF 邻居的详细信息
show ip ospf database # 查看 OSPF 数据库(LSDB)中所有 LSA
show ip ospf database router # 查看 Router LSA(类型 1 LSA)
show ip ospf database network # 查看 Network LSA(类型 2 LSA)
show ip ospf database summary # 查看 Summary LSA(类型 3 LSA)
show ip route ospf # 查看 OSPF 路由
show running-config 显示设备的完整运行配置,包括所有接口的 IP 地址、路由协议配置(如 OSPF、BGP 等)、访问控制列表(ACL)、静态路由、NAT 配置等。
show ip route 此命令用于查看路由器的完整路由表,包括所有路由来源 , 包括直连路由、静态路由、OSPF 路由、RIP 路由、BGP 路由等。每种路由类型会以不同的标识符表示,例如 O 表示 OSPF 路由,C 表示直连路由
show ip route ospf 此命令专门用于查看 OSPF 协议学习到的路由信息。 ,包括来自其他 OSPF 路由器的路由、直连路由和默认路由。
/usr/lib/frr/frrinit.sh restart 重启frr 通常只需要将 frr.conf 文件放置在 /etc/frr/ 目录下,FRR 就会在启动时自动加载该配置文件
show ip ospf database
顶部信息
● OSPF Router with ID (0.0.0.61):当前 OSPF 路由器的 Router ID,
Router Link States(路由器链路状态)(LSA) 类型 1
● Link ID:链路的标识符(Router ID),表示一个 OSPF 路由器或某个链路的标识。
● ADV Router:Advertising Router,发布该链路状态的路由器 ID。
● Age:LSA(链路状态广告)老化计时器,值为秒数,越大表明此 LSA 更旧(默认 3600 秒自动刷新)。
● Seq#:序列号,OSPF 用于版本控制。值越大代表 LSA 较新。
● CkSum:LSA 校验和,用于检查链路状态的完整性。
● Link Count:该路由器的链路数,表示此路由器直接连接的链路数量。
Net Link States(网络链路状态)类型 2:
● Link ID:网络链路标识符,通常是 DR(指定路由器)的 IP 地址,代表此网络的 IP。
● ADV Router:发布此网络状态的路由器的 Router ID,通常是网络的 DR。
● Age:同样为 LSA 老化时间,单位为秒。
● Seq#:序列号,用于标识 LSA 的版本。
● CkSum:LSA 校验和。
Summary Link States(汇总链路状态)
● Link ID:目的网络的标识符(如 17.2.5.20/30),表示网络前缀。 Summary LSA 和 AS External LSA 的作用是描述如何到达特定网络前缀,而不仅仅是描述链路之间的连接状态。因此,Link ID 表示目标网络,以便接收 LSA 的路由器可以根据此信息更新路由表,了解该目标网络的路径。
● ADV Router:发布此汇总状态的路由器的 Router ID,通常为 ABR。 ABR 负责连接 OSPF 的骨干区域(Area 0)与其他非骨干区域(如 Area 1、Area 2)。当非骨干区域的路由信息需要传播到骨干区域或其他区域时,ABR 会将这些信息汇总并生成 Summary LSA,即汇总链路状态通告,将汇总的路由信息从一个区域传递到另一个区域。 存储的网段全是跨越网段. 当前区域(域)内的连接信息,OSPF 使用的是 Link State Advertisement (LSA) 类型 1 和类型 2:
● Age:该 LSA 的老化时间。
● Seq#:序列号。
● CkSum:LSA 校验和。
● Route:路由前缀或子网,表示 LSA 描述的网络范围。
2.5、bfd配置
BFD(Bidirectional Forwarding Detection)**是一种网络协议,用于快速检测两台路由设备之间的连接状态,以便在发生连接故障时迅速做出响应。BFD 提供了超低延迟的故障检测机制,可以支持 OSPF、BGP、IS-IS 等多种路由协议,加速网络收敛,提高整体网络可靠性
OSPF 中,BFD 与 OSPF 邻居关系协同工作,用于检测 OSPF 路由器之间的链路是否出现故障。BFD 提供的快速故障检测机制能够让 OSPF 在链路中断时更快速地收敛,从而减少网络中断的持续时间。
● OSPF 默认链路故障检测时间:OSPF 默认使用 Hello 协议检测邻居链路的状态。链路故障检测的时间可能会长达 40 秒或更多,具体取决于 OSPF 的 Hello 和 Dead 间隔时间。
● BFD 故障检测时间:通过 BFD,链路故障的检测时间通常可以减少到 300 毫秒以内,远远小于 OSPF 的默认故障检测时间。
经过实测,分布式网络108节点ospf收敛时间:10s->1s内
bfd配置:
相关文章:
FRRouting配置与OSPF介绍,配置,命令,bfd算法:
文章目录 1、frrouting的配置:2、ospf2.1、检测和维护邻居关系2.2、ospfDR和BDR2.3、odpf邻居表2.4、ospf常用命令2.5、bfd配置 1、frrouting的配置: sudo service zebra start sudo service ospfd start telnet localhost 2604 en configure termina…...
基于ThinkPHP 5~8兼容的推荐算法类实现,
在现代推荐系统中,随着用户量和物品量的增长,传统的推荐算法可能会面临性能瓶颈。本文将介绍如何基于 ThinkPHP 实现一个高性能的推荐系统,结合显性反馈(如兴趣选择)、隐性反馈(如观看时长、评论、点赞、搜…...
使用Python爬虫实时监控行业新闻案例
目录 背景环境准备请求网页数据解析网页数据定时任务综合代码使用代理IP提升稳定性运行截图与完整代码总结 在互联网时代,新闻的实时性和时效性变得尤为重要。很多行业、技术、商业等领域的新闻都可以为公司或者个人发展提供有价值的信息。如果你有一项需求是要实时…...
kong身份认证插件详解之Basic Auth插件
1.3、Basic Authentication 支持基于用户名和密码的基本认证,通常用于简单的身份验证场景。 1.3.1、环境准备 1.3.1.1、创建一个服务,basic-auth-service curl -i -s -X POST http://localhost:8001/services \--data namebasic-auth-service \--dat…...
Copilot基于企业PPT模板生成演示文稿
关于copilot创建PPT,咱们写过较多文章了: Copilot for PowerPoint通过文件创建PPT Copilot如何将word文稿一键转为PPT Copilot一键将PDF转为PPT,治好了我的精神内耗 测评Copilot和ChatGPT-4o从PDF创建PPT功能 Copilot for PPT全新功能&a…...
用React实现一个登录界面
使用React来创建一个简单的登录表单。以下是一个基本的React登录界面示例: 1. 设置React项目 如果你还没有一个React项目,你可以使用Create React App来创建一个。按照之前的步骤安装Create React App,然后创建一个新项目。 2. 创建登录组…...
前端布局的方式有哪些
前端布局的方式有哪些 在前端开发里,布局就像是装修房子,把不同的东西合理地摆放在合适的位置,让整个空间既美观又实用。下面给你介绍几种常见的前端布局方式: 1. 普通流布局(标准文档流布局) 这就像是按…...
seata集成nacos
#nacos集成nacos并配置mysql数据源 1. 所需依赖 <!--seata 分布式事务--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency> 2. 打开seata目录ÿ…...
第29篇 基于ARM A9处理器用C语言实现中断<五>
Q:怎样设计基于ARM A9处理器的C语言程序使用定时器中断实现实时时钟? A:在上一期的程序中添加A9 Private Timer作为第三个中断源,配置该定时器使其每隔0.01秒产生一次中断。使用该定时器使全局变量time的值递增,并将…...
deepseek多列数据对比,联想到excel的高级筛选功能
目录 1 业务背景 2 deepseek提示词输入 3 联想分析 4 EXCEL高级搜索 1 业务背景 系统上线的时候经常会遇到一个问题,系统导入的数据和线下的EXCEL数据是否一致,如果不一致,如何快速找到差异值,原来脑海第一反应就是使用公…...
C 程序多线程拆分文件
C 程序多线程拆分文件 在C语言中,实现多线程来拆分文件通常需要借助多线程库,比如 POSIX 线程库(pthread)或者 Windows 的线程库(CreateThread 或类似的函数)。下面我将分别展示在 Linux 和 Windows 环境下…...
mysql 使用 CONCAT、GROUP_CONCAT 嵌套查询出 json 格式数据
tb_factory表由 factory_code 和 factory_name 字段,查询出如下所示效果: {"factory_0001": "工厂1","factory_0002": "工厂2",... } select sql: SELECT CONCAT( "{",GROUP_CONCAT( C…...
Leetcode 2466. Count Ways To Build Good Strings
Problem Given the integers zero, one, low, and high, we can construct a string by starting with an empty string, and then at each step perform either of the following: Append the character ‘0’ zero times.Append the character ‘1’ one times. This can …...
分布式 IO 模块:食品罐装产线自动化与高效运行的推手
在当今竞争激烈的罐装视频生产行业,如何实现产线的自动化与连续性高效运行,成为了众多企业追求的核心目标。明达技术推出的MR30分布式 IO 模块作为一种先进的工业控制技术,正逐渐崭露头角,为食品罐装产线带来了前所未有的变革。 痛…...
rustdesk编译修改名字
最近,我用Rust重写了一个2W行C代码的linux内核模块。在此记录一点经验。我此前没写过内核模块,认识比较疏浅,有错误欢迎指正。 为什么要重写? 这个模块2W行代码量看起来不多,却在线上时常故障,永远改不完。…...
MySQL 窗口函数:功能、使用场景与性能优化
MySQL 8.0 引入了一个强大的新特性——**窗口函数(Window Functions)**。它为数据分析和复杂查询提供了极大的便利,但同时也可能带来性能问题。本文将带你快速了解窗口函数的功能、使用场景以及如何优化性能。 --- ## **什么是窗口函数&#…...
数据权限校验实践
数据权限控制实践 最近在实习中为公司项目完成一个文件数据权限校验代码的转换重构,写这篇博客来记录前后两种权限校验的实现方案与相关概念 原实现方案:RBAC-基于角色的访问控制 RBAC(Role-Based Access Control) RBAC 是一种常…...
spring boot对接clerk 实现用户信息获取
在现代Web应用中,用户身份验证和管理是一个关键的功能。Clerk是一个提供身份验证和用户管理的服务,可以帮助开发者快速集成这些功能。在本文中,我们将介绍如何使用Spring Boot对接Clerk,以实现用户信息的获取。 1.介绍 Clerk提供…...
公网远程家里局域网电脑过程详细记录,包含设置路由器。
由于从校内迁居小区,校内需要远程控制访问小区内个人电脑,于是早些时间刚好自己是电信宽带,可以申请公网ipv4不需要花钱,所以就打电话直接申请即可,申请成功后访问光猫设备管理界面192.168.1.1,输入用户名密码登录超管(密码是网上查下就有了)设置了光猫为桥接模式,然后…...
自制简单的图片查看器()
图片格式:支持常见的图片格式(JPG、PNG、BMP、GIF)。 import os import tkinter as tk from tkinter import filedialog, messagebox from PIL import Image, ImageTkclass ImageViewer:def __init__(self, root):self.root rootself.root.…...
25/2/17 <嵌入式笔记> 桌宠代码解析
这个寒假跟着做了一个开源的桌宠,我们来解析下代码,加深理解。 代码中有开源作者的名字。可以去B站搜着跟着做。 首先看下main代码 #include "stm32f10x.h" // Device header #include "Delay.h" #include &quo…...
Kafka偏移量管理全攻略:从基础概念到高级操作实战
#作者:猎人 文章目录 前言:概念剖析kafka的两种位移消费位移消息的位移位移的提交自动提交手动提交 1、使用--to-earliest重置消费组消费指定topic进度2、使用--to-offset重置消费offset3、使用--to-datetime策略指定时间重置offset4、使用--to-current…...
python中使用日期和时间差:datetime模块
datetime模块的表示时间的有 datetime.datetime #时间包含年月日时分秒毫秒 datetime.date #时间只包含年月日 datetime.time #只包含时分秒 获取当前时间 import datetime now datetime.datetime.now() print(now)得到 atetime中的年月日时分秒可以分别取出来 import da…...
申论对策建议类【2022江苏B卷第一题“如何开展网络直播”】
材料: 近年来,公安交管部门通过网络直播,将执法过程和执法细节以视频形式呈现在公众面前,吸引“围观”、组织点评,让执法过程变成一堂生动的法治公开课。 “各位网友,大家好!这里是‘全国交通…...
Blazor-父子组件传递任意参数
在我们从父组件传参数给子组件时,可以通过子组件定义的[Parameter]特性的公开属性进行传值,但是当我们需要传递多个值的时候,就需要通过[Parameter]特性定义多个属性,有没有更简便的方式? 我们可以使用定义 IDictionar…...
Python的那些事第二十三篇:Express(Node.js)与 Python:一场跨语言的浪漫邂逅
摘要 在当今的编程世界里,Node.js 和 Python 像是两个性格迥异的超级英雄,一个以速度和灵活性著称,另一个则以强大和优雅闻名。本文将探讨如何通过 Express 框架将 Node.js 和 Python 结合起来,打造出一个高效、有趣的 Web 应用。我们将通过一系列幽默风趣的实例和表格,展…...
win11安装wsl报错:无法解析服务器的名称或地址(启用wsl2)
1. 启用wsl报错如下 # 查看可安装的 wsl --install wsl --list --online此原因是因为没有开启DNS的原因,所以需要我们手动开启DNS。 2. 按照如下配置即可 Google的DNS(8.8.8.8和8.8.4.4) 全国通用DNS地址 (114.114.114.114) 3. 运行以下命令来重启 WSL…...
【设计模式】【结构型模式】桥接模式(Bridge)
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…...
1997-2019年各省进出口总额数据
1997-2019年各省进出口总额数据 1、时间:1997-2020年 2、来源:国家统计局、各省年鉴 3、指标:进出口总额 4、范围:31省 5、指标解释:进出口总额是指以货币表示的一定时期内一国实际进出口商品的总金额ÿ…...
AI前端开发效率革命:拥抱AI,开启前端开发新纪元
前端开发行业竞争日益激烈,项目交付周期不断缩短,对开发效率的要求也越来越高。在这种高压环境下,开发者们常常面临着巨大的压力。而近年来,人工智能技术的飞速发展,特别是AI写代码工具的出现,为前端开发带…...
Rust编程语言入门教程(一)安装Rust
目录 引言一、为什么要用 Rust?二、与其他语言比较三、Rust 特别擅长的领域四、Rust 与 Firefox五、Rust 的用户和案例六、Rust 的优缺点七、安装 Rust1、访问官网下载 Rust2、下载完成,执行exe文件 八、Rust 安装验证九、开发工具结束语 引言 在当今快…...
Kubernetes控制平面组件:Kubernetes如何使用etcd
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
2025年-G4-Lc78--121. 买卖股票的最佳时机--(java版)
1.题目描述 2.思路 思路1: 做两轮排序,第一轮排序找到最小的那个数,然后再判断最小的那个数之后还有其他数吗,如果有在进行排序,选出最大的那个数,然后值相减。 问题要点: (1)你需要…...
LabVIEW 中的 3dgraph.llb 库
3dgraph.llb 库位于 C:\Program Files (x86)\National Instruments\LabVIEW 2019\vi.lib\Platform 目录下,是 LabVIEW 系统中用于 3D 图形相关操作的重要库。它为 LabVIEW 用户提供了丰富的功能,能在应用程序中创建、显示和交互各种 3D 图形,…...
通过VSCode直接连接使用 GPT的编程助手
GPT的编程助手在VSC上可以直接使用 选择相应的版本都可以正常使用。每个月可以使用40条,超过限制要付费。 如下图对应的4o和claude3.5等模型都可以使用。VSC直接连接即可。 配置步骤如下: 安装VSCODE 直接,官网下载就行 https://code.vis…...
[LeetCode力扣hot100]-C++常用数据结构
0.Vector 1.Set-常用滑动窗口 set<char> ans;//根据类型定义,像vector ans.count()//检查某个元素是否在set里,1在0不在 ans.insert();//插入元素 ans.erase()//删除某个指定元素 2.栈 3.树 树是一种特殊的数据结构,力扣二叉树相…...
2-安装YIUI
YIUI框架:GitHub - LiShengYang-yiyi/YIUI: Unity3D UGUI Framework, 基于UI数据事件绑定为核心 数据驱动的UGUI框架, ETUI框架, ET框架官方推荐UI框架 ET框架:egametang/ET: Unity3D Client And C# Server Framework (github.com) 1 - 安装YIUI框架&a…...
16-使用QtChart创建动态图表:入门指南
QtChart是Qt框架中的一个强大模块,用于创建各种类型的图表,如折线图、柱状图、饼图等。它提供了丰富的API和灵活的配置选项,使得开发者能够轻松地将数据可视化集成到应用程序中。本文将介绍如何使用QtChart创建一个简单的动态折线图ÿ…...
蓝耘智算携手DeepSeek,共创AI未来
🌟 各位看官号,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习如何通过蓝耘智算使用DeepSeek R1模型 👍 如果觉得这篇文章有帮助,欢迎您一键三连&a…...
具身智能在智能巡检机器人中的应用——以开关柜带电操作机器人为例
随着机器人技术和人工智能的迅速发展,具身智能在各行业的应用日益广泛,尤其是在电力行业中的智能巡检领域。传统的电力巡检和维护工作通常需要人工操作,存在着高温、高压、强电磁场等危险环境,且效率较低。开关柜带电操作机器人作…...
【第4章:循环神经网络(RNN)与长短时记忆网络(LSTM)— 4.6 RNN与LSTM的变体与发展趋势】
引言:时间序列的魔法钥匙 在时间的长河中,信息如同涓涓细流,绵延不绝。而如何在这无尽的数据流中捕捉、理解和预测,正是循环神经网络(RNN)及其变体长短时记忆网络(LSTM)所擅长的。今天,我们就来一场深度探索,揭开RNN与LSTM的神秘面纱,看看它们如何在时间序列的海洋…...
【R语言】回归分析与判别分析
一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型(Linear Models)的主要函数。线性模型是一种统计方法,用于描述一个或多个自变量(预测变量、解释变量)与因变量(响应变量)之间的关系…...
git开发流程以及github社区企业版
常规开发流程 1、将仓库 clone 到本地,已经 clone 的要 fetch & pull,保证本地 master 分支已经更新到最新状态 2、在 master 最新分支的基础上 checkout 一个开发分支,分支命名要求规范,如带用户名、日期、bug id 等关键信…...
DeepSeek + Vue实战开发
利用DeepSeek V3模型、siliconflow大模型一站式云服务平台以及vue3.0实现一个在线人工智能客服对话系统。 因为deepseek官网的api密钥使用起来比较缓慢,所以可以使用第三方的,具体操作请自行查阅资料。 siliconflow官网 SiliconFlow, Accelerate AGI …...
从安装软件到flask框架搭建可视化大屏(二)——创建一个flask页面,搭建可视化大屏,零基础也可以学会
附录:所有文件的完整代码 models.py # models/models.py from flask_sqlalchemy import SQLAlchemydb SQLAlchemy()class User(db.Model):__tablename__ user # 显式指定表名为 userid db.Column(db.Integer, primary_keyTrue)username db.Column(db.String(…...
Python编程中,async/await/asyncio分别是干啥的?
在Python异步编程中,async、await和asyncio是三个核心概念。它们共同构成了Python处理高并发I/O密集型任务的解决方案。本文将通过代码实例解析它们的作用和用法。 一、异步编程基础 1.1 同步 vs 异步 同步编程:代码按顺序执行,遇到I/O操作(如网络请求、文件读写)时会阻塞…...
vue非组件的初学笔记
1.创建Vue实例,初始化渲染的核心 准备容器引包创建Vue实例new Vue() el用来指定控制的盒子data提供数据 2.插值表达式 作用利用表达式插值,将数据渲染到页面中 格式{{表达式}} 注意点 表达式的数据要在data中存在表达式是可计算结果的语句插值表达式…...
4.3 学习UVM中的“run_phase“,将其应用到具体案例分为几步?
文章目录 前言1. run_phase 的作用与执行特点2. 关键组件的 run_phase 实现2.1 Driver 的 run_phase:驱动事务2.2 Monitor 的 run_phase:捕获事务2.3 Scoreboard 的 run_phase:数据比对 3. 同步与 Objection 管理3.1 控制仿真结束3.2 多组件协…...
[Python人工智能] 五十.PyTorch入门 (5)快速搭建神经网络及模型保存
从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前文讲解PyTorch构建分类神经网络。这篇文章将介绍如何利用PyTorch快速构建神经网络,之前的代码比较复杂,通过自定义Net类实现,本文通过Torch函数定义神经网络。前面我们的Python人工智能主要以Tens…...
【C语言】有序数组的平方
文章目录 给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 #include<stdio.h>/*** brief 计算一个整数数组的平方,并按非递减顺序存放结果* * 该函数接受一个整数数组arr和其长度le…...