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

网络基础: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工作流程
  1. 邻居发现:

    OSPF路由器通过定期发送Hello包来发现和维护邻居关系。Hello包包含以下信息:

    路由器ID
    Hello间隔时间
    死亡间隔时间
    网络掩码
    路由器优先级
    邻居列表

    路由器在收到Hello包后,会检查各项参数是否匹配,如果匹配,则在自己的邻居列表中添加该路由器。

  2. 建立邻接关系:

    当邻居关系建立后,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。
  3. 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生成,描述外部自治系统的路由。
  4. 运行SPF算法

    当路由器的LSDB更新后,它会运行Dijkstra的最短路径优先(SPF)算法来计算最短路径树(SPT)。通过SPF算法,路由器可以生成从自己到所有目的地的最优路径。

  5. 路由表更新

    SPF算法计算完成后,路由器会根据SPT更新自己的路由表,选择最优路径转发数据包。

  6. 维护和更新

    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的选举过程

  1. Hello包交换

    • 在多访问网络中,所有OSPF路由器通过Hello包来发现彼此并进行DR/BDR的选举。

    • Hello包中包含了路由器的优先级(Priority)和Router ID等信息。

  2. 路由器优先级

    • 每个路由器在Hello包中宣布自己的优先级。优先级值可以在0到255之间。

    • 优先级最高的路由器被选为DR。如果优先级相同,则Router ID较大的路由器被选为DR。

  3. 选举过程

    • 初始选举时,所有路由器都会发送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)
  1. 启用OSPF进程

    router ospf 1

  2. 配置路由器ID(可选)

    router-id 1.1.1.1

  3. 将接口划分到区域

    network 192.168.1.0 0.0.0.255 area 0
    network 192.168.2.0 0.0.0.255 area 1

  4. 配置接口OSPF参数(可选)

    interface GigabitEthernet0/1ip ospf cost 10ip ospf hello-interval 10

华为(Huawei)
  1. 启用OSPF进程(并配置route-id)

    ospf 1 route-id 3.3.3.3

  2. 将接口划分到区域

    area 0network 192.168.1.0 0.0.0.255
    area 1network 192.168.2.0 0.0.0.255

  3. 配置接口OSPF参数(可选)

    interface GigabitEthernet0/0/1ospf cost 10ospf hello-interval 10

华三(H3C)
  1. 启用OSPF进程(并配置route-id)

    ospf 1 router-id 1.1.1.1
  2. 将接口划分到区域

    area 0network 192.168.1.0 0.0.0.255
    area 1network 192.168.2.0 0.0.0.255
  3. 配置接口OSPF参数(可选)

    interface GigabitEthernet1/0/1ospf cost 10ospf hello-interval 10

通用配置步骤
  1. 定义OSPF进程:启动OSPF进程,并分配进程ID。

  2. 配置路由器ID:每个OSPF路由器需要一个唯一的路由器ID。

  3. 划分区域:将接口分配到指定的OSPF区域。

  4. 配置接口参数(可选):可以根据需要配置接口的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&#xff08;Open Shortest Path First&#xff09;是一种广泛使用的链路状态路由协议&#xff0c;用于IP网络中的内部网关协议&#xff08;IGP&#xff09;。OSPF通过在网络中的所有路由器之间交换路由信息&#xff0c;选择从源到目的地的最优路径。OSPF工作在OSI模型的第…...

1456.定长子串中元音的最大数目

思路&#xff1a; 首次是滑动窗口&#xff0c; 然后遍历子字符串&#xff0c;这样复杂度太高&#xff0c;没过测试 改进&#xff0c;滑动窗口先求出第一个窗口中元音数量&#xff0c; 然后利用滑动式&#xff0c;一进一出方式判断首尾是否是原因即可 给你字符串 s 和整数 k 。 …...

基于xilinx FPGA的GTX/GTH/GTY位置信息查看方式(如X0Y0在bank几)

目录 1 概述2 参考文档3 查看方式4查询总结&#xff1a; 1 概述 本文用于介绍如何查看xilinx fpga GTX得位置信息&#xff08;如X0Y0在哪个BANK/Quad&#xff09;。 2 参考文档 《ug476_7Series_Transceivers》 《pg156-ultrascale-pcie-gen3-en-us-4.4》 3 查看方式 通过…...

