考虑到通信链路中断的(Delay Tolerant Network, DTN)

文章目录

  • A Study of DTN for Reliable Data Delivery from Space Station to Ground Station
    • abstract
    • introduction
  • An Analytical Framework for Disruption of Licklider Transmission Protocol in Mars Communications
    • abstract
      • 本文贡献
    • OVERVIEW OF RELIABLE DATA TRANSMISSION OF LTP
    • 链路中断对 LTP 影响的分析模型

A Study of DTN for Reliable Data Delivery from Space Station to Ground Station

abstract

— 延迟/中断容忍网络 (DTN) 是一种网络技术,旨在管理没有一致的端到端链路连接的机会性连接,这在地面和太空通信环境中很常见。 DTN 被认为是实现深空网络的基线技术。 Licklider 传输协议 (LTP) 被视为太空中 DTN 的主要传输协议,无论是否存在随机链路中断和/或极长的传播延迟,都有望在充满挑战的网络环境中提供可靠的数据传输服务。美国国家航空航天局 (NASA) 已在国际空间站 (ISS) 上使用 DTN 协议向地球地面站传输数据。然而,在研究 LTP 在这种通信环境中可靠的数据/文件传输的性能方面所做的工作还很少,特别是在存在链路中断的情况下。 LTP 在空间站通信中的应用缺乏可靠的性能评估。本文提出了一个分析框架来评估 LTP 在空间站和地面站之间可靠文件传输的性能,重点关注可能发生在下行链路或上行链路上的链路中断的影响。还集成了由于通道错误导致的数据丢失的影响。使用基于 PC 的实验基础设施进行真实的数据块传输实验,以验证分析模型。

introduction

人们普遍认为,极长的信号传播延迟、长时间且频繁的链路中断、高数据丢失率和高度不对称的信道速率是降低深空链路数据传输性能的主要因素。延迟/中断容忍网络 (DTN) [1] 是作为实现星际深空网络 [2] 的基线网络技术而开发的。作为DTN协议栈的核心“叠加”协议,捆绑协议(BP)[3]旨在为DTN中基于托管的数据传输服务构建“存储转发”叠加网络。 BP 通过调用称为“汇聚层适配器”(CLA)的接口服务来利用底层网络的传输协议。 CLA 反过来在所谓的“汇聚层”上运行底层数据传输协议栈。

针对太空中 DTN 的主要传输协议,Licklider 传输协议 (LTP) [4]、[5] 预计能够在具有挑战性的网络环境中提供可靠的数据传输,无论是否存在随机链路中断和/或极长的传播延迟。与普遍使用的传输控制协议(TCP)一样,LTP 实现基于自动重复请求(ARQ)的重传方案。然而,LTP以连续的方式实现其基本协议数据单元protocol data units(PDU)(即块)的多个并发传输[5],而不需要等待确认(ACK)。此外,为了满足各种应用需求,LTP还提供了选择性的数据传输服务:用户可以选择TCP类型的可靠传送服务或UDP类型的不可靠传送服务。

虽然DTN的最初意图主要是针对链路时延极长的深空通信,但当链路时延不是很长时,DTN协议也因其对频繁或随机间歇性链路连接的场景的有效容忍而受到业界的广泛认可。 ,甚至通过地面链路。这种应用的一个典型例子是从国际空间站(ISS)到地面站的可靠数据传输[6],因为地面站的数量和位置无法保证天地连续链路连通。在国际空间站通信中,由于地面站数量不足,不可能与地面站持续直接联系。因此,主空间站通信系统被设计为基于中继的架构——数据下行链路路径通过在更高的地球静止轨道(GEO)上运行的高带宽弯管卫星进行中继[7]。即使采用基于中继的架构,中继卫星联系窗口之间也可能存在连接故障。此外,由于大气和太阳天气事件等因素,也可能随机发生链路中断。

