计算机网络之网络层(全)
网络层的功能
互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。
路由器在能够开始向输出链路传输分组的第一位之前,必须先接收到整个分组,这种机制称为:存储转发机制
异构网络互连
用户的需求是多样的,没有一种单一的网络能够适应所有用户的需求。网络层所要完成的任务之一就是使这些异构的网络实现互连。
使用物理层或数据链路层的中继系统时,只是把一个网络扩大了,而从网络层的角度看,它仍然是同一个网络,一般并不称为网络互连。
路由器是一台专用计算机。
在路由器互连的多个局域网的结构中,要求每个局域网:物理层、数据链路层、网络层协议可以不同,而网络层以上的高层协议必须相同。
网络互连是指将两个以上的计算机网络,通过一定的方法,用一些中间设备(又称中继系统)相互连接起来,以构成更大的网络系统。根据所在的层次,中继系统分为以下4种:
- 1)物理层中继系统:转发器,集线器。
- 2) 数据链路层中继系统:网桥或交换机。
- 3)网络层中继系统:路由器。
- 4)网络层以上的中继系统:网关。
使用IP协议的虚拟互连网络(逻辑互连网络)可简称为IP网络。
使用IP网络的好处是:当IP网上的主机进行通信时,就好像在一个单个网络上通信一样,而看不见互连的各网络的具体异构细节(如具体的编址方案、路由选择协议等)。
路由与转发
- 1)路由选择(确定那一条路径)。指按照复杂的分布式算法,根据从各相邻路由器所得到的关于整个网络拓扑的变化情况,动态地改变所选择的路由。
- 2)分组转发(当一个分组到达时候采取的动作)。指路由器根据转发表将用户的IP数据报从合适的端口转发出去。
考试中不去区分路由表和转发表
在因特网中,一个路由器的路由表通常包含:目的网络和到达该目的网络路径上的下一个路由器的IP地址 ,源主机和中间路由器都不知道IP分组到达目的主机需要经过的完整路径
SDN(软件定义网络)
网络层的主要任务是转发和路由选择。可以将网络层抽象地划分为数据平面(也称转发层面)和控制平面,转发是数据平面实现的功能,而路由选择是控制平面实现的功能。
在传统互联网中,每个路由器既有转发表又有路由选择软件,在SDN结构中,路由器都变得简单了,它的路由选择软件都不需要了,因此路由器之间不再相互交换路由信息。
SDN的优点:
- ①全局集中式控制和分布式高速转发,既利于控制平面的全局优化,又利于高性能的网络转发。
- ②灵活可编程与性能的平衡,控制和转发功能分离后,使得网络可以由专有的自动化工具以编程方式配置。
- ③降低成本,控制和数据平面分离后,尤其是在使用开放的接口协议后,就实现了网络设备的制造与功能软件的开发相分离,从而有效降低了成本。
SDN的问题:
- ①安全风险,集中管理容易受攻击,如果崩溃,整个网络会受到影响。
- ②瓶颈问题,原本分布式的控制平面集中化后,随着网络规模扩大,控制器可能成为网络性能的瓶颈。
东西南北接口:
- 对上层应用的开发者,SDN提供的编程接口称为北向接口,提供了API。
- SDN控制器和转发设备建立双向会话的接口称为南向接口,通过不同的南向接口协议(如 Openflow),SDN控制器就可兼容不同的硬件设备,同时可以在设备中实现上层应用的逻辑。
- SDN控制器集群内部控制器之间的通信接口称为东西向接口,用于增强整个控制平面的可靠性和可拓展性。
拥塞控制
- 因出现过量的分组而引起网络性能下降的现象称为拥塞。
- 网络负载的增加,网络的吞吐量明显小于正常的吞吐量,那么网络就可能已进入“轻度拥塞”状态;
- 如果网络的吞吐量随着网络负载的增大而下降,那么网络就可能已进入拥塞状态;
- 如果网络的负载继续增大,而网络的吞吐量下降到零,那么网络就可能已进入死锁状态。
流量控制和拥塞控制的区别:流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。而拥塞控制必须确保通信子网能够传送待传送的数据,是一个全局性的问题,涉及网络中所有的主机、路由器及导致网络传输能力下降的所有因素。
拥塞控制的方法有两种:
1)开环控制。在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。这是一种静态的预防方法,一旦整个系统启动并运行,中途就不再需要修改。
2)闭环控制。事先不考虑有关发生拥塞的各种因素,采用监测网络系统去监视,是一种动态的方法
路由算法
静态路由算法(又称非自适应路由算法)。手工去修改路由表中相关的静态路由信息。对于简单的小型网络,可以采用静态路由。
动态路由算法(又称自适应路由算法)。指路由器上的路由表项是通过相互连接的路由器之间彼此交换信息,然后按照一定的算法优化出来的,而这些路由信息会在一定时间间隙里不断更新,以适应不断变化的网络,随时获得最优的寻路效果。
静态路由算法的特点是简便和开销较小,在拓扑变化不大的小网络中运行效果很好。动态路由算法能改善网络的性能并有助于流量控制;但算法复杂,会增加网络的负担,有时因对动态变化的反应太快而引起振荡,或反应太慢而影响网络路由的一致性,因此要仔细设计动态路由算法,以发挥其优势。
常用的动态路由算法可分为两类:
距离-向量路由算法(RIP)只掌握物理连接相邻的邻居和链路费用、“好消息传得快,而坏消息传得慢”、路由信息发生变化时,该变化未能及时地被所有路由器知道,而仍然可能在路由器之间进行传递,这就是“慢收敛”现象。慢收敛是导致发生路由回路的根本原因。
链路状态路由算法(OSPF) 具有完全的网络拓扑信息、使用Dijkstra算法
层次路由
当网络规模扩大时,路由器的路由表成比例地增大。这不仅会消耗越来越多的路由器缓冲区空间,而且需要用更多CPU时间来扫描路由表,用更多的带宽来交换路由状态信息。因此路由选择必须按照层次的方式进行。 划分为许多自治系统(可能包含多个局域网)
1)一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP),也称域内路由选择,具体的协议有RIP和OSPF等。
2)自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称域间路由选择,用在不同自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP。
IPV4
IP是无连接服务
IPV4分组
格式
1)版本。指IP协议的版本,目前广泛使用的版本号为4。
2)首部长度。占4位,可以表示的最大十进制数是15。以32位为单位(4B),最大值为60B(15×4B)。最常用的首部长度是20B,此时不使用任何选项(即可选字段)。
3)总长度。占16位。指首部和数据之和的长度,单位为字节(1B),因此数据报的最大长度为216-1=65535B。
4)标识。占16位。
5)标志。占3位。
- 标志字段的最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片
- 标志字段中间的一位是DF,只有当DF=0时才允许分片
6)片偏移。占13位。片偏移以8个字节为偏移单位。除最后一个分片外,每个分片的长度一定是8B的整数倍。
7)生存时间(TTL)。占8位。确保分组不会永远在网络中循环。路由器在转发分组前,先把TTL减1。若TTL被减为0,则该分组必须丢弃。
8)协议。占8位。指出此分组携带的数据使用何种协议,其中值为6表示TCP,值为17表示UDP。
9)首部校验和。占16位。首部校验和只校验分组的首部,而不校验数据部分。
10)源地址字段。占4B,标识发送方的IP地址。
11)目的地址字段。占4B,标识接收方的IP地址。
为什么只检验分组首部,不检验数据部分?
1.IP分组头之外的部分属于高层数据,有相应的校验字段。
2.每经过一个路由器,IP分组头都要改变一次,数据部分并不改变。设置首部校验和只对变化部分进行校验是合理的,可以减少路由器对每个接收分组的处理时间,提高路由器运行效率。
IP数据报分片
【2021统考真题】若路由器向MTU=800B的链路转发一个总长度为1580B的IP数据报(首部长度为20B)时,进行了分片,且每个分片尽可能大,则第2个分片的总长度字段和MF标志位的值分别是(B)。
D. 800,1 C.800,0 B.796,1 A.796.0
注意的是:每个分片都有首部20B,再加上数据部分,不能超过800B,每个分片的数据部分必须是8的整数倍
分片一:20+776 =796<800
分片二:20+776
分片三:20+8B
IPV4与NAT
IPV4地址