JAVA小知识30:JAVA多线程篇1,认识多线程与线程安全问题以及解决方案。(万字解析)

来 多线程&#xff0c;一个学起来挺难但是实际应用不难的一个知识点&#xff0c;甚至在很多情况下都不需要考虑&#xff0c;最多就是写测试类的时候模拟一下并发&#xff0c;现在我们就来讲讲基础的多线程知识。 一、线程和进程、并发与并行 1.1、线程和进程 线程&am…...

Python数据分析案例47——笔记本电脑价格影响因素分析

案例背景 博主对电脑的价格和配置一直略有研究&#xff0c;正好最近也有笔记本电脑相关的数据&#xff0c;想着来做点分析吧&#xff0c;写成一个案例。基本上描述性统计&#xff0c;画图&#xff0c;分组聚合&#xff0c;机器学习&#xff0c;交叉验证&#xff0c;搜索超参数…...

【加密与解密】【09】GPG Client签名流程

什么是GPG客户端 GPG客户端是实现PGP加密协议的一套客户端程序&#xff0c;可用于加密或签名 下载GPG客户端 建议安装命令行工具&#xff0c;图形工具一般不具备完整功能 https://gnupg.org/download/index.html生成私钥 此时会要求你输入名称&#xff0c;邮箱&#xff0c…...

“2024软博会” 为软件企业提供集展示、交流、合作一站式平台

随着全球科技浪潮的涌动&#xff0c;软件行业正迎来前所未有的发展机遇&#xff0c;成为了全球新一轮竞争的“制高点”&#xff0c;以及未来经济发展的“增长点”。在当前互联网、大数据、云计算、人工智能、区块链等技术加速创新的背景下&#xff0c;数字经济已经渗透到经济社…...

【Zoom安全解析】深入Zoom的端到端加密机制

标题&#xff1a;【Zoom安全解析】深入Zoom的端到端加密机制 在远程工作和在线会议变得越来越普及的今天&#xff0c;视频会议平台的安全性成为了用户关注的焦点。Zoom作为全球领先的视频会议软件&#xff0c;其端到端加密&#xff08;E2EE&#xff09;功能保证了通话的安全性…...

7 动态规划

下面的例子不错&#xff1a; 对于动态规划&#xff0c;能学到不少东西&#xff1b; 你要清楚每一步都在做什么&#xff0c;划分细致就能够拆解清楚&#xff01; xk​​​​​​​. - 力扣&#xff08;LeetCode&#xff09; labuladong的算法笔记-动态规划-CSDN博客 动态规划是…...

.net 快速开发框架开源

DF.OpenAPI开源系统 前后端分离&#xff0c;开箱即用&#xff0c;java经典功能.net也具备 系统介绍 DF.OpenAPI是基于Admin.NET二开的&#xff0c;是一个开源的多租户后台管理系统。采用前后端分离技术&#xff08;前端使用vue.js&#xff0c;后端使用.net 3~.net6&#xff…...

《昇思25天学习打卡营第06天|网络构建》

网络构建 神经网络模型由神经网络层和Tensor操作构成 #实验环境已经预装了mindspore2.2.14&#xff0c;如需更换mindspore版本&#xff0c;可更改下面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) {// 示例链表&#xff1a;[1, 2, 3, 4]ListNode head new ListNode(1);head.next new ListNode(2);head.next.next new L…...

java设计模式(四)——抽象工厂模式

一、模式介绍 改善在工厂方法模式中,扩展时新增产品类、工厂类,导致项目中类巨多的场面,减少系统的维护成本,且一个工厂可以生成多种产品,而不是同一种的产品,比如一个工厂既可以生产鞋子又可以衣服,而不是只能生产鞋子。 二、工厂方法模式 1、实现步骤 第一步: 定义…...

动物检测yolo格式数据集(水牛 、大象 、犀牛 、斑马四类)

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

昇思25天学习打卡营第05天 | 数据变换 Transforms

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

Springboot+MySQL 公寓报修管理系统源码

功能结构图 效果图&#xff1a;...

jenkins 发布服务到linux服务器

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

Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)

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

防止跨站脚本攻击XSS之Antisamy