在卫星和空间网络的研究和开发方面已经开展了大量工作[8]-[12]。在将 DTN 概念应用于偏远地区连接和监视方面已经开展了一些工作,其中一些工作采用了纳米卫星和基于 WiFi 的无人机 [13]、[14]。 [15] 中介绍了卫星 DTN 的研究,重点关注基于卫星的网络场景。在这些场景中,无论是单播还是组播卫星通信场景,DTN的采用都显着提高了数据传输效率。然而,由于通信环境的差异,这些研究的大多数结果并不适用于国际空间站通信中可靠的文件/数据传输。

作为一种基于 UDP 的多路复用和安全传输协议,快速 UDP 互联网协议 (QUIC) [16] 引起了互联网社区的广泛关注。 QUIC 为结构化通信和快速连接建立提供流量控制流的传输服务。它已被考虑用于包括卫星通信在内的广泛应用。 QUIC 作为空间站和卫星通信在链路中断时的可能解决方案的性能评估正在进行中。

NASA喷气推进实验室(JPL)和其他学术团体联合做出了一些努力,在空间网络中运用DTN协议,包括BP[17]-[27]及其主要传输协议LTP[28]-[35]。然而,在大多数 LTP 研究中,链路中断的影响要么被忽略,要么被假定为传输时间的恒定偏移,即,链路中断持续时间只是简单地添加到总文件/数据传输时间中,而没有进行详细分析它如何真正影响数据块交付和传输性能。此外,简单地将中断持续时间添加到基线交付时间是块交付时间的非常粗略的近似值,这可能无法准确地表征 LTP 的性能。在[35]中,提出了火星通信中 LTP 的单链路中断事件影响的理论框架。

NASA 已在国际空间站上使用 DTN 协议将数据传输到地球地面站 [6]。文章 [36] 中还介绍了使用基于 PC 的测试台基础设施收集的一些初步实验结果,这些结果涉及 LTP 在链路中断的情况下从空间站到地面站可靠传输数据的性能。

然而,在分析 LTP 从空间站到地面站的可靠数据/文件传输的性能方面,特别是在存在链路中断的情况下,很少进行分析/建模工作。需要一个分析框架来对 LTP 进行可靠的性能评估,以实现空间站和地面站之间可靠的文件传输。

An Analytical Framework for Disruption of Licklider Transmission Protocol in Mars Communications

abstract

作为延迟/中断容忍网络(DTN)的主要数据传输协议之一,Licklider 传输协议(LTP)旨在在以频繁且长时间的链路中断和极长的信号传播为特征的星际互联网环境中提供可靠的数据传输延误。人们已经对 LTP 在地月和火星通信中的性能进行了一些研究。然而,迄今为止,链路中断对火星通信 LTP 的影响很少受到关注。本文提出了一个分析框架,用于分析链路中断对火星通信中 LTP 可靠数据传输和性能的影响。该分析重点关注各种链路中断如何影响传输尝试次数、随后的数据交换往返时间 (RTT),以及在火星通信中实现可靠数据块传输的 LTP 良好输出性能。该分析框架通过使用基于 PC 的实验基础设施进行的实际数据块传输实验进行了验证,并且可用于预测在存在链路中断的情况下深空飞行器通信通道上的 LTP 性能。

本文贡献

在之前类似的 LTP 研究中,假设链路中断对传输性能具有不变的影响,即中断持续时间只需添加到总文件/数据传输时间中。本文研究了链路中断对LTP的影响,对随机起始时间和任意持续时间的链路中断进行了具体分析。提出了一个分析框架,用于分析随机链路中断对火星通信中 LTP 可靠数据传输和性能的影响。该研究重点分析各种链路中断如何影响传输尝试次数以及随后的数据交换往返时间 (RTT) ,以及由此产生的 LTP 可靠数据块传输的良好输出性能。该框架通过使用基于 PC 的实验测试台基础设施的实际数据块传输实验进行了验证。