记住几个特殊IP
- 主机号全为0表示本网络本身,如202.98.174.0。
- 主机号全为1表示本网络的广播地址,又称直接广播地址,如202.98.174.255。
- 127.×.×.×保留为环回自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上。
- 32位全为0,即0.0.0.0表示本网络上的本主机。可以作为源地址,不可以作为目的地址【2017真题】
- 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。实际使用时,由于路由器对广播域的隔离,255.255.255.255等效为本网络的广播地址。
网络地址转换(NAT)
将专用网络地址转为公有地址
为了网络安全有了私有IP地址(只能用于局域网,不可以用于广域网)
这有效地解决了IP地址不足的问题。(但根本上还是IPV6)
私有IP地址网段如下:
- A类:1个A类网段,即10.0.0.0~10.255.255.255。
- B类:16个B类网段,即172.16.0.0~172.31.255.255。
- C类:256个C类网段,即192.168.0.0~192.168.255.255。
源IP和源断口对应不上,选C
子网划分、子网掩码、CIDR
子网划分
- 子网划分纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
- IP地址={<网络号>,<子网号>, <主机号>}。
- 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。
子网掩码
子网掩码中化为二进制的情况下,“1”为网络号,“0”为主机号,如255.255.254.0 的后九位是主机号。
在使用子网掩码的情况下:
- 1)一台主机在设置IP地址信息的同时,必须设置子网掩码。
- 2)同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
- 3)路由器的路由表中,所包含信息的主要内容有目的网络地址、子网掩码、下一跳地址。
CIDR(无分类编址)
如:
128.14.32.5/20 就是取前二十为网络号,后十二位为主机号
他的掩码就是20个“0”+12个“1”
- CIDR的优点在于网络前缀长度的灵活性。
- 最长前缀匹配(最佳匹配):使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时,应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体。
- CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将无分类编址的路由表存放在-种层次式数据结构中,然后自上而下地按层次进行查找。这里最常用的数据结构就是二叉线索。
- 聚集小网络成大网,称为路由聚合或构成超网
下列地址中,属于子网86.32.0.0/12的地址是( A)。
A.86.33.224.123B.86.79.65.126
C.86.79.65.216
D.86.68.206.15486.32的二进制:86.00100000
86.33的二进制:86.00100001
计算时候主要是在第二块,第一块就不要费力改成二进制了。
ARP、DHCP与ICMP
ARP:
完成IP地址到MAC地址的映射(地址解析协议)
主机发送IP数据报给主机B,途中经过了5个路由器。请问在此过程中总共使用了(6 )次ARP。
主机先使用ARP来查询本网络路由器的地址,然后每个路由器使用ARP来寻找下一跳路由
的地址,总共使用了4次ARP从主机A网络的路由器到达主机B网络的路由器。然后,主机B
网络的路由器使用ARP找到主机B,所以总共使用了1+4+ 1=6次ARP。总结:自己的网络里查一下,目标网络查一下,中间路由跳一次算一次。
动态主机配置协议(DHCP)
动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)常用于给主机动态地分配IP地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP是应用层协议,它是基于UDP的。
网际控制报文协议(ICMP)
为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议( Internet Control Message Protocol, ICMP) 来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是网络层协议。
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下5种常用的类型:
- 终点不可达
- 源点抑制
- 时间超过。
- 参数问题。
- 改变路由(重定向)。
不应发送ICMP差错报告报文的几种情况如下:
- 1)对ICMP差错报告报文不再发送ICMP差错报告报文。
- 2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文(也就是只对第一个)。
- 3)对具有组播(多播、D类地址)地址的数据报都不发送ICMP差错报告报文。
- 4)对具有特殊地址(如127.0.0.0 或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文有4种类型:
- 回送请求和回答报文
- 时间戳请求和回答报文
- 地址掩码请求和回答报文
- 路由器询问和通告报文
PING使用了ICMP的询问报文中的回送请求和回答报文。
IPV6
IPv6的主要特点如下:
1)更大的地址空间。IPv6将地址从IPv4的32位增大到了128位(16B)。IPv6的字节数(16B)是IPv4字节数(4B)的平方。
2)扩展的地址层次结构。
3)灵活的首部格式。
4)改进的选项。
5)允许协议继续扩充。
6) 支持即插即用(即自动配置)。不用DHCP
7)支持资源的预分配。
8)IPv6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上说,IPv6不允许分片(不允许类似IPv4的路由分片)。
9)IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。
10)增大了安全性。身份验证和保密功能是IPv6的关键特征。
IP数据报的目的地址:
1)单播。单播就是传统的点对点通信。
2)多播。多播是一点对多点的通信,分组被交付到一组计算机的每台计算机。
3)任播。这是IPv6增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一台计算机,通常是距离最近的一台计算机。
通常可以把 IPv6地址缩写成更紧凑的形式。例如,可以把
4BF5:0000:0000:0000:BA5F:039A:000A:2176
缩写为
4BF5:0:0:0:BA5F:39A:A:2176
当有相继的0值域时,还可以进一步缩写。这些域可以用双冒号缩写(::),双冒号表示法在一个地址中仅能出现一次,最终——>4BF5:0:0:0:BA5F:39A:A:2176。
IPV4向IPV6过渡:
- 双协议栈
- 隧道技术
双协议栈是指在一台设备上同时装有IPv4和IPv6协议栈,那么这台设备既能和IPv4网络通信,又能和IPv6网络通信。
隧道技术的要点是在IPv6数据报要进入IPv4网络时,把整个IPv6数据报封装到IPv4数据报的数据部分,使得IPv6数据报就好像在IPv4网络的隧道中传输。
IPv6的首部长度是固定的,因此不需要首部长度字段。IPv6取消了校验和字段,这样就加快了路由器处理数据报的速度。
路由协议
内部网关协议:IGP(如:RIP、OSPF)
外部网关协议:EGP
用UDP传送是指将该信息作为UDP报文的数据部分,而直接使用IP数据报传送是指将该信息直接作为IP数据报的数据部分。
路由选择协议的功能:
- 获取网络拓扑信息(交换网络状态/通路信息)
- 选择最优路径(Dijkstra单源最短路径算法…)
- 维护路由表(构建、更新、删除...)
RIP
路由信息协议(Routing Information Protocol,RIP)是内部网关协议(IGP)中最先得到广泛应用的协议。RIP是一种分布式的基于距离向量的路由选择协议,其最大优点就是简单。
RIP的特点:
- 基于距离-向量的内部网关协议
- 距离:跳数(最多15跳,距离为16表示不可达)
- 每隔30秒进行RIP广播自己知道的全部信息
- 紧跟相邻路由器交换信息
- 只适用于小型网络
- 最大距离是15,16表示不可达
- 慢收敛现象,俗称坏消息传得慢
- 应用层协议,使用UDP传送数据
OSPF
开放最短路径优先协议osPF(Open Shortest Path First)基于链路状态的内部网关协议在相邻路由的链路状态变化时,使用洪泛法向AS(自治系统)中的全部路由器发送该信息
OSPF五种分组类型:
问候(Hello)分组,用来发现和维持邻站的可达性。
数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
链路状态请求(Link State Request)分组,向对方请求发送某些链路状态项目的详细信息。
链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。这种分组是最复杂的,也是OSPF协议最核心的部分。路由器使用这种分组将其链路状态通知给邻站。
链路状态确认(Link State Acknowledgment)分组,对链路更新分组的确认。
ospf的特点:
- 网络层协议,直接使用IP数据报传送
- 洪泛法
- 发送的信息是与本路由器相邻的所有路由器的链路状态
- 收敛快,十分灵活
- 使用Dijkstra最短路径算法计算从自己到各目的网络的最优路径,以此构造自己的路由表
- 能够用于规模大的网络
OSPF将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治域。
边界网关协议BGP
BGP的特点:
1)BGP交换路由信息的结点数量级是自治系统的数量级,比这些自治系统中的网络数少很多。
2) 每个自治系统中BGP发言人(或边界路由器)的数目是很少的。这样就使得自治系统之间的路由选择不致过分复杂。
3)BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
4)在BGP刚运行时,BGP的邻站交换整个BGP路由表,但以后只需在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
BGP四种报文:
1.Open打开报文
3.Keepalive保活报文
2.Update更新报文
4.Notification通知报文
IP组播
单播:点对点
组播:点对多(组播一定应用于UDP)
IP组播地址
IP组播使用的是D类地址,D类的前四位:1110,所以范围就是224.0.0.0~239.255.255.255
组播数据报和一般的IP数据报的区别是,前者使用D类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用IGMP。需要注意的是:1)组播数据报也是“尽最大努力交付”,不提供可靠交付。2)组播地址只能用于目的地址,而不能用于源地址。3)对组播数据报不产生ICMP差错报文。因此,若在PING命令后面键入组播地址,将永远不会收到响应。4)并非所有的D类地址都可作为组播地址。
D类IP地址与以太网组播地址的映射关系:
IGMP
要使路由器知道组播组成员的信息,需要利用因特网组管理协议(Internet GroupManagement Protocol,IGMP)。
IGMP应视为网际协议IP的一个组成部分,其工作可分为两个阶段。
第一阶段:当某台主机加入新的组播组时,该主机应向组播组的组播地址发送一个IGMP 报文,声明自己要成为该组的成员。本地的组播路由器收到IGMP报文后,将组成员关系转发给因特网上的其他组播路由器。
第二阶段:因为组成员关系是动态的,本地组播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否仍继续是组的成员。只要对某个组有一台主机响应,那么组播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一台主机响应时,则不再将该组的成员关系转发给其他的组播路由器。
组播路由算法
组播路由选择实际上就是要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次(即在组播转发树上的路由器不会收到重复的组播数据报)。不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
三种路由算法:第一种是基于链路状态的路由选择;第二种是基于距离-向量的路由选择;第三种可以建立在任何路由器协议之上,因此称为协议无关的组播(PIM)。
在设计组播路由时,为了避免路由环路,构造组播转发树
移动IP
移动IP技术是移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。
移动结点具有永久IP地址的移动设备。
归属代理(本地代理)一个移动结点的永久“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
永久地址(归属地址/主地址)移动站点在归属网络中的原始地址。
外部代理(外地代理)在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
转交地址(辅地址)可以是外部代理的地址或动态配置的一个地址。
网络层设备
中继器~集线器:不能隔离广播域,也不能隔离冲突域
交换机~网桥:能隔离冲突域,不能隔离广播域
路由器:能隔离冲突域,能隔离广播域