目录 一、什么是跨站脚本攻击&#xff08;XSS&#xff09; 二、通常有哪些解决方案 三、常见的XSS攻击例子有哪些 3.1 存储型XSS攻击&#xff08;黑产恶意截流&#xff0c;跳转不法网站&#xff09; 3.2反射型XSS攻击&#xff1a; 四、什么是跨站请求伪造&#xff1f; 五…...

Python爬虫实战案例——王者荣耀皮肤抓取

大家好&#xff0c;我是你们的老朋友——南枫&#xff0c;今天我们一起来学习一下该如何抓取大家经常玩的游戏——王者荣耀里面的所有英雄的皮肤。 老规矩&#xff0c;直接上代码&#xff1a; 导入我们需要使用到的&#xff0c;也是唯一用到的库&#xff1a; 我们要抓取皮肤其…...

PyTorch计算机视觉实战:目标检测、图像处理与深度学习

本书基于真实数据集&#xff0c;全面系统地阐述现代计算机视觉实用技术、方法和实践&#xff0c;涵盖50多个计算机视觉问题。全书分为四部分&#xff1a;一部分介绍神经网络和PyTorch的基础知识&#xff0c;以及如何使用PyTorch构建并训练神经网络&#xff0c;包括输入数据缩放…...

4D 生物打印:将时间维度融入,打造个性化动态组织

4D 生物打印技术将时间维度融入 3D 生物打印&#xff0c;赋予打印出的结构动态变化的能力&#xff0c;使其更接近于真实组织和器官的特性。要实现这一目标&#xff0c;需要使用智能生物材料和智能设计策略。 智能生物材料 目前用于 4D 生物打印的智能生物材料主要包括形状记忆…...

银行清算业务功能测试解析

银行清算业务是指银行间通过账户或有关货币当地清算系统&#xff0c;在办理结算和支付中用以清讫双边或多边债权债务的过程和方法。按地域划分&#xff0c;清算业务可分为国内联行清算和国际清算。常见的清算模式包括实时全额清算、净额批量清算、大额资金转账系统及小额定时清…...

CVE-2024-6387漏洞预警:尽快升级OpenSSH

OpenSSH维护者发布了安全更新&#xff0c;其中包含一个严重的安全漏洞&#xff0c;该漏洞可能导致在基于glibc的Linux系统中使用root权限执行未经身份验证的远程代码。该漏洞的代号为regreSSHion&#xff0c;CVE标识符为CVE-2024-6387。它驻留在OpenSSH服务器组件&#xff08;也…...

学习整理在php中使用PHPExcel读取excel表列数大于Z时读取不到的解决方案

php读取excel列数大于Z时读取不到 背景解决方案关键代码 背景 表格数据超过26列&#xff0c; 也就是在Z列之前没有AA列及以后的情况&#xff0c; 测试一直都没有问题&#xff0c;超过&#xff0c;就会获取不到数据了 解决方案 private function getExcelData(){//获取excel文…...

python sklearn机械学习-数据预处理

&#x1f308;所属专栏&#xff1a;【机械学习】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您…...

搜索引擎常用语法

引号 (" "): 用双引号将词组括起来&#xff0c;搜索引擎将返回包含完全相同短语的结果。 示例&#xff1a;"人工智能发展趋势" 减号 (-): 在关键词前加上减号可以排除包含特定词语的结果。 示例&#xff1a;人工智能 -机器学习&#xff08;排除包含 “机器…...

华为智能驾驶方案剖析

华为ADS智驾方案始终坚持激光雷达毫米波雷达摄像头的多传感器融合路线&#xff0c;行业降本压力下硬件配置从超配逐步转向贴合实际需求&#xff0c;带动整体硬件成本下降。 1)单车传感器数量呈现下降趋势&#xff0c;包括激光雷达从3个减配至1个、毫米波雷达从6R减配至3R、摄像…...

DDR3(一)

目录 1 SDRAM1.1 同步动态随机存储器1.2 位宽1.3 SDRAM结构1.4 SDRAM引脚图 2 SDRAM操作指令2.1 读写指令2.2 刷新和预充电2.3 配置模式寄存器2.4 读/写突发2.5 数据屏蔽 SDRAM是DDR3的基础&#xff0c;在学习DDR3之前&#xff0c;我们先来学习一下SDRAM的相关知识。 1 SDRAM …...

