【计算机三级网络技术】 第四篇 路由设计技术基础
文章目录
- 一、分组转发
- 二、路由选择
- 1.理想的路由算法的基本特征
- 2.路由算法的度量标准
- 3.路由算法分类:
- 4.IP路由选择与路由汇聚(重点)
- 三、自治系统与Internet的路由选择协议
- 1.自治系统
- 2.路由选择协议的分类
- 四、内部网关协议
- 1.RIP的基本概念
- 2.RIP的原理
- 3.RIP的运行过程
- 五、开放最短路径优先协议
- 1.OSPF协议概述
- 2.OSPF的层次结构与区域划分
- 3.OSPF协议的运行过程
- 六、外部网关协议
- 1.BGP协议的特性
- 2.BGP的路由器角色及基本特征
- 3.BGP协议报文
- 4.BGP的运行过程
一、分组转发
所谓的分组转发中,数据是以分组形式传输的, 如果源端要发送一个很大的数据,则将其分成若干分组,每个分组中除了用户数据外还包含一些控制信息,以便能够正确地把分组传送给目的端。分组的传送采用存储-转发方式, 即网络节点根据分组控制信息,把分组送到下一节点,下一节点接收到分组后,暂时保存下来并排队等候传输,然后根据分组控制信息把该分组传送到下一个节点,直至到达最终目的。
在互联网络中,路由器就是采用分组转发的机制实现IP分组的物理传输和数据报转发的。如下图所示,分组转发根据分组的源地址(网络层的IP地址)和目的地址(网络层的IP地址)是否在同一个网络中,可以分为直接转发与间接转发两种转发方式。
当分组的源地址和目的地址在同一个网络中,则源主机可将分组直接转发给目的主机,或者目的路由器向目的主机转发分组时,也为直接转发。 否则,当分组的源地址与目的地址不在同一个网络中,就需要通过路由查找进行转发,即间接转发。 间接转发时,路由器需要从路由表中找,到所需转发的下一跳地址,然后经过IP包处理,转发给下一跳,直至到达目的主机。
分组转发示意图
二、路由选择
1.理想的路由算法的基本特征
理想的路由算法需要满足一些基本特性:简单性、正确性、稳定性、健壮性、公平性、最优性、高效性。
简单性指的是路由算法不能太复杂。
正确性指的是路由算法首先要保证自身正确,同时应该满足数据传输的要求,从而满足网络用户业务工作的需要。
稳定性指的是路由算法对网络状态的变化要适度反应,不能过于敏感也不能太迟缓。
健壮性指的是路由算法能适应拓扑结构和通信量等网络状态的变化,尽可能保持网络正常运行,把中断的数据传输继续下去,而不需要重启网络或者将主机数据传输终止。
公平性指的是路由选择算法应对所有用户(除对少数优先级高的用户)都是平等的。
最优性指的是路由选择算法应当能够找出最好的路由,使得分组平均延时最小而网络的吞吐量最大。
高效性是指因路由算法工作的需要,网络中的每个节点都会承担一定的处理开销,同时会产生一些传输开销,一定程度上会影响网络的效率。
2.路由算法的度量标准
- 带宽: 指的是链路的传输速率(如T1链路带宽为1.544Mbit/s)
- 负载: 指的是单位时间内通过网络资源(如路由器或链路)上的通信量。
- 延迟: 指的是一个分组从源节点到达目的节点所花费的时间。延迟取决于中间链路的带宽、经过的每个路由器的端口队列、网络拥塞情况以及物理距离等因素。
- 跳数: 指的是分组从源主机到达目的主机经过的路由器的数量。跳数越少的路径越好。可靠性:指的是传输过程中每个网络链路的误码率。-
- 代价(开销): 可以是个任意的值,一般以费用、带宽的开销或其他衡量标准为基础,可以由网络管理员指定。
3.路由算法分类:
(1)静态路由选择算法。
静态路由选择具有简单和开销较小的特点,适用于简单的规模小的网络,因为在此种网络环境下,网络管理人员比较容易掌握网络的拓扑结构,手工配置路由信息工作量也不大。它还有利于保证网络的安全保密性,因为静态路由为手工配置,因此不存在因路由器之间交换各自的路由表而导致路由信息被截获和分析,从而泄漏网络的拓扑结构和网络地址等信息的问题。
(2)动态路由选择算法。
动态路由选择算法也叫做自适应路由选择,其路由信息是通过相互连接的路由器彼此之间交换路由信息,然后按照一定的算法计算并优化而得出的,同时为适应不断变化的网络,还需要在一定时间间隙对这些路由信息不断更新,以及时获得最优的路径选择效果。其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。
4.IP路由选择与路由汇聚(重点)
在图中的网络包含接入、汇聚、核心三层,分别由接入层路由器、汇聚层路由器和核心层路由器连接。路由器与路由器之间的连接链路主要有两种,即串行线路(用S1、S2标记)和以太网线路(F0、F1、F2标记) 。核心层路由器R1通过两条串行线路S1、S2分别与汇聚层路由器R2、R3连接:路由器R2通过以太网接口与接入层路由器R4、R5连接;路由器R3通过以太网接口与接入层路由器R6、R7连接。接入层路由器R4、R5、R6、 R7又分别连接了200.200.0.0/24-200.200.3.0/24, 200.200.128.0/24~200. 200.131.0/24共8个子网。那么在该网络中,加上连接核心路由器、连接汇聚路由器的2个子网,共有12个子网。对应地就应该有12个路由条目在核心路由器R1的路由表中,如表所示。
路由汇聚示意图
在该网络中,如果使用的是静态路由表就需要在图中的7个路由器中逐条人工添加路由条目,那么总共需要输入的路由条目数为12×7=84个。可,见工作量较大,而且任一路由器或链路发生变化时, 7个路由器的路由表又要重新配置,故只能采用动态路由选择协议来自动建立和更新路由表。
核心路由器的路由表
路由 | 接口 | 路由 | 接口 |
---|---|---|---|
200. 200,.200.0/30 | S1 | 200.200.2.0/24 | S1 |
200. 200. 201.0/30 | S2 | 200.200,3.0/24 | S1 |
200. 200.100.0/28 | S1 | 200, 200. 128.0/24 | S2 |
200. 200. 101.0/28 | S2 | 200. 200. 129.0/24 | S2 |
200.200.0.0/24 | S1 | 200. 200. 130./24 | S2 |
200.200.0.0/24 | S1 | 200,.200.131.0/24 | S2 |
200. 200.200.0/30 | S1 | 200.200.2.0/24 | S1 |
200. 200. 201.0/30 | S2 | 200.200,3.0/24 | S1 |
200. 200.100.0/28 | S1 | 200, 200. 128.0/24 | S2 |
200. 200. 101.0/28 | S2 | 200. 200. 129.0/24 | S2 |
200.200.0.0/24 | S1 | 200. 200. 130./24 | S2 |
200.200.0.0/24 | S1 | 200,.200.131.0/24 | S2 |
我们观察可以发现,核心路由器的路由表的路由表项条目可以按照“最长前缀匹配”的方法,将12个路由表项条目进行一定程度的汇聚,特别是接入层所连接的8个C类网络路由条目。
首先对于200.200.0.0-200.200.3.0它们两个的前16位是完全一样的,所以其汇总路由肯定也包含"200.200.XX"字样,我们再观察它们的第3个字段:
0=00000000
1= 00000001
2= 00000010
3=00000011
可以看出来,它们具有完全相同的前6位,加上之前完全相同的前16位,共有8+8+6-22位完全相同,这些相同的位数构成了汇总地址的网络位。剩下还有32-22-10位,就是汇总后路由的主机位。在表示汇总路由的网络号时,主机位全部用0值表示。因此200.200.0.0-200.200.3.0通过路由汇聚得到的汇聚路由是200.200.0.0/22。
对于200.200.128.0-200.200.131.0,它们两个的前16位也是完全一样的,所以其汇总路由肯定也包含"200.200.X.X"字样,我们再观察它们的第3个字段:
128=10000000
129=10000001
130=10000010
131=10000011
对于这四条链路,第3个字段的前六位是完全相同的,也就是说四项的最长相同前缀为22位,因此200.200.128.0-200.200.131.0通过路由汇聚后得到的汇聚路由是200.200.128.0/22。
这样,路由表就由原来的12项路由条目精简为6项,精简之后的路由表如所示。这就是路由汇聚的整个过程。
汇聚后的核心路由器的路由表
路由 | 接口 | 路由 | 接口 |
---|---|---|---|
200. 200,.200.0/30 | S1 | 200.200.101.0/28 | S2 |
200. 200. 201.0/30 | S2 | 200.200,0.0/22 | S1 |
200. 200.100.0/28 | S1 | 200, 200. 128.0/24 | S2 |
200. 200. 200.0/30 | S1 | 200. 200. 101.0/28 | S2 |
200.200.201.0/30 | S2 | 200. 200. 0.0/22 | S1 |
200.200.100.0/28 | S1 | 200,.200.128.0/22 | S2 |
假设R1接收到一个目的地址为200.200.3.129的数据包, R1要在路由表中寻找一条最佳路径,按照路由查找步骤,将目的地址200.200.3.129与路由表中的路由条目进行匹配: 200.200.3.129/32的二进制表为11001000.11001000.00000011.10000001,与200.200.0.0/22的二进制表示11001000.11001000.00000000.00000000对比可以看出,目的地址200.200.3.129与200.200.0.0/22的地址前缀有22位完全相同,因此核心路由器R1将根据其对应的路由条目找到出口,并最终把数据包从S1口转发出去。
三、自治系统与Internet的路由选择协议
1.自治系统
Internet的路由选择只能采用分层方式进行,首先由不同的管理机构,将Internet划分为多个较小的自治系统。
自治系统(Autonomous System, AS)是一组共享相似的路由策略并在同一管理机构下运行的路由器的集合。 一个AS可以是运行单一路由协议的路由器的集合, 也可以是一些运行不同路由选择协议, 但都属于一个组织机构的路由器集合。
其主要特点是它有权决定本系统内采用什么路由策略。自治系统内部的路由选择称为域内路由选择, 自治系统之间的路由选择称为域间路由选择。
在自治系统内部的网络中采用的称为第一层区域的路由,也就是区域内路由,它由自治系统内部的路由器产生并负责内部网络的数据传输。第二层路由为Internet的主干路由,每个连入Internet的自治系统中都有负责连入主干网络的路由器,由它们负责维护自治系统间路由信息,并负责自治系统间数据传输,自治系统的内部主机访问外部主机时都需要通过本自治系统中的主干路由器。
2.路由选择协议的分类
路由选择协议(Routing Protocol)简单来说就是用来计算、维护路由信息的协议。路由选择协议一般工作在OSI参考模型的传输层或者应用层。
路由协议(Routed Protocol)又称为被路由协议,指可以被路由器在不同逻辑网段间路由的协议。路由协议通常工作在OSI参考模型的网络层。
按照工作范围的不同,路由协议可以分为IGP(Interior Gateway Protocols,内部网关协议)和EGP(Exterior Gateway Protocols,外部网关协议)两大类,如图所示。
IGP与EGP
IGP是指在同一个自治系统内部交换路由信息的路由协议。IGP的主要目的是发现和计算自治系统内部的路由信息:
- 路由信息协议(RIP) ,它是一种分布式的、基于距离向量的路由协议。·
- 开放最短路径优先协议(OSPF) ,它是一种链路状态路由协议,是目前最常用的一种内部网关协议。
- 中间系统到中间系统(IS-IS),它为一个域内两个路由器之间传送分组提供动态路由。·
- 内部网关路由协议(IGRP) ,它是一种距离向量路由协议,是Cisco公司的私有协议。
EGP用于连接不同的自治系统,并在不同自治系统之间交换路由信息。EGP的主要目的是将路由选择信息从一个自治系统传递到另一个自治系统中。
四、内部网关协议
1.RIP的基本概念
RIP (Routing information Protocol,路由信息协议)是一种分布式、基于距离向量的内部网关协议,使用“跳数”来衡量到达目标地址的路由距离。
2.RIP的原理
RIP规定,路由器每30秒向外广播一个(V,D)报文,报文信息来自本地路由表。RIP协议的(VD)报文中,以跳数计算距离: 与目标网络直接相连的路由器规定为一跳,相隔一个路由器则为两跳 依次类推。一条路径的距离为该路径(从源主机到目的主机机)上的路由器数。RIP规定,一条有限的路径长度不得超过15,超过15则意味路径为无限长,即路径不存在。
3.RIP的运行过程
(1)路由表的建立。
初始化后的路由器只包含所有与该路由器直接相连的网络路由,且(V, D)表中各路由的距离均为0。
(2)路由表信息的更新。
如图所示是路由表信息的更新过程,假设Router1与Router2是一个自治系统中相邻的两个路由器。Router2发送(V, D)报文至Router1,而后Router1按照以下规律更新路由表的信息。
如果Router1的路由表没有这一项记录, Router1在路由表中增加该项,由于要经过Router2转发,因此距离D值加1;如果Router1的路由表中的一项记录比Router2发送的一项记录距离D值减1还要大, Router1在路由表中修改该项,距离D值根据Router2提供的值加1。
路由器1起始路由表
目的网络 | 距离 | 路由 |
---|---|---|
10.0.0.0 | 0 | 直接 |
20.0.0.0 | 8 | Router2 |
30.0.0.0 | 3 | Router2 |
120.0.0.0 | 11 | Router4 |
125.0.0.0 | 4 | Router5 |
212.0.0.0 | 10 | Router6 |
220.0.0.0 | 9 | Router6 |
路由器2发送对1(V,D)报文
目的网络 | 距离 |
---|---|
10.0.0.0 | 3 |
20.0.0.0 | 4 |
30.0.0.0 | 2 |
40.0.0.0 | 7 |
120.0.0.0 | 5 |
修改后的路由器1起始路由表
目的网络 | 距离 | 路由 |
---|---|---|
10.0.0.0 | 0 | 直接 |
20.0.0.0 | 5 | Router2 |
30.0.0.0 | 3 | Router2 |
40.0.0.0 | 8 | Router2 |
120.0.0.0 | 6 | Router2 |
125.0.0.0 | 4 | Router5 |
212.0.0.0 | 10 | Router6 |
220.0.0.0 | 9 | Router6 |
路由表信息的更新过程
五、开放最短路径优先协议
1.OSPF协议概述
开放最短路径优先(Open Source Path First, DSPF)协议,也是内部网关协议的一种,主要用于在自治系统内部路由器之间传输路由信息,是基于Dijkstra提出的最短路径算法规则计算路由。
-
OSPF协议的主要特点有如下几点:OSPF协议最主要的特征就是使用分布式链路状态协议(Link StateProtocol)。
-
OSPF协议要求当链路发生变化时用洪泛法向本自治系统中所有路由器发送信息。
主要是路由器通过所有输出端口向所有相邻的路由器发送信息,而每个相邻路由器又再将此信息发往其所有的相邻路由器,最终所有在这个区域中的路由器都拥有了一个一致的网络结构信息。而RIP的每个路由器只知道到每个网段的距离和下一跳,不知道全网的拓扑结构,并且RIP仅向自己相邻的几个路由器交换路由信息。 -
OSPF发送的信息是与本路由器相邻的所有路由器的链路状态,所谓链路状态指的是本路由器相邻路由器都有哪些,以及与相邻路由器之间链路的“度量”值, OSPF的链路状态"度量”主要是指距离、费用、带宽、时延等。
2.OSPF的层次结构与区域划分
OSPF协议将自治系统划分成不同的区域。划分区域是从逻辑上将路由器划分为不同的组,每个组用一个区域号(Area ID)来标识。 划分区域的边界是路由器,而不是链路。一个网段(链路)只能属于一个区域,或者说运行OSPF路由器的每个接口必须属于某个特定的区域。区域号是0,通常被称为骨干区域或骨干路由器。 骨干区域负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。
3.OSPF协议的运行过程
(1)路由器的初始化过程。
OSPF中的每个路由器都采用一个包含数据库描述的数据包,与相邻的路由器交换自己数据库中已有的链路状态摘要信息,而不是把自己的链路状态信息对全网广播。
(2)网络运行过程。
在网络运行的过程中,只要一个路由器的链路状态发生变化,该路由器就要使用链路状态更新分组,用洪泛法向全网更新链路状态。OSPF使用的是可靠的洪泛法。 为了确保链路状态数据库与全网的数据库状态保持一致,OSPF还规定每隔一段时间,例如每30分钟要刷新一次数据库中的链路状态。
六、外部网关协议
1.BGP协议的特性
(1) BGP是一种外部网关协议,它重点关心的不是发现和计算路由,而是在AS之间传递路由信息以及控制优化路由信息(提供这些信息是为了找到较好的路由,不一定是最佳路由)。
(2) BGP是一种“路径矢量”路由协议,其路由信息中携带了所经过的全部自治系统的路径列表。
(3)为了保证BGP的可靠传输,其使用TCP来承载协议报文。 通过TCP的可靠传输机制、重传、排序等机制来保证BGP消息报文传输的可靠性。
(4) BGP支持CIDR和路由聚合,可以将一些连续的子网聚合成较大的子网(突破了标准分类地址限制),从而可以在一定程度上控制路由表的快速增长,并降低了路由查找的复杂度。
(5) BGP最重要的特性是丰富的路由属性以及强大的路由过滤和路由策略。
2.BGP的路由器角色及基本特征
(1)发言者。
发送BGP协议报文的路由器称为BGP发言者(BGP Speaker) ,它接受或产生新的路由信息,并发布给其他发言者。
(2)对等体。
相互交换BGP协议报文的BGP发言者之间互称为BGP对等体(BGPPeer)。
(3)IBGP对等体。
处于同一个AS (域)的BGP对等体称为IBGP对等体,从IBGP获得的路由不向它的IBGP对等体发布。图中RB、RD是IBGP对等体。
(4)EBGP对等体。
处于不同AS的BGP对等体称为EBGP对等体。通常情况下, EBGP对等体是物理上直连的BGP发言者,路由器从EBGP对等体获得的路由会向它所有的BGP对等体通告(包括EBGP和IBGP) 。
3.BGP协议报文
(1)打开(Open)分组: 打开分组用来与相邻的另一个BGP发言人建立关系。
(2)保活(Keepalive)分组: 保活分组用来确认打开报文,以及周期性地证实相邻边界路由器的存在。
(3)更新(Update)分组: 更新分组用来发送某一路由的信息,以及列出要撤销的多条路由。
(4)通知(Notification)分组: 通知分组的作用为发出错误通知。BGP发言者如果检测到对方发过来的消息有错误或者对方主动断开BGP连接,都会发出通知报文通知BGP邻居。
4.BGP的运行过程
当开始向相邻边界路由器进行协商时就要发送“打开分组”,如果相邻边界路由器接受,就响应一个“保活分组”。两个BGP发言人的相邻关系就建立了。为了维护这种关系,两个BGP发言人彼此要周期性地(一般是每隔30秒)交换“保活分组”。"更新分组”是BGP协议的核心, BGP发言人可以用“更新分组”撤销它以前曾经通知过的路由,也可以宣布增加新的路由。
相关文章:

