3网络互联-3.5【实验】【计算机网络】

news2025/1/4 19:22:14

3网络互联-3.5【实验】【计算机网络】

  • 前言
  • 推荐
  • 3网络互联
    • 3.4 IP分组转发与静态路由
    • 3.5 动态路由配置及RIP协议分析
      • 实验目的
      • 实验内容及实验环境
      • 实验原理
        • 1. RIP协议
        • 2.RIP分组格式
        • 3.RIP协议工作原理
      • 实验过程
        • 1.搭建一个多跳网络拓扑,配置RIP协议参数
        • 2.观察并分析RIPv1和 RIPv2分组格式
        • 3.在模拟模式观察RIP协议拓扑发现和计算路由的过程
      • 实验过程演示
        • 1.搭建一个多跳网络拓扑,配置RIP协议参数
        • 2.观察并分析RIPv1和 RIPv2分组格式
        • 3.在模拟模式观察RIP协议拓扑发现和计算路由的过程
      • 3.5.1实验章节测验
        • 一.单选题(共6题,75.0分)
        • 二.多选题(共2题,25.0分)
  • 最后

前言

2023-5-18 15:54:56

以下内容源自《【实验】【计算机网络】》
仅供学习交流使用

推荐

3网络互联

3.4 IP分组转发与静态路由

3网络互联-3.4【实验】【计算机网络】

3.5 动态路由配置及RIP协议分析

实验目的

1.理解RIP协议的工作原理,掌握RIP协议的配置方法;
2.观察并理解RIP协议分组格式;
3.观察并理解RIP协议路径发现和推导路由的过程。

实验内容及实验环境

1.搭建一个多跳网络拓扑,配置RIP协议参数;
2.观察并分析RIPv1和RIPv2分组格式;
3.在模拟模式观察RIP协议拓扑发现和计算路由的过程。

实验原理

通过理论课程的学习可以知道,互联网为了使核心层路由的路由表快速适配网络拓扑的变化,开发了很多的算法,并且采用分布式层次化的路由管理策略。互联网通过自治系统间的bgp协议在最高层次的进行规划。各个自治系统内部可以根据其路径代价的特殊要求,选择不同的内部网关协议,实施其路由策略。不同的内部网关协议对共享路由信息路径代价度量以及计算收敛的方法各有不同。大致方向上有基于距离矢量的和基于链路状态两类。

下面我们介绍RIP协议的概念。

1. RIP协议

RIP ( Routing Information Protocol)是以距离矢量为路径代价度量的动态路由协议

使用跳数衡量到达目的网络的距离

  • RIP认为一个好的路由就是它通过的路由器的数目少,即“距离最短
  • RIP将直连网络距离定义为0,距离16表示网络不可达,即一条路径最多只能包含15个路由器

RIP协议的基本原则:简单

  • 仅和邻居路由器(共享相同的数据链路的路由器)交换信息
  • 路由器间交换的内容是自己的路由表
  • 周期性更新: 30s
  • 路径计算使用Bellman-Ford算法

2.RIP分组格式

协议封装

应用层, UDP , port520

下图为RIP分组格式:
在这里插入图片描述

版本演进

  • RIPv1 ( RFC1058):使用分类的IPv4地址,以广播的形式发送报文,不支持VLSM和CIDR,不支持认证
  • RIPv2 (RFC2453):使用CIDR的IPv4地址,支持VLSM和路由聚合,以广播或组播(224.0.0.9)方式发送报文,支持明文认证和MD5密文认证
  • RlPng (RFC 2080):使用IPv6地址,组播通信,支持认证

3.RIP协议工作原理

初始化:直连路由推导

和静态路由一样,RIP首先使用接口配置参数推导直连路由。但是为了应用距离矢量算法进行一定推导,在路由表中还需要相应的路径矢量信息来描述路径的度量。所以启用了rip协议的路由表。
我们会看到你静态路由表多了一列表示距离的信息,那么按照这种方式,路由器RTA的初始路由就是10.1.1.0和10.1.2.0分别位于RTA的端口2和端口1。在这个图中只是为了适应我们并没有给出具体的参数,所以没有具体的接口名称,他的下一条就没有明确给出。而在rip协议中,直连网络的距离为零同样道理,而RTB它的初始路由表就是10.1.2.0的直连路由和10.1.3的值。 RTC就是10.1.3的直连路由和10.1点4.0的直连路由。
在这里插入图片描述