据我们所知,本文提出了该问题的第一个分析框架,并结合了链路中断对火星通信中 LTP 可靠数据传输影响的实验结果。该框架对于表征链路中断时 LTP 的操作和传输性能非常有用。使用分析和实验方法收集的定量结果预计将有助于协议配置和 LTP 的优化设计,以便在未来的火星和其他深空飞行任务中实现高度可靠和高效的数据传输。

OVERVIEW OF RELIABLE DATA TRANSMISSION OF LTP

如所讨论的,LTP可以被配置为通过将块(全部或部分)配置为“红色”部分和/或“绿色”部分来向数据块提供可靠传输服务和/或不可靠传输服务。对于设置为红色的新块的传输,在接收到来自客户端服务的块传输请求时,发送方根据底层链路最大传输单元(MTU)大小将块分割为多个红色LTP数据段以进行传输。发送方将最后一个数据段标记为异步检查点(CP)、红色部分结束(EORP)和块结束(EOB)[5]。 CP 定时器在排队的 CP 段被传输后启动。

可以从LTP接收器接收报告段(RS),请求重传未成功接收的数据段。如果 RS 指示数据块接收不完整(即,由于任何原因导致数据丢失),LTP 发送方将重新传输丢失的数据段。这些丢失的分段中的最后一个将作为 CP 重新传输。否则,如果RS指示成功接收到所有红色数据,则LTP发送方通过发送报告确认(RA)段来确认它。另一个中断 LTP 发送方的事件是先前设置的 CP 定时器到期 [4]。在这种情况下,需要重新启动CP段并启动新的定时器,并且LTP发送方返回到中断状态。

继上面对LTP可靠传输机制的简单描述之后,图1比较了“红色”数据块的LTP传输的两种场景。由于本研究主要关注链路中断的影响,因此场景适用于没有链路中断的传输(即图 1(a))或经历过链路中断的传输(即图 1(b))。为了简单起见,示出了每个块仅被分段为四个段以进行传输。

对于图1(a)中没有链路中断的LTP一般传输场景,交互传输过程遵循上述流程和算法。块的所有分段均以连续方式传输,最后一个分段标记为 CP/EORP/EOB。假设没有发生链路中断和信道错误,传输过程中不会发生数据丢失,并且所有数据段都在接收器处成功接收。然后,接收器发送 RS 以确认 CP 段和整个块的成功接收。作为响应,发送方向接收方发送 RA,从而结束整个块的传输。

对于图1(b)中存在链路中断的情况,与图1(a)中的情况类似,块的所有四个段都以连续方式传输。 CP 定时器在 CP 段被发送时启动。然而,最后一个段(即CP段)在传输过程中遇到链路中断并丢失。换句话说,由于链路中断,同步CP段没有在接收器处传送,因此,不应期望其相应的RS段到达发送器。

请注意,在链路中断期间,当先前设置的 CP 定时器到期时,将重新发送 CP 段。根据链路中断的持续时间,CP 段可能会重新发送多次,直到感知到链路已恢复。因此,链路中断事件对总块传送时间的时间贡献可以简单地估计为CP定时器长度和发送次数的乘积。

一旦数据链路恢复,最后重新发送的 CP 段就会成功传送到接收器。随着 CP 段成功传送,该块的所有四个段都被接收器成功接收。作为响应,接收器发送 RS,确认接收到先前发送的 CP 段。假设 RS 在发送方成功传递,它可以向发送方指示整个块已成功传递。然后,发送方发送 RA 作为响应,标志着块传输的结束,如图 1(a)所示。

在这里插入图片描述

链路中断对 LTP 影响的分析模型

本节介绍了链路中断对火星通信 LTP 影响的分析模型。表 I 列出了建模过程中使用的符号。这些模型是基于我们之前的工作 [20] 中开发的空间通信中 LTP 运行的系统模型构建的。

