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

计算机网络之数据链路层

一、概述

1.1概述

物理层发出去的信号需要通过数据链路层才知道是否到达目的地;才知道比特流的分界线

  • 链路(Link):从一个结点到相邻结点的一段物理线路,中间没有任何其他交换结点
  • 数据链路(Data Link):把实现通信协议的硬件和软件加到链路上,就构成了数据链路
  • 数据链路层以为单位传输和处理数据

 封装成帧

数据链路层为数据加上帧首和帧尾使之成为帧的过程

  • 帧头和帧尾中含有重要的控制信息
  • 帧头帧尾的作用之一就是帧定界(变成比特传输后据此区分每个帧的起始和结束)
  • 为了提高帧的传输效率,应当使帧的数据部分长度尽可能大
  • 考虑到差错控制等多种因素,每一种数据链路层协议都规定了帧的数据部分的长度上限,即最大传送单元MTUMaximum Transfer Unit

透明传输是指数据链路层对上层交付的传输数据没有任何限制,就好像数据链路层不存在一样(即保证接收方接到的数据是完整的数据)

面向字节的物理链路使用字节填充(或称字符填充)的方法实现透明传输

帧头帧尾有标志位用来划分一个个帧,如果帧内部恰好也出现了标志位,则在第一次扫描时在标志位前面加一个转义字符帮助区分哪个是真正的帧头。考虑到转义字符也可能在帧内部出现,因此在转义字符前也加转义字符。接收方接到消息后但凡看到转义字符开头就会去掉转义字符并且对其后一个字符不做特殊处理

 面向比特的物理链路使用比特填充的方法实现透明传输

零比特填充:在发送前,对帧的数据部分进行扫描,每5个连续的比特1后就插入1个比特0,防止其与首部尾部的标志位混淆。接收方接收时将每5个连续的比特1后面的0剔除即可

差错检测

实际的通信链路都不是理想的,比特在传输过程中可能会产生差错:1可能变成00可能变成1。这叫比特差错

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER(Big Error Rate)

使用差错检测码(如Mac帧尾的FCS)来检测数据在传输过程中是否产生了比特差错,是数据链路层所要解决的重要问题之一

奇偶校验

在待发送的数据后面添加1位奇偶校验位,使整个数据(包括所添加的校验位在内)中"1"的个数为奇数(奇校验)或为偶数(偶校验) 

比如发送数据001

  • 若是奇校验,则在数据后添加0,使其成为0001,1的个数为奇数。如果传输过程中发生了1位误码,则1的个数会变成偶数,据此判断是否发生误码;但是若发生了2个误码,1的个数依然为奇数,因此检查不出来
  • 若为偶校验,则在数据后添加1,使其成为1001,1的个数为偶数,其他情况与奇校验类似

如果有奇数个位发生误码,则奇偶性发生变化,可以检查出误码
如果有偶数个位发生误码,则奇偶性不发生变化,不能检查出误码(漏检)

循环冗余校验CRC 

收发双方约定好一个生成多项式G(x)

  • 发送方基于待发送的数据和生成多项式计算出差错检测码【冗余码】,将其添加到待传输数据的后面一起传输

  • 接收方通过生成多项式来计算收到的数据是否产生了误码

  • CRC有很好的检错能力(漏检率非常低),虽然计算比较复杂,但非常易于用硬件实现,因此被广泛应用于数据链路层
  • 在计算机网络中通常采用检错重传方式来纠正传输中的差错,或者仅仅是丢弃检测到差错的帧,这取决于数据链路层向其上层提供的是可靠传输服务还是不可靠传输服务

可靠传输

不可靠传输服务:仅仅丢弃有误码的帧,其他什么也不做
可靠传输:想办法实现发送端发送什么,接收端就收到什么 

  • 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理
  • 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务
  • 比特差错只是传输差错中的一种,从整个计算机网络体系结构来看,传输差错还包括分组丢失分组失序以及分组重复
  • 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层
  • 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输
  • 可靠传输的实现比较复杂,开销也比较大,是否使用可靠传输取决于应用需求
 ①停止-等待协议SW

接收方收不到数据分组,就不会发送ACK或NAK。如果不采取其他措施,发送方就会一直处于等待接收方ACK或NAK的状态。
为解决该问题
可以在发送方发送完一个数据分组时启动一个超时计时器。若到了超时计时器所设置的重传时间而发送方仍收不到接收方的任何ACK回或NAK,则重传原来的数据分组,这就叫做超时重传。