间接交付路由推导: Bellman-Ford

step1:修改接收到的路径信息:将下一跳改为发送路径信息的邻居,距离加“1”

step2:用修改后的路径信息更新自己的路由表

  • 新路径(目标网络不在自己的路由表中)则添加
  • 相同路径(目标网络和下一跳邻居都相同)的新消息则更新
  • 不同路径(目标网络相同,但下一跳邻居不同)选最优(最短路径)

RIP协议通过邻居路由器间交换路由表来推导间接交付路由。所谓邻居路由器,就是指直接相连在同一电路上的两个路由器;这两个路由器共享一条链路,在链路上,这两个路由器之间不再有其他的路由器。而是间接交付路由使用的推导方法是Bellman-Ford算法。该算法的基本思想就是以自己到达邻居的距离和邻居路由器到达目标网络的距离来推算自己到达目标网络的距离。

在Bellman-Ford算法的控制下,当一个路由器收到来自于邻居的RIP消息:

  • 首先要把这些消息中的路径信息进行修改,把这些路径信息的下一跳改为发送这个路径信息的邻居路由器的端口IP地址。然后把这些消息中的所有路径的距离加1;
  • 然后,用修改后的这些路径信息来更新自己的路由表。对比收到消息中的每一条路径,在自己的路由表中进行查找替换。查找的结果有三种:
    • 第一种。当收到消息的路径信息的目标网不在当前路由器的路由表中则称这种消息为新路径,直接添加在当前路由器的路由表中。
    • 而如果收到消息的目标网络存在于当前路由器的路由表中,那么就看收到这条消息的当前这个网络的下一条消息和查找到的这个路径和下一条。邻居是否相同:
      • 新消息和当前路由表中的条目都一样,则把这条消息称为相同路径的新消息,那么就用收到的新消息路径的信息来更新当前路由表中的这个条目。
      • 而如果收到的路由表中的某一个路径条目中的目标网络存在于当前路由表中,但是收到的这个消息的这个目标网络的下一跳和当前路由表中查到这个网络的下一跳不相同,那么我们把这条消息称为这个网络的不同路径消息。当存在不同路径的时候,Bellman-Ford算法。就会在这两条消息中选择一个最优的路径,即距离最短的路径。

在RIP协议中不允许到达同一目标网络存在两个代价相同的路径,也就是说,到达目标网络只能存在一条路径。那有时候我们会遇到就是收到的消息的。不同路径的消息的路径代价和当前路由表的路径代价是相同的。这个在rip协议里面没有做规定,由这个程序员自己来设计。但是呢,不允许两条路径同时存在。


那下面,我们就基于刚才我们推导出初始路由的这个网络中的三个路由器。然后呢,使用Bellman-Ford算法来看一下这个目标的更新过程。
在这里插入图片描述

假定RTB首先发送这个RIP消息,那么当RTB发送这个消息之后。那么假定他先给RTA发送这个消息。当RTA收到RTB发来的RIP消息,首先把这个消息中的下一跳,修改为收到这个消息的端口地址10.1.1.2,然后把原来的RIPB的这个所有的距离离加1。那么这就是收到的这个新消息。然后用这个新消息来更新RTA当前自己的路由表。那么首先第一个目标网络10.1.2.0用这个目标网络在RTA的路由表查表,可以查找一个目的网络。那么这个目的网络,它的下一跳和当前路由表的下一跳是不同的。当前路由表的下一跳是直接连接的端口,而收到消息的下一跳是这个消息的发送端口10.1.2.2。那么这时候呢,像刚才算法中我们就把它定义为不同路径,当不同路径的时候我们就要选最优路径。那么在RTA的原始用表中的这条路径的距离为0,而收到消息的距离为1。所以这时候RTA的路口选择10.1.2.0这种网络的路径维持原路径点。然后下面有收到消息的下一条路径,就是10.1.3.0网络的路径。查表,那么我们会发现RTA中没有10.1.3.0,所以10.1.3.0这条的路径,对RTA来说就是一条新消息,因此把它添加在RTA的路由表中,那么这就完成了RTA上的RIP更新。