【计算机三级网络技术】 第四篇 路由设计技术基础
文章目录一、分组转发二、路由选择1.理想的路由算法的基本特征2.路由算法的度量标准3.路由算法分类:4.IP路由选择与路由汇聚(重点)三、自治系统与Internet的路由选择协议1.自治系统2.路由选择协议的分类四、内部网关协议1.RIP的基本概念2.RIP的原理3.RIP的运行过程五…...
嵌入式工程师进阶,基于AM64x开发板的IPC多核开发案例分享
前 言 本文档主要说明AM64x基于IPC的多核开发方法。默认使用AM6442进行测试演示,AM6412测试步骤与之类似。 适用开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.5.5 Linux开发环境:Ubuntu 18.04.4 64bit Linux Processor SDK:ti-proc…...

腾讯安全与锐捷网络战略合作,威胁情报能力“被集成”
2月28日,腾讯安全和锐捷网络在北京联合举办“威胁情报”战略合作发布会。双方发布了一款集成了腾讯安全威胁情报的新一代防火墙,并举办战略合作签约仪式。会上,锐捷网络安全产品事业部总经理项小升、腾讯安全总经理陈龙代表双方签署战略合作协…...

接口自动化测试用例详解
phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数。当然我们还以众筹网的登录接口为例,讲…...

