计算机网络(四)——网络层
目录
一、功能
二、IP数据报分片
三、DHCP动态主机配置协议
四、网络地址转换(NAT)技术
五、无分类编址CIDR
六、ARP地址解析协议
七、ICMP网际控制报文协议
八、IPv4和IPv6的区别
九、IPv4向IPv6的两种过渡技术——双栈协议和隧道技术
十、路由算法
1.RIP协议
2.OSPF协议
3.BGP协议
4.RIP、OSPF、BGP对比
十一、IP组播
十二、移动IP技术
十三、网络层转发设备——路由器
十四、拥塞控制与流量控制
一、功能
主要任务是选择合适的路由将分组从源端传到目的端。功能包括:路由选择、拥塞控制、异构网络互联等。当所有节点都来不及接收分组被迫丢弃大量分组时,网络就会处于拥塞状态。异构网络互联是指实现不同网络之间的通信。
二、IP数据报分片
网络层会先将传输层的报文封装成IP数据报,但由于数据链路层限制了最长帧长,所以需要将IP数据报进行分片,也就是分成一个个分组,这也是网络层的传输单位为什么是分组的原因。
在IP数据报或分组中,首部有三个和分片相关的字段:标识、标志、片偏移量。标识用来标明这个分组是哪个IP数据报的,一个数据报的所有分组的标识部分都是相同的。标志部分有两个标志位,分别是DF和MF;DF表示该分组或IP数据报是否允许分片,DF=0表示允许分片,DF=1表示禁止分片;MF表示当前分组是否是最后一个分组,MF=1表示后面还有其他分组,MF=0表示这是最后一个分组或者这个IP数据报没有进行分片。片偏移量表示该分组在原IP数据报中的相对位置。
三、DHCP动态主机配置协议
IP地址通过手动配置工作量很大,并且不灵活;当设备从一个网络进入到另一个网络时,也需要手动为其更换一个新的IP地址。这就需要让网络能够自动分配和管理IP地址,便产生了DHCP协议。
DHCP协议是应用层的协议,用于自动给本网主机或新入网的设备分配IP地址、子网掩码、默认网关、DNS服务器名称及IP地址,允许地址重用和在用地址续租。DHCP提供即插即用联网的机制,采用客户/服务器方式,双方使用广播的方式交互,是基于UDP的。
地址重用是指当设备不再使用分配的IP地址时,这个IP地址就会回收以给其他需要分配IP地址的主机使用;在用地址续租是指DHCP服务器分配的IP地址是有时限的,如果时限过后主机仍想继续使用这个IP地址,可以申请更长的使用时限。
DHCP协议减少了手动配置的工作,提高了IP地址的利用率,支持设备自动获取网络配置,提升了网络管理效率。
一台设备向DHCP服务器申请动态IP地址的步骤:
首先设备会广播DHCP发现报文,来寻找DHCP服务器。
当DHCP服务器收到发现报文时会通过广播的方式回应一个DHCP提供报文,这个报文中包含了本DHCP服务器拟给这台设备分配的IP地址及其他配置信息。
由于一个网络中可能有多个DHCP服务器,所以这台设备可能收到不止一个DHCP提供报文,那么就会根据先到先得的原则,先收到哪个DHCP服务器的提供报文就用哪个,这台设备会广播DHCP请求报文告诉那个提供报文最先到的DHCP服务器说我要使用你分配的IP地址,并告诉其他DHCP服务器说我已经选择了其他服务器。
随后这个DHCP服务器会广播DHCP确认报文,正式将IP地址及其他配置信息分配给这个设备。
四、网络地址转换(NAT)技术
在局域网内部使用的IP地址是私有IP地址,这些IP地址只能用于局域网内部的通信,不能直接访问互联网。但公有IP地址是全球唯一的,也是可以直接在互联网中通信的。私有IP地址要想访问互联网就需要用到NAT技术,将私有IP地址转换为公有IP地址。NAT:在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器称为NAT路由器,它至少有一个全球有效的公有IP地址。
五、无分类编址CIDR
CIDR消除了传统将IP地址划分为A、B、C类地址的概念,采用网络前缀+主机号的形式来表示IP地址,表示方法是:IP地址/网络前缀的位数。比如128.14.32.3/20表示前20位都是网络号,剩下的12位都是主机号。CIDR将网络前缀都相同的所有IP地址组成一个CIDR地址块(可以理解为同一个网络),由网络前缀加上一连串的0组成的IP地址就是CIDR地址块的IP地址。
CIDR有地址掩码,将网络前缀都替换为1,主机号部分都替换为0就是这个CIDR地址块对应的地址掩码。
六、ARP地址解析协议
网络层是使用IP地址进行通信的,但发送的数据需要经过数据链路层,而数据链路层是根据MAC地址来通信的,所以在进行两个不同主机之间的通信时不仅要知道对方的IP地址,也要知道对方的MAC地址。在首次通信时,双方的网络层都只知道对方的IP地址,但不知道对方的MAC地址,这就要用到ARP地址解析协议来获取对方的MAC地址。ARP协议的主要任务是实现IP地址到MAC地址的映射。
本网段内的主机进行通信时:
每台主机都有一个ARP高速缓存用于存储不同主机的IP地址与MAC地址的映射。当源主机要发送数据时,会先检查自己的ARP高速缓存中有无对方的MAC地址,如果有则可以直接发送数据;如果没有就会先广播发送ARP请求分组,包括源主机IP地址、源主机MAC地址、目的主机IP地址。由于是广播发送的,在本网段内的所有主机都会收到这个ARP请求分组,但只有目的IP地址对应的主机才会接收这个分组,其他的主机则会直接丢弃。
目的主机在接收之后先将源主机的IP地址和MAC地址的映射加入到自己的ARP高速缓存中,然后再向源主机发送ARP响应分组,包括自己的IP地址和MAC地址以及对方的IP地址和MAC地址。源主机在接收到这个ARP响应分组后就会将目的主机的IP地址和MAC地址的映射加入到自己的ARP高速缓存中,再正式开始通信。
ARP高速缓存会定期更新。
不同网段的主机进行通信时:
因为ARP请求分组只能在本局域网内广播,所以ARP高速缓存不会存储不同网络主机的IP地址和目的地址的映射关系。此时源主机会向本网络与互联网连接的路由器发送数据,由路由器转发到另一个网络的路由器,再转发至目的主机。
在首次通信时源主机只知道本网络与互联网连接的路由器的IP地址,即默认网关,所以会先广播ARP请求分组获取默认网关的MAC地址。然后向默认网关发送数据,包括源主机的IP地址和MAC地址、目的主机的IP地址、默认网关的MAC地址,数据链路层会根据MAC地址将数据传输到默认网关,然后由路由器转发到另一网络的路由器。随后另一网络的路由器广播ARP请求分组以获取目的主机的MAC地址,再将数据传输给目的主机。
七、ICMP网际控制报文协议
ICMP网际控制报文协议用于网络设备之间传递控制和状态信息,包括ICMP差错报告报文和ICMP询问报文。
ICMP差错报告报文的种类:
1.终点不可达报文:当无法找到能到达目的地址的有效路由或者防火墙阻止数据包进入目标网络时,会因数据报无法传输到目的地址而给源主机发送终点不可达报文。
2.时间超过报文:每个分组都有自己的生存时间TTL用来表示自己最多能经过多少个路由器,每经过一个路由器TTL就会减一;当TTL=0时意味着该IP数据报不能再经过路由器。如果某个路由器收到了一个TTL=0的分组就会将其丢弃,并向源主机发送时间超过报文。如果目的主机在规定时间没有收到一个完整的IP数据报,就会将收到的所有分组全部丢弃,并向源主机发送时间超过报文。
3.参数问题报文:当路由器或主机收到的分组的首部有某个字段的值不正确时,会将改分组丢弃并向源主机发送参数问题报文。
4.改变路由报文:如果有更好的路由且该路由器并不在这条路由上,该路由器就会给源主机发送改变路由报文,告诉源主机下一次发送数据时选用更好的路由,并将分组发送给这条路由上的路由器。
ICMP请求报文的种类:
1.回送请求和回答报文:主机或路由器向特定主机发送回送请求报文,收到此报文的主机必须给源主机或路由器发送回答报文。通常用于Ping工具检测目的站是否可达、网络的连通性。
2.时间戳请求与应答报文:时间戳请求报文用于请求另一主机提供当前时间,接收方用时间戳应答报文回应。通常用于网络时延测量及时间同步。
八、IPv4和IPv6的区别
1.IPv6数据报的地址字段为128位,而IPv4数据报的地址字段为32位,IPv6拥有更大的地址空间。正因为IPv6的地址空间非常大,所以IPv6不需要NAT技术,简化了网络架构。
2.IPv6数据报的首部进行了简化,比如相比于IPv4移除了校验和字段,并将IPv4的可选字段变成扩展首部放到了有效载荷部分等。路由器在存储转发时只会检验首部而不会检查有效载荷部分,减少了路由器的处理时间。
3.IPv6支持自动配置,不需要DHCP协议;而IPv4需要DHCP协议动态配置。
4.IPv6只能在主机处进行分片,而IPv4在主机和路由器内都可以进行分片。如果IPv6数据报长度过大,路由器会将其丢弃,并给源主机发送分组过大的ICMPv6差错报告报文。
5.IPv6集成了IPsec(即IP安全协议)用于保障数据机密性、完整性,而IPv4需要额外配置。
6.IPv4地址采用点分十进制表示,IPv6地址采用冒号十六进制表示。
九、IPv4向IPv6的两种过渡技术——双栈协议和隧道技术
双栈协议:即在一台设备上同时支持IPv4协议栈和IPv6协议栈,这台设备就既能够和IPv4网络通信也能够和IPv6网络通信。如果这台设备是路由器,那么这个路由器的不同端口分别配置了IPv4和IPv6地址用来分别连接IPv4网络和IPv6网络。如果这台设备是一个终端,那么它将同时拥有IPv4和IPv6地址,并同时具备处理这两种地址的能力。
隧道技术: 当IPv6数据报从IPv6网络进入到IPv4网络时,路由器会将IPv6数据报用IPv4数据报封装起来,即将IPv6数据报放入IPv4数据报的数据部分以伪装成IPv4数据报进行传输。到达下一个IPv6网络后会解封,使之变成原来的IPv6数据报。
十、路由算法
按静态/动态路由算法分类:
按内部/外部网关协议分类:
即在一个自治系统内部使用的路由算法为RIP、OSPF等,在不同自治系统之间使用的路由算法通常是BGP。 在一个自治系统AS中,所有网络被统一管理。
1.RIP协议
RIP协议是一种分布式的基于距离向量的路由选择协议,最大优点是简单。RIP协议要求每个路由器都记录从它自己到其他网络的唯一最短路由。每个路由器都有一个路由表,包括目的网络、最短距离、下一跳路由器;下一跳路由器是指最短路由上的下一个路由器。如果该路由器直接和目的网络相连,那么最短距离就是1,下一跳记为直接交付;如果和目的网络不直接相连,那么在最短路由上每经过一个路由器距离就加1。RIP协议最多只允许经过15个路由器,当距离为16时表示该网络不可达,所以RIP协议只适用于小型网络。RIP协议采用UDP
初始状态下每台路由器都只知道和它直接相连的网络的最短距离,也就是1。然后每隔30s该路由器就会和与之相邻的所有路由器交换各自的路由表中的全部信息,路由器根据这些信息来更新自己的路由表。
当收到来自相邻路由器的路由表信息时,首先会将该路由表的最短距离都+1,下一跳都改为这个相邻的路由器,再开始用经过处理的路由表与本路由表进行比较。这是因为它发送的路由表信息是目的网络相对于它的最短路由,需要转换成目的网络相对于自己的最短路由。
如果对方路由表中有关于某个目的网络的路由信息但自身没有,那么路由器会将这条信息填入到本路由表中。如果双方都有关于某个目的网络的路由信息,则先看下一跳地址。
如果在本路由表中关于该目的网络的下一跳就是这个相邻的路由器,那么无论谁的距离最短都直接将对方路由表中关于该目的网络的路由信息替换掉自己原来的记录,因为对方发来的信息是最新的,记录的是目的网络到对方最新的最短距离。如果下一跳地址不是这个相邻的路由器,那么会将原来的最短距离和对方路由表上的最短距离进行比对,选择距离更短的留下。
若经过180s后还收不到某个相邻路由器的信息就会认为该路由器出现了问题,于是会将自己路由表中下一跳是该相邻路由器的所有目的网络的最短距离都改为16,表示不可达。
在经过若干次相邻路由器的路由表交换后,每个路由器都会知道自己到本自治系统中每个网络的最短距离以及下一跳地址。
RIP协议采用UDP传送,是应用层协议。
2.OSPF协议
OSPF协议是一种分布式的链路状态协议。路由器会使用洪泛法,先向所有相邻的路由器发送信息,然后每一个相邻的路由器将这个信息备份后又再次将此信息发送给与它们相邻的所有路由器,最后自治系统内的所有路由器都会收到它发送的信息,所以OSPF形式上是发给相邻路由器,但实际上是给所有路由器发送信息。发送的信息就是该路由器与哪些路由器相邻以及它们之间链路的代价(即发送和相邻路由器的链路状态),比如所花费的费用、传播的时延、距离、带宽(最主要因素)等。只有当链路状态发生变化时路由器才会向所有路由器洪泛发送此信息。
到最后,每个路由器都能建立一个链路状态数据库,存储了一张全网拓扑图,即本路由器到网络中其他路由器的所有路由信息以及每条路由对应的代价;路由器使用Dijkstra算法根据这张全网拓扑图来构造到其他节点的最徍路由。
OSPF协议直接使用IP数据报传送。
RIP与OSPF对比:
①RIP仅和相邻路由器交换信息,而OSPF使用洪泛法向自治系统中的所有路由器发送信息。
②RIP交换的是各自的整个路由表,而OSPF交换的是本路由器到所有相邻路由器的链路状态。
③RIP是每隔30s交换一次信息,而OSPF只有当链路状态发生改变时才发送信息。
④RIP根据跳数(也就是经过的路由器个数)来寻找最短路由,而OSPF主要根据链路的带宽来寻找传输能力最强的最佳路由,也可以结合时延、距离等综合考虑,不过需要更复杂的配置。
⑤RIP存在坏消息传得慢的问题(即当某个路由器出现故障时这条信息不会及时的传给其他路由器,需要等待180s才会发现),收敛慢(当所有路由器都知道自己到本自治系统内每个网络的最短路由时称为收敛),且只适用于小型网络;OSPF不存在坏消息传得慢的问题(因为路由器出现故障会导致链路状态发生变化,在自治系统内的所有路由器都会立即进行更新),收敛快,且即支持小型网络也能应用于大型网络。
3.BGP协议
每个自治系统AS都会选出一个路由器作为本AS的BGP发言人,这个自治系统的BGP发言人会和相邻网络的BGP发言人交换信息。交换的信息是网络可达性信息,即要到达目的自治系统所要经过的自治系统序列(即到达某个自治系统的路径)。当首次交换时会交换整个路由表,下一次交换是当链路发生变化时才进行交换,且只交换发生变化的部分。因为在整个互联网中自治系统有很多,所以BGP发言人会根据交换的信息选择到目的自治系统的一条较好的路由而非最佳的路由。
两个BGP发言人在交换信息前,会先建立TCP连接,然后在此连接上交换路由信息。所以BGP协议借助TCP传送,属于应用层协议。
BGP支持无分类编址CIDR,所以BGP的路由表包括:目的自治系统的网络前缀、下一跳路由器、到达目的自治系统的路径向量。
4.RIP、OSPF、BGP对比
十一、IP组播
IP组播允许源主机向多台目的主机同时发送数据,这些目的主机同属于一个组播组,这个组播组有一个组播IP地址。在向这个组播组发送数据时,目的地址就是该组播组的组播IP地址。在使用组播进行数据传输时,会根据组播路由协议建立转发路径。也就是以源主机为根、以组内每个目的主机为叶、以需要经过的路由器为中间结点构建一个组播分发树,源主机只需发送一次数据,数据在分叉节点处(也就是遇到了链路分叉)才会进行复制和分发。这种方式避免了网络资源浪费、且提高了数据传输效率。
IP组播采用IGMP互联网组管理协议来管理一个组播组内的成员关系:
当有新的主机想加入组播组时,该主机就会向本地组播路由器发送加入报文,告知自己想加入这个组播组。当本地组播路由器收到这个报文时会将这个主机信息加入到组播表中表明有成员加入组播组,并通过组播路由协议向上游路由器通告新成员加入信息。
当有主机想退出组播组时,该主机会向本地组播路由器发送离开报文,此时本地组播路由器便停止向该主机发送数据。同时本地组播路由器还会向组内成员发送特定组查询报文以查看组内有无其他成员。如果有成员回应报告报文,路由器便认为这个组播组仍旧活跃,会继续向这个组播组传输数据;如果探询多次后都没有收到回应,路由器便认为这个组播组不存在了,会停止向这个组播组传输数据并通知上游路由器。
IP组播采用UDP传输数据,经常应用于直播、视频会议、在线视频等场景中。
十二、移动IP技术
移动IP技术用于让移动设备在不同网络间切换时仍能保持网络连接。先介绍相关概念:
移动节点:具有永久IP地址的移动设备。
永久地址(归属地址):移动结点在归属网络中的原始地址(即在最开始的网络中所分配的IP地址)。
归属代理(本地代理):在归属网络中执行移动管理功能的实体。
外部代理(外地代理):在其他网络中执行移动管理功能的实体。
转交地址:移动设备在其他网络中会被分配一个临时地址,这个临时地址就是转交地址。
当移动结点进入从归属网络进入到其他网络时, 既能通过外部代理广播发送的代理通告报文获取转交地址,也能主动发送代理请求报文获得转交地址。然后移动结点会通过外部代理来给归属代理发送注册报文,其中包括自己的归属地址和转交地址。归属代理在验证请求合法性后会将其归属地址和转交地址绑定。随后如果有给该移动结点发送的数据发往了归属地址,归属代理会将数据进行封装后转发到转交地址。
如果移动结点又进入了另一个网络,也是首先获取在新网络的转交地址,随后通过新网络的外部代理给归属代理发送新的注册请求,其中包括归属地址和新的转交地址。归属代理在验证请求合法性后会用新的注册信息覆盖掉旧的注册信息。
当移动结点从其他网络返回到归属网络时,移动结点通过接收归属代理广播发送的代理通告报文或主动发送代理请求报文来发现归属代理,随后移动结点向归属代理发送注销请求报文来请求注销自己在其他网络的转交地址。归属代理在收到注销请求后会删除与该移动结点相关的转交地址绑定信息。在注销转交地址后,移动结点将使用归属地址进行通信。此时归属代理不再通过数据封装的形式和移动结点通信。
十三、网络层转发设备——路由器
路由器是一种用来连接两个或多个不同网络的网络设备,既能隔绝冲突域又能隔绝广播域,主要用于数据转发和网络互联。路由器内部会维护一个路由表,里面存储了根据路由选择协议得到的到目的网络的路由信息,在转发数据时路由器会根据数据的目的地址和自己的路由表来确定将该数据从哪个输出端口转发出去。在一些高端路由器中,路由器内部还会维护一个转发表,转发表是对路由表进行优化后的表格,能够进行更加快速的查找。
补充:
冲突域:如果两个主机同时发送数据会产生冲突,那么这两个主机就在同一个冲突域中。
广播域:是指网络中能够接收同一广播消息的所有设备的集合。
十四、拥塞控制与流量控制
拥塞控制主要解决网络中出现的过度拥塞问题。当网络中传输的数据过多时会导致网络性能下降,比如延迟增加、丢包等,甚至可能导致系统崩溃。这就需要拥塞控制来调节。
流量控制关注的则是发送方和接收方之间数据传输的速率匹配问题,目的是确保发送方的发送速率不会超过接收方的接收速率,避免接收方因来不及接收数据而被迫丢弃数据的现象发生。
相关文章:
计算机网络(四)——网络层
目录 一、功能 二、IP数据报分片 三、DHCP动态主机配置协议 四、网络地址转换(NAT)技术 五、无分类编址CIDR 六、ARP地址解析协议 七、ICMP网际控制报文协议 八、IPv4和IPv6的区别 九、IPv4向IPv6的两种过渡技术——双栈协议和隧道技术 十、路由…...
VSCode的配置与使用(C/C++)
从0开始教你在vscode调试一个C文件 一.首先是配置你的编译环境,添加到环境变量(默认你是全新的电脑,没有安装vs2019之类的) 原因:因为相比于vs2019,vscode只是个代码编辑器,相当于一个彩色的、…...
《机器学习》——TF-IDF(关键词提取)
文章目录 TF-IDF简介TF-IDF应用场景TF-IDF模型模型参数主要参数 TF-IDF实例实例步骤导入数据和模块处理数据处理文章开头和分卷处理将各卷内容存储到数据帧jieba分词和去停用词处理 计算 TF-IDF 并找出核心关键词 TF-IDF简介 TF - IDF(Term Frequency - Inverse Do…...
金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout
找到Kingbase\ES\V8\KESRealPro\V008R006C006B0021\ClientTools\guitools\KStudio\KStudio.ini 修改JVM参数: 默认值: -Xms512m -Xmx1024m 改为: -Xms1024m -Xmx2048m -XX:MaxPermSize512m SQL查询报错:An I/O error occurred …...
XML在线格式化 - 加菲工具
XML在线格式化 打开网站 加菲工具 选择“XML 在线格式化” 输入XML,点击左上角的“格式化”按钮 得到格式化后的结果...
thinkphp8.0 likeadmin 框架添加API 文档自动生成工具 apidoc支持
Apidoc 是一个便捷的 API 文档自动生成工具,它能帮助开发者快速生成和管理 API 文档。以下是 Apidoc 的主要特点和功能: 主要特点 开箱即用 安装后,无需繁杂配置,直接按照文档编写注释,即可自动生成 API 文档。 轻松编…...
计算机网络 (44)电子邮件
一、概述 电子邮件(Electronic Mail,简称E-mail)是因特网上最早流行的应用之一,并且至今仍然是因特网上最重要、最实用的应用之一。它利用计算机技术和互联网,实现了信息的快速、便捷传递。与传统的邮政系统相比&#…...
【Idea启动项目报错NegativeArraySizeException】
项目场景: Idea启动项目报错(打包不报错),项目在服务器部署运行没有问题,尝试了重启idea、重启电脑、maven clean/install 都不行 maven-resources-production:sample: java.lang.NegativeArraySizeException: -5833…...
长安“战疫”网络安全公益赛的一些随想
起因 今年刚进入大学,开始带校队,为了培养校队新成员,也就一直计划着和当地的一些高校合作交流,但是由于种种原因一直被搁置下来。正巧学校信息中心和四叶草有一个培训项目的合作,学校的网安协会也算是沾了光成为了培…...
【网络编程】基础知识
目录 网络发展史 局域网和广域网 局域网(LAN) 广域网(Wan) 光猫 路由器 网线 设备通信的要素 IP地址 基本概念 地址划分 特殊地址(后续编程使用) IP地址转换 字节序 网络模型 网络的体系结…...
RK3568平台(音频篇)lineout无声调试
一.声音硬件框架 硬件HP_MUTE已强制拉低。 二.设备树配置 es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip-es8388";hp-det-gpio = <&gpio1 RK_PD2 GPIO_ACT…...
计算机组成原理(计算机系统3)--实验三:取指和指令译码设计
一、 实验目标: 设计完成一个连续取指令并进行指令译码的电路,从而掌握设计简单数据通路的基本方法。 二、实验内容 本实验完成:1)首先完成一个译码器;2)接着实现一个寄存器文件;3࿰…...
紫光无人机AI飞控平台介绍
随着无人机技术的迅猛发展,无人机飞控平台的智能化需求不断提升。紫光无人机AI飞控平台作为一款创新型产品,为用户提供了从飞行控制到任务管理的一站式解决方案,尤其在AI实时识别和事件分析方面具有显著优势。本文将介绍平台的核心功能、技术…...
基于EMQX+MQTT+ESP32+Openharmony的开发实例
EMQX介绍 EMQ X 是基于 Erlang/OTP 平台开发的 MQTT 消息服务器,是开源社区中最流行的 MQTT 消息服务器。EMQX 是开源百万级分布式 MQTT 消息服务器(MQTT Messaging Broker),用于支持各种接入标准 MQTT 协议的设备,实…...
npm发布组件(vue3+webpack)
1.初始化Vue项目 vue create my-app 2.本地运行 npm run serve 3.新增目录和文件 1. src/package/index.js 2. src/package/wlz-btn/index.vue 3. src/package/wlz-input/index.vue // src\package\index.js import WlzBtn from "./wlz-btn"; import WlzInput …...
kubuntu24.04配置vmware17.5.1
背景 个人主机的最后一次折腾吧。 丝滑上网前提:singbox实践https://blog.csdn.net/qq_43652666/article/details/145190110 vmware 博通官网下载vmware workstation pro 17.5.1版本,注意一个新注册的账号只能下载一个win版本的vmware和一个linux版本…...
开发规范
开发规范 企业项目开发有2种开发模式:前后台混合开发和前后台分离开发。 前后台混合开发 顾名思义就是前台后台代码混在一起开发,如下图所示: 这种开发模式有如下缺点: 沟通成本高:后台人员发现前端有问题…...
大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4)
大模型UI:Gradio全解11——Chatbot:融合大模型的聊天机器人(4) 前言本篇摘要11. Chatbot:融合大模型的多模态聊天机器人11.4 使用Blocks创建自定义聊天机器人11.4.1 简单聊天机器人演示11.4.2 流式传输Chatbot11.4.3 添…...
[操作系统] 深入理解操作系统的概念及定位
概念 任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。 其核心功能如图片所示,包括: 内核 (Kernel): 内核是操作系统的核心部分,被认为是狭义上的操作系统,直接与硬件打交道。负责进程管理、内…...
redhat安装docker 24.0.7
1、下载docker镜像包 wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz 2、解压 tar -xvf docker-24.0.7.tgz 3、解压的docker文件夹全部移动至/usr/bin目录 cd docker cp -p docker/* /usr/bin 4、注册服务 vi /usr/lib/systemd/syste…...
数据库基础实验1(创建表,设置外键,检查,不为空,主键等约束)安装mysql详细步骤
安装MySQL详细步骤 1. 下载 MySQL 安装程序 访问 MySQL 官方网站:MySQL Downloads。在下载页面,选择 "MySQL Community (GPL) Downloads"。在 "MySQL Community Server" 部分,根据你的操作系统(Windows&…...
如何攻击一个服务器(仅用于教育及娱乐实验目的)
import socket import osdef create_virus():# 创建一个简单的病毒脚本,它会不断尝试连接目标服务器并发送恶意数据virus_code """ import socket import time import threadingdef attack_server(ip, port):while True:try:s socket.socket(socke…...
HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (二、首页轮播图懒加载的实现)
在开发一款影视APP时,首页的轮播图是一个非常重要的部分。它不仅能够吸引用户的注意力,还能有效地推广重点内容。为了提升应用的性能和用户体验,可以实现轮播图的懒加载功能。本文将详细介绍如何在HarmonyOS NEXT应用开发中实现这一功能。 1.…...
Jmeter 简单使用、生成测试报告(一)
一、下载Jmter 去官网下载,我下载的是apache-jmeter-5.6.3.zip,解压后就能用。 二、安装java环境 JMeter是基于Java开发的,运行JMeter需要Java环境。 1.下载JDK、安装Jdk 2.配置java环境变量 3.验证安装是否成功(java -versio…...
采用海豚调度器+Doris开发数仓保姆级教程(满满是踩坑干货细节,持续更新)
目录 一、采用海豚调度器+Doris开发平替CDH Hdfs + Yarn + Hive + Oozie的理由。 1. 架构复杂性 2. 数据处理性能 3. 数据同步与更新 4. 资源利用率与成本 6. 生态系统与兼容性 7. 符合信创或国产化要求 二、ODS层接入数据 接入kafka实时数据 踩坑的问题细节 三、海…...
大疆最新款无人机发布,可照亮百米之外目标
近日,DJI 大疆发布全新小型智能多光旗舰 DJI Matrice 4 系列,包含 Matrice 4T 和 Matrice 4E 两款机型。DJI Matrice 4E 价格为27888 元起,DJI Matrice 4T价格为38888元起。 图片来源:大疆官网 DJI Matrice 4E DJI Matrice 4T D…...
无公网IP 实现外网访问本地 Docker 部署 Navidrome
Navidrome 是一款可以在 macOS、Linux、Windows以及 Docker 等平台上运行的跨平台开源音乐服务器应用,它支持传输常见的 MP3、FLAC、WAV等音频格式。允许用户通过 Web 界面或 API 进行音乐库的管理和访问。本文就介绍如何快速在 Linux 系统使用 Docker 进行本地部署…...
踏上 C++ 编程之旅:开篇之作
踏上 C 编程之旅:开篇之作 在计算机编程的广袤天地中,C 宛如一座巍峨的高峰,吸引着无数开发者攀登探索。今天,就让我们一同开启这段充满挑战与惊喜的 C 编程之旅,在代码的世界里开辟属于自己的道路。 一、为什么选择…...
JS逆向系列之某考古站数据解密
声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 文章目录 声明本次目标网址逆向分析ing代码python实现最近太忙了,博客摆烂了好久,狗头保命.jpg。 本次目标网址 aHR0cHM6Ly93d3cua2F…...
idea 如何安装 github copilot
idea 如何安装 github copilot 要在 IntelliJ IDEA 中安装 GitHub Copilot,可以按照以下步骤操作: 打开 IntelliJ IDEA: 启动 IntelliJ IDEA。 打开插件管理器: 点击菜单栏中的 File。 选择 Settings(Windows/Linux)或 Prefere…...
html5各行各业官网模板源码下载 (4)
文章目录 1.来源2.源码模板2.1 html实现酷炫美观的可视化大屏(十种风格示例,附源码)2.2 HTML5实现古典音乐网站源码模板22.3 HTML5实现古典音乐网站源码模板32.4 HTML5实现小鸟过管道小游戏源码2.5 HTML5实现俄罗斯方块小游戏2.5 HTML5实现剪刀石头布小游戏(附源码)…...
2023-2024 学年 广东省职业院校技能大赛(高职组)“信息安全管理与评估”赛题一
2023-2024 学年 广东省职业院校技能大赛(高职组“信息安全管理与评估”赛题一) 模块一:网络平台搭建与设备安全防护第一阶段任务书任务 1:网络平台搭建任务 2:网络安全设备配置与防护DCRS:DCFW:DCWS:DCBC:WAF: 模块二:网络安全事件…...
理解CPU负载与使用率
目录 CPU使用率 CPU负载 CPU使用率 定义:就像看一个工人干活的时间占他上班时间的比例。比如工人上班8小时,实际干活6小时,干活时间占比就是68100%75%。对于CPU,单核的看它被占用的时间占总时间的比例,多核的就把每个…...
鸿蒙-点击Notification通知并打开App的具体页面
意图通知 获取router事件中传递参数并跳转 目前点击通知消息打开应用的指定页面,通过为通知添加行为意图的方式。也就是在wants的parameters中设置自定义参数,然后在UIAbility的onNewWant或者onCreate方法中 解析配置的自定义参数信息判断跳转不同页面&a…...
Jmeter分布式测试的注意事项和常见问题
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 Jmeter是一款开源的性能测试工具,使用Jmeter进行分布式测试时,也需要注意一些细节和问题,否则可能会影响测试结果的准确性和可靠…...
w~Transformer~合集11
我自己的原文哦~ https://blog.51cto.com/whaosoft/12472192 #LightSeq 最高加速9倍!字节跳动开源8比特混合精度Transformer引擎,近年来,Transformer 已经成为了 NLP 和 CV 等领域的主流模型,但庞大的模型参数限制了它的高效训练和推理。…...
YOLOv10-1.1部分代码阅读笔记-build.py
build.py ultralytics\data\build.py 目录 build.py 1.所需的库和模块 2.class InfiniteDataLoader(dataloader.DataLoader): 3.class _RepeatSampler: 4.def seed_worker(worker_id): 5.def build_yolo_dataset(cfg, img_path, batch, data, mode"train"…...
c++ 中的容器 vector、deque 和 list 的区别
表格汇总: 容器存储结构随机访问性能中间插入/删除性能两端插入/删除性能内存管理特点迭代器类型适用场景vector连续存储的动态数组 O ( 1 ) O(1) O(1) O ( n ) O(n) O(n)(需要移动元素)末尾: O ( 1 ) O(1) O(1),头部…...
如何有效学习PyTorch:从基础到实践的全面指南
随着人工智能和深度学习技术的飞速发展,PyTorch作为当前最流行的深度学习框架之一,凭借其动态计算图、灵活的编程模型以及强大的社区支持,在学术界和工业界均得到了广泛应用。本文旨在为初学者和有一定基础的读者提供一套系统、全面的PyTorch…...
大模型WebUI:Gradio全解11——Chatbots:融合大模型的多模态聊天机器人(3)
大模型WebUI:Gradio全解11——Chatbot:融合大模型的多模态聊天机器人(3) 前言本篇摘要11. Chatbot:融合大模型的多模态聊天机器人11.3 组件Chatbot及ChatMessage11.3.1 Chatbot:聊天机器人组件1. API参数2.…...
MTK6768 Android13 亮度条均匀调节实现
文章目录 需求:问题现象:需求实现疑难问题点:相关资源修改的文件调试技巧具体需求实现去除亮度弹框设置去掉跳转逻辑SystemUI亮度条长按跳转屏蔽 实现亮度均匀调节PhoneWindowManager.javaBrightnessUtils convertLinearToGammaFloatBrightne…...
力扣560和为K的数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1: 输入:nums [1,1,1], k 2 输出:2示例 2: 输入:nums [1,2,3], …...
【MVCC过程中会加锁吗?】
MVCC过程中会加锁吗? 一、MVCC的工作原理二、MVCC的并发控制三、MVCC中的加锁情况在MVCC(Multi-Version Concurrency Control,多版本并发控制)过程中, 通常不需要加锁来控制并发访问。 MVCC是一种数据并发控制技术,它允许在不同的事务中对同一数据进行并发访问,而不需要…...
LeetCode100之搜索二维矩阵(46)--Java
1.问题描述 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回…...
Android BottomNavigationView不加icon使text垂直居中,完美解决。
这个问题网上千篇一律的设置iconsize为0,labale固定什么的,都没有效果。我的这个基本上所有人用都会有效果。 问题解决之前的效果:垂直方向,文本不居中,看着很难受 问题解决之后:舒服多了 其实很简单&…...
cmake + vscode + mingw 开发环境配置
1.软件准备 准备如下软件: mingw64(安装完成之后检测是否有环境变量,如果没有需要配置) cmake(安装完成之后检测是否有环境变量,如果没有需要配置) vscode(安装CMake插件࿰…...
【GPON实战】ONT和OLT的vlan处理机制(一)
引言 ONT和OLT支持多种vlan配置,包括单层tag vlan,默认vlan(PVID),vlan转换,vlan翻译,双层vlan等等。那ONT和OLT是如何处理的呢?本文将介绍ONT和OLT对vlan的处理机制,第一篇介绍单层vlan场景ONT和OLT如何打vlan和剥离vlan,第二篇将介绍OLT是如何通过omci消息将vlan的…...
Qt模块概览(核心模块、GUI模块等)
Qt 模块概览 Qt 是一个跨平台的应用程序开发框架,广泛用于开发图形用户界面(GUI)程序,在前面的章节中,我们已经介绍了许多控件、布局的用法,这些都属于QT的GUI模块,当然QT也支持非 GUI 程序的开发,也就是核心模块。 Qt 框架由多个模块组成,每个模块提供特定的功能。…...
七大排序算法
文章目录 排序的概念及引用1.插入排序2.希尔排序(缩小增量排序)3.选择排序4.堆排序5.冒泡排序6.快速排序7.归并排序8.代码排序部分的测试9.代码加效果大致测试时间(仅供参考) 排序的概念及引用 排序:将数据按照特定的规律排成递增或递减的操作 稳定性:…...
代理模式实现
一、概念:代理模式属于结构型设计模式。客户端不能直接访问一个对象,可以通过代理的第三者来间接访问该对象,代理对象控制着对于原对象的访问,并允许在客户端访问对象的前后进行一些扩展和处理;这种设置模式称为代理模…...