在这里插入图片描述
请注意,通道误差对 LTP 的影响已得到广泛研究 [21]、[23]、[25] 和 [29]。如果本研究中也考虑信道错误的影响,那么除了单独分析每个因素的影响之外,还需要仔细分析链路中断和信道错误的相互作用。这将使分析变得更加复杂;这项研究超出了本文的范围。为了准确分析链路中断对 LTP 的影响,本研究忽略了信道错误的影响;也就是说,假设所有数据丢失以及由此产生的额外文件传送时间都是由于链路中断事件导致数据链路不可用而发生的。

令ΔRTTDisrupt表示链路中断对LTP数据块传送的时间影响,即链路中断导致的RTT增量。这个效应可以写成

Δ R T T Disrupt  = R T T − R T T 0 \Delta R T T_{\text {Disrupt }}=R T T-R T T_{0} ΔRTTDisrupt =RTTRTT0

其中RTT是在存在链路中断的情况下LTP块传送的估计RTT,并且RTT0是在不存在链路中断的情况下LTP块传送的基线RTT。

[20]中提出的系统模型主要是为了估计LTP的RTT而建立的,这里重新回顾一下

Q. Yu et al., “Modeling RTT for DTN protocols over asymmetric cislunar
space channels,” IEEE Syst. J., vol. 10, no. 2, pp. 556–567, Jun. 2016.

R T T = 2 × T O W L T + T Block  + T R S + Δ R T T Disrupt  = 2 × T OWLT  + ( L Seg  + L Frame-Head  ) R Data  × ⌈ N Bundle  × ( L Bundle  + L Bundle-Head  ) L Seg  ⌉ + L R S R A C K + Δ R T T Disrupt  \begin{aligned} R T T= & 2 \times T_{O W L T}+T_{\text {Block }}+T_{R S}+\Delta R T T_{\text {Disrupt }} \\ = & 2 \times T_{\text {OWLT }}+\frac{\left(L_{\text {Seg }}+L_{\text {Frame-Head }}\right)}{R_{\text {Data }}} \\ & \times\left\lceil\frac{N_{\text {Bundle }} \times\left(L_{\text {Bundle }}+L_{\text {Bundle-Head }}\right)}{L_{\text {Seg }}}\right\rceil \\ & +\frac{L_{R S}}{R_{A C K}}+\Delta R T T_{\text {Disrupt }} \end{aligned} RTT==2×TOWLT+TBlock +TRS+ΔRTTDisrupt 2×TOWLT +RData (LSeg +LFrame-Head )×LSeg NBundle ×(LBundle +LBundle-Head )+RACKLRS+ΔRTTDisrupt 

这段代码描述了LTP(Licklider Transmission Protocol)协议中往返时延( R T T RTT RTT)的计算方式。LTP是一种用于延迟容忍型网络的协议,通常用于对抗高延迟、不可靠、带宽有限的网络环境,比如深空通信。

具体来说,这段代码中的符号表示了以下内容:

  • R T T RTT RTT:往返时延
  • T O W L T T_{OWLT} TOWLT:单向链路传输时延(One-Way Link Transmission Time)
  • T B l o c k T_{Block} TBlock:块处理时延
  • T R S T_{RS} TRS:接收段(Receiver Segment)处理时延
  • Δ R T T D i s r u p t \Delta RTT_{Disrupt} ΔRTTDisrupt R T T RTT RTT中的中断时间
  • L S e g L_{Seg} LSeg:分段长度
  • L F r a m e − H e a d L_{Frame-Head} LFrameHead:帧头长度
  • R D a t a R_{Data} RData:数据传输速率
  • N B u n d l e N_{Bundle} NBundle:捆绑数
  • L B u n d l e L_{Bundle} LBundle:捆绑长度
  • L B u n d l e − H e a d L_{Bundle-Head} LBundleHead:捆绑头部长度
  • R A C K R_{ACK} RACK:ACK(确认应答)传输速率
  • L R S L_{RS} LRS:接收段长度

这段代码的目的是计算从发送到接收并收到确认应答所需的总时延。

以下是前面关于公式计算细节的对话,使用了 A A A格式表示数学字符:

