网络基础:OSPF 协议
OSPF(Open Shortest Path First)是一种广泛使用的链路状态路由协议,用于IP网络中的内部网关协议(IGP)。OSPF通过在网络中的所有路由器之间交换路由信息,选择从源到目的地的最优路径。OSPF工作在OSI模型的第三层,即网络层。OSPF使用IP协议号89进行通信;所有OSPF路由器发送和接收的OSPF报文都封装在IP数据包中,并使用协议号89来标识这些数据包是OSPF报文,OSPF负责在IP网络中进行路由信息的交换和路径计算。
链路状态路由协议和距离矢量路由协议
①链路状态路由协议:链路状态路由协议通告的是链路状态而不是路由表;运行链路状态路由协议的路由器之间首先会建立一个协议的邻居关系,然后彼此之间开始交互 LSA(Link State Advertisement,链路状态通告)。(如OSPF) ②距离矢量路由协议:运行距离矢量路由协议的路由器周期性的泛洪自己的路由表;通过路由的交互,每台路由 器都从相邻的路由器学习到路由,并且加载进自己的路由表中;对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个 目的方向在哪里,距离有多远。(如RIP)
OSPF正是一种链路状态路由协议,如上述,运行OSPF路由协议的路由器在交换路由信息时并不是单纯向邻居发送自己的路由表,邻居之间交换路由信息时是彼此交互链路状态通告(LSA)信息。LSA也分成不同类型,不同类型的LSA包含的信息也不一样;用的比较多的Router-LSA中包含的信息有:通告生成该LSA的路由器的链路状态,包括路由器的所有接口、接口状态、链路类型(如点到点、广播、多点等)及其邻居。
OSPF基础术语:
Router-ID(Router Identifier,路由器标识符):用于在一个OSPF域中唯一地标识一台路由器;Router-ID的设定可以通过手工配置的方式,或使用系统自动配置的方式。 度量值:OSPF使用路径开销作为度量;路径开销是通往目标的路径上所有链路的累积开销。
OSPF三大表项:
1.邻居表:
OSPF在传递链路状态信息之前,需先建立OSPF邻居关系;OSPF的邻居关系通过交互Hello报文建立,OSPF邻居表显示了OSPF路由器之间的邻居状态。在思科(Cisco)、华为(Huawei)和华三(H3C)网络设备上,可以通过命令行接口(CLI)来查看OSPF邻居表。以下是各个设备上的具体命令:
思科(Cisco)
在思科设备上,可以使用以下命令查看OSPF邻居表:
show ip ospf neighbor
此命令将显示所有OSPF邻居的详细信息,包括邻居ID、状态、邻居IP地址和接口信息。
示例输出:
Router# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
192.168.1.1 1 FULL/DR 00:00:39 10.1.1.1 GigabitEthernet0/1
192.168.1.2 1 FULL/BDR 00:00:36 10.1.1.2 GigabitEthernet0/1
华为(Huawei)
在华为设备上,可以使用以下命令查看OSPF邻居表:
display ospf peer
此命令将显示所有OSPF邻居的详细信息,包括邻居ID、状态、邻居IP地址和接口信息。
输出示例;
<Huawei> display ospf peer
OSPF Process 1 with Router ID 192.168.1.1Neighbor Brief Information
Area 0.0.0.0 interface 10.1.1.1 (GigabitEthernet0/1)'s neighbors
-------------------------------------------------------------------------------
Router ID Address Pri State Dead Time Neighbor Area
192.168.1.2 10.1.1.2 1 Full/BDR 00:00:36 0.0.0.0
192.168.1.3 10.1.1.3 1 Full/DR 00:00:39 0.0.0.0
华三(H3C)
在华为设备上,可以使用以下命令查看OSPF邻居表:
display ospf peer
输出示例:
<H3C> display ospf peer
OSPF Process 1 with Router ID 192.168.1.1Neighbor Brief Information
Area 0.0.0.0 interface 10.1.1.1 (GigabitEthernet0/1)'s neighbors
-------------------------------------------------------------------------------
Router ID Address Pri State Dead Time Neighbor Area
192.168.1.2 10.1.1.2 1 Full/BDR 00:00:36 0.0.0.0
192.168.1.3 10.1.1.3 1 Full/DR 00:00:39 0.0.0.0
通过这些命令,可以方便地查看设备上所有OSPF邻居的详细信息,帮助网络管理员了解OSPF的工作状态和邻居关系。
2.LSDB表
LSDB会保存自己产生的及从邻居收到的LSA信息;LSDB(Link-State Database,链路状态数据库)是OSPF(Open Shortest Path First)协议中存储网络拓扑信息的核心组件。每个OSPF路由器都维护一个LSDB,用于存储从其他路由器接收到的所有链路状态通告(LSA)。这些LSA共同描述了整个网络的拓扑结构,使得路由器能够计算出最优路径。在不同厂商的网络设备上,可以使用相应的命令来查看LSDB的内容。以下是思科(Cisco)、华为(Huawei)和华三(H3C)网络设备上的具体命令:
思科(Cisco)
show ip ospf database
华为(Huawei)
display ospf lsdb
华三(H3C)
display ospf lsdb
3.OSPF路由表
OSPF(Open Shortest Path First)路由表(Routing Table)是OSPF路由器根据其链路状态数据库(LSDB)和最短路径优先(SPF)算法计算出的最优路径的集合。这些路由条目用于决定数据包的转发路径。在不同厂商的网络设备上,可以使用相应的命令来查看OSPF路由表的内容。
思科(Cisco)设备
show ip route ospf
华为(Huawei)
display ospf routing
华三(H3C)
display ospf routing
OSPF工作流程
-
邻居发现:
OSPF路由器通过定期发送Hello包来发现和维护邻居关系。Hello包包含以下信息:
路由器ID Hello间隔时间 死亡间隔时间 网络掩码 路由器优先级 邻居列表
路由器在收到Hello包后,会检查各项参数是否匹配,如果匹配,则在自己的邻居列表中添加该路由器。
-
建立邻接关系:
当邻居关系建立后,OSPF路由器之间会进一步建立邻接关系。这个过程包括:
①Database Description (DBD) 包交换:DBD包包含链路状态数据库(LSDB)的摘要信息;LSDB(Link-State Database,链路状态数据库)是OSPF(Open Shortest Path First)路由协议中存储网络拓扑信息的数据库。邻居路由器交换DBD包,以确认彼此的LSDB的状态和内容。 ②Link State Acknowledgment (LSAck) 包交换:每当一个路由器收到新的LSA时,它会发送LSAck包来确认已收到这些信息。 ③Link State Request (LSR) 包交换:如果一个路由器发现自己的LSDB中缺少某些LSA(Link State Advertisement),它会发送LSR包请求这些特定的LSA。 ④Link State Update (LSU) 包交换:路由器收到LSR包后,会回应LSU包,其中包含请求的LSA信息。 ⑤Link State Acknowledgment (LSAck) 包交换:每当一个路由器收到新的LSA时,它会发送LSAck包来确认已收到这些信息。
OSPF邻接关系
OSPF完成邻接关系的建立有四个步骤,建立邻居关系、协商主/从、交互LSDB信息,同步LSDB
这些步骤我们主要说一下协商主/从,在OSPF(Open Shortest Path First)协议中,建立邻接关系时协商主/从关系的主要目的是确保数据库描述(DBD)包的有序交换。如果没有主/从关系的协商,两个路由器可能会同时发送DBD包,导致包的冲突和乱序。这会引起邻接关系的不稳定,甚至中断;主/从关系确保了只有一个路由器(主)负责启动DBD包的发送,另一个路由器(从)按照顺序进行回应,从而避免了冲突和混乱。
主/从关系的选举过程
主从关系的选举基于路由器的Router ID。Router ID较大的路由器被选为主(Master),Router ID较小的被选为从(Slave)。 主路由器(Master)首先发送一个DBD包,包含其LSDB的摘要信息。 从路由器(Slave)接收到这个DBD包后,确认并回应一个包含自己LSDB摘要信息的DBD包。
示例说明
R1和R2进入Exstart状态,开始协商主从关系。 比较Router ID,2.2.2.2大于1.1.1.1,因此R2被选为主(Master),R1被选为从(Slave)。 R2(主)首先发送一个DBD包。 R1(从)接收到这个DBD包后,确认并回应一个DBD包。 完成初始DBD包交换后,R2和R1状态从Exstart转移到Exchange,继续交换DBD包,最终同步LSDB。
-
LSA 交换:
一旦邻接关系建立,路由器会开始交换LSA来更新彼此的LSDB,确保LSDB同步;LSA是OSPF中的基本信息单位,包含网络拓扑信息。主要的LSA类型有:
Router-LSA (类型1):描述路由器的链路。 Network-LSA (类型2):由DR生成,描述广播网络。 Summary-LSA (类型3):由ABR生成,描述区域间的网络。 ASBR-Summary-LSA (类型4):描述ASBR的可达性。 AS-External-LSA (类型5):由ASBR生成,描述外部自治系统的路由。
-
运行SPF算法
当路由器的LSDB更新后,它会运行Dijkstra的最短路径优先(SPF)算法来计算最短路径树(SPT)。通过SPF算法,路由器可以生成从自己到所有目的地的最优路径。
-
路由表更新
SPF算法计算完成后,路由器会根据SPT更新自己的路由表,选择最优路径转发数据包。
-
维护和更新
OSPF路由器需要定期发送Hello包来维持邻居关系,确保链路状态数据库的同步。当网络拓扑发生变化时(如链路断开、新增路由器),路由器会生成新的LSA并传播这些变化,确保所有路由器能够快速收敛到最新的拓扑状态。(每10s发送一次Hello包,若40s都没有收到邻居的Hello包就自动认为邻居Down掉了)
在OSPF的工作流程中,第二步的LSA交换主要是为了同步邻居之间的链路状态数据库(LSDB),确保它们拥有一致的网络拓扑视图,而第三步的LSA交换则是一个持续的过程,用于维护和更新整个网络的拓扑信息。
DR和BDR选举
在OSPF(Open Shortest Path First)协议中,DR(Designated Router,指定路由器)和BDR(Backup Designated Router,备用指定路由器)在多访问网络(如以太网和非广播多访问网络)中扮演着重要角色。它们的主要目的是减少OSPF路由器之间的LSA(链路状态通告)泛洪次数,提高网络效率。
以正常方式建立邻接关系:
以DR/BDR方式建立邻接关系:
以下是关于DR和BDR的详细解释:
指定路由器(DR):DR负责在多访问网络中作为中央点来进行LSA的泛洪。所有其他路由器(非DR和非BDR)只需与DR交换LSA,而不需要与所有其他路由器直接交换。这减少了网络中的LSA泛洪量。DR从所有路由器收集LSA,并向所有路由器泛洪这些信息,确保所有路由器都能获得最新的链路状态信息。
备用指定路由器(BDR):BDR是DR的备份。当DR失效时,BDR会自动成为新的DR,确保网络拓扑信息的持续传播。BDR在DR正常工作时,也会接收所有路由器的LSA,但它不会主动泛洪这些信息,除非DR失效。
我们可以通过ospf邻居表来查看当前ospf网络中的DR和BDR分别是哪些设备。
DR和BDR的选举过程
-
Hello包交换:
-
在多访问网络中,所有OSPF路由器通过Hello包来发现彼此并进行DR/BDR的选举。
-
Hello包中包含了路由器的优先级(Priority)和Router ID等信息。
-
-
路由器优先级:
-
每个路由器在Hello包中宣布自己的优先级。优先级值可以在0到255之间。
-
优先级最高的路由器被选为DR。如果优先级相同,则Router ID较大的路由器被选为DR。
-
-
选举过程:
-
初始选举时,所有路由器都会发送Hello包,包含自己认为的当前DR和BDR。
-
经过多次Hello包交换后,所有路由器会达成一致,选举出优先级最高的路由器作为DR,次高优先级的路由器作为BDR。
-
如果路由器的优先级为0,则它不会参与DR/BDR选举,只能作为普通路由器。
-
示例说明
假设在一个以太网网络中有四个OSPF路由器,R1, R2, R3和R4,它们的优先级和Router ID如下:
R1:优先级1,Router ID 1.1.1.1 R2:优先级2,Router ID 2.2.2.2 R3:优先级1,Router ID 3.3.3.3 R4:优先级0,Router ID 4.4.4.4
1.确定优先级最高的路由器:优先级最高的是R2(优先级2),因此R2被选为DR。其次是R1和R3(优先级1),Router ID较大的R3被选为BDR。选举完成,其他路由器则都是普通路由器。
选举后DR和BDR的位置是不可抢占的;若是抢占DR则需要重置DR中的OSPF进程。
OSPF区域结构
OSPF(Open Shortest Path First)的区域结构是为了优化路由信息的管理和传播,通过将大型网络划分为多个区域来减少路由开销、提高稳定性和可扩展性。以下是关于OSPF区域结构的详细介绍:
区域(Area):区域是OSPF网络的一个逻辑分段,每个区域都有一个唯一的32位标识符,通常以IP地址格式表示(例如0.0.0.0);每个区域内部的路由器都共享同一个链路状态数据库(LSDB),但不同区域之间的LSDB是独立的。
骨干区域(Area 0):OSPF网络的核心部分,所有其他区域都必须直接或间接地连接到骨干区域;骨干区域负责汇总和分发来自不同区域的路由信息,确保整个OSPF域的连通性。
非骨干区域:除了骨干区域之外的其他区域,用于进一步划分网络,减少单个区域内的路由器数量。非骨干区域必须通过骨干区域进行通信,不能直接与其他非骨干区域通信。
ospf配置
在OSPF配置过程中,涉及到多个步骤,包括定义OSPF进程、配置区域、指定接口以及调整相关参数。以下是OSPF配置的详细步骤和示例,分别以思科(Cisco)、华为(Huawei)和华三(H3C)设备为例。
思科(Cisco)
-
启用OSPF进程
router ospf 1
-
配置路由器ID(可选)
router-id 1.1.1.1
-
将接口划分到区域
network 192.168.1.0 0.0.0.255 area 0 network 192.168.2.0 0.0.0.255 area 1
-
配置接口OSPF参数(可选)
interface GigabitEthernet0/1ip ospf cost 10ip ospf hello-interval 10
华为(Huawei)
-
启用OSPF进程(并配置route-id)
ospf 1 route-id 3.3.3.3
-
将接口划分到区域
area 0network 192.168.1.0 0.0.0.255 area 1network 192.168.2.0 0.0.0.255
-
配置接口OSPF参数(可选)
interface GigabitEthernet0/0/1ospf cost 10ospf hello-interval 10
华三(H3C)
-
启用OSPF进程(并配置route-id)
ospf 1 router-id 1.1.1.1
-
将接口划分到区域
area 0network 192.168.1.0 0.0.0.255 area 1network 192.168.2.0 0.0.0.255
-
配置接口OSPF参数(可选)
interface GigabitEthernet1/0/1ospf cost 10ospf hello-interval 10
通用配置步骤
-
定义OSPF进程:启动OSPF进程,并分配进程ID。
-
配置路由器ID:每个OSPF路由器需要一个唯一的路由器ID。
-
划分区域:将接口分配到指定的OSPF区域。
-
配置接口参数(可选):可以根据需要配置接口的OSPF特定参数,如开销(cost)、Hello间隔等。
验证配置
在配置完成后,可以使用以下命令来验证OSPF配置和邻居状态。
思科
show ip ospf //显示与OSPF相关的各种信息
show ip ospf neighbor //显示邻居表
show ip route ospf //显示ospf路由表
华为
display ospf //显示与OSPF相关的各种信息
display ospf peer //显示邻居表
display ospf routing //显示ospf路由表
华三
display ospf //显示与OSPF相关的各种信息
display ospf peer //显示邻居表
display ospf routing //显示ospf路由表
ospf相关的两个组播地址
OSPF(Open Shortest Path First)使用两个特定的组播地址来发送和接收OSPF协议消息。这两个组播地址是224.0.0.5和224.0.0.6。
1.组播地址224.0.0.5(AllSPFRouters)
该组播地址用于发送OSPF Hello消息、Link State Request消息、Link State Update消息和Link State Acknowledgment消息到所有运行OSPF的路由器;任何运行OSPF的路由器接口都会监听这个组播地址,以便接收OSPF邻居的各种消息。这是用来建立和维护邻居关系的关键通信方式。
2.组播地址224.0.0.6(AllDRouters)
该组播地址用于发送OSPF Link State Update消息和Link State Acknowledgment消息到指定的DR(Designated Router)和BDR(Backup Designated Router);仅DR和BDR会监听这个组播地址。非DR和非BDR的OSPF路由器会将Link State Update消息发送到224.0.0.6地址,以便DR和BDR可以接收并传播这些消息,从而减少组播的冗余。
相关文章:

