计算机网络学习笔记(三):数据链路层(待更新)

目录

3.1 基本概念

3.1.1 数据链路和帧

 3.1.2 三个基本问题

3.2 类型1:使用点对点信道的数据链路层(路由器)

3.2.1 点对点协议 PPP:特点

3.2.2 点对点协议 PPP:帧格式

3.2.3 点对点协议 PPP:工作状态

3.2.4 实战:抓包分析PPP协议的工作过程

3.3 类型2:使用广播信道的数据链路层(交换机/集线器)

3.3.1 局域网

3.3.2 广播信道的局域网(总线网、星形网)

3.3.3 以太网的标准

3.3.4 CSMA/CD协议:基本原理

3.3.4.1 碰撞检测:以太网最短帧

3.3.4.2 碰撞检测:冲突解决方法(退避算法)

 3.3.5 CSMA/CD协议:帧格式

3.3.6 以太网的信道利用率


3.1 基本概念

3.1.1 数据链路和帧

  • 链路/物理链路:一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
    • 一条链路只是一条通路的一个组成部分。
  • 数据链路/逻辑链路:物理链路 + 通信协议(控制数据的传输)
    • 现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。
    • 一般的适配器都包括了数据链路层和物理层这两层的功能。
  • :一般情况下,在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧。

  • 1:早期的数据通信协议叫做通信规程(procedure)。因此,在数据链路层,规程协议是同义语。
  • 2:数据链路层不必考虑物理层如何实现比特传输的细节,甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方。

 3.1.2 三个基本问题

        数据链路层的协议有多种,但有三个基本问题是共同的,分别如下:

  • 封装成帧:在一段数据(IP数据报)的前后分别添加帧首部帧尾部
    • MTU(Maximum Transmission Unit):数据链路层中的最大传输单元(网络层传输给数据链路层的IP数据报的最大长度)
      • MTU越大,帧中包含的有效数据越多,单次传输的数据量越多,传输次数越少,网络开销越小(优点)
      • MTU越大,占据链路的时间越长,网络延迟就会变大;而且如果一大段数据里面有一个 bit 出错了,这一大段就会整个重传,重传的代价是很大的(缺点)
      • 发送的数据过大分片操作(每个片都需要添加上IP首部)
      • 发送的数据过小填充操作,在实际数据内容后面添加填充数据,使得数据包总长度达到最小长度要求(填充数据可以是任意无意义的字节,例如全0或全1的数据)
      • MTU的默认值是1500字节
    • 帧首部、帧尾部:帧定界(确定帧的界限),并包含重要的控制信息
      • 控制字符SOH(Start of Header):放在帧首部,标识帧开始(二进制00000001)
      • 控制字符EOT(End of Transmission):放在帧尾部,标识帧结束(二进制00000100)

  • 透明传输
    • 问题引入帧的数据部分可能包含与帧首部/帧尾部控制字符编码相同的比特组合,数据链路层会错误地认为其是帧的边界。

  • 解决方案:字节填充(byte stuffing) 或 字符填充(character stuffing)
    • 发送端的数据链路层:在帧的数据部分出现的“SOH”或“EOT”字符前面插入一个转义字符ESC(二进制00011011
    • 接收端的数据链路层:在将数据送往网络层之前,删除插入的转义字符
    • :如果原始数据中包含转义字符ESC,则应在转义字符前面再插入一个转义字符ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

  • 透明:指某一个实际存在的事物看起来却好像不存在一样
    • “在数据链路层透明传送数据”表示无论发送什么样的比特组合的数据,这些数据都能够按照原样没有差错地通过这个数据链路层。
  • :不同数据链路层协议实现透明传输的方式不同,使用的转义字符也各不相同,但是都必须实现透明传输。
  • 差错控制
    • 问题引入:在传输过程中可能会产生比特差错,使得1可能会变成0,而0也可能变成1。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
      • BER(Bit Error Rate, 误码率):在一段时间内,传输错误的比特占所传输比特总数的比率(误码率与信噪比有很大的关系)

  • 解决方案:循环冗余检验CRC(广泛使用)  →  类比“寄书”
  • 发送端:假定数据划分为组(每组k位),在每组后面添加供差错检测用的n位冗余码
  • 接收端:对收到的每一帧进行同样的CRC检验
    • 余数R=0:判定帧没有差错  →  接受
    • 余数R≠0:判定帧有差错  →  丢弃

  • 冗余码的计算:假设原始数据为M,添加冗余码的位数为n位,除数为P(每种协议都必须事先定义好,且发送方和接收方都悉知)
    • Step1:用二进制的模2运算进行2^{n} M 的运算(相当于M后面添加n0
    • Step2:将Step1得到的(k + n)位数 除以 (n+1)位的除数P,得出商Qn位余数R
    • Step3:将余数R作为冗余码拼接在数据M后面,一起发送出去。
    • 除数的位数 要比 冗余码的位数 多1位

  • CRC VS. FCS
    • CRC(Cyclic Redundancy Check, 循环冗余检验):一种常用的检错方法
    • FCS(Frame Check Sequence, 帧校验序列):添加在数据后面的冗余码
    • FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法。
  • 无差错接受 VS. 无差错传输/可靠传输 VS. 无比特差错
    • 无差错接受:凡是接收端数据链路层接受的帧(即不包括丢弃的帧),我们都能以接近于1的概率认为这些帧在传输过程中没有产生差错(有差错的帧就丢弃而不接受)。对于CRC差错检测算法,只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小。但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。
    • 无差错传输/可靠传输:所有发送的数据都能被无差错接受(即发送什么就收到什么)
    • 无比特差错
    • 1:仅用循环冗余检验CRC差错检测技术,只能做到无差错接受,不能实现“无差错传输”或“可靠传输”。若要做到“无差错传输”,就必须再加上确认和重传机制
    • 2:本章介绍的数据链路层协议都是不可靠传输的协议。
  •  小结(重要!!!):当传输数据为ASCII 码打印字符组成的文本文件时,传输数据不可能含有控制字符(SOH/EOT/ESC等),此时无需考虑透明传输;当传输数据为图片或程序时,传输数据就可能含有控制字符(SOH/EOT/ESC等),此时需要考虑透明传输。

3.2 类型1:使用点对点信道的数据链路层(路由器)

        对于点对点的链路,目前使用的数据链路层协议有:

  • PPP(Point-to-Point Protocol, 点对点协议):1994年成为互联网的正式标准(使用最广泛)
  • HDLC(High-level Data Link Control, 高级数据链路控制)

3.2.1 点对点协议 PPP:特点

  • PPP 协议应满足的需求
    • 简单:首要要求
    • 封装成帧:必须规定特殊的字符作为帧定界符
    • 透明传输:必须保证数据传输的透明性
    • 差错检测:接收端能够对收到的帧进行检测,并立即丢弃有差错的帧
    • 最大传送单元:必须对每一种类型的点对点链路设置最大传送单元  MTU的标准默认值,促进各种实现之间的互操作性
    • 多种网络层协议:能够在同一条物理链路上同时支持多种网络层协议
    • 多种类型链路:能够在多种类型的链路上运行(不同接口)
    • 检测连接状态:能够及时自动检测出链路是否处于正常工作状态
    • 网络层地址协商:必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址
    • 数据压缩协商:必须提供一种方法来协商使用数据压缩算法
  • PPP 协议不需要的功能
    • 纠错
    • 流量控制
    • 序号
    • 多点线路
    • 半双工或单工链路

3.2.2 点对点协议 PPP:帧格式

封装成帧

PPP 帧的首部和尾部分别为4个字段和2个字段:

  • 标志字段F(Flag):0x7E
    • 作用:帧定界符,标识帧的开始和结束位置
    • 0x:表示后面的字符是用十六进制表示
  • 地址字段A(Address):0xFF(全1)  →  固定值(保留字段)
    • 作用:无实际作用(形同虚设)
    • :PPP协议不需要目标MAC地址
  • 控制字段C(Control):0x03  à  固定值(保留字段)
  • 协议字段
    • 作用:标识IP数据报的内容类型
    • 0xC021:信息字段是PPP链路控制数据(LCP报文)
    • 0xC023:信息字段是鉴别数据(PAP报文)
    • 0xC223:信息字段是鉴别数据(CHAP报文)
    • 0x8021:信息字段是网络控制数据(IPCP报文)
    • 0x0021:信息字段就是IP报文
  • :PPP是面向字节的,所有PPP帧的长度都是整数字节

透明传输

问题引入:当帧的数据部分包含与帧首部/帧尾部编码相同的比特组合时(即数据部分出现0x7E),如何解决?

  • PPP用在同步传输链路
    • PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。
    • 同步传输
      • 前同步码:同步发送端和接收端的时钟,规定单位比特所占时间
    • 透明传输的实现零比特填充(硬件实现)(同HDLC)
      • 发送端:只要发现有5个连续1,则在后面插入1个0(即便数据含有0x7E,插入0后,接收端就不会将其视为帧定界符,从而正常接收)
      • 接收端:只要发现有5个连续1,则删除后面的1个0

  • PPP用在异步传输
    • 异步传输:逐个字节地传送,且每个字节的前面添加低电平的起始位 以及 后面添加高电平的停止位
    • 透明传输的实现字符填充字节填充
      • 当信息字段中出现字节0x7E,则转变成为2字节序列(0x7D, 0x5E)
      • 当信息字段中出现字节0x7D, 则转变成为2字节序列(0x7D, 0x5D)
      • 当信息字段中出现ASCII码控制字符(即数值小于0x20的字符),则在该字符前面要插入一个0x7D字节,同时将该字符的编码加以改变。

        PPP 协议不使用序号和确认机制,有如下几点原因:

  • 在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理。
  • 在因特网环境下,PPP的信息字段放入的数据是IP数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
  • 帧检验序列FCS字段可保证无差错接受。

3.2.3 点对点协议 PPP:工作状态

     家庭用户的电脑通过网线连接光猫(调制解调器),再通过电话线连接Internet,建立PPP拨号的过程:

  • 当用户拨号接入ISP时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
  • PC机向路由器发送一系列的LCP分组(封装成多个 PPP 帧)。
  • 这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP给新接入的PC机分配一个临时的IP地址,使PC机成为因特网上的一个主机。
  • 通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着,LCP释放数据链路层连接。最后释放的是物理层的连接。
  • 可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

PPP 协议的3个工作步骤:

  • 阶段1LCP协商阶段(链路建立阶段)
    • 全称:Link Control Protocol 链路控制协议
    • 作用:协商端口参数,如下所示
      • MRU:最大接收单元
      • 认证协议:采用何种身份验证方式(PAP认证?CHAP认证)
      • 魔术字:随机数(请求和确认的魔术字需要一致,指明某一确认报文是针对哪一请求报文的回复)

  • 阶段2身份认证阶段(两种方式)
    • 方式1:PAP认证
      • 全称:Password Authentication Protocol 密码认证协议
      • 特点:密码在网络中以明文形式传输

  • 方式2:CHAP认证
    • 全称:Challenge Handshake Authentication Protocol  质询握手认证协议
    • 特点加密认证
    • 原理:首先,由服务器端给客户端发送挑战challenge(携带随机数),客户端根据challenge 对口令进行加密,算法是md5(password,challenge,ppp_id)。然后,客户端将加密结果MD5发送给服务器端,服务器端从数据库中取出口令password2,同样进行加密处理md5(password2,challenge,ppp_id)。最后,比较加密的结果是否相同。如果相同,则认证通过,向客户端发送认可消息。

  • :若在LCP协商阶段,双方都不要求身份认证,则不需要经过阶段2(即直接从阶段1跳到阶段3)
  • 阶段3IPCP协商阶段(网络层协商阶段)(两种方式)
    • 全称:Network Control Protocol 网络控制协议
      • :NCP为统称,具体到TCP/IP中的IPCP,N指的是IP
    • 作用:协商网络参数
    • 方式1:静态IP地址(两端地址不冲突,且在同一个网段内)

  • 方式2:动态IP地址(IP地址自动配置)
    • 当计算机拨号上网时,营运商会给计算机自动分配一个IP地址

3.2.4 实战:抓包分析PPP协议的工作过程

阶段1:

 阶段2:

阶段3:

3.3 类型2:使用广播信道的数据链路层(交换机/集线器)

3.3.1 局域网

  • 局域网的特点
    • 网络为一个学校、单位、企业所拥有
    • 地理范围站点数目均有限
  • 局域网的优点
    • 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源。
    • 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
    • 提高了系统的可靠性、可用性和残存性。
  • 局域网的实现(拓扑结构):局域网的拓扑结构有哪些 • Worktile社区
    • 实现1总线网(所有设备都连接到同轴电缆上)
      • 原理:将网络中的所有设备通过相应的硬件接口直接连接到公共总线上,结点之间按广播方式通信,一个结点发出的信息,总线上的其它结点均可“收听”到。
      • 优点
        • 结构简单,可扩充性好
        • 当需要增加节点时,只需要在总线上增加一个分支接口便可与分支节点相连,当总线负载不允许时还可以扩充总线
        • 使用的电缆少,且安装容易
        • 使用的设备相对简单,可靠性高
      • 缺点:维护难,分支节点故障查找难

  • 实现2星形网(所有设备都连接到集线器上)

  • 实现3:环形网

  • 媒体共享技术
    • 静态划分信道
      • 频分复用
      • 时分复用
      • 波分复用
      • 码分复用
    • 动态媒体接入控制(多点接入)
      • 随机接入
      • 受控接入,如多点线路探询 (polling),或轮询。

3.3.2 广播信道的局域网(总线网、星形网)

  • 总线型拓扑结构:使用同轴电缆组建的局域网(早期)  à  广播信道
    • 问题引入:若两端不添加匹配电阻,则信号无法反射,即无法通信;若两端添加匹配电阻,则电阻会吸收能量。(无法克服的弊端)
    • 解决方案:引入“集线器”(见下)

  • 星型拓扑结构:使用集线器组建的局域网(2000年以前)  à  广播信道
    • 问题引入:若多个设备在共享的广播信道上同时发送数据,则会造成彼此干扰,导致发送失败。
    • 解决方案:引入CSMA/CD机制通信(见“3.3.4节”)

3.3.3 以太网的标准

  • 以太网(Ethernet)是一种计算机局域网组网技术。IEEE制定的IEEE 802.3标准给出了以太网的技术标准,即以太网的介质访问控制协议(CSMA/CD)及物理层技术规范(包括物理层的连线、电信号和介质访问层协议的内容)。
  • 在IEEE 802.3标准中,为不同的传输介质制定了不同的物理层标准
    • 前面的数字:传输速度(单位是“Mb/s”)
    • Base:基带信号(数字信号)
    • 最后的数字:单段网线长度(单位是“100m”)

​​​​​​​​​​​​​​​​​​​​​

3.3.4 CSMA/CD协议:基本原理

  • CSMA/CDCarrier Sense Multiple Access with Collision Detection 载波监听多点接入(多路访问)/碰撞检测(冲突检测(带冲突检测的载波侦听多点接入技术)
    • 多点接入:许多计算机以多点接入的方式连接在一根总线上
    • 载波监听:在发送数据之前,计算机先检测总线上是否有其他计算机在发送数据。如果有,则暂时不要发送数据,以免发生碰撞。
      • 总线上并没有什么“载波”。因此,“载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
      • :即便通过“载波监听”技术检测出总线上没有信号,但是开始发送数据后也有可能和迎面而来的信号在链路上发生碰撞。因此,需要引入“碰撞检测”技术。

  • 碰撞检测(冲突检测):计算机一边发送数据一边检测信道上的信号电压大小
    • 工作原理:当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加)。在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
    • 工作过程:当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。一旦发现总线上出现了碰撞,就要立即停止发送,以免继续浪费网络资源,然后等待一段随机时间再次发送

  • :A最长需要2倍单程传播时延的时间,才能检测到与B的发送产生了冲突

  • 1:CSMA/CD就是广播信道使用的数据链路层协议,凡是使用CSMA/CD协议的网络就是以太网
  • 2:使用CSMA/CD协议的以太网不可能进行全双工通信只能进行半双工通信(双向交替通信)
  • 3:由于点到点链路不用冲突检测,因此没必要使用CSMA/CD协议。

3.3.4.1 碰撞检测:以太网最短帧

  • 问题引入在数据发送期间,计算机A没有收到碰撞信号,60比特的数据全部成功发送完毕。但是,在数据传输期间,计算机A的信号和计算机B的信号在链路C处发生了碰撞。此时,当碰撞信号返回到A时,A无法判断该碰撞信号是哪一台计算机导致的,即A无法得知自己发送的帧是否发生了碰撞。因此,为了确保能够检测到发送的帧在总线上是否产生冲突,以太网的帧不能太短(否则就有可能检测不到自己发送的帧产生了冲突)。

  • 以太网最短帧带宽 * 2倍单程传播时延
    • 示例:以太网设计最大端到端长度为5km(实际上的以太网覆盖范围远远没有这么大),单程传播时延为大约为25.6μs ,往返传播时延为51.2μs ,10M标准以太网最小帧为:

  • 分析:如果以太网发送数据帧的前64字节没有检测出冲突,则后面发送的数据就一定不会发生冲突。换句话说,如果发生碰撞,就一定在发送前64字节之内。由于一旦检测出冲突就立即终止发送,这时发送的数据一定小于64字节,因此凡是长度小于64字节的帧都是由于冲突而异常终止的无效帧,只要收到了这种无效帧,就应当立即将其终止。
  • :以太网的带宽越大,所需的最短帧就越大

3.3.4.2 碰撞检测:冲突解决方法(退避算法)

        计算机要想知道发送的帧在链路上是否发生碰撞,必须等待 (争用期)。以太网使用截断二进制指数退避(truncated binary exponential backoff)算法来解决碰撞问题。

  • 确定基本退避时间:争用期2τ 。以太网把争用期定为51.2μs​​​​​​​ 。对于10Mb/s以太网,在争用期内可发送512bit,即64字节。也可以说争用期是512比特时间。1比特时间就是发送1比特所需的时间。所以这种时间单位与数据率密切相关。
  • 确定随机等待时间r ∙2τr 倍的争用期)
    • 重传的次数越多,随机数r 的可选择范围就越多,发生碰撞的概率就越低
    • r :从离散的整数集合[0,1,⋯,2^k-1] 中随机选取
    • k
      • 当重传次数不超过10时,参数k 等于重传次数
      • 当重传次数超过10时,参数k 一直等于10(不再增大)

k=Min[重传次数,10] ​​​​​​​

  • 注:当重传达16次仍不能成功时(表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告。

 3.3.5 CSMA/CD协议:帧格式

        常用的以太网MAC帧格式有如下2种标准:

  • Ethernet V2标准(以太网V2标准):使用最多
  • IEEE802.3标准

        Ethernet V2标准的帧比较简单,由五个字段组成:

  • 前两个字段:目标MAC地址(6个字节)、源MAC地址(6个字节)
  • 第三个字段:类型字段(2个字节)
    • 作用:标志上一层使用的是什么协议,以便把收到的MAC帧的数据上交给上一层的这个协议。
    • 0x0800:上层使用的是IP数据报
    • 0x8137:该帧是由Novell IPX发过来的。
  • 第四个字段:数据字段(46~1500字节)
    • 最大传输单元:1500字节
    • 最小传输单元:46字节
      • 最小传输单元  =  64字节(以太网最短帧) - 6字节(目标MAC地址) - 6字节(源MAC地址) - 2字节(类型字段) - 4字节(FCS)
      • 填充操作:当数据字段的长度小于46字节时
        • 发送端的数据链路层:在数据字段的后面加入一个整数字节的填充字段,以保证以太网的MAC帧长不小于64字节​​​​​​​
        • 接收端的数据链路层:根据网络层首部得知IP数据报的长度,从而将填充字节去掉

​​​​​​​

  • 最后一个字段:帧校验序列FCS(使用CRC检验)(4个字节)

        IEEE802.3标准规定,凡是出现下列情况之一,即视为无效的MAC

  • 情况1:帧的长度不是整数个字节
  • 情况2:使用CRC对收到的帧进行检验,查出有差错
  • 情况3:收到的帧的总长度不在64~1518字节之间   或 数据字段的长度不在46~1500字节之间
  • :对于无效的MAC帧,简单地丢弃,以太网不负责重传丢弃的帧。

3.3.6 以太网的信道利用率

  • 利用率的定义发送数据的时间整个时间的比例
    • 争用期n∙2τ
    • 发送该帧所需时间T_0(发送端发送第1个比特到最后1个比特所需时间)
    • 该帧传播时延τ (最后1个比特从发送端传输到接收端所需时间)
  • 利用率的计算
    • 有冲突时,信道利用率为:
      • 若想提高信道利用率,则发送时间T0 不能太短。以太网上的计算机争取到一次发送数据的机会不容易,一旦逮到时间发送数据,如果发送时间过短,信道利用率自然就很低。
      • 若想提高信道利用率,则n 最好等于0。换言之,以太网上的各个计算机发送数据不会产生碰撞(这显然已经不是CSMA/CD,而需要一种特殊的调度方法),并且能够非常有效的利用网络的传输资源,即总线一旦空闲就有一个站立即发送数据。

  • 无冲突时,信道利用率为:极限信道利用率(理想情况)​​​​​​​
    • 若要想提高极限信道利用率,则公式中的τT0 要尽可能小(即τ 要尽可能小T0 要尽可能大)。
    • ττ以太网网线的长度有关(τ 值要小,以太网网线的长度就不能太长)
    • T0 :带宽一定的情况下,T0帧的长度有关(T0 值要大,以太网的帧不能太短)

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为---PPP协议简介及示例配置

PPP协议简介 PPP是Point-to-Point Protocol的简称,中文翻译为点到点协议。与以太网协议一样,PPP也是一个数据链路层协议。以太网协议定义了以太帧的格式,PPP协议也定义了自己的帧格式,这种格式的帧称为PPP帧。 利用PPP协议建立的二层网络称为…

CSS盒子模型的详细解析

03-盒子模型 作用:布局网页,摆放盒子和内容。 盒子模型-组成 内容区域 – width & height 内边距 – padding(出现在内容与盒子边缘之间) 边框线 – border 外边距 – margin(出现在盒子外面) d…

基于Spring boot轻松实现一个多数据源框架

Spring Boot 提供了 Data JPA 的包&#xff0c;允许你使用类似 ORM 的接口连接到 RDMS。它很容易使用和实现&#xff0c;只需要在 pom.xml 中添加一个条目&#xff08;如果使用的是 Maven&#xff0c;Gradle 则是在 build.gradle 文件中&#xff09;。 <dependencies>&l…

VS2022更换背景壁纸逐步图示教程

&#x1f984;个人主页:修修修也 ⚙️操作环境:Visual Studio 2022 目录 一.下载壁纸插件 二.更改自定义壁纸 三.调整壁纸布局 一.下载壁纸插件 因为更改自定义壁纸需要一个插件的辅助,所以我们要先下载一个小插件 首先,打开VS2022,点击"扩展"->"管理扩…

PAM从入门到精通(十三)

接前一篇文章&#xff1a;PAM从入门到精通&#xff08;十二&#xff09; 本文参考&#xff1a; 《The Linux-PAM Application Developers Guide》 先再来重温一下PAM系统架构&#xff1a; ​ 更加形象的形式&#xff1a; ​ 五、主要函数详解 11. pam_open_session 概述&…

C语言求 n 阶勒让德多项式的值

完整代码&#xff1a; // 用递归法求 n 阶勒让德多项式的值 // 递归公式为&#xff1a; // n0,P(n)(x)1 // n1,P(n)(x)x // n>1,P(n)(x)((2*n-1)*x - P(n-1)(x) - (n-1)*P(n-2)(x)) / n #include<stdio.h>double func(int n,int x){if (n0){return 1;}if (n1){return…

Hadoop3教程(十):MapReduce中的InputFormat

文章目录 &#xff08;87&#xff09;切片机制与MapTask并行度决定机制&#xff08;90&#xff09; 切片源码总结&#xff08;91&#xff09;FileInputFormat切片机制&#xff08;92&#xff09;TextInputFormat及其他实现类一览&#xff08;93&#xff09; CombineTextInputFo…

44岁的「老板」想变年轻

作者 | 辰纹 来源 | 洞见新研社 从村办集体企业余杭县红星五金厂起家&#xff0c;到生产贴牌油烟机&#xff0c;再到注册“老板”商标&#xff0c;改制有限公司&#xff0c;老板电器已经走过了44个春秋。 在这44年中&#xff0c;老板电器是首家登陆资本市场的高端厨电企业&am…

uniapp高德地图ios 使用uni.chooseLocation选取位置显示没有搜索到相关数据

uniapp云打包后&#xff0c;高德地图ios选取位置显示“ 对不起&#xff0c;没有搜索到相关数据” 详细问题描述 废话不多说&#xff0c;直接上图 解决方案 1.打开高德地图开发平台 2.重新创建key 3.获取云打包时的ios报名作为安全码 4.使用生成的高德key更改manifest.json里…

IDEA同步代码到Gitee

参考博客 https://gitee.com/jakhyd/risk-operation.git

springBoot 日志

springBoot 日志 整合原理日志格式默认日志格式在配置文件中修改日志格式 在业务中写日志日志级别日志分组文件输出归档和切割归档切割 自定以日志系统切换默认日志场景 log4j2的使用 最佳实战 整合原理 规范&#xff1a;项目开发中不要编写&#xff1a;System.out.printIn()&…

UML软件哪个好?10款好用的UML工具和画图软件推荐!

UML&#xff08;统一建模语言&#xff09;图在处理复杂项目时&#xff0c;如软件开发、系统设计、业务流程分析或系统架构等&#xff0c;能够发挥巨大作用。 UML作为项目的通用蓝图&#xff0c;可以告知团队成员关于需要构建什么&#xff0c;它应该如何运作&#xff0c;以及不…

数据结构和算法(13):优先级队列

概述 按照事先约定的优先级&#xff0c;可以始终高效查找并访问优先级最高数据项的数据结构&#xff0c;也统称作优先级队列 优先级队列将操作对象限定于当前的全局极值者。 根据数据对象之间相对优先级对其进行访问的方式&#xff0c;与此前的访问方式有着本质区别&#xf…

springBoot--web--静态资源规则

规则一&#xff1a; 访问&#xff1a;/webjars/** 路径就去 classpath:/META-INF/resources/webjars/下载资源 a.maven导入依赖 规则二&#xff1a; 访问&#xff1a;/** 路径就去 静态资源默认的四个位置找资源 a. classpath:/META-INF/resources/ b.classpath:/resourc…

【UE5】 ListView使用DataTable数据的蓝图方法

【UE5】 ListView使用DataTable数据的蓝图方法 ListView 是虚幻引擎中的一种用户界面控件&#xff0c;用于显示可滚动的列表。它可以用于显示大量的数据&#xff0c;并提供了各种功能和自定义选项来满足不同的需求。 DataTable是虚幻引擎中的一种数据表格结构&#xff0c;用于存…

Flink学习笔记(三):Flink四种执行图

文章目录 1、Graph 的概念2、Graph 的演变过程2.1、StreamGraph (数据流图)2.2、JobGraph (作业图)2.3、ExecutionGraph (执行图)2.4、Physical Graph (物理图) 1、Graph 的概念 Flink 中的执行图可以分成四层&#xff1a;StreamGraph -> JobGraph -> ExecutionGraph -&g…

1811_spacemacs从v.0.200.13升级到v.0.200.14的几点变化感受

全部学习汇总&#xff1a; GreyZhang/editors_skills: Summary for some common editor skills I used. (github.com) 安装了全新的spacemacs的配置&#xff0c;查看了一下版本是v.0.200.14。在此之前&#xff0c;我使用的版本是v.0.200.13。现在还没有在这个配置上完成我所有的…

[opencv]图像和特征点旋转

本来说这是很简单的一个内容&#xff0c;图像旋转只需要使用opencv中自带的旋转函数即可完成&#xff0c;但是最近在做特征点旋转的时候发现使用内置rotate函数给图像旋转90度&#xff0c;再用getRotationMatrix2D得出的旋转矩阵对特征点旋转&#xff0c;画出来的特征点位置全部…

Nginx+keepalived 高可用双机热备—双主模式

双机高可用方法目前分为两种&#xff1a; 1&#xff09;Nginxkeepalived 双机主从模式&#xff1a;即前端使用两台服务器&#xff0c;一台主服务器和一台热备服务器&#xff0c;正常情况下&#xff0c;主服务器绑定一个公网虚拟IP&#xff0c;提供负载均衡服务&#xff0c;热备…

中文编程工具开发软件实际案例:酒店饭店餐饮点餐管理系统软件编程实例

中文编程工具开发软件实际案例&#xff1a;酒店饭店餐饮点餐管理系统软件编程实例图片如下 软件的安装方法&#xff1a; 软件绿色免安装&#xff0c;压缩包文件解压后&#xff0c;将文件夹复制到电脑的D或E盘里&#xff0c;将软件目录下的红色程序图标按右键发送到桌面快捷方式…