好的,让我来解释一下这个公式中的计算细节。

  1. 单向链路传输时延 ( T O W L T T_{OWLT} TOWLT):
    这个时延是指从发送端发送数据到接收端接收到数据所需的时间。它可以通过数据的大小除以发送速率来计算。公式中表示为 T O W L T = L S e g + L F r a m e − H e a d R D a t a T_{OWLT} = \frac{L_{Seg} + L_{Frame-Head}}{R_{Data}} TOWLT=RDataLSeg+LFrameHead,其中 L S e g L_{Seg} LSeg是数据分段的长度, L F r a m e − H e a d L_{Frame-Head} LFrameHead是帧头的长度, R D a t a R_{Data} RData是数据传输速率。

  2. 数据段分段及捆绑影响:
    数据段可能会被分段,并且多个数据段可能会被捆绑在一起传输,这可能会影响传输时延。具体地,分段后的数据段数量为 ⌈ N B u n d l e × ( L B u n d l e + L B u n d l e − H e a d ) L S e g ⌉ \lceil\frac{N_{Bundle} \times (L_{Bundle}+L_{Bundle-Head})}{L_{Seg}}\rceil LSegNBundle×(LBundle+LBundleHead),其中 N B u n d l e N_{Bundle} NBundle是捆绑数, L B u n d l e L_{Bundle} LBundle是捆绑长度, L B u n d l e − H e a d L_{Bundle-Head} LBundleHead是捆绑头部长度。

  3. 接收段处理时延 ( T R S T_{RS} TRS):
    这个时延是指接收端处理数据段的时间,包括接收数据、解析数据、执行相应的操作等。公式中表示为 T R S = L R S R A C K T_{RS} = \frac{L_{RS}}{R_{ACK}} TRS=RACKLRS,其中 L R S L_{RS} LRS是接收段的长度, R A C K R_{ACK} RACK是确认应答传输速率。

  4. R T T RTT RTT中的中断时间 ( Δ R T T D i s r u p t \Delta RTT_{Disrupt} ΔRTTDisrupt):
    这个是考虑到在往返时延过程中可能发生的中断时间,例如网络拥塞、丢包等引起的中断。

综上所述,公式中的每一项都代表了数据传输过程中的一个重要因素,通过这些因素的考虑,可以更准确地估计数据传输的总时延。

All the terms in (2) are defined in Table I.

The baseline RTT0 in (1) can be formulated as

R T T 0 = T B l o c k + 2 T O W L T + T R S R T T_{0}=T_{B l o c k}+2 T_{O W L T}+T_{R S} RTT0=TBlock+2TOWLT+TRS

在这里插入图片描述


RTO 是 TCP 协议中的一个重要概念,代表重传超时(Retransmission TimeOut)。在 TCP 协议中,当发送方发送数据包后,会等待接收方的确认应答(ACK),如果在一定的时间内未收到确认应答,就会认为数据包丢失了,此时就会触发 RTO,即重传超时机制,发送方会重新发送相同的数据包。

RTO 的值是根据网络状况动态调整的,通常受到往返时延(RTT)、网络拥塞等因素的影响。当网络延迟较高或者出现拥塞时,RTO 的值会增加,以减少误判丢包情况,提高传输的可靠性。反之,当网络状况良好时,RTO 的值会减小,以提高数据传输的效率。

总的来说,RTO 在 TCP 协议中起到了重要的作用,帮助发送方适应不同的网络环境,保证数据的可靠传输。


在 LTP(Licklider Transmission Protocol)协议中,checkpoint 是指在数据传输过程中的一个重要标记点。它用于记录发送方成功发送的数据,并且等待接收方对这些数据的确认。

在 LTP 协议中,数据传输可能会遇到各种不可靠的网络环境,比如高延迟、丢包等。为了确保数据的可靠传输,LTP 使用了类似于滑动窗口协议的机制,将数据划分为若干个块,并且在传输过程中不断地发送这些块,同时等待接收方的确认。