交换机、网桥、路由器速度对比:
集线器的每个端口都具有收发功能,当某个端口收到信号时,立即向所有其他端口转发,因此其传输时延最小。从数量级上看,局域网交换机为几十us,那么网桥为几百us,而路由器为几千us
在路由表中设置一条默认路由,则其目的地址和子网掩码应分别置为(C)。
A. 192.168.1.1、255.255.255.0
B. 127.0.0.0、255.0.0.0
C. 0.0.0.0、0.0.0.0
D. 0.0.0.0、 255.255.255.255
有关于直接交付和间接交付:
路由选择分为直接交付和间接交付
间接交付涉及直接交付
直接交付,不涉及路由器
直接交付时,两台机器在同一物理网段
A,B直接交付
C与A,B间接交付
中间那俩玩意是路由器
相关文章:

计算机网络之网络层(全)
网络层的功能 互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。 路由器在能够开始向输出链路传输分组的第一位之前,必须先接收到整个分组,这种机制称为:存储转发机制 异构网络互连 用…...

PS学习笔记合集
2.一些快捷键 一、放大快捷键 Ctrl:在画布中点击一次,即可放大一次,可多次点击。 CtrlShift:在画布中点击一次,即可放大到适合窗口大小。 CtrlAlt:在画布中点击一次,即可放大到适合窗口大小&a…...

