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

计算机网络网络层(下)

一、互联的路由选择协议(网络层控制层面内容)

(一)有关路由选择协议的几个概念

1.理想的路由算法

(1)理想路由算法应具备的特点:算法必须正确和完整的,算法在计算上应简单,算法应能适应通信量和网络拓扑的变化,算法应具有稳定性,算法应是公平的,算法应该是最佳的。

(2)最佳路由:不存在一种绝对的最佳路由算法;所谓“最佳”只能是相对于某一特定要求下得出的较为合理的选择而已。

(3)路由算法非常复杂:需要所有节点共同协调工作;环境不断变化,而这种变化有时无法事先知道;当网络发生拥塞时,很难获得所需的路由选择信息。

(4)路由算法分类:

        静态路由选择策略:非自适应路由选择,不能及时适应网络状态的变化,简单,开销较小。

        动态路由选择策略:自适应路由选择,能较好地适应网络状态的变化,实现较为复杂,开销较大。

        互联网采用的路由选择协议主要是自适应的(动态的)、分布式路由选择协议。

2.分层次的路由选择协议

(1)把整个互联网划分为许多较小的自治系统AS,采用分层次的路由选择协议。 

        原因:互联网规模大,路由表将非常大且处理费时间;单位不愿意外界了解到本单位网络布局细节及及路由选择协议,同时希望连接到互联网。

(2)自治系统:是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

(3)分为两个层次:自治系统之间的路由选择(域间路由选择),自治系统之内的路由选择(域内路由选择)。

(4)2大类路由选择协议:

        内部网关协议IGP:在自治系统内部使用的路由选择协议,常用:RIP,OSPF。

        外部网关协议EGP:在不同自治系统之间进行路由选择时使用的协议,常用:BGP-4。

(二)内部网关协议RIP

1.协议RIP的工作原理

(1)路由信息协议(Routing Information Protocol)是一种分布式的,基于距离向量的路由选择协议;互联网的标准协;最大优点为简单;要求网络中的每个路由器都要维护从它自己到其他每一个目的网络的距离记录。

(2)RIP“距离”的定义

        路由器到直接连接的网络的距离=1;

        路由器到非直接连接的网络的距离=所经过的路由器数+1;

        RIP协议中的“距离”也被称为“跳数”,每经过一个路由器,跳数就加1。

        好路由=“距离短”的路由;

        最佳路由=“距离最短”的路由。

        一条路径最多只能包含15个路由器;“距离”的最大值为16时即相当于不可达。

        RIP不能在两个网络之间同时使用多条路由,只选择”距离最短“的路由。

(3)RIP协议的三个特点

        仅和相邻路由器交换信息。和谁交换?

        交换的信息是当前本路由器所知道的全部信息,即自己的路由表。交换什么?

        按固定的时间间隔交换路由信息。什么时候交换?

(4)路由表的建立

        路由器在刚刚开始工作时,路由表是空的;

        得到直接连接的网络的距离(定义为1);

        每一个路由器也只是和数量非常有限的路由去交换并更新路由信息。

        经过若干次更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由的地址。

        RIP协议的收敛过程比较快;”收敛“就是在自治系统中所有的结点都得到正确的路由选择信息的过程。

        路由表的主要信息:

        路由表更新规则:

        使用距离向量算法找到到达每个目的网路的最短距离;