网络基础:OSPF 协议
OSPF(Open Shortest Path First)是一种广泛使用的链路状态路由协议,用于IP网络中的内部网关协议(IGP)。OSPF通过在网络中的所有路由器之间交换路由信息,选择从源到目的地的最优路径。OSPF工作在OSI模型的第…...
1456.定长子串中元音的最大数目
思路: 首次是滑动窗口, 然后遍历子字符串,这样复杂度太高,没过测试 改进,滑动窗口先求出第一个窗口中元音数量, 然后利用滑动式,一进一出方式判断首尾是否是原因即可 给你字符串 s 和整数 k 。 …...

基于xilinx FPGA的GTX/GTH/GTY位置信息查看方式(如X0Y0在bank几)
目录 1 概述2 参考文档3 查看方式4查询总结: 1 概述 本文用于介绍如何查看xilinx fpga GTX得位置信息(如X0Y0在哪个BANK/Quad)。 2 参考文档 《ug476_7Series_Transceivers》 《pg156-ultrascale-pcie-gen3-en-us-4.4》 3 查看方式 通过…...

JAVA小知识30:JAVA多线程篇1,认识多线程与线程安全问题以及解决方案。(万字解析)
来 多线程,一个学起来挺难但是实际应用不难的一个知识点,甚至在很多情况下都不需要考虑,最多就是写测试类的时候模拟一下并发,现在我们就来讲讲基础的多线程知识。 一、线程和进程、并发与并行 1.1、线程和进程 线程&am…...