checkpoint 在这个过程中起到了关键作用,它标志着发送方成功发送了一段数据,并且等待接收方的确认。如果在发送方收到接收方对该 checkpoint 的确认之前发生了数据丢失或者超时,发送方会重新发送从该 checkpoint 开始的数据块,以保证数据的完整性和可靠性。

因此,checkpoint 在 LTP 协议中类似于一个标记点,用于指示发送方在数据传输中的进度,并且在需要时能够进行数据的重传,从而确保数据的可靠传输。


滑动窗口协议:

滑动窗口协议是一种用于在不可靠网络上进行数据传输的协议,它在网络通信中起到了重要的作用,特别是在TCP/IP协议栈中。

滑动窗口协议基于两个主要概念:发送窗口和接收窗口。发送窗口是指发送方在任意时刻可以发送的数据量的大小,而接收窗口则是接收方在任意时刻可以接收的数据量的大小。这两个窗口的大小可以动态地调整,以适应网络的变化。

滑动窗口协议的工作原理如下:

  1. 发送方维护一个发送窗口,它指示了发送方当前可以发送的数据段范围。
  2. 接收方维护一个接收窗口,它指示了接收方当前可以接收的数据段范围。
  3. 发送方发送数据段,并等待接收方的确认应答。
  4. 接收方接收数据段,并发送确认应答。
  5. 一旦发送方收到确认应答,就将发送窗口向前滑动,允许发送更多的数据段。
  6. 如果发送方在一定时间内未收到确认应答,就会重新发送发送窗口中的数据段。

通过这种方式,滑动窗口协议可以实现流量控制和拥塞控制,从而提高数据传输的效率和可靠性。同时,它也能够适应不同的网络条件,动态调整窗口大小,以提供最佳的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Excel转pdf