在这里插入图片描述

同样道理,对于RTB,因为这个消息是同时向两个端口来发送的。这个消息,也会到达RTC,只不过和RTA收到的消息处理方式不一样。R TC会把下一跳改成收到这个消息的邻居RPB的这个端口,而RTB发送给RTC的这个消息,它的端口是10.1.3.1。所以这时候呢,在RTC收到RTB的路由表之后,发消息下一跳,都改成10.1.3.1,同时把距离变成距离1,同样的道理和RTA一样,然后用这些条目去查RTC的路由表,那可以发现10.1.2.0不在RTC的路由表。这是一条新路径,因此添加在RTC的路由表中,而10.1.3.0这个网络存在于RPC原先的这个路由表中,那么它的下一跳不同,所以是不同路径。不同路径保留最小的最优路径。而RTC原来的到达10.1.3.0是直达的,距离为零,因此维持不变。

在这里插入图片描述
RTA和RTC收到RTB的消息。更新完路由表了之后,紧接着他们的30秒了也到了。这时候,RTA和RTC会分别各自向RPB发送自己的这个rip消息。

那么当RTA的rip消息到达RTB之后,那么RTA更新后的路由表就到达了RTB。同样,RTB会把收到的这个rip消息中的下一跳更新为收到这个消息的端口,因为这个消息是RTA发过来的,所以它的端口就是10.1.2.1。同时,把收到的RTA的路由表的距离加1;RTA中原来的路由表的距离三个网络10.1.1.0、10.1.2.0、10.1.3.0的距离分别是0、0、1,那么RTB就会把它修正为1、1、2,然后把收到消息的这个路由表和RTB当前的条目进行合并。那么第一个网络路径信息10.1.1.0,通过在RTB中查表,没有在路由表后,因此添加到RTB的路由表中。然后,10.1.2.0这个目标网络存在于RTB中,这时候就会看下一跳,那么这两个下一跳不一样,所以对RTB来说,这就是一个不同路径;不同路径选最优。那么收到消息的距离为1,而原来的消息距离为0,所以10.1.2.0这个网络的信息不变,然后10.1.3.0一样道理也不变,因为原来的RTB到达这两个都是直连的,肯定会比转发的这两个距离要优。

在这里插入图片描述

那么紧接着RTC也会把自己的路由表以rip消息的形式发送给RTB,那么RTB拿到RTC的消息同样也是会把下一跳修改。那么这时候呢,他修改的下一条就和RTA刚才修改不一样,因为这条消息是RTC发过来RTC通过他的端口2发过来的,所以RTC的端口2的IP地址将会更新这个消息的下一条10.1.3.2,然后把RTC填写表的距离都加1,这时候距离变成1、1、2,同样的道理,我们使用这三个路径条目,然后去查RTB的路由表进行更新。同样道理,10.1.3.0存在于RTB的路由表中,而且他也没有RTB的10.1.3.0原来的路径优,所以不发生改变。 10.1.4.5不在RTB的路径中,因此这时候10.1点4.0对于RTB来说就是一个新路径,把它添加到RTB的路由表中,而10.1.2.0它的距离为2,那么原来RTB的10.1.2.0的距离是0,而且他们的下一跳不同,不同的路径取最优,所以RTB的10.1.2.0的这个路径不发生改变。

在这里插入图片描述

那么这个过程就完成了各自的路由器的这样一个往复过程。大家可以看,通过路由器的这样一个迭代,那么最终RTB更新以后的路由表在下一轮的迭代中就会分别交给RTA和RTC。这时候呢,RTA就可以通过RTB学到RTC所连接的10.1.4.0的这个网络。RTC就可以通过RTB学到RTA发来的10.1.1.0的网络。这些路由器就会紧接着每隔三十秒钟固定发自己的路由表。而当网络链路状态发生改变,又没有新的网络加入的时候,那么这些路由表就不会发生新的改变。