一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”

为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1


为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号

 

②回退N帧协议GBN

相对停止-等待协议多个窗口的概念
接收窗口尺寸只能等于1,因此接收方只能按序接收正确到达的数据分组 

  • 接收端返回ACK n表示发送过来的分组x<=n的都收到了
③选择重传协议SR

与回退N帧相比,接收窗口允许多个,且发送窗口最大情况有所变化

  • 发送窗口接收到ACK帧的部分不会超时重传

1.2PPP协议

数据链路层协议,用于规定帧格式

透明传输 

①字节填充法

面向字节的异步链路采用插入转义字符的字节填充法

  • PPP帧的标志字段取值为7E(16进制),如果数据中出现7E则需要在数据前插入转义字符7D(16进制),并将原来的7E减20(16进制),所以7E在数据中最终会变成7D5E
  • 如果数据中有转义字符7D怎么办呢?可以在转义字符7D前再加一个转义字符7D,并将数据的7D20(16进制),于是转义字符7D在数据中最终会变成7D5D
  • 数据中出现的每一个ASCII码控制字符【数值小于20(16进制)的字符】,则在该字符前插入一个7D,同时将该字符的编码加上20(16进制)
  • 接收方只需要反变换即可恢复出原来的帧的数据部分
 ②比特填充法

面向比特的同步链路采用插入比特0的比特填充法

  • 发送方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,则立即填充1个比特0
  • 接收方:对帧的数据部分进行扫描(一般由硬件实现)。只要发现5个连续的比特1,就把其后的1个比特0删除

 PPP的差错检测

1.3媒体接入层