【数据库增删查改进阶版】保姆级教程带大家去学习更加复杂的sql语句,各种各样的约束以及各种各样的查询
前言: 大家好,我是良辰丫🍅🍅🍅,上一篇数据库我们一起学习了基础版本的增删查改,今天我们将接触更高级的增删查改,主要是学习一些约束条件,你们准备好了嘛?开…...

【C#基础】C# 正则表达式
序号系列文章7【C#基础】C# 常用数据结构8【C#基础】C# 面向对象编程9【C# 基础】C# 异常处理操作文章目录前言1,Regex 的概念2,Regex 的创建3,Regex 常用操作4,Regex 类的使用5,学习资源推荐结语前言 🌼 h…...

企业活动直播如何设置VIP观看席?
阿酷tony / 2023-2-28 / 长沙 / 多图内容企业活动直播如何设置VIP观看席?有意思吧,直播也能设vip席位。在直播间可以分设尊享嘉宾席、特邀VIP以及观众席三个区域,为企业提供多种用户接待模式,不仅能为嘉宾营造尊享VIP体验…...

线性代数学习-2
线性代数学习-2矩阵消元消元回代消元矩阵置换矩阵逆矩阵本文转载于https://herosunly.blog.csdn.net/article/details/88713747 该文章本人认为十分有用,便自己敲一遍笔记加固印象原文链接 原文这个笔记感觉比我老师讲的更加透彻,清晰。很好的展示了线性…...
Java 类
Java类是Java编程语言中的基本概念之一,用于描述对象的属性和方法。本文将详细介绍Java类的作用、定义和使用,以及在实际工作中的应用。 什么是Java类? Java类是一种用于描述对象的模板或蓝图。它定义了一个对象的属性和方法,以…...