Eureka与Spring Cloud Bus的协同:打造智能服务发现新篇章

Eureka与Spring Cloud Bus的协同&#xff1a;打造智能服务发现新篇章 在微服务架构中&#xff0c;服务发现是实现服务间通信的关键机制。Eureka作为Netflix开源的服务发现框架&#xff0c;与Spring Cloud Bus的集成&#xff0c;提供了一种动态、响应式的服务治理解决方案。本文…...

Kafka入门到精通(三)-Kafka

Kafka简介 Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xf…...

高校教师教学质量评估系统-计算机毕业设计源码03344

摘要 在高等教育中&#xff0c;教学质量是培养优秀人才的关键。为了提高教学质量&#xff0c;高校需要建立一套科学、有效的教师教学质量评估系统。本研究采用 SSM技术框架&#xff0c;旨在开发一款高校教师教学质量评估系统。 SSM框架作为一种成熟的Java开发框架&#xff0c;具…...

币界网讯,预计以太坊现货 ETF 将于 7 月中旬推出

刚刚 ETF Store 总裁 Nate Geraci 在 X &#xff08;前Twitter&#xff09;平台上宣布&#xff0c;备受数字货币市场期待的SEC以太坊现货 ETF提案&#xff0c;将于7 月中旬通过美国证券交易委员会&#xff08;SEC&#xff09;批准。Nate Geraci透露修订后的 S-1 文件将于 7 月 …...

【FFmpeg】avio_open2函数

【FFmpeg】avio_open2函数 1.avio_open21.1 创建URLContext&#xff08;ffurl_open_whitelist&#xff09;1.1.1 创建URLContext&#xff08;ffurl_alloc&#xff09;1.1.1.1 查找合适的protocol&#xff08;url_find_protocol&#xff09;1.1.1.2 为查找到的URLProtocol创建UR…...

技术成神之路:设计模式(二)建造者模式

1.定义 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它允许你分步骤创建复杂对象&#xff0c;而不必直接调用构造函数。建造者模式特别适合那些包含多个组成部分并且构造过程复杂的对象。 2. 结构 建造者模式的主要组成部分包括&#…...

基于Springboot+Vue+mysql仓库管理系统仓库进销存管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…...

爬虫scrapy库精简使用大全

一、基本命令 创建项目 scrpay startproject myapp创建爬虫文件 scrapy genspider spider_name "https://www.baidu.com"运行爬虫文件 scrapy crawl spider_name一、使用代理ip 打开中间件middlewares.py&#xff0c;增加以下代码 class ProxyMiddleware:def process…...

Qt - 如何在新线程 (QThread)中使用一个进程 (QProcess)?

在Qt中&#xff0c;QThread 用于处理后台任务&#xff0c;而 QProcess 用于启动和管理外部程序。如果你想在一个新的 QThread 中使用 QProcess&#xff0c;你需要了解 QProcess 并不是专门为在特定线程中运行而设计的。实际上&#xff0c;QProcess 通常在创建它的线程&#xff…...

Qt绘制多线段

最近画辅助线有刚需。 画图准备增加绘制多线段功能。 有哪些方法呢&#xff1f; QPainter Class | Qt GUI 5.15.17 void QPainter::drawPolyline(const QPolygon &points) QPolygon Class | Qt GUI 5.15.17 QPolygon polygon; polygon << QPoint(10, 20) <&…...

去中心化革命:探索区块链技术的前沿

随着信息技术的飞速发展&#xff0c;区块链技术作为一种新兴的去中心化解决方案&#xff0c;正逐渐改变着我们的经济、社会和技术格局。本文将从区块链的基本原理、当前的应用实例以及未来的发展趋势三个方面&#xff0c;深入探讨区块链技术在革命性变革中的角色和影响。 1. 区…...

2024年湖南省各市科小申报时间(科技型中小企业申报流程、条件、好处)新政

湖南省各市科小申报时间流程 一、评价管理 省科技厅牵头负责科技型中小企业评价工作的组织和监督、实地核查、公示公告、入库登记及编号撤销和集中抽查工作&#xff0c;及时处理相关异议、投诉和举报信息。 各市州科技局负责科技型中小企业评价工作的具体实施&#xff0c;组…...