通过刚才的过程,我们可以看出来再有新的路径传过来,是不是比自己本有的路由表的这个路径的代价都要高那么这时候我们就称RIP协议,这个路由表的这个算法就收敛了,达到稳态。那么RIP协议不好的一点是,即使到达稳态,每个路由器也会每隔三十秒钟向邻居发送自己的路由表,这时候会对网络造成很大的负担和开销。

在这里插入图片描述

定时器:

  • 周期更新定时器:用于触发路由表更新的RIP消息发送,周期为30s
  • 超时定时器:用于保活路径条目,周期为180s 。
  • 清除定时器:用于判定是否清除一条路径条目,时长为120s
  • 延迟定时器:为避免网络初始化引起的所有路由器同时触发更新导致广播风暴而设置,时长随机1~5s间。

RIP协议使用四个定时器控制路径消息的更新。

周期更新定时器用于触发路由表更新的rip消息发送,周期为三十秒钟。启用了rip协议的路由器,在该定时器的控制下,每隔三十秒钟向所有的活动端口发送rip消息。rip消息的内容就是路由器当前的路由表中的所有条目。

超时定时器用于保活路径条目,周期为180秒。在路由器中,当路由器中的某个条目是由rip消息学习而来,那么就会在该定时器的控制下检测当前的这个路由条目是否可用的有效性。如果rip的路径超过180秒钟还没有被更新。那么这时候呢,这个条目就会变为非活动条目,而非活动条目,不会直接从路由表中删除。

还要有一个清除定时器来控制,当处于非活动状态下,超过120秒钟还没有被更新。这时候就可以把这条路径清除掉。

此外,RIP协议还有一个延迟定时器。该定时器是为避免网络初始化所引起的所有路由器同时触发更新而导致的广播风暴而设置。这样就可以使得自制系统中的所有瑞普路由器可以在一到五秒之间错开进行路径消息的更新。


RIP的路由环路问题

RIP协议的三十秒钟定期更新可以及时发现路径状态的改变。

但是,仅使用路由表作为路径消息描述并不能使路由器推导出网络的全局拓扑。也就是说,rip路由器仅知道某个网络的可达性以及路径的距离长度,但是并不知道路径上除下一跳之外的其他节点的信息。这样不完整的网络描述会导致坏路径的消息循环。

例如,当RTC所连接的10.1.4.0网络发生故障,而RTC感知到该故障,并将网络设置为不可达,也就是说,把距离设置为16。

在这里插入图片描述

此时如果RTC先于RTA和RTB。触发更新,那么这样的网络故障状态就会经由RTB扩散给RTA。此时网络上的三个路由器就都知道10.1.4.0网络不可达了。

在这里插入图片描述

但是如果RTC没有来得及将这个网络的故障信息扩散出去。而此时就收到了RTB发送过来的rip消息。那么这时候rip发来的消息中包含有10.1点4.0的信息,这时候就会产生一个误解,认为自己不能到达10.1.4.0,而经由邻居RTB可以到达10.1点4.0。这时候就会用RTB发来的消息中的关于10.1.4.0的这样一个路径消息来更新自己的路由表。对RTC来说,RTB发来的10.1.4.0和自己路由表的10.1.4.0是同一个目标网络。但是自己的下一跳和RTB的下一跳是不同的,就是不同路径。那么对于不同的路径,根据Bellman-Ford算法比较距离,RTC的距离为16,而RTB发过来的距离为1,经过RTC更新之后的距离就是,2,那么这时候,距离2就可以说最优距离,因此RPC就会用RTB的这条消息来更新10.1.14.0的网络状态,从而把不可达变成经由RGB可以到达10.1.4.0,然后跳数是2。

在这里插入图片描述
随后RTC的更新时间到,又会将10.1.4.0的新状态以新消息的形式去影响RTB的路由表更新,使其距离变为3。下一步,RTB又会影响RTA和RTC,使其到达10.1.4.0的网络距离更新为4。

在这里插入图片描述

但是RTA不会对RGB中的10.1.4.0网络路径产生新的影响,因为它的路径信息没有RTB中的原有的路径信息优。

在这里插入图片描述