GO中sync 包的 RWMutex 读写互斥锁
文章目录背景RWMutex 简介代码验证多个协程请求读锁 RLock() 和 RLock()读写交错 RLock() 和 Lock()写入的时候读取读取的时候写入请求多个写Lock() 和 Lock()背景 Mutex 互斥锁是严格锁定读和写,如果我们需要单独对读或者写添加锁需要使用 sync包的RWMutex 针对读…...

糖化学试剂55520-67-7,5-vinyl-2-deoxyuridine,5-乙烯基-2-脱氧尿苷特点分析说明
5-vinyl-2-deoxyuridine(5-VdU),5-vinyl-2-deoxyuridine,5-Vinyldeoxyuridine5-乙烯基-2-脱氧尿苷 | CAS:55520-67-7 | 纯度:95%试剂信息:CAS:55520-67-7所属类别:糖化学分子量:C11H…...

五年携手共话,FISCO BCOS为数实相生注入新动能
2月24日,作为深圳国际金融科技节系列活动之一,由深圳市地方金融监督管理局指导,微众银行、金链盟主办的“2022产业区块链年度峰会暨FISCO BCOS五周年生态大会”(下称“大会”)在深圳顺利召开。本次大会以“数实相生&am…...
特征可视化技术t-SNE
特征可视化技术t-SNE 一、理论介绍 想要了解t-SNE的数学原理可以参考t-SNE完整笔记 关于t-SNE的使用过程中有以下几点需要注意: t-SNE算法并不是每次都能产生相似结果。 t-SNE算法使得距离的概念适应于数据集中的区域密度变化。因此,它自然而然地扩大…...