【JD-GUI】MacOS 中使用Java反编译工具JD-GUI

希望文章能给到你启发和灵感&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏 支持一下博主吧&#xff5e; 阅读指南 开篇说明概念理解一、基础环境说明1.1 硬件环境1.2 软件环境 二、下载与安装2.1 选择对应版本2.2 解压运行排除异常&#xff1a;2.3 关于…...

C++:求梯形面积

梯形面积 已知上底15厘米&#xff0c;下底25厘米&#xff0c;问梯形面积值是多少&#xff1f; #include<iostream> using namespace std; int main() {//梯形的面积公式&#xff08;上底下底&#xff09; 高 2//上底变量、下底变量int s,d,h,m;s15;d25;h 2*150 * 2/s ;…...

学会python——在excel中写入数据(python实例十三)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3 .想Excel中写入数据 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…...

Stable Diffusion【基础篇】:降噪强度(denoising strength)

提到降噪强度&#xff08;denoising strength&#xff09;&#xff0c;大家一定不会陌生&#xff0c;这个参数是图生图中最关键的参数之一。今天在Stable Diffusion Art网站看到一篇介绍降噪强度&#xff08;denoising strength&#xff09;的文章&#xff08;地址&#xff1a;…...

【Python】语法入门

文章目录 Python 基础语法&#xff1a;打印和变量打印和变量的基本语法打印变量 变量操作变量的命名规则打印和变量的应用场景示例&#xff1a;基本计算器 Python 基础语法&#xff1a;列表推导式列表推导式的基本语法基本示例带条件的列表推导式列表推导式的应用场景 Python 基…...

匠心独运:红酒与手工艺的很好结合

在岁月的长河中&#xff0c;红酒与手工艺都以其不同的魅力和技艺&#xff0c;书写着各自的故事。当这两者相遇&#xff0c;仿佛是一场跨越时空的对话&#xff0c;不仅展现了匠心独运的技艺之美&#xff0c;更在无声中诉说着对品质与生活的热爱。今天&#xff0c;就让我们一起探…...

第20章 Mac+VSCode配置C++环境

1. 下载VSCode VSCode下载地址在mac终端里输入xcode- select --install命令&#xff0c;根据提示安装xcode工具。 2. 安装插件&#xff08;4个&#xff09; 打开VScode&#xff0c;点击应用右侧菜单栏 C/C&#xff08;必装&#xff09; Code Runner&#xff08;必装&#xf…...

FactoryBean 原理简介

FactoryBean 首先是一个工厂类&#xff0c;它可以生产指定的Bean&#xff0c;特殊之处在于它可以向Spring容器中注册两个Bean&#xff0c;一个是它本身&#xff0c;一个是FactoryBean.getObject()方法返回值所代表的Bean。通过实现 FactoryBean 接口&#xff0c;你可以控制某个…...

Redis中hash类型的操作命令(命令的语法、返回值、时间复杂度、注意事项、操作演示)

文章目录 字符串和哈希类型相比hset 命令hget 命令hexistshdelhkeyshvalshgetallhmgethlenhsetnxhincrbyhincrbyfloat 字符串和哈希类型相比 假设有以下一种场景&#xff1a;现在要在 Redis 中存储一个用户的基本信息(id1、namezhangsan、age17)&#xff0c;下图表示使用字符串…...

高通Android12启动流程分析

参考链接 https://blog.csdn.net/kill150/article/details/129929641 https://blog.csdn.net/Harrison509/article/details/108659469 https://www.cnblogs.com/pngcui/p/4665106.html 系统启动流程概览 高通Android设备的启动流程通常遵循以下步骤: PBL (Primary Boot Loa…...

Qt 文件初始化配置ini/conf类型读写

学习目标&#xff1a; 文件初始化配置 前置环境 运行环境:qt creator 4.12 学习内容 INI 文件是一种常见的配置文件格式,它通常用于存储应用程序或系统的设置和参数。INI 文件的格式很简单,由以下几个部分组成: 节(Section): 节用方括号括起来,如 [General]、[Network] 等。…...