但是随后RTC返回来的消息又会影响RTB中的10.1.4.0的网络的状态。使其将距离更新为5。如此往复循环下去,直到到达这个距离字段溢出。 10.1.4.0的错误网络信息形成循环叠加,直至距离字段的最大值。
在这里插入图片描述

RIP的路由环路问题解决方案

  • 设置hops计数上限(16跳),带来规模扩展问题
  • 水平分割, IGRP的层次路由2级256跳
  • 毒性逆转

RIP的痛点

  • ·收敛速度慢
  • 报文量大
  • 占用较多网络开销

为了解决RIP的路由循环,在rip协议中,定义了最大距离。

在ripv1和ripv2版本里面,把这个最大距离都定义为16,就是为了防止往复循环所造成的距离不断的溢出问题,以及网络故障状态中收敛的时间过长。这样的设计弊端就是限制了rip网络的规模。也就是说,使用rip管理的网络最长距离,不能超过16跳,这也就是RIP协议一般不会应用于大规模网络的原因,而在后期的IGRP协议里面,思科通过引入水平分割来应对规模扩展的问题。通过在自治系统内部划分区域,可以用两级紫色。 IGRP的距离向量和管理的网络的规模达到256跳。但是对于这个坏消息的往复循环的问题没有办法解决。因此在后期的协议里面又通过毒性逆转的方法,也就是说让路由器不要将从邻居获得的路径消息返回给邻居,从而来避免坏消息的往复循环的问题。

RIP协议虽然简单并行开销小,但是存在收敛速度慢定时更新和全路由表发送带来的稳定,使得大量无效消息传送,导致较多的网络资源浪费。所以在后期的IGRP、OSPF等协议中对路径代价的度量和更新方式也进行了大幅度的改进,当然也支持算法更加复杂,所以路由器的性能要求也就更高。


2023-5-18 16:06:51

实验过程

1.搭建一个多跳网络拓扑,配置RIP协议参数

在这里插入图片描述

2.观察并分析RIPv1和 RIPv2分组格式

在这里插入图片描述

3.在模拟模式观察RIP协议拓扑发现和计算路由的过程

在这里插入图片描述

2023-5-18 20:16:31

实验过程演示

2023-5-18 20:17:45

1.搭建一个多跳网络拓扑,配置RIP协议参数

搭建网络拓扑并给各个接口配置了IP参数

在这里插入图片描述

查看路由表

在这里插入图片描述

虽然,我们没有配置路由协议,但是我们依然可以看到直连路由信息。

下面,我们来配置RIP路由协议

为了避免自动绘制影响后面实验的结果
在CLI选项卡中
输入enable
输入configure terminal
输入route rip
输入no auto-summary

在这里插入图片描述

可以通过可视化界面配置

配置Route0

在这里插入图片描述

可以用命令行配置

配置Route1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置Route2

在这里插入图片描述

在这里插入图片描述

查看路由表
在这里插入图片描述

2.观察并分析RIPv1和 RIPv2分组格式

对各个路由器进行保存配置并重新启动

在这里插入图片描述

点击重新加电

在这里插入图片描述

这时候,路由器处于半启动状态,路由表中暂无信息

在这里插入图片描述

开始仿真

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

把Route1的版本改为V2

在这里插入图片描述

这时候,Route1不接受Route0的报文

因为版本不匹配

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

接受RIPv2
在这里插入图片描述

发出RIPv1

在这里插入图片描述

3.在模拟模式观察RIP协议拓扑发现和计算路由的过程

为了防止前面配置的协议影响实验过程

我们重新创做实验1

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

因为Route1没有启用RIP协议

在这里插入图片描述

在这里插入图片描述

Route2也是不响应

在这里插入图片描述

在这里插入图片描述

Route0更新的RIP发到Route1
在这里插入图片描述

Route2没有配置RIP协议
在这里插入图片描述

Route2配置RIP协议

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2023-5-18 22:28:54

3.5.1实验章节测验

一.单选题(共6题,75.0分)

1【单选题】直接封装RIP、OSPF、BGP报文的协议分别是 ( )
A、TCP、UDP、IP
B、TCP、IP、UDP
C、UDP、TCP、IP
D、UDP、IP、TCP

我的答案:D得分: 12.5分