1、excel-内存值--Workbook 转pdf /** * excel To pdf * * param outPath 输出路径 * param workbook excel-内存值 * throws IOException */ public static void excelToPdf(String outPath,Workbook workbook) throws IOException, DocumentException { Document documentnul…

Android studio Gradle下载失败,如何手动配置解决该问题详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 前言: 今天在打开公司一个项目时,突然要重新下载相关的gradle&am…

图机器学习(4)-面向连接层面的人工特征工程

0 问题定义 通过已经连接去猜未知连接: 有两个思路: (1)直接提取link的特征,把link变成D维向量; (2)把link两端节点的D维向量拼在一起,缺点:丢失了link本身…

CSAPP-程序的机器级表示

文章目录 概念扫盲思想理解经典好图安全事件 概念扫盲 1.汇编代码使用文本格式,相较于汇编的二进制可读性更好 2.程序内存包括:可执行的机器代码、操作系统需要的信息、管理过程调用和返回的运行时栈、用户分配的内存块 3.链接器为函数调用找到匹配的可…

基于SpringBoot宠物领养系统的设计与实现(代码+数据库+文档)

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一、研究背景…

运维:记一次寻找定时任务并删除的经历

前言 我相信接手别人的服务器、或者在没有任何文档的情况去看自己原先的服务器,都或多或少会遇到莫名其妙的服务器独有规则。 比如你服务本身跑的好好的,突然啪的一下,没了! 什么原因导致的呢?其中,很大可能是定时任务在作祟。 原因分析 本次,我遇到的问题是:在Ubuntu系…

基于GitBucket的Hook构建ES检索PDF等文档全栈方案

背景 之前已简单使用ES及Kibana和在线转Base64工具实现了检索文档的demo,预期建设方案是使用触发器类型从公共的文档源拉取最新的文件,然后调用Java将文件转Base64后入ES建索引,再提供封装接口给前端做查询之用。 由于全部内容过长&#xff…

Linux学习:权限

目录 1. shell命令的工作原理与存在意义1.1 shell命令解释器存在的意义1.2 shell解释器的工作原理 2. Linux操作系统:用户2.1 什么是用户2.2 用户的切换操作2.3 用户权限划分的意义 3. Linux中权限的种类和意义3.1 什么是权限3.2 sudo指令与短暂提权 4. 文件类型与文…

伊理威科技:新手开抖店的教程

在数字浪潮中,抖音小店如星火燎原,吸引无数创业者。你是否也心潮澎湃,想要一试身手?别急,让我们一步步揭开开店的神秘面纱。 注册流程。想象一下,你只需在抖音平台上点击“我要开店”,按提示填写相关信息&…

前端javascript的DOM对象操作技巧,全场景解析

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 所属的专栏:前端泛海 景天的主页:景天科技苑 文章目录 1.js的DOM介绍2.节点元素层级关系3.通过js修改,清空节点…

Springboot+vue的养老院管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的养老院管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的养老院管理系统,采用M(model)V&…

四元数(Quaternion)的一些性质

四元数(Quaternion)是用于三维旋转和定向的四部分组成的超复数,超复数简单理解就是比abi这样的复数更复杂的复数,其中abi这样的复数我们也可以叫做二元数,表示复平面的一点,对于熟悉欧拉公式的朋友就知道,也可以看成是…

2024届 C++ 刷题 笔试强训 Day 01

选择题 01 以下for循环的执行次数是&#xff08;&#xff09; for(int x 0, y 0; (y 123) && (x < 4); x); A 是无限循环 B 循环次数不定 C 4次 D 3次 解题思路&#xff1a; 我们直接来看本道题中最关键的部分&#xff1a;(y 123) && (x < 4)。 (y…

OpenTenBase 开发环境搭建及Debug设置

最近有个 OpenTenBase开源核心贡献挑战赛 领导建议大家都去试试&#xff0c;我也去凑了下热闹&#xff0c;发现能力有限一时半会是搞不明白了&#xff0c;最多也就是能搞搞文档翻译&#xff0c;或者写点操作手册啥的。 不过不管怎么样&#xff0c;先把开发环境搭上&#xff0c;…

STM32day3

1.思维导图 1.总结任务的调度算法&#xff0c;把实现代码再写一下 /* Definitions for myTask02 */ osThreadId_t myTask02Handle; uint32_t myTask02Buffer[ 64 ]; osStaticThreadDef_t myTask02ControlBlock; const osThreadAttr_t myTask02_attributes {.name "myTa…

严刑拷打_微服务

文章详情 &#xff1a;&#x1f60a; 作者&#xff1a;Lion J &#x1f496; 主页&#xff1a; https://blog.csdn.net/weixin_69252724 &#x1f389; 主题&#xff1a; 微服务相关知识 ⏱️ 创作时间&#xff1a;2024年03月8日 ———————————————— 文章目…

webpack5:基本概念整理

写在前头&#xff1a;这篇文章只是我个人在学习过程中对webpack文档的简单总结&#xff0c;更多详细信息请在官网阅读。 一、webpack是什么 webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时&#xff0c;它会在内部从一个或多个入口…

掌握MySQL,看完这篇文章就够了!

1. MySQL MySQL是一种广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典的MySQL AB公司开发&#xff0c;目前属于甲骨文公司&#xff08;Oracle Corporation&#xff09;。 MySQL使用结构化查询语言&#xff08;SQL&#xff09;进行数据库管理…

C语言指针——常量字符串和 变量字符串

常量字符串和 变量字符串 常量字符串和变量字符串是在编程中常见的两种字符串类型&#xff0c;它们有以下区别&#xff1a; 值的不可变性&#xff1a;常量字符串的值是不可变的&#xff0c;一旦被定义&#xff0c;就不能修改。而变量字符串的值是可变的&#xff0c;可以随时修…

Redis进阶(三):主从复制

为了解决单点问题&#xff0c;实现多服务器部署redis&#xff0c;有几种解决方案可以实现&#xff1a;主从复制&#xff0c;主从哨兵还有集群。 何为主从复制 简单来说有三个服务器分别部署了redis-server程序&#xff0c;选中一个服务器当作主节点&#xff0c;其他的就是从节…