Python数据分析案例47——笔记本电脑价格影响因素分析
案例背景 博主对电脑的价格和配置一直略有研究,正好最近也有笔记本电脑相关的数据,想着来做点分析吧,写成一个案例。基本上描述性统计,画图,分组聚合,机器学习,交叉验证,搜索超参数…...
【加密与解密】【09】GPG Client签名流程
什么是GPG客户端 GPG客户端是实现PGP加密协议的一套客户端程序,可用于加密或签名 下载GPG客户端 建议安装命令行工具,图形工具一般不具备完整功能 https://gnupg.org/download/index.html生成私钥 此时会要求你输入名称,邮箱,…...

“2024软博会” 为软件企业提供集展示、交流、合作一站式平台
随着全球科技浪潮的涌动,软件行业正迎来前所未有的发展机遇,成为了全球新一轮竞争的“制高点”,以及未来经济发展的“增长点”。在当前互联网、大数据、云计算、人工智能、区块链等技术加速创新的背景下,数字经济已经渗透到经济社…...
【Zoom安全解析】深入Zoom的端到端加密机制
标题:【Zoom安全解析】深入Zoom的端到端加密机制 在远程工作和在线会议变得越来越普及的今天,视频会议平台的安全性成为了用户关注的焦点。Zoom作为全球领先的视频会议软件,其端到端加密(E2EE)功能保证了通话的安全性…...