Deep Filtered Back Projection for CT Reconstruction

CT重建中的深度滤波反投影 论文链接&#xff1a;https://ieeexplore.ieee.org/document/10411896 项目链接&#xff1a; ABSTRACT 滤波反投影(FBP)是一种经典的计算机断层扫描(CT)重建解析算法&#xff0c;具有很高的计算效率。然而&#xff0c;用FBP重建的图像往往存在过多…...

推荐Bulk Image Downloader插件下载网页中图片链接很好用

推荐&#xff1a;Bulk Image Downloader chome浏览器插件下载图片链接&#xff0c;很好用。 有个网页&#xff0c;上面放了数千的gif的电路图&#xff0c;手工下载会累瘫了不可。想找一个工具分析它的静态链接并下载&#xff0c;找了很多推荐的下载工具&#xff0c;都是不能分…...

vulnhub靶场之Jarbas

1 信息收集 1.1 主机发现 arp-scan -l 发现主机IP地址为&#xff1a;192.168.1.16 1.2 端口发现 nmap -sS -sV -A -T5 -p- 192.168.1.16 存在端口22&#xff0c;80&#xff0c;3306&#xff0c;8080 1.3 目录扫描 dirsearch -u 192.168.1.16 2 端口访问 2.1 80端口 2.2…...

游戏服务器搭建选VPS还是专用服务器?

游戏服务器搭建选VPS&#xff0c;VPS能够提供控制、性能和稳定性。它不仅仅是让游戏保持活力。它有助于减少延迟问题&#xff0c;增强您的游戏体验。 想象一下&#xff1a;你正沉浸在一场游戏中。 胜利在望。突然&#xff0c;屏幕卡住——服务器延迟。 很崩溃&#xff0c;对…...

新车丨本田、吉利、丰田等,再添5台新车!颜值漂亮,下半年发布

今年上半年北京车展发布的一些新车,或将于今年下半年能上市,未买车的朋友先不要着急。以下5款新车或将在今年下半年上市,新车实力更强、颜值更高、续航更长,充电更快,此5款供大家借鉴。第一台本田发布的烨GT此车整体设计由中国研发团队自主设计符合国人审美,并且采用四门…...

助推中国越野事业向前发展,越野世家不忘使命与担当

作为国内最早涉及越野领域的品牌之一,北京汽车在多年来的发展进程中,始终以品质为基石,不负“越野世家”的使命与担当,在深耕尖端越野技术,用心服务用户的同时,聚焦越野文化的普及和推广,努力为中国越野事业的向前发展,做出卓越贡献。始于突破,忠于使命,“越野世家”…...

非量表题如何进行信效度分析

效度是指设计的题确实在测量某个东西&#xff0c;一般问卷中使用到。如果是量表类的数据&#xff0c;其一般是用因子分析这种方法去验证效度水平&#xff0c;其可通过因子分析探究各测量量表的内部结构情况&#xff0c;分析因子分析得到的内部结构与自己预期的内部结构进行对比…...

100个投资者99个选择使用这款EA,WeTrade发现1个事实

为什么100个投资者会有99个选择使用这款EA&#xff0c;是因为这款EA能提供两个版本吗?是因为能控制风险吗?都不是&#xff0c;WeTrade发现1个事实才是这么多投资者选择的原因&#xff0c;那就是能实现100%的盈利率。 我们都知道外汇狙击手EA提供两种版本&#xff0c;分别是标…...

做场外个股期权怎么询价

做场外个股期权怎么询价&#xff1f;没有具体的哪家做市商是询价是最低的&#xff0c;个人投资者需要通过机构通道方询价进行对比&#xff0c;各券商的报价由询价机构方提供给到投资者&#xff0c;可以参考不同券商的报价进行比对&#xff0c;再决定是否进行投资。本文来自&…...

TH方程学习(1)

一、背景介绍 根据CW方程的学习&#xff0c;CW方程的限制条件为圆轨道&#xff0c;不考虑摄动&#xff0c;二者距离相对较小。TH方程则可以将物体间的相对运动推广到椭圆轨道的二体运动模型&#xff0c;本部分将结合STK的仿真功能&#xff0c;联合考察TH方程的有用性&#xff…...