IP 路由基础 | 路由条目生成 / 路由表内信息获取
注:本文为 “IP 路由” 相关文章合辑。
未整理去重。
IP 路由基础
秦同学学学已于 2022-04-09 18:44:20 修改
一. IP 路由产生背景
-
我们都知道 IP 地址可以标识网络中的一个节点,并且每个 IP 地址都有自己的网段,各个网段并不相同,并且有可能分布在不同的网络区域
-
我们之前也学习过在同网段之间通信可以通过 ARP 协议来获取目的主机的 mac 地址达到数据通信的目的,那么问题来了,跨网段该如何进行通信呢???
跨网段通信这个需求催生出了 IP 路由这项技术,用来解决跨网段通信的需求
二. 路由信息介绍 — 路由表
-
路由转发
网关及其中间节点(一般是路由器)解封装他们收到的 IP 报文,根据报文中目的 IP 地址,查询路由表选择合适路径后,按照路由表提供的出接口以及下一跳等进行转发,直到最后一跳路由器进行二层寻址(arp)将该报文转发给目的主机
-
常见转发报文设备 — 路由器
-
中间节点(路由器)选择转发依赖表项叫做 — 路由表
三. 路由表(比较重要单独拿出来进行讲述)
-
目的网络:标识目的网段 (网段地址)
-
掩码:与目的地址共同标识一个网段
-
出接口: 数据包被路由后离开本路由器的接口(确定路径后从哪个接口出去)
-
下一跳:路由器转发到达目的网段的数据包所使用的下一跳地址
可以理解为整个数据转发过程就是由一个个路由器内的路由表共同努力的结果
注意:
路由器可以通过各种方式发现路由(直连、静态、动态)
路由器只会选择一条最优路由条目放入路由表中(会通过各种方式进行比较,下面讲述)
四、路由条目生成 / 路由表内信息获取
我们通过以上知识可以清楚知道路由器内路由表的重要性,所以我们必须探寻一下路由表是如何形成的
路由表形成一般常见的有三种 —— 直连、静态、动态 (这篇文章只讲直连路由、静态路由和动态路由内容太多,单独出文章进行讲述)
直连路由
-
直连路由是直连到此路由器的网路,配置好 IP 地址后设备会自动化生成
-
当路由器是此报文转发的最后一跳路由器时,路由器会匹配直连路由将该报文进行转发
-
使用直连路由进行转发的时候,报文的目的 IP 和路由器接口 IP 必须在同一个网段内(以确保转发正确)
-
并不是所有接口生成的直连路由器都将出现在路由表中,直连路由出现在路由表内前提是该接口的物理状态和协议状态都为 up
- 直连路由的下一跳为出接口位置的 IP 地址
五、最优路由条目选举办法
[huawei] display ip routing-table
Destination/Mask:表示此路由的目的网络地址与网络掩码。将目的地址和子网掩码 “逻辑与” 后可得到目的主机或路由器所在网段的地址。例如:目的地址为 1.1.1.1,掩码为 255.255.255.0 的主机或路由器所在网段的地址为 1.1.1.0。
Proto(Protocol):该路由的协议类型,也即路由器是通过什么协议获知该路由的。
Pre(Preference):表示此路由的路由协议优先级。针对同一目的地,可能存在不同下一跳、出接口等多条路由,这些不同的路由可能是由不同的路由协议发现的,也可以是手工配置的静态路由。优先级最高(数值最小)者将成为当前的最优路由。
Cost:路由开销。当到达同一目的地的多条路由具有相同的路由优先级时,路由开销最小的将成为当前的最优路由。
NextHop:表示对于本路由器而言,到达该路由指向的目的网络的下一跳地址。该字段指明了数据转发的下一个设备。
Interface:表示此路由的出接口。指明数据将从本路由器的哪个接口转发出去。
选举办法 — 路由优先级
・当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同,网络掩码越长越优,因为更加准确)时,路由器会比较这些路由的优先级,优选优先级值最小的路由。
・路由来源的优先级值( Preference )越小代表加入路由表的优先级越高。
・拥有 最高优先级的路由将被添加进路由表 。
个人理解
-
首先比较网络掩码,网络掩码越长优先级越高。掩码越长,主机位越少,IP 地址数量越少,寻址越容易。
-
若掩码相同,则比较协议优先级,协议优先级以数字表示,数字越小优先级越高。
路由来源 | 路由类型 | 默认优先级 |
直连 | 直连路由 | 0 |
静态 | 静态路由 | 60 |
动态路由 | OSPF 内部路由 | 10 |
OSPF 外部路由 | 150 |
- 若优先级相同,则比较度量值(开销值),度量值越小优先级越高。
- 常用的度量值包括跳数、带宽、时延、代价、负载、可靠性等。
- 开销值可类比为性价比,从成本角度理解,开销越低越具优势。
六、IP 路由总结
-
当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,会选择路由优先级值最小的路由;如果这些路由学习自相同的路由协议,则优选度量值最优的。总之,最优的路由加入路由表。
-
当路由器收到一个数据包时,会在自己的路由表中查询数据包的目的 IP 地址。如果能够找到匹配的路由表项,则依据表项所指示的出接口及下一跳来转发数据;如果没有匹配的表项,则丢弃该数据包。
-
路由器的行为是逐跳的,数据包从源到目的地沿路径每个路由器都必须有关于目标网段的路由,否则就会造成丢包。
-
数据通信往往是双向的,因此要关注流量的往返(往返路由)。 路由信息和流量信息相反。
IP 路由概述
牧鸯人已于 2023-03-21 15:16:17 修改
前言
在一个 IP 网络中,路由 ( Routing ) 是个非常非常基本的概念。网络的基本功能,是使得处于网络中的两个 IP 节点能够进行通信,而通信实际上就是数据交互的过程,数据交互则需要网络设备帮助我们来将数据在两个通信节点之间进行传输。当路由器 (或者其他三层设备) 收到一个 IP 数据包,路由器会找出 IP 包三层头中的目的 IP 地址,然后拿着目的 IP 地址到自己的路由表中进行查找,找到 “最匹配” 的条目后,将数据包根据路由条目所指示的出接口或下一跳 IP 转发出去,这就是 IP 路由 ( IP routing )。而每台路由器都会在本地维护一个路由表 ( Routing Table ), 路由表中装载着路由器获知的路由条目 ( Routes ), 路由条目由路由前缀 (路由所关联的目的地)、入路由信息来源、出接口或下一跳 IP 等元素构成。路由器通过静态的或者动态的方式获取路由条目并维护自己的路由表。
IP 路由表(IP Routing Table)
为了理解路由表中的信息种类,我们需要先考虑数据包到达路由器接口时会发生什么,这是非常有用的。首先,路由器会检查数据帧目标地址字段中的数据链路标识。如果它包含了路由器接口标识符或广播标识符,那么路由器:将从帧中剥离出数据包并传递给网络层。在网络层,路由器将检查数据包的目标地址。如果目标地址是路由器接口的 IP 地址或是所有主机的广播地址,那么需要进一步检查数据包的协议字段,然后再把被封装的数据发送给适当的内部进程。
除此之外,所有其他目标地址都需要进行路由选择。这里的目标地址可能是另一个网络上的主机地址,该网络或者与路由器相连 (包括与那个网络相连接的路由器接口), 或者不直接连接到路由器上。目标地址还可能是一一个定向的广播地址,这种地址有明确的网络地址或子网地址并且主机位全部为 1. 这些地址也是可以路由的。
每个路由表项最少必须包括下面三个项目:
-
目标地址(路由前缀):这是路由条目所关联的目的的网络号。一条完整的路由前缀由:网络号 + 前缀长度构成,两种缺一不可,例如 192.168.1.0/24 与 192.168.1.0/25,虽然两者的网络号相同,都是 192.168.1.0,但是两者绝对是两条不同的路由、两个不同的路由前缀,因为他们的前缀长度不相同。
-
指向目标的指针:指针不是指向路由器的直连目标网络就是指向直连网络内的另一台路由器地址,或者是到这个链路的本地接口。更接近目标网络一跳的路由器叫下一跳(next hop)路由器。
-
路由信息的来源:本地路由是通过什么途径学习到的,例如是静态的,或者是通过 OSPF、IS-IS、EIGRP、BGP 等路由学习到的。
路由器将会尽快地进行最精准的匹配:按精确程度递增的顺序,可选地址排列如下:
-
主机地址(主机路径);
-
子网;
-
一组子网(一条汇总路由);
-
主网号;
-
一组主网号(超网);
-
缺省地址。
管理距离值(Administrative Distance,简称 AD)
路由器可以通过多种途径获知路由条目:如静态手工配置、各种动态路由协议等等。当路由器从两种不用的途径获知去往同一个目的地的两条路由,那么路由器会比较这两条路由的 AD 值,也就是管理距离,优选 AD 值小的路由。如果 AD 值相等,例如是同种路由协议,则进 - 步比较 metric 值,当然,这其中还牵涉到不同的路由协议内在的工作机制问题,这就要针对不同的路由协议具体讨论了。如下图,R3 与 R1 运行的是 RIP 协议,R3 又通过 OSPF 与 R2 建立邻接关系。于是 R3 同时 RIP、OSPF 学习到了去往目的地 1.1.1.0/24 的路由,这两条路由分别以 R1 和 R2 作为下一跳。那么 R3 最终选择 OSPF 的路由装载进路由表,也就是将 R2 作为实际去往 1.1.1.0/24 的下一跳,因为 OSPF 协议的 AD 值比 RIP 要小要更优。
不同的路由协议对应的 AD 值
Routing Protocdls | AD | 备注 |
---|---|---|
直连接口 | 0 | |
关联出接口的静态路由 | 1 | Metric = 0 |
关联下一跳的静态路由 | 1 | Metric = 0 |
EIGRP 汇总路由 | 5 | |
外部 BGP | 20 | |
内部 EIGRP | 90 | |
IGRP | 100 | |
OSPF | 110 | |
RIPv1、v2 | 120 | |
外部 EIGRP | 170 | |
内部 BGP | 200 |
静态路由特征
静态路由的优点
-
占用的 CPU 和 RAM 资源较少。
-
可控性强,也便于管理员了解整个网络路由信息。
-
不需要动态路由更新,可以减少带宽的占用。
-
简单和易于配置。
静态路由的缺点
-
配置和维护耗费管理员大量时间。
-
配置时容易出错,尤其对大型网络。
-
当网络拓扑发生变化时,需要管理员维护变化的路由信息。
-
随着网络规模的增长和配置的扩展,维护越来越麻烦。
-
需要管理员对整个网络的情况完全了解后才能进行恰当的操作和配置。
静态路由使用场所
-
网络中仅包含几台路由器。在这种情况下,使用动态路由协议可能会增加额外的管理负担。
-
网络仅通过单个 ISP 接入 Internet。因为该 ISP 就是唯一的 Internet 出口点,所以不需要在此链路间运行动态路由协议。
-
路由器没有足够的 CPU 和内存来运行动态路由协议。
-
可以通过浮动静态路由为动态路由提供备份。
-
链路的带宽较低,因为动态路由更新和维护和带来额外的链路负担。
动态路由协议特征
动态路由是路由器之间通过路由协议 (如 RIP、EIGRP、OSPF、IS-IS 和 BGP 等) 动态交换路由信息来构建路由表的。使用动态路由协议最大的好处是,当网络拓扑结构发生变化时,路由器会自动地相互交换路由信息,因此路由器不仅能够自动获知新增加的网络,还可以在当前网络连接失败时找出备用路径。
动态路由协议功能
-
发现远程协议功能。
-
动态维护最新路由信息。
-
自动计算并选择通往目的网络的最佳路径。
-
当前路径无法使用时找出新的最佳路径。
动态路由协议的优点
-
当增加或删除网络时,管理员维护路由配置的工作量较小。
-
当网络拓扑结构发送变化时,路由协议可以自动进行调整来更新路由表。
-
配置不容易出错。
-
扩展性好,网络规模越大,越能体现出动态路由协议的优势。
动态路由协议的缺点
-
需要占用额外的资源,如路由器 CPU 时间和 RAM 以及链路带宽等。
-
需要掌握更多的网络知识才能进行配置、验证和故障排除等工作,特别是一些复杂的动态路由协议对管理员的要求较高。
常见的动态路由协议
路由 IP 时间包时常用的动态路由协议包括:
-
RIP (Routing Information Protocol)—— 路由信息协议。
-
EIGRP (Enhanced Interior Gateway)—— 增加型内部网关路由协议。
-
OSPF (Open Shortest Path First)—— 开放最短路径优先。
-
IS-IS (Intermediate System-to-Intermediate Sstem)—— 中间系统 - 中间系统。
-
BGP (Border Gatewa Protocol)—— 边界网关协议。
动态路由协议分类
IGP 和 EGP
动态路由协议按照作用的 AS (Autonomous System, 自治系统) 来划分,分为 IGP (InteriorGateway Protocol, 内部网关协议) 和 EGP (Exterior Gateway Protocol, 外部网关协议)。IGP 用于自治系统内部,适用于 IP 协议的 IGP 包 RIP、EIGRP、OSPF 和 IS-IS。 而 EGP 用于不同机构管控下的不同自治系统之间的路由。BGP 是目前唯一使用的一种 EGP 协议,也是 Internet 所使用的主要路由协议。
距离矢量协议和链路状态路由协议
根据路由协议的工作原理,IGP 还可以进一步分为距离矢量路由协议和链路状态路由协议。距离矢量路由协议主要有 RIP 和 EIGRP,链路状态路由协议主要有 OSPF 和 IS-IS。
距离矢量协议适用的场所:
-
网络结构简单、扁平,不需要特殊的分层设计。
-
管理员没有足够的知识来配置链路状态协议和排查故障。
-
无关关注网络最差情况下的收敛时间。
链路状态协议适用的场合:
-
网络进行了分层设计。
-
管理员对于网络种采用的链路状态路由协议非常熟悉。
-
网络管理员对于网络中采用的链路状态路由协议非常熟悉。
有类路由协议和无类路由协议
路由协议按照所支持的 IP 地址类别又划分为有类路由协议和无类路由协议。有类路由协议在路由信息更新过程中不发送子网掩码信息,RIPv1 属于有类路由协议。无类路由协议在路由信息更新中携带子网掩码,同时支持 VLSM 和 CIDR 等;RIPv2、 EIGRP、OSPF、IS-IS 和 BGP 属于无类路由协议。
度量值(Metric)
度量值是指路由协议用来分配到达远程网络的路由开销值。对于同 - - 种路由协议,当有多条路径通往同一目的网络时,路由协议使用度量值来确定最佳路径。度量值越低,路径越优先。每一种路由协议都有自己的度量方法,所以不同的路由协议选择出的最佳路径可能是不 - 样的。IP 路由协议中经常使用的度量标准如下:
-
跳数 —— 数据包经过的路由器个数。
-
带宽 —— 链路的数据承载能力。
-
复杂 —— 链路的通信使用率。
-
延迟 —— 数据包从源到达目的需要的时间。
-
可靠性 —— 通过接口错误计数或以往的链路故障次数来估计出现链路故障的可能性。
-
开销 —— 链路上的费用,OSPF 中的开销值是根据接口带宽计算的。
路由加入到路由表中遵循的原则
路由表是保存在 RAM 中的时间文件,存储了与直连网络以及远程网络相关的信息。路由表包含网络与下一跳的关联信息。这些关联告知路由器,要以最佳的方式到达某目的地,可以将数据包发送到特定路由器 (即在到达最终目的地的途中的 “下一跳”)。下一跳也可以关联到通向最终目的地的送出接口。路由器在查找路由表的过程中通常采用 “递归查询” 路由器通常用以下 3 种途径构建路由表。
-
直连网络:直连到路由器某一接口的网络。当然,该接口处于活动状态,路由器自动将和自己直接连接的网络添加到路由表中。
-
静态路由:通过网络管理员手工配置添加到路由表中。
-
动态路由:由动态路由协议(如 RIP、EIGRP、OSPF 和 IS-IS 等)通告,路由器通过自动学习来构建路由表。
路由表工作的原理如下:
-
每台路由器根据其自身路由表中的信息独立做出转发决定。
-
一台路由器的路由表中包含某些信息并不表示其他路由器也包含相同的信息。
-
从一个网络能够到达另一个网络并不意味着数据包一定可以返回,也就是说路由信息必须双向可达,才能确保网络可以双向通信,所以静态路由一般都需要双向配置。
总结
为了实现数据的转发,路由器、路由表和路由协议是必不可少的。路由协议用于发现路由,生成路由表,路由表中保存了各种路由协议发现的路由,路由器用来选择路由,实现数据转发。
via:
-
IIP路由基础 - CSDN 博客
https://blog.csdn.net/xiaobai729/article/details/122920727 -
IP 路由概述 - CSDN 博客
https://blog.csdn.net/m0_61703913/article/details/124225059 -
IP Routing 概述 - CSDN 博客
https://blog.csdn.net/u012829687/article/details/24407221
相关文章:
IP 路由基础 | 路由条目生成 / 路由表内信息获取
注:本文为 “IP 路由” 相关文章合辑。 未整理去重。 IP 路由基础 秦同学学学已于 2022-04-09 18:44:20 修改 一. IP 路由产生背景 我们都知道 IP 地址可以标识网络中的一个节点,并且每个 IP 地址都有自己的网段,各个网段并不相同…...
COBOL语言的移动应用开发
COBOL语言的移动应用开发探讨 引言 在信息技术快速发展的今天,移动应用开发已成为各行各业不可或缺的一部分。许多企业和开发者纷纷转向使用新兴的编程语言和开发工具,以满足不断变化的用户需求。然而,作为一种历史悠久的编程语言ÿ…...
TCP协议(Transmission Control Protocol)
TCP协议,即传输控制协议,其最大的特征就是对传输的数据进行可靠、高效的控制,其段格式如下: 源端口和目的端口号表示数据从哪个进程来,到哪个进程去,四位报头长度表示的是TCP头部有多少个4字节,…...
C语言数组之二维数组
C语言 主要内容 数组 二维数组 数组 二维数组 定义 二维数组本质上是一个行列式的组合,也就是说二维数组由行和列两部分组成,属于多维数组。二维数组数据是通过行列进行解读。二维数组可被视为一个特殊的一维数组,相当于二维数组又是一…...
计算机专业知识【软件开发中的常用图表:E - R图、HIPO、DFD、N - S、PAD详解】
在软件开发过程中,有许多种图表工具被用于不同阶段的设计和分析,帮助开发者更清晰地理解系统结构、数据流程和算法逻辑。下面将详细介绍E - R图、HIPO图、DFD图、N - S图和PAD图,包括它们的样子和用途。 一、E - R图(实体 - 联系…...
多人协同开发 —— Git Aoneflow工作流
一、Aoneflow工作流核心架构 #mermaid-svg-rwTOe9qYwzG3wkdy {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-rwTOe9qYwzG3wkdy .error-icon{fill:#552222;}#mermaid-svg-rwTOe9qYwzG3wkdy .error-text{fill:#552222…...
VSCode运行Go程序报错:Unable to process `evaluate`: debuggee is running
如果使用默认的VSCode的服务器来运行Go程序,那么使用fmt.Scan函数输入数据的时候就会报错,我们需要修改launch.json文件,将Go程序运行在shell终端上。 main.go package mainimport "fmt"func main() {var n intfmt.Scan(&n)v…...
Mybatis高级(动态SQL)
目录 一、动态SQL 1.1 数据准备: 1.2 <if>标签 1.3<trim> 标签 1.4<where>标签 1.5<set>标签 1.6 <foreach>标签 1.7<include> 标签 一、动态SQL 动态SQL是Mybatis的强⼤特性之⼀,能够完成不同条件下不同…...
在 Vue 3 中使用 Lottie 动画:实现一个加载动画
在现代前端开发中,动画是提升用户体验的重要元素之一。Lottie 是一个流行的动画库,它允许我们使用 JSON 文件来渲染高质量的动画。本文将介绍如何在 Vue 3 项目中集成 Lottie 动画,并实现一个加载动画效果。 如果对你有帮助请帮忙点个&#x…...
建筑行业安全技能竞赛流程方案
一、比赛时间: 6月23日8:30分准时到场;9:00-10:00理论考试;10:10-12:00现场隐患答疑;12:00-13:30午餐;下午13:30-15:30现场…...
Mybatisplus自定义sql
文章目录 引言流程 引言 mybatisplus最擅长的将where里面的语句给简便化,而不用我们自己写标签来实现条件查询 但是很多公司规范我们将sql写在mapper层中,不能写在service中 而且一些语句查询的不同select count(*) xxx from xxx 也难以用mp来实现 如何…...
情书网源码 情书大全帝国cms7.5模板
源码介绍 帝国cms7.5仿《情书网》模板源码,同步生成带手机站带采集。适合改改做文学类的网站。 效果预览 源码获取 情书网源码 情书大全帝国cms7.5模板...
基于Unity引擎的网络通信架构深度解析——以NetworkConnectionController为例
一、架构概览与设计理念 本文将以重构后的NetworkConnectionController为核心,深入分析基于Unity引擎的MMO网络通信架构设计。该模块采用分层设计思想,通过连接池管理、流量控制、心跳监测等多维度技术手段,构建了一个高性能、可扩展的网络通…...
C#学习之DataGridView控件
目录 一、DataGridView控件常用属性、方法、事件汇总表 1. 常用方法、属性和事件汇总 二、DataGridView 控件的常用方法调用 1. DataBind() 方法 2. Clear() 方法 3. Refresh() 方法 4. Sort() 方法 5. ClearSelection() 方法 6. BeginEdit() 方法 7. EndEdit() 方法…...
midjourney 一 prompt 提示词
midjourney 不需要自然语言的描述,它只需要关键词即可。 一个完整的Midjourney prompt通常包括三个部分 图片提示(Image Prompts)、文本提示(Text Prompt)和参数(Parameters)。 1、图片提示(…...
谈谈 wait 和 notify
目录 1 wait()方法 2 notify()⽅法 3 wait 和 sleep 的区别 多线程调度是随机的, 很多时候希望多个线程能够按照咱们规定的顺序来执行. 完成线程之间的配合工作. wait和notify就是一个用来协调线程顺序的重要工具. 这俩方法都是 Object 提供的方法. 随便找个对象࿰…...
250214-java类集框架
引言 类集框架本质上相当于是容器,容器装什么东西由程序员指定 1.单列集合 单列集合是list和set,list的实现类有ArrayList和LinkedList,前者是数组实现,后者是链表实现。list和set,前者有序、可重复,后者…...
Python学习心得异常处理
有些代码在操作的过程当中,如果不注意其所限定的条件,可能在输入函数值时引发一些程序的报错,这样为了让代码自己能做到抛除异常操作的情况,就得让代码具有排除异常的能力。下面的一些操作就使得代码具有该功能,处理异…...
【机器学习】线性回归 多项式线性回归
【机器学习系列】 KNN算法 KNN算法原理简介及要点 特征归一化的重要性及方式线性回归算法 线性回归与一元线性回归 线性回归模型的损失函数 多元线性回归 多项式线性回归 多项式线性回归 V1.0多项式回归多项式回归的公式 特征代换超越函数作为特征向量维度 V1.0 多项式回归 …...
链表和list
链表和list 算法题中的经典操作:用空间代替时间 双链表头插顺序: 1.先修改新结点的左右指针 2.然后修改结点y的左指针 3.最后修改哨兵位的右指针 双链表在任意位置(p)之后插入…...
vscode的一些实用操作
1. 焦点切换(比如主要用到使用快捷键在编辑区和终端区进行切换操作) 2. 跳转行号 使用ctrl g,然后输入指定的文件内容,即可跳转到相应位置。 使用ctrl p,然后输入指定的行号,回车即可跳转到相应行号位置。...
sass中@import升级@use的使用区别与案例
在 Sass 中,import 和 use 都用于模块化代码,但二者有显著区别。以下是主要差异和具体案例说明: 核心区别对比 特性 import (旧版) use (新版) 作用域 全局作用域(变量/混合易冲突) 局部作用域(需通过…...
基于单片机ht7038 demo
单片机与ht7038 demo,三相电能表,电量数据包括电流电压功能,采用免校准方法 列表 ht7038模块/CORE/core_cm3.c , 17273 ht7038模块/CORE/core_cm3.h , 85714 ht7038模块/CORE/startup_stm32f10x_hd.s , 15503 ht7038模块/CORE/startup_stm32…...
基于YOLO11深度学习的胃肠道息肉智能检测分割与诊断系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标分割、人工智能
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
CViewState::InitializeColumns函数分析之_hdsaColumnStates的结构
CViewState::InitializeColumns函数分析之_hdsaColumnStates的结构 // Set up saved column state only if the saved state // contains information other than "nothing". if (_hdsaColumnStates) { UINT cStates DSA_GetItemCount(_hdsaColumnS…...
商淘云中英文外贸电商系统,助力传统企业杨帆出海
在全球经济一体化的浪潮下,传统企业纷纷渴望拓展海外市场,寻求新的增长机遇。然而,语言障碍、复杂的跨境交易流程、多元的支付体系以及迥异的消费习惯,如同重重壁垒,阻碍着传统企业扬帆出海的步伐。此时,商…...
--- Mysql事务 ---
什么是事务 因为事务的存在,可以使得多条sql语句一起执行,并且只有全部执行成功或全部执行失败俩种结果,保证了数据的安全,也使得这些sql语句拥有了原子性,隔离性,一致性,持久性(AC…...
FreeRTOS第7篇:内存的“精打细算”——堆管理与内存分配
文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 引言:嵌入式系统的“仓库管理员” 想象你是一家繁忙仓库的管理员:货物(内存块)需要被高效存取,货架(堆空间)必须避免…...
有效市场理论(Efficient Market Hypothesis,简称 EMH):市场真的“有效”吗?中英双语
有效市场理论(EMH):市场真的“有效”吗? 1. 什么是有效市场理论? 📌 有效市场理论(Efficient Market Hypothesis,简称 EMH) 是由美国经济学家 尤金法玛(Eug…...
STM32 HAL库USART串口中断编程:演示数据丢失
目录 一、开发环境 二、配置STM32CubeMX 三、代码实现与部署 四、运行结果: 五、注意事项 上面讨论过,HAL_UART_Receive最容易丢数据了,可以考虑用中断来实现,但是HAL_UART_Receive_IT还不能直接用,容易数据丢失,实际工作中不会这样用,本文介绍STM32F103 HAL库函数…...
MapReduce的工作原理及其在大数据处理中的应用
MapReduce是一种由Google提出的面向大数据并行处理的计算模型、框架和平台,它通过将复杂的数据处理任务分解为两个简单的阶段——Map(映射)和Reduce(归约),实现了分布式并行计算,极大地提高了数…...
python学opencv|读取图像(六十六)使用cv2.minEnclosingCircle函数实现图像轮廓圆形标注
【1】引言 前序学习过程中,已经掌握了使用cv2.boundingRect()函数实现图像轮廓矩形标注,相关文章链接为:python学opencv|读取图像(六十五)使用cv2.boundingRect()函数实现图像轮廓矩形标注-CSDN博客 这篇文章成功在图…...
SpringCloud系列教程:微服务的未来(二十四)Direct交换机、Topic交换机、声明队列交换机
前言 在现代消息队列系统中,交换机是实现消息传递和路由的核心组件。本文将重点探讨三种常见的交换机类型:Direct交换机、Topic交换机和声明队列交换机。通过对这三种交换机的详细分析,我们将学习它们的工作原理、应用场景以及如何在实际项目…...
云创智城充电系统:基于 SpringCloud 的高可用、可扩展架构详解-多租户、多协议兼容、分账与互联互通功能实现
在新能源汽车越来越普及的今天,充电基础设施的管理和运营变得越来越重要。云创智城充电系统,就像一个超级智能管家,为新能源充电带来了全新的解决方案,让充电这件事变得更方便、更高效、更安全。 一、厉害的技术架构,让…...
iOS事件传递和响应
背景 对于身处中小公司且业务不怎么复杂的程序员来说,很多技术不常用,你可能看过很多遍也都大致了解,但是实际让你讲,不一定讲的清楚。你可能说,我以独当一面,应对自如了,但是技术的知识甚多&a…...
时间序列分析(四)——差分运算、延迟算子、AR(p)模型
此前篇章: 时间序列分析(一)——基础概念篇 时间序列分析(二)——平稳性检验 时间序列分析(三)——白噪声检验 一、差分运算 差分运算的定义:差分运算是一种将非平稳时间序列转换…...
OpenCV机器学习(6)朴素贝叶斯分类器(Naive Bayes Classifier)cv::ml::NormalBayesClassifier的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::ml::NormalBayesClassifier 是 OpenCV 机器学习模块中的一部分,用于实现朴素贝叶斯分类器(Naive Bayes Classifier&a…...
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
目录 前言1. nginx配置2. 配置minio(Demo要点)3. 实战要点3.1 前端配置3.2 后端配置3.3 应用前言 如何在ruoyi-vue-pro上使用minio上传文件,通过Ngnix再次转发路径 相关的minio推荐阅读: 云服务器中的MinIO 配置 HTTPS 过程(图文)详细分析Java中的Minio类各API(附win配…...
python黑帽子第二版netcat分析
源码 import argparse import socket import shlex import subprocess import sys import textwrap import threadingdef execute(cmd):cmd cmd.strip()if not cmd:returnoutput subprocess.check_output(shlex.split(cmd), stderrsubprocess.STDOUT)return output.decode()…...
【Android开发】华为手机安装包安装失败“应用是非正式版发布版本,当前设备不支持安装”问题解决
问题描述 我们将Debug版本的安装包发送到手机上安装,会发现华为手机有如下情况 解决办法 在文件gradle.properties中粘贴代码: android.injected.testOnlyfalse 最后点击“Sync now”,等待重新加载gradle资源即可 后面我们重新编译Debug安装…...
dify实现分析-rag-文档内容提取
dify实现分析-rag-文档内容提取 概述 在文章《dify实现原理分析-上传文件创建知识库总体流程》中已经介绍了,文件上传后索引构建的总体流程,本文介绍其中的“Extract: 提取文档内容:这里会按段落或整页来获取文档内容”步骤的实现。 这一步的主要功能…...
腾讯云API+chatbox
腾讯云的限时免费接口:知识引擎原子能力 对话-原子能力相关接口-API 中心-腾讯云 本接口调用DeepSeek系列模型限时免费。即日至北京时间2025年2月25日23:59:59,所有腾讯云用户均可享受DeepSeek-V3、DeepSeek-R1模型限时免费服务,单账号限制接…...
sql查询null的时候
SELECT * FROM scm_sku_stock WHERE SKU_CODEGOS2310251620452226 and CONSIGNOR_USER_CODE is null 在 SQL 中,NULL 是一个特殊的值,表示“没有值”或“未知值”。在比较时,NULL 不能直接用 或 ! 来比较。相反,你需要使用 IS N…...
BitLocker技巧与经验
初级代码游戏的专栏介绍与文章目录-CSDN博客 BitLocker是windows默认的存储加密方案,用好了很安全,用错了完蛋。以下来自我的使用经验。 目录 可以加密移动设备 可以加密操作系统分区 TPM是个坑 一定要用微软账号登录并将密钥保存在账号里 不建议使…...
Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档
Electron 客户端心跳定时任务调度库调研文档 - Node.js 任务调度库技术调研文档 本文将对七个流行的定时任务调度库:node-cron、rxjs、bull、node-schedule、agenda、bree、cron。这些库都可以用来处理定时任务,但它们的特点和适用场景有所不同。我们将从…...
数据结构——二叉树(2025.2.12)
目录 一、树 1.定义 (1)树的构成 (2)度 2.二叉树 (1)定义 (2)二叉树的遍历 (3)遍历特性 二、练习 1.二叉树 (1)创建二叉树…...
OpenCV机器学习(5)逻辑回归算法cv::ml::LogisticRegression
OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::ml::LogisticRegression 是 OpenCV 机器学习模块中的一个类,用于实现逻辑回归算法。逻辑回归是一种广泛应用于分类问题的统计方法,特别适合二分类任务。…...
matlab 汽车abs的模糊pid和pid控制仿真
1、内容简介 matlab145-汽车abs的模糊pid和pid控制仿真 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略基于模糊控制的汽车ABS系统仿真研究_刘志敏.caj 汽车ABS模糊控制方法的分析与仿真_李林.caj 汽车ABS模糊控制方法的研究_王文竹.pdf 汽车ABS…...
Flutter 正在推进全新 PlatformView 实现 HCPP, 它又用到了 Android 上的什么黑科技
跨平台开发里的 PlatformView 实现一直是一个经久不衰的话题,在之前的 《深入 Flutter 和 Compose 的 PlatformView 实现对比》 我们就详细聊过 Flutter 和 Compose 在 PlatformView 实现上的异同之处,也聊到了 Compose 为什么在相同实现上对比 Flutter …...
VAS1260IB05E 集成内部开关驱动器的汽车级LED硬灯带高效解决方案
VAS1260IB05E LED芯片是一种连续模式电感降压转换器,设计用于从高于LED电压的电压源高效驱动单个或多个串联连接的LED。该设备在5V至60V之间的输入电源下工作,并提供高达1.2A的外部可调输出电流。包括输出开关和高侧输出电流感测电路,该电路使…...