7 动态规划
下面的例子不错: 对于动态规划,能学到不少东西; 你要清楚每一步都在做什么,划分细致就能够拆解清楚! xk. - 力扣(LeetCode) labuladong的算法笔记-动态规划-CSDN博客 动态规划是…...

.net 快速开发框架开源
DF.OpenAPI开源系统 前后端分离,开箱即用,java经典功能.net也具备 系统介绍 DF.OpenAPI是基于Admin.NET二开的,是一个开源的多租户后台管理系统。采用前后端分离技术(前端使用vue.js,后端使用.net 3~.net6ÿ…...
《昇思25天学习打卡营第06天|网络构建》
网络构建 神经网络模型由神经网络层和Tensor操作构成 #实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2.…...
【链表】- 两两交换链表中的节点
1. 对应力扣题目连接 两两交换链表中的节点 2. 实现案例代码 public class ExchangeLinkedListsPairwise {public static void main(String[] args) {// 示例链表:[1, 2, 3, 4]ListNode head new ListNode(1);head.next new ListNode(2);head.next.next new L…...
java设计模式(四)——抽象工厂模式
一、模式介绍 改善在工厂方法模式中,扩展时新增产品类、工厂类,导致项目中类巨多的场面,减少系统的维护成本,且一个工厂可以生成多种产品,而不是同一种的产品,比如一个工厂既可以生产鞋子又可以衣服,而不是只能生产鞋子。 二、工厂方法模式 1、实现步骤 第一步: 定义…...

动物检测yolo格式数据集(水牛 、大象 、犀牛 、斑马四类)
动物检测数据集 1、下载地址: https://download.csdn.net/download/qq_15060477/89512588?spm1001.2101.3001.9500 2、数据集介绍 本数据集含有四种动物可以检测,分别是水牛 、大象 、犀牛 、斑马四类,数据集格式为yolo格式,…...

昇思25天学习打卡营第05天 | 数据变换 Transforms
昇思25天学习打卡营第05天 | 数据变换 Transforms 文章目录 昇思25天学习打卡营第05天 | 数据变换 TransformsCommon TransformsCompose Vision TransformsText TransformPythonTokenizerLookup Lambda Transforms数据处理模式Pipeline模式Eager模式 总结打卡 通常情况下的原始…...

Springboot+MySQL 公寓报修管理系统源码
功能结构图 效果图:...

jenkins 发布服务到linux服务器
1.环境准备 1.1 需要一台已经部署了jenkins的服务器,上面已经集成好了,jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器,安装好jdk 2.流程描述 2.1 配置jenkins,包括p…...

Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
1.简介 今天我们紧接着上一篇继续分享Appium自动化测试框架综合实践 - 代码实现。由于时间的关系,宏哥这里用代码给小伙伴演示两个模块:注册和登录。 2.业务模块封装 因为现在各种APP的层出不群,各式各样的。但是其大多数都有注册、登录。为…...

防止跨站脚本攻击XSS之Antisamy
目录 一、什么是跨站脚本攻击(XSS) 二、通常有哪些解决方案 三、常见的XSS攻击例子有哪些 3.1 存储型XSS攻击(黑产恶意截流,跳转不法网站) 3.2反射型XSS攻击: 四、什么是跨站请求伪造? 五…...

Python爬虫实战案例——王者荣耀皮肤抓取
大家好,我是你们的老朋友——南枫,今天我们一起来学习一下该如何抓取大家经常玩的游戏——王者荣耀里面的所有英雄的皮肤。 老规矩,直接上代码: 导入我们需要使用到的,也是唯一用到的库: 我们要抓取皮肤其…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...