2.距离向量算法:

        对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:

        (1) 修改 RIP 报文中的所有项目(即路由):把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。

        (2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:

            若路由表中没有目的网络N,则把该项目添加到路由表中。否则,若路由表中网络 N 的下一跳路由器为 X,则用收到的项目替换原路由表中的项目。否则,若收到项目中的距离小于路由表中的距离,则用收到项目更新原路由表中的项目。否则,什么也不做。

        (3) 若 3 分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。

        (4) 返回。

        算法基础:Bellman-Ford算法(或Ford-Fulkerson算法)

        算法要点:设 X 是结点 A 到 B 的最短路径上的一个结点。把路径 A→B 拆成两段路径 A→X 和 X→B,则每一段路径 A→X 和 X→B 也都分别是结点 A 到 X 和结点 X 到 B 的最短路径。

3.RIP2报文

组成:首部和路由 2 个部分。

路由部分:由若干个路由信息组成。每个路由信息共 20 个字节。

        地址族标识符(又称为地址类别)字段用来标志所使用的地址协议。

        路由标记填入自治系统的号码。

        后面为具体路由,指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。

        一个 RIP 报文最多可包括 25 个路由,因而 RIP 报文的最大长度是 4+20 x25=504 字节。如超过,必须再用一个 RIP 报文来传送。

        RIP2 具有简单的鉴别功能。

4.坏消息传播的慢:好消息传播得快,坏消息传播得慢(慢收敛)。当网络出现故障时,要经过比较长的时间才能将此信息(坏消息)传送到所有的路由器。

5.RIP协议的优缺点:

(1)优点:实现简单,开销较小。

(2)缺点:网络规模有限。最大距离为 15(16 表示不可达);交换的路由信息为完整路由表,开销较大。;坏消息传播得慢,收敛时间过长。

(三)内部网关协议OSPF

1.协议OSPF的基本特点

(1)开放最短路径优先 OSPF (Open Shortest Path First)是为克服 RIP 的缺点在 1989 年开发出来的;原理很简单,但实现很复杂;使用了 Dijkstra 提出的最短路径算法 SPF;采用分布式的链路状态协议 (link state protocol);现在使用 OSPFv2。

(2)OSPT协议的三个特点:

        采用洪泛法,向本自治系统中所有路由器发送信息。和谁发?

        发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息;发什么?

        链路状态:说明本路由器都和哪些路由器相邻,以及该链路的度量 (metric)。

        当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息。什么时候发?

(3)链路状态数据库:

        每个路由器最终都能建立;全网的拓扑结构图;在全网范围内是一致的(链路状态数据库的同步);每个路由器使用链路状态数据库中的数据构造自己的路由表(例如,Dijkstre最短路径路由算法)

(4)优点:链路数据库能较快地进行更新,使各个路由器能及时更新其路由表;OSPT更新过程收敛速度快。

(5)OSPF将自治系统划分为两个不同的区域:

        主干区域(标识符=0.0.0.0 用来连接其他下层区域)、其他区域

        划分区域优缺点:

        优点:减少了整个网络上的通信量、减少了需要维护的状态数量。

        缺点:交换信息的种类增多了、使OSPF协议更加复杂了。

(6)OSPF中的路由器:

        区域边界路由器ABR、主干路由器BR、自治系统边界路由器ASBR

(7)其他特点

        对于不同类型的业务可计算出不同的路由。

        可实现多路径间的负载均衡(load balancing)。

        所有在 OSPF 路由器之间交换的分组都具有鉴别的功能。

        支持可变长度的子网划分和无分类编址 CIDR。

        32 位的序号,序号越大状态就越新。全部序号空间在 600 年内不会产生重复号。

2.OSPF的五种分组类型

(1)问候分组

(2)数据库描述分组

(3)链路状态请求分组

(4)链路状态更新分组

(5)链路状态确认分组

3.OSPF工作过程

(1)确认邻战可达

        相邻路由器每隔10秒要交换一次问候分组;

        若有40秒没收到某个相邻路由器发来的问候分组,则认为该相邻路由器是不可达的。

(2)同步链路状态数据库

        同步:指不同路由器的链路状态数据库内容是一样的。

        两个同步的路由器叫做完全邻接的路由器。

        不是完全邻接的路由器:它们虽然是物理上相邻的,但是其链路状态数据库并没有达成一致。

(3)更新链路状态

        只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法向全网更新链路状态;为确保链路状态数据库与全网的状态保持一致,OSPF 还规定:每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。

4.OSPF优点:OSPF 链路状态只涉及相邻路由器,与整个互联网的规模并无直接关系,因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多;OSPF 没有“坏消息传播得慢”的问题,收敛数度快。

5.指定路由器DR:多点接入的局域网采用了指定的路由器 DR (designated router) 的方法,使广播的信息量大大减少。指定的路由器代表该局域网上所有的链路向连接到该网络上的各路由器发送状态信息。

(四)外部网关协议BGP

由于(1)互联网的规模太大,使得自治系统AS之间路由选择十分困难;

       (2)自治系统AS之间的路由选择必须考虑到有关策略。所以不同的自治系统AS之间不能使用内部网关协议。

BGP是不同自治系统的路由器之间的交换路由信息的协议,现在使用的是第4个版本BGP-4。

1.协议BGP的主要特点:

(1)用于自治系统AS之间的路由选择(也要运行在AS内部);

(2)只能是力求选择出一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要计算出一条最佳路由;

(3)这里所说的BGP路由,是指经过哪些自治系统AS,可以到达目的网络前缀;

(3)采用了路径向量路由选择协议。

2.BGP路由

        在一个自治系统AS中有两种不同功能的路由器即边界路由器(边界网关)和内部路由器;一个AS至少有一个边界路由器和相邻的AS的边界路由器直接相连。

(1)BGP发言者:

        对等BGP发言者(边界路由器)在AS之间交换信息;在两个边界路由器进行通信时,必须先建立TCP连接,这种TCP连接又被称为半永久性连接(双方交换完信息后仍然保持着连接状态)

(3)eBGP连接和iBGP连接:

         eBGP连接:

                在AS自治系统之间,BGP发言者在半永久性TCP连接上建立BGP会话,这种连接又称为eBGP连接;运行eBGP协议,在不同AS之间交换路由信息。

        iBGP连接:

                在AS自治系统内部,任何相互通信的两个路由器之间必须有一个逻辑连接(也使用TCP连接)。

                AS内部所有的路由器之间的通信是全连通的,这种连接常被称为iBGP连接;运用iBGP协议,在AS内部的路由器之间交换BGP路由信息;协议BGP规定,在一个AS内部所有的iBGP必须是全连通的,即使两个路由器之间没有物理连接,但是它们之间仍然有iBGP连接。

        同一个协议BGP使用的报文类型、使用的属性、使用的状态机等都完全一样,但是他们在通报前缀时采用的规则不同:在eBGP连接的对等端得知的前缀信息可以通报给一个iBGP连接的对等端,反过来也是可以的;从iBGP连接的对等端得知的前缀信息,则不能通报给另一个iBGP连接的对等端。

(3)BGP路由的一般格式

BGP路由=[前缀,BGP属性]=[前缀,AS-PATH,NEXT-HOP]

(1)前缀:通告的BGP路由终点(子网前缀),指明到哪一个子网。

(2)BGP属性:自治系统路径(AS-PATH);下一跳(NEXT-HOP)

3.三种不同的自治系统AS

(1)末梢AS:不会把来自其他AS的分组在转发到另一个AS,必须向所连接的AS付费。

(2)多归属AS:同时连接到两个或两个以上的AS,增加连接的可靠性。

(3)穿越AS:为其他的AS有偿转发分组。

(4)对等AS:经过实现协商的两个AS,彼此之间的发送或接收分组都不收费。

*在属性AS-PASH中不允许出现相同的AS号可以有效避免兜圈子

4.BGP的路由选择

(1)本地偏好值最高的路由(默认值=100):LOCAL-PREF值较高的路由优先;

(2)AS条数最小的路由;

(3)使用热土豆路由选择算法(分组在AS内的转发次数最少);

(4)路由器BGP ID数值最小的路由,具有多个接口的路由器有多个IP地址。BGP ID就使用该路由器的IP地址中数值最大的一个。

5.BGP-4的四种报文

(1)OPEN(打开):用来与相邻的另一个BGP发言者建立关系,使通信初始化。

(2)UPDATE(更新):用来通告某一路由的信息,以及列出要撤销的多条路由。

(3)KEEPALIVE(保活):用来周期性地证实邻站的连通性。

(4)NOTIFICATION(通知):用来发送检测到的差错。

6.BGP报文具有通用首部

(五)路由器的构成

        路由器是一种具有多个输入端口和输出端口的专用计算机,路由器工作在网络层,用于互连网络;是互联网中的关键设备;路由器的主要工作:转发分组,把从某个输入端口收到的分组,按照分组要去的目的地(目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。

1.路由器的结构

        整个的路由器结构可以划分为“路由选择”和“分组转发”两大部分。

(1)路由选择部分:

        涉及很多路由器;

        路由选择部分也叫做控制部分,或控制层面,其核心构件是路由选择处理机;

        路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

        根据路由选择算法,根据网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个的路由表;涉及到很多路由器;路由表一般仅包括从目的网络到下一跳(用IP地址表示)的映射。

(2)分组转发部分:

        仅涉及一个路由器;

        分组转发部分也叫做数据层面;

        根据转发表将用户的IP数据报从合适的端口转发出去;仅涉及到一个路由器;转发表是从路由表得出的;转发表必须包含完成转发功能所需的信息;每一行必须包含从要到达的目的网络到输出端口和某些MAC地址信息(如下一跳的以太网地址)的映射;

        它由三部分组成:交换结构、一组输入端口和一组输出端口;

2.交换结构

        交换结构又称为交换组织,它的作用就是根据转发表对分组进行处理,将从某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构可以看成“在路由器中的网络”。

常用交换方法:通过存储器、通过总线、通过纵横交换结构。

(1)通过存储器

        当路由器的某个输入端口收到一个分组时,就用中断方式通知路由选择处理机,然后分组就从输入端口复制到存储器中;

        路由器处理机从分组首部提取到目的地址,查找路由表,再将分组复制到合适的输出端口的缓存中。

        若存储器的带宽(读或写)为每秒M个分组,那么路由器的交换速率(即分组从术后如端口传送到输出端口的速率)一定小于M/2。

(2)通过总线

        数据从输入端口通过共享的总线直接传送到合适的输出端口,而不需要路由选择处理机的干预。

        当分组到达输入端口时若发现总线忙,则被阻塞而不能通过交换结构,并在输入端口排队等待。

        因为每一个要转发的分组都要通过这一条总线,因此路由器的转发带宽就受总线速率的限制。

(3)通过纵横交换结构

        常被称为互连网络;

        它有2N条总线,控制交叉点可以使N个输入端口和N个输出端口相连接;

        当输入端口收到一个分组时,就把它发送到水平总线上;

        若通向输出端口的垂直总线空闲,则将垂直总线与水平总线接通,把该分组转发到这个输出端口。若输出端口已被占用,分组在输入端口排队等待;

        是一种无阻塞的交换结构,分组可以转发到任何一个输出端口,只要这个输出端口没有被别的分组占用。

二、IP多播

(一)IP多播的基本概念

        1.IP多播:1988年(时间点)首次提出IP多播的概念,曾被译为组播目的是更好地支持一对多通信(一对多通信:一个源点发送到许多个终点);

        在互联网上进行多播就叫做IP多播,能够运行多播协议的路由器称为多播路由器,多播路由器也能转发普通的单播IP数据报。1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE。

        2.多播可大大节约网络资源:采用单播方式向90台主机传送同样的视频节目,需要发送90个单播;而采用多播方式只需要发送一次到多播组,路由器复制分组,局域网具有硬件多播功能不需要复制分组。当多播组的主机数很大时,采用多播方式就可明显地减轻网络中各种资源的消耗。

        3.多播IP地址:在IP多播数据报的目的地址需要写入多播组的标识符,多播组的标识符就是IP地址中的D类地址(多播地址),地址范围:224.0.0.0~239.255.255.255,每一个D类地址标志一个多播组。(多播地址只能用于目的地址,不能用于源地址)

        4.多播数据报:与一般的IP数据报相比,目的地址使用D类IP地址;协议字段=2,表明使用网际组管理协议IGMP。尽最大努力交付,不保证一定能够交付多播组内的所有成员;对多播数据报不产生ICMP差错报文;在PING命令后面键入多播地址,将永远不会收到响应。

(二)在局域网上进行硬件多播

        IANA 拥有的以太网地址块的高 24 位为 00-00-5E;TCP/IP 协议使用的以太网地址块的范围是00-00-5E-00-00-00~00-00-5E-FF-FF-FF IANA 只拿出 01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF (223 个地址)作为以太网多播地址。或者说,在 48 位的多播地址中,前 25 位都固定不变,只有后 23 位可用作多播。

(三)网际管理协议IGMP和多播路由选择协议

        1.IP多播两种协议:

        (1)网际组管理协议IGMP:使多播路由器知道多播组成员信息(有无成员)。IGMP协议是让连接到本地局域网上的路由器知道本局域网上是否有主机参加或退出某个多播组,IGMP不知道IP多播组包含的成员数,也不知道这些成员分布在哪些网络。

        (2)多播路由选择协议:使多播路由器协同工作,把多播数据报最小代价传送给多播组的所有成员。

        2.网际组管理协议IGMP:IGMP协议是让连接到本地局域网上的路由器知道本局域网上是否有主机参加或退出某个多播组,IGMP不知道IP多播组包含的成员数,也不知道这些成员分布在哪些网络。

        3.多播路由器选择协议:

        多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化),因为每一台主机可以随时加入或离开一个多播组。多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,还要考虑这个多播数据报从什么地方来和要到什么地方去。 多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成员的接入网络。

三、虚拟专用网VPN和网络地址转换NAT

(一)虚拟专用网VPN

由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数;
考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网;
如果一个机构内部的计算机通信也是采用 TCP/IP 协议,那么这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。

1.本地地址与全球地址

(1)本地地址:仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。

(2)全球地址: 全球唯一的 IP 地址,必须向互联网的管理机构申请。

(3)为了区分本地地址和IP地址,RFC1918指明了一些专用地址;专用地址只能用作本地地址,不能用作全球地址。互联网中所有的路由器对目的地址是专用地址的数据一律不进行转发。

2.专用网

采用专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。

专用 IP 地址也叫做可重用地址。

3.虚拟专用网VPN

        利用公用互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN。

        专用网:指这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信。

        虚拟:表示实际上没有使用通信专线,只是在效果上和真正的专用网一样。

4.虚拟专用网的构建

        如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。

        必须为每一个场所购买专门的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。

5.用隧道技术实现虚拟专用网

 6.VPN类型

(1)内联网 (intranet):同一个机构的内部网络所构成的 VPN。

(2)外联网 (extranet):一个机构和某些外部机构共同建立的 。

(3)远程接入 VPN (remote access VPN):允许外部流动员工通过接入 VPN 建立 VPN 隧道访问公司内部网络,好像就是使用公司内部的本地网络访问一样。

(二)网络地址转换NAT

1.在专用网上使用专用地址的主机在不需要加密的情况下如何与互联网上的主机通信?采用网络地址转换NAT(目前使用最多的方法)。

2.网络地址转换NAT

(1)1994 年提出;需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫做 NAT路由器,它至少有一个有效的外部全球 IP 地址。所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。

(2)网地址转换的过程:在内部主机与外部主机通信时,在 NAT 路由器上发生了两次地址转换:离开专用网时:替换源地址,将内部地址替换为全球地址;进入专用网时:替换目的地址,将全球地址替换为内部地址。

(3)当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以同时有 n 台主机接入到互联网;可以使专用网内较多数量的主机轮流使用 NAT 路由器有限数量的全球 IP 地址。

        *通过 NAT 路由器的通信必须由专用网内的主机发起,因此,专用网内部的主机不能充当服务器用。

3.网络地址与端口号转换NAPT

        NAT 并不能节省 IP 地址;NAPT 可以使多台拥有本地地址的主机,共用一个 全球 IP 地址,同时和互联网上的不同主机进行通信;使用运输层端口号的 NAT 叫做网络地址与端口号转换 NAPT ,而不使用端口号的 NAT 就叫做传统的 NAT 。

相关文章:

计算机网络网络层(下)

一、互联的路由选择协议(网络层控制层面内容) (一)有关路由选择协议的几个概念 1.理想的路由算法 (1)理想路由算法应具备的特点:算法必须正确和完整的,算法在计算上应简单&#x…...

Visual studio 打包方法

1.扩展->搜索“”install“->下载 2.安装(安装后重新启动visual studio) 3.在已有的解决方案上右键 添加 ** 新建项目 4.在该模板下有三个文件夹 第一个文件夹(Application Folder)添加 你已有c#的releas 的程序exe 所在…...

ubuntu---100条常用命令

目录 一、文件与目录管理二、系统信息与管理三、用户与权限管理四、网络配置与管理五、软件包管理六、其他常用命令 在 Ubuntu 系统中,掌握常用命令能显著提升操作效率。以下是 100 条常用命令,涵盖文件管理、系统信息、用户权限、网络配置、软件包管理等…...

UI-TARS Desktop:用自然语言操控电脑,AI 重新定义人机交互

在人工智能技术飞速发展的今天,从文本生成到图像识别,AI 的能力边界不断被打破。而字节跳动近期开源的 UI-TARS Desktop,则将这一技术推向了更复杂的交互场景——通过自然语言直接控制计算机界面,实现了图形用户界面(GUI)的智能化自动化。这款工具不仅降低了操作门槛,更…...

Linux精确列出非法 UTF-8 字符的路径或文件名

Docker构建的时候报错:failed to solve: Internal: rpc error: code = Internal desc = grpc: error while marshaling: string field contains invalid UTF-8 1、创建一个test.sh文件 find . -print0 | while IFS= read -r -d file;...

ubuntu部署supabase

安装supabse https://supabase.com/docs/guides/local-development/cli/getting-started?queryGroupsplatform&platformlinux brew install supabase/tap/supabase supabase init supabase start需要使用brewuser进行安装: brew安装参考链接: ht…...

《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码

《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码 在编程的世界里,每个语言都有其独特的风格和最佳实践。对于 Python 而言,“Pythonic”已经成为描述遵循 Python 特定风格的代码的代名词。这种风格不仅让代码更易读、更简…...

线代第二章矩阵第八节逆矩阵、解矩阵方程

文章目录 逆矩阵定义推论可逆性质 解矩阵方程 逆矩阵 定义 设A为n阶方阵,若存在n阶方阵B,使ABBAE,那么A就是可逆阵, 只有方阵有资格讨论可逆还是不可逆 若A可逆,逆阵是唯一的 未必所有方阵都可逆!! 比方说&#…...

Java SE(12)——异常(Exception)

1.概念 在Java中,异常(Exception)是指程序在运行过程中发生的不正常情况 例如: 算数异常(ArithmeticException) 空指针异常(NullPointerException) 数组越界异常(ArrayIndexOutOfBoundsException) 根据上述的异常信息可以看出:每个具体的异…...

力扣算法---总结篇

5.13 数组总结 数组是存放在连续内存空间上的相同类型数据的集合。 数组可以方便的通过下标索引的方式获取到下标对应的数据。 正是因为数组在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,就难免要移动其他元素的地址。 数组的元素是不…...

空指针检测方法

空指针检测有以下几种常见方法: 静态代码分析 工具检测 :利用专业的静态代码分析工具,如 国产的库博静态代码检测工具(COBOT)、Checkmarx、Fortify、PVS-Studio 等,这些工具可以在不实际运行程序的情况下…...

Kubernetes Horizontal Pod Autosscaler(HPA)核心机制解析

一、HPA设计目标 弹性伸缩:根据实时负载动态调整Pod副本,平衡资源利用率与服务可用性声明式管理:通过目标指标阈值定义扩缩容规则,而非手动干预多云兼容:无缝集成云原生监控体系,支持混合云场景 二、核心…...

现代化QML组件开发教程

现代化QML组件开发教程 目录 QML基础介绍QML项目结构基本组件详解自定义组件开发状态与过渡高级主题最佳实践 QML基础介绍 什么是QML QML (Qt Meta Language) 是一种声明式语言,专为用户界面设计而创建。它是Qt框架的一部分,让开发者能够创建流畅、…...

DeepBook 与 CEX 的不同

如果你曾经使用过像币安或 Coinbase 这样的中心化交易所(CEX),你可能已经熟悉了订单簿系统 — — 这是一种撮合买卖双方进行交易的机制。而 DeepBook 是 Sui 上首个完全链上的中央限价订单簿。 那么,是什么让 DeepBook 如此独特&…...

《构建社交应用的安全结界:双框架对接审核API的底层逻辑与实践》

用户生成内容如潮水般涌来。从日常的生活分享,到激烈的观点碰撞,这些内容赋予社交应用活力,也带来管理难题。虚假信息、暴力言论、侵权内容等不良信息,如同潜藏的暗礁,威胁着社交平台的健康生态。内容审核机制&#xf…...

hashicorp vault机密管理系统的国产化替代:安当SMS凭据管理系统,量子安全赋能企业密钥管理

引言:国产化替代浪潮下的密钥管理新机遇 在数字化转型与信息安全自主可控的双重驱动下,企业级密钥管理市场正迎来前所未有的变革。传统海外解决方案如HashiCorp Vault虽功能强大,但在国产化适配、量子安全前瞻性布局等方面逐渐显现局限性。与…...

详解注意力机制

## 1. 引言 注意力机制(Attention Mechanism)是深度学习领域中的一项关键技术,最初源于人类视觉注意力的启发。在人类视觉系统中,我们能够快速识别图像中的重要区域,同时忽略不相关的部分。注意力机制将这种能力引入到…...

从 Vue3 回望 Vue2:响应式的内核革命

从 Vue3 回望 Vue2 02 | 响应式的内核革命:从 defineProperty 到 Proxy一、Vue2 的响应式系统:defineProperty 的极限边界1.1 基础实现机制1.2 Vue2 的典型痛点❌ 无法侦测新增属性❌ 无法拦截数组索引❌ 深层递归导致性能问题❌ 对象粒度低、不可统一代…...

[Java实战]Spring Boot 3构建 RESTful 风格服务(二十)

[Java实战]Spring Boot 3构建 RESTful 风格服务(二十) 一. 环境准备 openJDK 17:Spring Boot 3 要求 Java 17 及以上。Spring Boot 3.4.5:使用最新稳定版。Ehcache 3.10:支持 JSR-107 标准,兼容 Spring C…...

--openssl-legacy-provider is not allowed in NODE_OPTIONS 报错的处理方式

解决方案 Node.js 应用: 从 Node.js v17 开始,底层升级到 OpenSSL 3.0,可能导致旧代码报错(如 ERR_OSSL_EVP_UNSUPPORTED)。 通过以下命令启用旧算法支持: node --openssl-legacy-provider your_script.js…...

【MySQL】第三弹——表的CRUD进阶(一)数据库约束

文章目录 &#x1f680;数据库的约束<font color #FF0000 size3>约束类型:&#x1fa90;<font color #FF0000 size3>①.NOT NULL非空约束&#x1fa90;<font color #FF0000 size3>②.UNIQUE唯一性约束&#x1fa90;<font color #FF0000 size3>③.DEFAU…...

python通过curl访问deepseek的API调用案例

废话少说&#xff0c;开干&#xff01; API申请和充值 下面是deepeek的API网站 https://platform.deepseek.com/ 进去先注册&#xff0c;是不是手机账号密码都不重要&#xff0c;都一样&#xff0c;完事充值打米&#xff0c;主要是打米后左侧API Keys里面创建一个API Keys&am…...

哈希表:数据世界的超级索引

在数据的浩瀚宇宙中&#xff0c;哈希表就像是一座超级图书馆的索引系统&#xff0c;能够让我们瞬间找到所需的信息。作为 C 算法小白&#xff0c;今天我就带大家一起探索这座神奇的图书馆&#xff0c;揭开哈希表的神秘面纱。 什么是哈希表&#xff1f; 哈希表&#xff08;Has…...

RDMA网络通信技术、NCCL集合通讯(GPU)

在高性能计算&#xff08;HPC&#xff09;、人工智能训练和数据密集型场景中&#xff0c;RDMA&#xff08;远程直接内存访问&#xff09; 和 NCCL&#xff08;NVIDIA Collective Communications Library&#xff09;是两项关键技术&#xff0c;用于优化节点间数据传输效率和大规…...

无人机失联保护模块技术解析!

一、技术要点 1. 信号监测与状态判断 实时信号质量评估&#xff1a;通过监测信号强度&#xff08;RSSI&#xff09;、误码率、信道质量等参数&#xff0c;动态判断是否触发失联保护。 多源冗余设计&#xff1a;结合GPS、视觉定位&#xff08;如底部光学/红外传感器&#x…...

用自写的jQuery库+Ajax实现了省市联动

1. 省市联动&#xff1a;在网页上&#xff0c;选择对应的省份之后&#xff0c;动态的关联出该省份对应的市。选择对应的市之后&#xff0c;动态地关联出城市对应的区。 2. 设计数据库表 t_area &#xff08;区域表&#xff09; id(PK-自增) code name pcode ------------…...

Promise.all静态方法

由于是Promise类的静态方法 所以 使用类名.方法名() 的形式调用...

在Flutter上如何实现按钮的拖拽效果

1、使用 Draggable 和 DragTarget 配合一起使用 Draggable 定义可拖拽对象和拖动时&#xff0c;拖动对象的样子 DragTarget 定义拖拽后接收对象&#xff0c;可拿到Draggable携带的数据 import package:flutter/material.dart;class Test extends StatefulWidget {const Test({s…...

linux入门学习(介绍、常用命令、vim、shell)

文章目录 前言Linux介绍Linux内核版本Linux发行版本Linux的安装&#xff08;仅作参考&#xff09;Linux系统启动过程加载内核启动初始化进程init确定运行级别加载开机启动程序用户登录 Linux文件目录文件类型 Linux终端命令行格式查阅命令帮助信息tab键自动补全终端命令行中的常…...

archlinux中挂载macOS的硬盘

问&#xff1a; 你好&#xff0c;我如何在archlinux中挂载macOS的硬盘呢&#xff1f;/dev/sda4 5344161792 7813773311 2469611520 1.2T Apple HFS/HFS AI回答&#xff1a; 你好&#xff01;在 Arch Linux 中挂载 macOS 的 HFS 或 HFS 硬盘&#xff08;例如 /dev/sda4&#x…...

Java Web 应用安全响应头配置全解析:从单体到微服务网关的实践

背景&#xff1a;为什么安全响应头至关重要&#xff1f; 在 Web 安全领域&#xff0c;响应头&#xff08;Response Headers&#xff09;是防御 XSS、点击劫持、跨域数据泄露等攻击的第一道防线。通过合理配置响应头&#xff0c;可强制浏览器遵循安全策略&#xff0c;限制恶意行…...

Generative Diffusion Prior for Unified Image Restoration and Enhancement论文阅读

Generative Diffusion Prior for Unified Image Restoration and Enhancement 1. 论文的研究目标及实际意义1.1 研究目标1.2 实际问题与产业意义2. 论文的创新方法及公式解析2.1 核心思路2.2 关键公式与算法2.2.1 DDPM基础2.2.2 条件引导概率建模2.2.3 两种引导策略2.2.4 退化模…...

MongoDB 的主要优势和劣势是什么?适用于哪些场景?

MongoDB 的主要优势 (Advantages) 灵活的文档模型 (Flexible Document Model): 无需预定义模式 (Schemaless/Flexible Schema): 这是 MongoDB 最核心的优势之一。它存储 JSON 格式的文档&#xff0c;每个文档可以有不同的字段和结构。这使得在开发过程中修改数据结构非常容易&a…...

人脸识别备案:筑牢人脸信息 “安全墙”

人脸识别备案制度主要依据《人脸识别技术应用安全管理办法》建立&#xff0c;人脸识别技术广泛应用于安防、金融、门禁、交通等领域&#xff0c;带来便利高效的同时&#xff0c;人脸信息安全问题也引发担忧。为规范技术应用、保护个人信息权益&#xff0c;人脸识别备案制度应运…...

Excelize 开源基础库发布 2.9.1 版本更新

Excelize 是 Go 语言编写的用于操作 Office Excel 文档基础库&#xff0c;基于 ECMA-376&#xff0c;ISO/IEC 29500 国际标准。可以使用它来读取、写入由 Excel、WPS、OpenOffice 等办公软件创建的电子表格文档。支持 XLAM / XLSM / XLSX / XLTM / XLTX 等多种文档格式&#xf…...

工具类------对象与 Map 之间的相互转换

entity2Map - 将 Java 对象转换为 Mapmap2Entity - 将 Map 转换为 Java 对象 package com.toolconclusion.transition;import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map;public class E…...

BGP实验练习2

需求&#xff1a; 1.AS1存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能再任何协议中宣告 AS3存在两个环回&#xff0c;该地址不能再任何协议中宣告 AS1还有一个环回地址为10.1.1.0/24&#xff0c;AS3另一个环回地址是11.1.1.0/24 最终要求这两…...

centos7.x下,使用宝塔进行主从复制的原理和实践

操作原理&#xff1a; 一、主库配置 1.修改 MySQL 配置文件 # 编辑主库配置文件&#xff08;路径根据实际系统可能不同&#xff09; vim /etc/my.cnf # 添加以下配置 [mysqld] server-id 1 # 唯一 ID&#xff0c;主库设置为 1 log-bin mysql-bin …...

项目图标组件处理

我们如何复用项目里的图标&#xff0c;如何维护和引用图标&#xff1f; 为了形成便于使用的图标库&#xff0c;做了如下调研&#xff1a; iconfont&#xff08;webfont&#xff09;unocsssvgriconParkunplugin-icons 我们希望达到的目的 开发自行维护&#xff0c;而不是由设…...

el-tree结合checkbox实现数据回显

组件代码 <el-tree:data"vertiList"show-checkboxnode-key"id":props"defaultProps"ref"treeRefx"class"custom-tree"check-change"handleCheckChange"> </el-tree>获取选择的节点 handleCheckChan…...

虚拟机Ubuntu系统怎么扩展容量,扩展容量后进不去系统怎么办?

当我解压大文件时&#xff0c;突然报错&#xff0c;说我空间不足&#xff0c;我关闭虚拟机&#xff0c;删除了快照&#xff0c;在设置里点击扩展容量后&#xff0c;发现进不去系统了。 1.扩展容量 扩展容量需要关闭快照&#xff0c;请提前做好数据备份&#xff01; 2.进不去界…...

道通EVO MAX系列无人机-支持二次开发

道通EVO MAX系列无人机-支持二次开发 EVO Max 系列采用Autel Autonomy自主飞行技术&#xff0c;实现复杂环境下的全局路径规划、3D场景重建、自主绕障和返航&#xff1b;高精度视觉导航能力&#xff0c;使其在信号干扰强、信号遮挡、信号弱等复杂环境下&#xff0c;依然获得高精…...

解构认知边界:论万能方法的本体论批判与方法论重构——基于跨学科视阈的哲学-科学辩证

一、哲学维度的本体论批判 &#xff08;1&#xff09;理性主义的坍缩&#xff1a;从笛卡尔幻想到哥德尔陷阱 笛卡尔在《方法论》中构建的理性主义范式&#xff0c;企图通过"普遍怀疑-数学演绎"双重机制确立绝对方法体系。然而哥德尔不完备定理&#xff08;Gdel, 19…...

论文学习_Understanding the AI-powered Binary Code Similarity Detection

摘要&#xff1a;近年来&#xff0c;AI驱动的二进制代码相似性检测&#xff08;Binary Code Similarity Detection, 简称 BinSD&#xff09;已广泛应用于程序分析领域。该技术通过神经网络将复杂的二进制代码比较问题转化为代码嵌入向量之间的距离度量。然而&#xff0c;由于现…...

使用PHP对接日本股票市场数据

本文将介绍如何通过StockTV提供的API接口&#xff0c;使用PHP语言来获取并处理日本股票市场的数据。我们将以查询公司信息、查看涨跌排行榜和实时接收数据为例&#xff0c;展示具体的操作流程。 准备工作 首先&#xff0c;请确保您已经从StockTV获得了API密钥&#xff0c;并且…...

(vue)el-steps从别的页面跳转进来怎么实现和点击同样效果

(vue)el-steps从别的页面跳转进来怎么实现和点击同样效果 需求&#xff1a; 解决思路&#xff1a;监听路由&#xff0c;给active赋值对应下标 组件&#xff1a; <el-steps:active"active"finish-status"process"class"steps custom-steps":…...

什么是原码和补码

补码的本质确实是模运算&#xff08;Modular Arithmetic&#xff09;&#xff0c;这是理解补码为何能统一加减法的核心数学原理。下面用最通俗的语言和例子解释清楚&#xff1a; —### 1. 先理解什么是“模运算”- 模运算就是“周期性计数”&#xff0c;比如钟表&#xff1a; -…...

vscode 同一个工作区,不同文件夹之间跳转问题

你说的问题&#xff0c;其实和 VS Code 的「工作区」机制、c_cpp_properties.json、compile_commands.json 或 LSP 后端&#xff08;如 clangd&#xff09;的索引行为有关。 ⸻ &#x1f4cc; 你的现象总结&#xff1a; 操作方式 是否能跳转 说明 打开整个上层文件夹&#x…...

嵌入式学习--江协51单片机day5

江协每个模块的学习都是第一集讲原理&#xff0c;第二集将简单应用。如果比较着急的&#xff0c;可以不看第一集&#xff0c;只要明白怎么用就行。 今天学习DS1302时钟和蜂鸣器 DS1302 内部原理图&#xff0c;DS1302是有内部电源&#xff0c;电源的引脚名要注意 这两个原理图…...

记录算法笔记(2025.5.13)二叉树的最大深度

给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;root [1,null,2] …...