汇总记录Python常用的基础内置方法
这里汇总记录一些Python常用的基础内置方法 (参照哔站有一个大佬"小飞有点东西"的笔记整理记录而得,仅限方便需要的时候可以直接在网上搜索查阅而整理记录) 输出/输入 print() input()print打印颜色设置 显示方式;前景颜色;背景颜色,这3个…...

基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)
欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 Tensorflow是一个流行的机器学习框架,可用于训练和部署各种人工智能模型。玉米病害识别系统基于Tensorf…...

Execution failed for task ‘:keyboard_utils:compileDebugKotlin‘.
Execution failed for task ‘:keyboard_utils:compileDebugKotlin’. 这个错误是keyboard_utils依赖报错。 这个问题在keyboard_utils github项目的issues 有记载Project does not run with new Flutter 2.10.0 详细错误信息: e: /Users/andreifufylev/developme…...

AC修炼计划(AtCoder Regular Contest 163)
传送门:AtCoder Regular Contest 163 - AtCoder 第一题我们只需要将字符串分成两段,如果存在前面一段比后面一段大就成立。 #include<bits/stdc.h> #define int long long using namespace std; typedef long long ll; typedef pair<int,int&g…...

持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)
Faster-Whisper是Whisper开源后的第三方进化版本,它对原始的 Whisper 模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等,从而减少了计算量和内存消耗,提高了推理速度,与此同时,Faster-Whi…...