共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用,即媒体接入控制MAC(Medium Access Control

复用(Multiplexing)就是通过一条物理线路同时传输多路用户的信号。

当网络中传输媒体的传输容量大于多条单一信道的总通信量时,可利用复用技术在一条物理线路上建立多条通信信道来充分利用传输媒体的带宽

静态划分信道

①频分复用FDM

将传输线路的频带资源划分成多个子频带,形成多个子信道。各子信道之间留出隔离频带,以免造成子信道间干扰。当多个信号输入一个多路复用器时,这个复用器将每一个信号调制到不同频率的载波上,接收端由相应的分用器通过滤波将各路信号分隔开,将合成的复用信号恢复成原始的多路信号

②时分复用TDM

将时间划分为一个个时隙,将带宽资源按照时隙轮流分配给不同的用户,每对用户只在所分配时隙里使用线路传输数据。
时分复用技术将时间划分为一段段等长的时分复用帧,每一个时分复用的用户在每一个时分复用帧中占用固定序号的时隙。每个用户所占的时隙是周期性出现的,其周期就是时分复用帧的长度

③波分复用WDM

波分复用其实就是光的频分复用。经过光调制,分别将光载波变换到不同波长。这些光波经过光复用器就可以在一根光纤中传输。到达终点后用光分用器将不同波长的光进行还原得到信息
光信号传输一段距离后会衰减,对衰减的光信号必须进行放大才能继续传输

 ④码分复用CDM

码分复用CDM(最初用于军事通信)是另一种共享信道的方法。实际上,由于该技术主要用于多址接入,人们更常用的名词是码分多址CDMA

CDM的每一个用户可以在同样的时间使用同样的频带进行通信,由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰

CDMA中,每一个比特时间再划分为m个短的间隔,称为码片。通常m的值是64128
使用CDMA的每一个站被指派一个唯一的m bit码片序列

  1. 一个站如果要发送比特1,则发送它自己的m bit码片序列
  2. 一个站如果要发送比特0,则发送它自己的m bit码片序列二进制反码

 

复用与多址的区别

复用是将单一媒体的频带资源划分成很多子信道,这些子信道之间相互独立,互不干扰。从媒体的整体频带资源上看,每个子信道只占用该媒体频带资源的一部分

多址(更确切地应该称为多点接入)处理的是动态分配信道给用户。这在用户仅仅暂时性地占用信道的应用中是必须的,而所有的移动通信系统基本上都属于这种情况。相反,在信道永久地分配给用户的应用中,多址是不需要的(对于无线广播或电视广播站就是这样) 

频分复用FDM和时分复用TDM可用于多点接入,相应名词是频分多址FDMA时分多址TDMA。从某种程度上,FDMA、TDMA、CDMA可以分别看作是FDM、TDM、CDM的应用 

动态接入控制

随机接入

多个主机连接到一根总线上,当信息同一时间传送相遇时就会发生碰撞。
如何协调各主机的工作,使信息避免碰撞是很重要的

载波监听多址接入/碰撞检测(CSMA/CD)【不用于无线网络】

96比特时间是指发送96比特所需要的时间,也称为帧间最小间隔。其作用是是接收方可以检测出一个帧的结束,同时也使得其他站点都能有机会平等竞争信道并发送帧

 

退避算法

当帧发送碰撞后会停止发送,隔一段时间后再次发送,而具体隔多少时间再发送需要根据退避算法得出 

极限信道利用率

载波监听多点接入/碰撞避免(CSMA/CA)【用于无线网络】

802.11无线局域网使用CSMA/CA协议,在CSMA的基础上增加了一个碰撞避免CA功能,而不再实现碰撞检测功能

由于不可能避免所有的碰撞,并且无线信道误码率较高802.11标准还使用了数据链路层确认机制(停止-等待协议)来保证数据被正确接收

  • 在无线局域网中,仍然可以使用载波监听多址接入CSMA,即在发送帧之前先对传输媒体进行载波监听。若发现有其他站在发送帧,就推迟发送以避免碰撞

  • 在无线局域网中,不能使用碰撞检测CD,原因如下:

    • 由于无线信道的传输条件特殊,其信号强度的动态范围非常大,无线网卡上接收到的信号强度往往会远远小于发送信号的强度(可能差百万倍)。如果要在无线网卡上实现碰撞检测CD,对硬件的要求特别高。

    • 即使能够在硬件上实现无线局域网的碰撞检测功能,但由于无线电波传播的特殊性(存在隐蔽站的问题),进行碰撞检测的意义也不大(如下)。而有线网络中信号会随着总线到达各个地方,不会出现隐蔽站

1.4MAC地址、IP地址和ARP协议​​​​​​​

MAC地址

MAC地址是以太网的MAC子层所使用的的地址

  • 只有一条路径的信道不需要地址,因为没得选
  • 当多个主机连接在同一个广播信道上,要想实现两个主机之间的通信,则每个主机都必须有一个唯一的标识,即一个数据链路层地址
  • 在每个主机发送的帧中必须携带标识发送主机和接收主机的地址。由于这类地址是用于媒体接入控制MAC(Media Access Control),因此这类地址被称为MAC地址
  • MAC地址一般被固化在网卡(网络适配器)的电可擦可编程只读存储器EEPROM中,因此MAC地址也被称为硬件地址
  • MAC地址有时也被称为物理地址。但是MAC地址不属于物理层而是属于数据链路层
  • MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识

 

单播地址、广播地址与多播地址​​​​​​​

  • 单播MAC地址即明确的目的MAC地址。将此地址填入帧的目的地址栏中,接收到该帧的主机将此地址与自身MAC地址进行匹配,若相同则接收,不同则丢弃
  • 广播MAC地址为FF-FF-FF-FF-FF-FF,将此地址填入帧的目的地址栏中,接收到该帧的主机检索该地址发现是广播地址,因此接收该帧
  • MAC地址中第一字节后4比特为(1,3,5,7,9,B,D,F)时,MAC地址是多播地址。将此地址填入帧的目的地址栏中,接收到该帧的主机将此多播地址与自己多播组列表中的地址进行逐一配对,如果有匹配的项,则接收,否则丢弃

IP地址

IP地址是TCP/IP体系结构的网际层所使用的的地址

IP地址是Internet上的主机和路由器所使用的的地址,由两部分信息构成

  • 网络编号:标识因特网上数以百万计的网络
  • 主机编号:标识同一网络上不同主机(或路由器各接口)

MAC地址不具备区分不同网络的功能,而IP地址可以通过网络号做到

如果只是一个单独网络,不接入因特网,则使用MAC地址就足够了(这不是一般用户的应用方式)
如果主机所在的网络要接入因特网,则IP地址和MAC地址都需要使用​​​​​​​

  • 数据报转发过程中源IP地址和目的IP地址保持不变
  • 数据包转发过程中源MAC地址和目的MAC地址(由ARP协议获得)逐个链路改变
  • 路由器上有路由表,记录了要到目的IP地址,先要走哪些路(即下一跳位置)。所以H1起初只带有目的IP地址,查询路由表后路由器指路,从而知道下一步该往哪里走,从而不断转发直至到达目的地。

ARP协议

地址解析协议ARP属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获取到设备的MAC地址

  • 数据的发送需要经过链路,仅仅知道IP地址是无法在数据链路层实现传输的,因此我们需要得到IP地址与MAC地址的对应关系,即地址解析。
  • 每台主机都会有一个ARP高速缓存表,记录有IP地址与MAC地址的对应关系
  • 初始ARP高速缓存表为空,假设此时B知道CIP地址,准备发送信息,但是由于不知道CMAC地址,因此无法封装数据帧,所以此时会广播一个ARP请求报文(封装在MAC帧中,目的地址为广播地址FF-FF-FF-FF-FF-FF),内容如下:
  • ARP高速缓存条目有静态与动态两种类型
    • 动态代表是通过广播自动获取的条目,生命周期默认为两分钟
    • 静态是手工设置的条目,不同操作系统下的生命周期不同。
  • ARP协议只能在一段链路或一个网络上使用

1.5 集线器与交换机

集线器

集线器HUB的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。

  • 使用集线器的以太网在逻辑上仍是一个总线网,各站共享总线资源,使用的还是CSMA/CD协议
  • 集线器只工作在物理层,它的每个接口仅简单地转发比特,不进行碰撞检测(由各站网卡检测)
  • 集线器一般都有少量的容错能力和网络管理功能。例如,若网络中某个网卡出了故障,不停地发送帧。此时,集线器可以检测到这个问题,在内部断开与出故障网卡的连线,使整个以太网仍然能正常工作
  • 集线器是半双工模式,收发不能同时进行,收到帧后会广播到除本身接口外的各个接口
 交换机

交换机是一种负责转发信号的网络设备,可以为接入交换机的任意两个网络节点提供独享的电信号通路

  • 以太网交换机通常由多个接口,每个接口都可以直接与一台主机或另一个以太网交换机相连。一般都工作在全双工方式

  • 以太网交换机具有并行性,能同时连通多对接口,使多对主机能同时通信,无碰撞(不使用CSMA/CD协议)

  • 以太网交换机一般都具有多种速率的接口

  • 以太网交换机工作在数据链路层(也包括物理层),它收到帧后,在帧交换表中查找帧的目的MAC地址所对应的接口号,然后通过该接口转发帧

  • 以太网交换机是一种即插即用的设备,其内部的帧交换表是通过自学习算法自动地逐渐建立起来的

  • 帧的两种转发方式

    • 存储转发
    • 直通交换:采用基于硬件的交叉矩阵(交换时延非常小,但不检查是否有差错)

MAC地址表中的每条记录都有自己的有效时间,到期自动删除。这是因为MAC地址与交换机接口的对应关系并不是永久性的

STP生成树协议

STP可以在增加冗余链路来提高网络可靠性的同时又避免网络环路带来的各种问题 

生成树原理

  • 不论交换机之间采用怎样的物理连接,交换机都能够自动计算并构建一个逻辑上没有环路的网络,其逻辑拓扑结构必须是树型的(无逻辑环路)​​​​​​​
  • 最终生成树的逻辑拓扑要确保连通整个网络
  • 当首次连接交换机或网络物理拓扑发生变化时(有可能是人为改变或故障),交换机都将进行生成树重新计算

 

VLAN虚拟局域网

一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组具有某些共同的需求,每个VLAN就是一个独立的广播域 

随着交换式以太网规模的扩大,广播域相应扩大,而巨大的广播域会带来很多弊端​​​​​​​

  1. 广播风暴

    如数台交换机连接了数台主机,当主机A要向主机B发送数据帧,此时各交换机的MAC表均为空,因此帧每到一个交换机就会进行泛洪,由于网络巨大,因此泛洪的范围也巨大

  2. 难以管理和维护

  3. 潜在的安全风险​​​​​​​

交换机端口类型

缺省VLAN ID

华为交换机上叫PVID每个端口有且只有一个PVID。默认情况下端口的PVID都为1(即端口属于VLAN 1

端口上接收时总希望能够打上标签,发送出去时候总希望能去除标签

①Access端口

Access端口一般用于终端设备与交换机之间

​​​​​​​注意:交换机与路由器连接的接口也需要使用access接口。这是因为路由器中的消息也不带VLAN标签,就像终端一样,保证路由器的数据能够进入交换机领域,数据由路由器进入交换机是会被打上默认标签,接着猜按照交换机间VLAN的规则行走。简单理解就是把路由器当作终端 

  • 交换机初始端口类型是Access

  • Access端口只能属于一个VLAN

  • Access端口的PVID值与端口所属VLAN的ID相同(默认为1)

②Trunk端口

  • Trunk端口一般用于交换机之间或交换机与路由器之间的互连
  • Trunk端口可以属于多个VLAN
  • 用户可以设置Trunk端口的PVID值,默认情况下,Trunk端口PVID值为1

③Hybrid端口

  • Hybrid端口既可以用于交换机之间或交换机与路由器之间的互连(同Trunk端口),也可用于交换机与用户计算机之间的互连(同Access端口)
  • Hybrid端口可以属于多个VLAN(同Trunk端口)
  • 用户可以设置Hybrid端口的PVID值。默认情况下,Hybrid端口的PVID值为1

​​​​​​​

 

相关文章:

计算机网络之数据链路层

一、概述 1.1概述 物理层发出去的信号需要通过数据链路层才知道是否到达目的地&#xff1b;才知道比特流的分界线 链路(Link)&#xff1a;从一个结点到相邻结点的一段物理线路&#xff0c;中间没有任何其他交换结点数据链路(Data Link)&#xff1a;把实现通信协议的硬件和软件…...

前端新手Vue3+Vite+Ts+Pinia+Sass项目指北系列文章 —— 系列文章(目录)

系列文章目录 第一章 技术栈简介 (开篇) 第二章 环境部署 (Node等环境安装) 第三章 项目创建 (Vite项目初始化) 第四章 认识项目目录 (项目整体介绍) 第五章 组件库安装和使用(Element-Plus基础配置) 第六章 样式格式化 (Sass配置) 第七章 路由配置 (vue-router深入解读) 第八…...

uniapp 给小程序添加分享功能

在 Uni-app 中&#xff0c;要为小程序添加分享功能&#xff0c;你可以通过使用小程序的自定义分享组件或通过配置页面的分享信息来实现。下面我将分别介绍这两种方法。 方法一&#xff1a;使用小程序的自定义分享组件 在小程序中&#xff0c;你可以创建一个自定义的分享组件&…...

npm命令

node -v --查看版本 npm install --安装npm npm config get registry --查看npm当前镜像 npm config set registry https://registry.npmmirror.com --设置淘宝镜像 npm版本管理工具...

Halcon Solution Guide I basics(3): Region Of Interest(有兴趣区域/找重点)

文章目录 文章专栏前言文章解读前言创建ROI案例1&#xff1a;直接截取ROI手动截取ROI 总结ROI套路获取窗口句柄截取ROI区域获取有效区域 Stop组合 文章专栏 Halcon开发 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 前言 今天来看第三章内容&#xff0c;既然是…...

以太坊铭文聚合交易平台 Scorpio,铭文爆发的新推手?

在今年 3 月&#xff0c;Ordinals 凭空问世&#xff0c;定义了一套在比特币网络运行的序数协议&#xff0c;使得 Token 和 NFT 能在比特币网络上实现并稳定运行&#xff0c;拉来了比特币铭文市场的新序幕。而在此后&#xff0c;在包括 BRC20 等在内的一系列应用的出现&#xff…...

Socket通信之网络协议基本原理

一台机器将自己想要表达的内容&#xff0c;按照某种约定好的格式发送出去&#xff0c;当另外一台机器收到这些信息后&#xff0c;也能够按照约定好的格式解析出来&#xff0c;从而准确、可靠地获得发送方想要表达的内容。这种约定好的格式就是网络协议&#xff08;Networking P…...

linux 开发板以太网通过Ubuntu上外网方法

在开发板嵌入式设备&#xff0c;有一个mgbe网卡&#xff0c;用网线与连接soc的网卡&#xff0c;和外接网卡&#xff0c;将网卡usb接口插入电脑&#xff0c;选择接入到Ubuntu系统 在Ubuntu将能识别到这个外接网卡&#xff0c;这样就可以通过Ubuntu和soc通讯了&#xff0c; 如下…...

DependencyProperty.Register:wpf 向别的xaml传递参数

一.使用背景&#xff1a;在A.xaml中嵌入B.xaml&#xff0c;并且向B.xaml传递参数。 函数介绍&#xff1a; public static DependencyProperty Register(string name, Type propertyType, Type ownerType );name&#xff08;string&#xff09;&#xff1a; 依赖属性的名称。在…...

uvm白皮书练习_ch2_ch231_加入transaction

2.3 为验证平平台加入各种组件 uvm白皮书练习_ch2_ch231_加入transaction 代码部分 top_tb.sv timescale 1ns / 1ps include "uvm_macros.svh"import uvm_pkg::*; /*只能现在*/include "my_if.sv" include "my_transaction.sv" include "…...

python-泛型实现,类型检查

python-泛型实现&#xff0c;类型检查 泛型类型泛型类 在Python中&#xff0c;没有像Java中的泛型那样的明确语法来指定类型参数。Python是一种动态类型语言&#xff0c;可以灵活地处理不同类型的对象。 然而&#xff0c;如果你希望在Python中添加泛型的注释或提示&#xff0c;…...

黑马React18: Redux

黑马React: Redux Date: November 19, 2023 Sum: Redux基础、Redux工具、调试、美团案例 Redux介绍 Redux 是React最常用的集中状态管理工具&#xff0c;类似于Vue中的Pinia&#xff08;Vuex&#xff09;&#xff0c;可以独立于框架运行 作用&#xff1a;通过集中管理的方式管…...

visionOS空间计算实战开发教程Day 5 纹理和材质

在​​Day 4​​​中我们使用了​​ImmersiveSpace​​并在其中添加了一个立方体&#xff0c;但对这个立方体我们只配置了长宽高&#xff0c;并没有做进一步的操作。 本文中我们会通过纹理和材质对这个立方体的六个面分别进行不同的绘制。首先我们将​​ImmersiveView​​分拆…...

低代码PaaS开发平台

目录 一、低代码概念 低代码目的 低代码核心功能 二、PaaS平台 PaaS服务的低代码平台 1.私有化部署&#xff0c;为数据安全保驾护航 2.业内领先技术&#xff0c;为开发强势赋能 3.超强集成能力&#xff0c;系统对接无忧 4.源代码交付&#xff0c;实现二开自由 三、小结 一、低代…...

阿里云99元服务器ECS经济型e实例性能如何?测评来了

阿里云服务器优惠99元一年&#xff0c;配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;CPU采用Intel Xeon Platinum架构处理器&#xff0c;2.5 GHz主频&#xff0c;3M带宽下载速度384KB/秒&#xff0c;上传速度1028KB/秒&am…...

vue3-生命周期

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue3-生命周期 目录 vue3生命周期 vue3生命周期钩子 1.1 onMounted() 1.2 onUpdated() 1.3 onU…...

23. 深度学习 - 多维向量自动求导

Hi, 你好。我是茶桁。 前面几节课中&#xff0c;我们从最初的理解神经网络&#xff0c;到讲解函数&#xff0c;多层神经网络&#xff0c;拓朴排序以及自动求导。 可以说&#xff0c;最难的部分已经过去了&#xff0c;这节课到了我们来收尾的阶段&#xff0c;没错&#xff0c;生…...

挺扎心!好不容易有了一个offer,就因为背调出之前有仲裁记录,offer黄了,这已经是第二次了!...

仲裁记录会影响之后求职吗&#xff1f; 最近有一位程序员向我们讲述了他的遭遇&#xff1a; 大环境不好&#xff0c;好不容易有了一个offer&#xff0c;却因为背调出跟之前公司有仲裁经历&#xff0c;offer黄了&#xff0c;这已经是第二次因为这个原因黄offer了。 他说自己快抑…...

【brpc学习实践四】异步请求案例详解

注意 使用的还是源码的案例&#xff0c;添加个人注解。在前面的篇章我们讲解了客户端、服务端rpc构造的基本流程及同步、异步的案例基础之后&#xff0c;再理解此案例就容易了。 想直接看案例实现请看&#xff1a; server端实现 client端实现 服务端要点概览 controller ser…...

git命令 cherry-pick

参考&#xff1a;https://blog.csdn.net/weixin_42585386/article/details/128256149 https://blog.csdn.net/weixin_44799217/article/details/128279250 merge和cherry-pick的区别&#xff1a; merge&#xff1a;是把某一个代码分支完全合并到当前的代码分支。完全合并的意…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容&#xff1a;参考网站&#xff1a; PID算法控制 PID即&#xff1a;Proportional&#xff08;比例&#xff09;、Integral&#xff08;积分&…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...