.NET 导入导出Project(mpp)以及发布后遇到的Com组件问题
最近公司项目有一个对Project导入导出的操作,现在市面上能同时对Project进行导入导出的除了微软自带的Microsoft.Office.Interop.MSProject,还有就是Aspose.Tasks for .NET。但因为后者是收费软件且破解版的现阶段只到18.11,只支持.net Frame…...
centos 8安装配置 yum/dnf镜像源 以及 docker相关操作
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 Docker组成部分: 镜…...

java基础之线程池
线程池1.线程池1.1 线程状态介绍1.2 线程池-基本原理1.3 线程池-Executors默认线程池1.4 线程池-Executors创建指定上限的线程池1.5 线程池-ThreadPoolExecutor1.6 线程池-参数详解1.7 线程池-非默认任务拒绝策略2. 原子性2.1 volatile-问题2.2 volatile解决2.3 synchronized解…...

Substrate 基础 -- 教程(Tutorials)
官网 github DOC 面向未来的区块链框架 Substrate 使开发人员能够快速、轻松地构建适合任何用例的未来 证明区块链(future proof blockchains)。 Substrate 文档包括区块链构建器(blockchain builders)和parachain 项目团队的概念、过程和参考信息。…...

一个线程两次调用start()方法会出现什么情况?
第17讲 | 一个线程两次调用start()方法会出现什么情况? 今天我们来深入聊聊线程,相信大家对于线程这个概念都不陌生,它是 Java 并发的基础元素,理解、操纵、诊断线程是 Java 工程师的必修课,但是你真的掌握线程了吗&am…...
看完再拿五分,软考高项时政提分必备
时事政治题作为软考信息系统项目管理师当中的必考题,每年都让不少考生头疼,主要吧,它一不在教材里,二考的又很随意,如果不是平时积累,专门注意去看,有时候很难答得对,弄得这几分就完…...

界面开发(1) --- PyQt5环境配置
PyQt5环境配置 第一步:首先安装社区版Pycharm 下载地址:https://www.jetbrains.com/pycharm/download/#sectionwindows 第二步:安装Anaconda3,配置虚拟环境 下载地址:https://www.anaconda.com/ 第三步࿱…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...

在 Visual Studio Code 中使用驭码 CodeRider 提升开发效率:以冒泡排序为例
目录 前言1 插件安装与配置1.1 安装驭码 CodeRider1.2 初始配置建议 2 示例代码:冒泡排序3 驭码 CodeRider 功能详解3.1 功能概览3.2 代码解释功能3.3 自动注释生成3.4 逻辑修改功能3.5 单元测试自动生成3.6 代码优化建议 4 驭码的实际应用建议5 常见问题与解决建议…...

Vue3 PC端 UI组件库我更推荐Naive UI
一、Vue3生态现状与UI库选择的重要性 随着Vue3的稳定发布和Composition API的广泛采用,前端开发者面临着UI组件库的重新选择。一个好的UI库不仅能提升开发效率,还能确保项目的长期可维护性。本文将对比三大主流Vue3 UI库(Naive UI、Element …...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...