2【单选题】直连路由、静态路由、rip、 ospf按照默认路由优先级从高到低的排序正确的是( )
A、直连路由、静态路由、rip、 ospf
B、直连路由、静态路由、ospf、 rip
C、直连路由、ospf、 rip、 静态路由
D、直连路由、rip、 静态路由、ospf

我的答案:B得分: 12.5分

3【单选题】在rip 中metric等于( )为不可达。
A、8
B、9
C、15
D、16

我的答案:D得分: 12.5分

4【单选题】RIP 是在( )之 上的一种路由协议。

A、Ethernet
B、IP
C、TCP
D、UDP

我的答案:D得分: 12.5分

5【单选题】以下协议中,属于IGP的是( )
A、OSPF、EGP、RIP
B、IS-IS、 RIP-2、EIGRP、OSPF
C、BGP、IGRP、 RIP
D、PPP、 RIP、 OSPF、IGRP

我的答案:B得分: 12.5分

6【单选题】一个RIP响应报文中最多可以包含多少个路由项的信息? ( )
A、1个
B、15个
C、25个
D、35个

我的答案:C得分: 12.5分

二.多选题(共2题,25.0分)

1【多选题】有关RIP下列描述中正确的是? ( )
A、RIP协议是 一种静态路由协议
B、RIP协议是种EGP ( Exterior Gateway Protocol)
C、RIP协议是种IGP ( Interior Gateway Protocol)
D、RIP协议是一 种基于DV (Distance Vector) 算法的路由协议

我的答案:CD得分: 12.5分

2【多选题】与RIP-1 相比,以下哪些选项是RIP-2的优势? ( )
A、RIP-2 可以使用组播方式发送RIP消息
B、RIP-2 支持认证功能
C、IP2 不仅可以将跳数作为路由开销的定义,还可以将带宽作为路由开销的定义
D、RIP-2 支持无类路由

我的答案:ABD得分: 12.5分

最后

2023-5-18 22:35:25

你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。

祝大家逢考必过
点赞收藏关注哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/542081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ONE·C++ || 哈希(一)】

总言 主要介绍哈希基本框架及其unordered系列容器简述。 文章目录 总言0、思维导图1、unordered系列介绍2、底层:哈希2.1、哈希概念介绍:哈希(散列)函数和哈希表(散列表)2.2、映射关系建立与问题说明:除留余数法、哈希冲突2.3、闭散列及其实…

企业邮箱解析:为何它是企业必备的高效沟通工具?

企业家都知道,一个一致的品牌可以提高它在人们心中的可靠性。这就是为什么大多数企业投资于他们的网络和企业邮箱提供商的原因,可以体现品牌正规性。 企业邮箱为您提供与您的域名匹配的企业电子邮件(nameyourbusiness.com)。它还为您提供: 1、…

【HelloWorld篇】深入学习Spring-Boot

前言 该专栏用来记录一下深入学习SpringBoot,了解SpringBoot如何扩展、如何自定义编写属于自己的start,了解 AOP,IOC,过滤器,拦截器,注解,定时器等实际开发用到的场景以及如何整合第三方&#…

Vivado综合属性系列之六 MAX_FANOUT

目录 一、前言 二、MAX_FANOUT ​ ​2.1 工程代码 ​ ​2.2 工程结果 ​ 一、前言 ​ ​在时序违例的工程中,有一个很常见的原因:高扇出,此时就需要降低信号的扇出,可通过属性MAX_FANOUT来控制信号的扇出值&#xff…

32.Git分布式版本控制