【设计模式】第24节:行为型模式之“模板方法模式”
一、简介 模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。 模板模式有两大作用:复用和扩展。其中,复用指的是&#…...

【考研数学】数学“背诵手册”(二)| 线代及概率论部分
文章目录 引言二、线代施密特正交化分块矩阵转置、逆、伴随之间的运算关于秩定义性质 三、概统常见分布的期望及方差 引言 这数一全部内容太多了,放在一篇文章里的话,要编辑就很困难,就把线代和概率放在这篇文章里吧。 二、线代 施密特正交…...

Android WMS——WindowState介绍(十三)
前面文章中的 addWindow 方法,首先获取了 DisplayContent,紧接着判断窗口的 type 类型并标记。然后获取 token 信息,且该信息是通过 DisplayContent 中的方法获取的。最后就是创建并保存 WindowState 信息。 一、简介 在窗口管理系统(Window Manager Service,WMS)中,Wi…...

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)
懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点: UDP框架: UDP函数学习 发送端代码案例如下: 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介: 懒大王敲代码,…...

【教3妹学编程-算法题】117. 填充每个节点的下一个右侧节点指针 II
2哥 : 3妹,听说你昨天去面试了,怎么样啊? 3妹:嗨,别提了,让我回去等通知,估计是没有通知了, 还浪费我请了一天假。 2哥 : 你又请假了啊, 你是怎么跟你那个严厉的老板请假…...