目录 一、Git分布式版本控制。 (1)Git简介。 (2)Git工作流程图。 (3)Git安装。 (4)Git基本配置。 (4.1)用户信息配置(不一定是真实的信息&a…

RK3568平台开发系列讲解(项目篇)手写数字识别

🚀返回专栏总目录 文章目录 一、安装飞桨(PaddlePaddle)二、手写数字识别任务2.1、准备训练集和测试集2.2、模型组网2.3、模型训练与评估2.4、模型保存和导出ONNX模型2.5、完整程序2.6、模拟推理和导出RKNN模型三、板端部署推理3.1、安装RKNN Toolkit Lite2和相关库3.2、推…

从零开始学习JVM(五)-运行时数据区的方法区

1. 方法区基本介绍 官方文档:The Java Virtual Machine Specification 《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言&…

手写简易RPC框架

目录 简介 服务提供者 服务注册:注册中心 HttpServerHandler处理远程调用请求 consumer服务消费端 简介 RPC(Remote Procedure Call)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务, 而不需要了解…

我在VScode学Java(Java二维数组)

我的个人博客主页:如果\真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:(我在Vscode学Java) 接上回Java一维数组的介绍(我在VScode学Java(Java一维数组) ) 二维数组是Java中的一…

MySQL:数据库的约束

目录 1.数据库约束 1.1 非空:not null 1.2 唯一:unique ​​​​​​​ 1.3 默认值:default 1.4 列描述:comment 1.5 主键约束:primary key 1.6 外键约束 1.7 综合案例 2.插入查询结果 3.聚合函数 4.group by…

AI心理咨询师:舒缓焦虑,解放压力的秘诀

在如今高压力的生活和工作环境下,焦虑和内耗成为了越来越多人的问题。这一现象对我们的身体和心理都会造成很大的影响。如何治愈我们的焦虑和精神内耗? 1.减少工作压力 - 了解和认可自己的能力和限制,不要让工作压力压垮自己。 - 适当的规…

软件测试工程师的职业发展方向

一、软件测试工程师大致有4个发展方向: 1 资深软件测试工程师 一般情况,软件测试工程师可分为测试工程师、高级测试工程师和资深测试工程师三个等级。 达到这个水平比较困难,这需要了解很多知识,例如C语言,JAVA语言&#xff0c…

浙大数据结构

题目详情:06-图1 列出连通集 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集。假设顶点从0到N−1编号。进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序访问邻接点。 输入格式: 输入第1…

<数据结构>NO5.栈和队列

目录 栈 Ⅰ.栈的概念 Ⅱ.栈的实现 Ⅲ.测试代码 队列 Ⅰ.队列的概念 Ⅱ.队列的实现 💭前言 栈和队列也是一种常见的线性存储的数据结构,只不过它们的某些操作受到了限制,比如栈只允许从栈顶插入删除元素、队列只允许从队尾插入元素&…

[算法] ArrayList 和 LinkedList 的优缺点比较及使用场景

😚一个不甘平凡的普通人,致力于为Golang社区和算法学习做出贡献,期待您的关注和认可,陪您一起学习打卡!!!😘😘😘 🤗专栏:算法学习 &am…

MySQL高级_第12章_数据库其它调优策略

MySQL高级_第12章_数据库其它调优策略 1. 数据库调优的措施 1.1 调优的目标 尽可能 节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大) 合理的结构设计和参数调整,以提高用户操作 响应的速度 。(响应速…

使用Visual Studio进行cuda编程配置环境四大坑(附解决方案)

写在前面,用于没有使用过Visual Studio进行cuda编程的同学看,以免在安装环境的时候踩到坑 第一坑:CUDA版本与NVIDIA显卡版本不匹配问题: 安装cuda版本坑,强烈建议看下自己的显卡支持什么版本的cuda,切记不要用最新版…

由浅入深Netty基础知识NIO网络编程

目录 1 非阻塞 vs 阻塞1.1 阻塞1.2 非阻塞1.3 多路复用 2 Selector2.1 创建2.2 绑定 Channel 事件2.3 监听 Channel 事件2.4 select 何时不阻塞 3 处理 accept 事件3.1 事件发生后能否不处理 4 处理 read 事件4.1 为何要 iter.remove()4.2 cancel 的作用4.3 不处理边界的问题4.…

Python 迭代器与生成器

一. 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。 (1)迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。 (2)迭代器可以记住遍历的位置的对象,并且只能…

Springboot 整合 spring security,简单实现认证和授权

一.简介 Spring Security 是 Spring 家族中的一个安全管理框架。 一般来说,常见的安全管理技术栈的组合是这样的: SSM ShiroSpring Boot/Spring Cloud Spring Security 对于一个权限管理框架而言,无论是 Shiro 还是 Spring Security&am…