window10 mysql8.0 修改端口port不生效
mysql的默认端口是3306,我想修改成3307。 查了一下资料,基本上都是说先进入C:\Program Files\MySQL\MySQL Server 8.0这个目录。 看看有没有my.ini,没有就新建。 我这里没有,就新建一个,然后修改port: […...

欧盟网络安全威胁:虚假与错误信息
如今,数字平台已是新闻媒体的主战地。社交网站、新闻媒体、甚至搜索引擎都是现在大多数人的信息来源。由于这些网站的运作方式是通过吸引人们来产生网站流量,这些抓人眼球的信息通常是推广广告,有些甚至没有经过审查。 国际现状 恶意攻击者现…...

006 Linux 进程的概念 | 获取进程的PID
前言 本文将会向您进程的概念,程序与进程的区别,如何获取进程的标识符-pid 文章重点 1.描述进程——PCB 进程与程序的区别 CPU对进程列表的处理 2.获取进程PID 描述进程-PCB 进程概念 课本概念:程序的一个执行实例或正在执行的程序 内核…...

时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测
时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 …...

《异常检测——从经典算法到深度学习》23 TimesNet: 用于常规时间序列分析的时间二维变化模型
zz# 《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Don…...

计算机网络(59)
1. OSI 的七层模型分别是?各自的功能是什么? 2. 为什么需要三次握手?两次不行? 3. 为什么需要四次挥手?三次不行? 4. TCP与UDP有哪些区别?各自应用场景? 5. HTTP1.0,1.1&…...

【CSS】CSS基础知识扫盲
1、 什么是CSS? CSS即层叠样式表 (Cascading Style Sheets). CSS 能够对网页中元素位置的排版进行像素级精确控制, 实现美化页面的效果. 能够做到页面的样式和结构分离 2、 CSS引入方式 CSS代码编写的时候有多种引入方式: 内部样式、外部样式、内联样…...

React中的状态管理
目录 前言 1. React中的状态管理 1.1 本地状态管理 1.2 全局状态管理 Redux React Context 2. React状态管理的优势 总结 前言 当谈到前端开发中的状态管理时,React是一个备受推崇的选择。React的状态管理机制被广泛应用于构建大型、复杂的应用程序…...

【优选算法系列】【专题九链表】第一节.链表常用技巧和操作总结(2. 两数相加)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、链表常用技巧和操作总结二、两数相加 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、链表常…...

上线Spring boot-若依项目
基础环境 所有环境皆关闭防火墙与selinux 服务器功能主机IP主机名服务名称配置前端服务器192.168.231.177nginxnginx1C2G后端服务器代码打包192.168.231.178javajava、maven、nodejs4C8G数据库/缓存192.168.231.179dbmysql、redis2C4G Nginx #配置Nginxyum源 [rootnginx ~]…...

pinia简单使用
新命令-创建vue3项目 vue create 方式使用脚手架创建项目,vue cli处理, vue3后新的脚手架工具create-vue 使用npm init vuelatest 命令创建即可。 在pinia中,将使用的组合式函数识别为状态管理内容 自动将ref 识别为stste,computed 相当于 ge…...

数据库进阶教学——数据库故障恢复(日志文件)
目录 一、日志简介 二、日志文件操作 1、查看日志状态 2、开启日志功能 3、查看日志文件 4、查看当前日志 5、查看日志中的事件 6、删除日志文件 7、查看和修改日志文件有效期 8、查看日志文件详细信息 三、删除的数据库恢复 一、日志简介 日志是记录所有数据库表结…...

Leetcode 73 矩阵置0
class Solution {//1.用矩阵的第一行和第一列来标记该行或该列是否应该为0,但是这样的话忽视了第一行或第一列为0的情况//2.用标记row0和column0来标记第一行或第一列是否该为0public void setZeroes(int[][] matrix) {int n matrix.length;int m matrix[0].length;boolean r…...

Rust学习日记(二)变量的使用--结合--温度换算/斐波那契数列--实例
前言: 这是一个系列的学习笔记,会将笔者学习Rust语言的心得记录。 当然,这并非是流水账似的记录,而是结合实际程序项目的记录,如果你也对Rust感兴趣,那么我们可以一起交流探讨,使用Rust来构建程…...

html各个标签的使用
一、标签的分类 1、单标签和双标签 1. 单标签:<img> img br hr 2. 双标签:<div></div> div span <a></a> h p a 2、按照标签属性分类 1. 块标签:自己独占一行 h1~h6 p div 2. 行内(内联)标签 …...

android 混淆
# 指定代码的压缩级别 0 - 7(指定代码进行迭代优化的次数,在Android里面默认是5,这条指令也只有在可以优化时起作用。) -optimizationpasses 5 # 混淆时不会产生形形色色的类名(混淆时不使用大小写混合类名) -dontusemixedcaseclassnames # 指定不去忽略…...

旋转链表(C++解法)
题目 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 示例 1: 输入:head [1,2,3,4,5], k 2 输出:[4,5,1,2,3]示例 2: 输入:head [0,1,2], k 4 输出:[…...

AcWing 134:双端队列
【题目来源】https://www.acwing.com/problem/content/description/136/【题目描述】 达达现在碰到了一个棘手的问题,有 N 个整数需要排序。 达达手头能用的工具就是若干个双端队列。 她从 1 到 N 需要依次处理这 N 个数,对于每个数,达达能做…...