WiFi(Wireless Fidelity)基础(五)

news2024/11/17 1:56:45

目录
一、基本介绍(Introduction)
二、进化发展(Evolution)
三、PHY帧((PHY Frame )
四、MAC帧(MAC Frame )
五、协议(Protocol)
六、安全(Security)
七、802.11ac标准
八、802.11ad标准
九、802.11ax (WiFi 6)标准
十、WiFi直接连接(WiFi Direct)
十一、测试(Testing)
十二、WiFi射频测量(WiFi RF Meas.)

https://www.sharetechnote.com/

五、协议(Protocol)

有几种(a couple of)不同的WLAN操作模式。以下是我们通常使用的情况的协议序列(protocol sequence),其中我们有一个AP(Access Point\接入点),设备(客户端PC或智能手机WLAN)连接到接入点。

总体程序 (Overall Procedure)
详细的数据传输 (Data Transmission in Detail)
睡眠模式和数据流量 (Sleeping Mode and Data Traffic)

1、总体程序(Overall Procedure)

AP定期(periodically)发送(广播)一个称为Beacon信号的特殊信号,上面写着“我在这里…我在这里。我有能力做这个和那个…等等”。基本上,该信标类似于移动通信(例如WCDMA/LTE等)中的MIB/SIB+物理层同步信道(Sync channel)。AP每秒广播(broadcast)几次这个信标。信标传输间隔(Beacon transmission interval)包含在其中一个信标信息字段中。(请参阅信标数据字段Beacon data field)

当您在PC或智能手机上打开WLAN时,设备会首先检测并解码(detect and decode)此信标信号,并建立(establish)物理同步(physical synchronization)。

在建立物理同步之后,设备和WLAN网络经过认证过程(authentication process),然后经过关联过程(association process),这与手机通信中的注册过程(registration process)概念相似。

说到扫描(Speaking of scanning),有两种类型的扫描。一种被称为被动扫描(Passive Scan),另一种则被称为主动扫描( Active Scan)。如下所示(As shown below),在被动扫描中,设备扫描并检测来自AP的信标信号,并基于信标信号建立同步。在主动扫描模式下,设备向所有AP(或任何特定AP)广播(broadcast)探测请求(Probe Request),如果有任何AP检测到探测请求,则向设备发送探测响应(Probe Response)。
在这里插入图片描述
一旦他们通过(go through)了身份验证(Authentication)和关联过程( Association process),现在设备就可以发送和接收用户数据了。数据包交易(transaction)出现了一个棘手的问题(tricky issues),尤其是当一方试图传输一些东西时。WLAN没有专用信道(dedicated channel)的概念(例如,在UMTS移动通信中),并且它没有为每个单独的用户精心设计的物理/MAC层调度。基本上,他们可以在任何时候进行传输,但实际上设备无法在任何时候传输。如果它在另一个设备发送数据的同时发送一些数据,则数据可能在空中丢失,或者它将导致另一设备的数据丢失,因为来自两个设备的传输将相互干扰(interfer)。我们需要一些特殊的技术来防止这个问题的发生。在有线局域网中,我们使用一种名为CSMA/CD的技术,而在无线局域网中,则使用另一种名为GSMA/CA的技术。关于这些技术的细节,我将单独写一节。但该技术的目标/目的是确保一个设备在没有其他设备发送任何数据的情况下发送数据。

这里显示的跟踪日志(trace log)来自Aircrack NG教程(Tutorial):WPA数据包捕获解释。通常,步骤(1)~(7)对于大多数WLAN连接过程(attach process)来说是常见的,但之后的步骤会有所不同,具体取决于您在设备和接入点上设置的安全选项(security option)。(如果您想看到与步骤(8)及更高版本不同的示例,请参阅ePDG协议序列)

无线局域网用于在不干扰他人的情况下传输数据的技术如下所示。这个概念很简单。一个设备(我们称之为源设备)向另一个设备发送一个称为RTS的短信号(我们称其为目的地设备)。如果目的地设备成功地获得了RTS,那么它应该发送CTS。如果源设备成功地检测/解码(detect/decode)CTS,则它发送主数据。如果数据被目的地设备成功接收/解码,则目的地设备发送“ACK”。对于每一次数据包传输,都会重复此过程。

1)详细的数据传输(Data Transmission in Detail)

在时间方面,这种数据传输的更详细的过程可以如下图所示。

i) 源发送短RTS突发(burst),其中携带源、目的地和后续事务(following transaction)的持续时间(duration)。

ii)源周围的所有其他设备可以接收RTS突发。他们都在检查RTS是否适合自己。

iii)如果是针对其自身的并且介质(medium)是空闲的,则目的地设备(destination device)发送CTS,该CTS还携带后续事务的持续时间。

iv)现在,所有其他设备(除了“目的地”设备之外的相邻设备)也知道介质将从现在起被占用一定时间,他们将相应地设置他们的NAV(Network Allocation Vector/网络分配向量),使得它不会在该时间段内尝试感测和尝试发送任何东西。

在“碎片帧(Fragmented Frame)”的情况下,顺序如下:

2)睡眠模式和数据传输(Sleeping Mode and Data Transmission)

Reference :

[1] IEEE 802.11 - Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications

2、分布式协调功能DCF(Distributed Coordination Function)

DCF是WLAN MAC协议最基本的功能之一。该功能的主要作用是调度(schedule)基于CSMA/CA、退避(Backoff)和各种IFS(Inter Frame Space/帧间空间)的数据传输。整个DCF周期(algorithm/算法)如下所示(当然,它看起来比CAMA/CA+Backoff复杂得多:)。只要看一看整体情况,试着从中创造出你自己的故事。

步骤1:设备(Src)执行载波感应(Carrier Sensing),并检查信道是否空闲(free/idle)。如果信道在特定时间段内空闲(DIFS:DCF Inter Frame Space),则进入步骤2。

步骤2:Src(Initiator发起方)设备向Dest(Repient代表方)设备发送RTS。

步骤3:所有其他设备(除了Src和Dest之外的设备)基于RTS中的持续时间信息更新它们的NAV,使得它们在Src和Dest之间的通信完成之前不会尝试信道获取(channel acquisition)。

步骤4:Dest设备向Src设备发送CTS。

步骤5:所有其他设备基于CTS中的持续时间信息更新其NAV。

步骤6:在短时间的暂停(SIFS : Short Interframe Space/短帧间空间)之后,Src设备向Dest设备发送Data。

步骤7、Dest设备在接收到数据后的短时间段(SIFS:Short Interframe Space)向Src设备发送ACK。

步骤8:在完成一个数据传输周期后,所有设备(包括Src和Dest)都应该进行另一次短暂休息(DIFS)。

步骤9:然后,每个设备暂停一段特定的退避时间(这个退避周期是为每个设备随机确定的)。

3、点协调功能PCF(Point Coordination Function)

至少截至目前(2017年5月),在大多数WLAN通信中,没有用于数据调度(即数据传输和接收)的特定中心控制器。大多数调度是基于DCF(Distributed Coordination Function分布式协调功能)的。作为调度算法(scheduling algorithm)的另一种方式,引入了一种称为PCF的新算法,该算法(至少部分)与中心化控制器(centeralized controller)一起工作。然而,PCF并不是802.11规范中的强制(mandatory)算法。它是可选的,甚至认为规范本身是多年前敲定的。DCF基本上是基于竞争的算法,而PCF更像是无竞争的(Contention-Free)算法。

PCF的总体调度算法如下所示。如这里所示,即使在PCF中,也不是所有的数据通信都是在CF(Contention Free/无竞争)方法中完成的。它发生在CFP(Contention Free Period/无竞争期)和CP(Contention Period/竞争期)的交替时期。在本页中,我将主要关注CFP中正在发生的事情。关于CP中发生的事情,我建议您参考DCF页面。

在PCF操作中,称为PC(Point Coordinator in Access Point/接入点中的点协调器)的特殊调度器(scheduler)控制无线信道,并控制所有站点(WLAN用户设备)的数据调度(transmission and reception/发送和接收)。实际上,在PCF中,接入点在IFS(Interframe Space/帧间空间)期间通过传输信标(Beacon)劫持(hijack)无线电信道(radio channel),在IFS中没有人应该传输任何东西。

以下是PCF操作的示例。(事实上,PC控制每个工作站(Station)的方式可能有很多变化,但基本逻辑与此处所示的图表相似。

现在让我们更详细地看一下上图。

步骤(1):(如果载波空闲一定时间段(PIFS:PCF Inter Frame Space/PCF帧间空间)),AP发送信标(PIFS比DIFS短。这意味着信标是在传统调度方法的IFS内发送的)。由于此信标在没有人传输的情况下传输到介质(无线电信道)上,因此此消息将到达每个站点(WLAN设备),而不会有任何碰撞风险(risk of collision)。该信标携带关于AP的PCF能力的信息(有关详细信息,请参见信标帧部分)。通过这个步骤,AP将控制无线信道。

步骤(2):(如果AP有站A的数据),AP向站A发送[data]和[CF Poll(一种Grant)]。

步骤(3):由于站A从AP获得CF轮询(Grant),(如果它有AP的任何数据)它可以向AP发送[数据和ACK]。

步骤(4):(假设AP没有B站的数据),现在AP发送A站的[Ack]和B站的[CF Poll]。

步骤(5):由于B站从AP获得CF轮询(Grant),(如果它有AP的任何数据)它可以将[数据]发送到AP

步骤(6):在AP向所有设备提供CF轮询(Grant)之后,它发送最后一个站点(在这种情况下,站点B)的[ACK],并发送[CF End],以便通知所有设备(站点)这是CFP的结束。

Reference :
[1] PCF scheme
[2] MAC 802.11 Point Coordinator Function

4、网络分配向量NAV(Network Alloction Vector)

NAV是一种虚拟载波感应机制(virtual carrier sensing mechanism)。这是什么意思?我想你知道“载波感应(carrier sensing)”是什么意思。载波感测是一个WLAN站点物理测量(感测)介质(信道)中的能量水平的过程,以确定是否有任何通信已经由其他站点完成(参考CSMA/CA)。在实际的CSCM/CA过程中,站点进行物理测量以确定信道是否可用。

然而,有一种情况是,站可以在不执行物理测量(physical measurement)的情况下计算出信道的可用性。

一些WLAN MAC帧携带(例如RTS、CTS、ACK)称为“持续时间”的字段。如果站点解码这些帧并提取“持续时间”字段(Duration field),则可以在不执行任何物理测量的情况下确定信道何时可用。一旦它解码了这个“持续时间”信息,该站就将信息存储到内部配置字段(configuration field)中,这样它就不会在该时间段内尝试载波感应。

简单地说(Simply put),NAV是一个电台不应该发送任何东西的时间段。

以下是NAV如何配置的示例。

i) 站点(Src)正在向另一个站点(Dest)发送RTS帧

ii)站(Dest)检测来自站Src的RTS,并向站Src发送CTS帧。

iii)Src和Dest周围的所有其他站可以检测Src和Dest之间的RTS和CTS,因为这些帧在共享介质中广播( broadcast),并且解码RTS/CTS/ACK帧中包含的信息和contsruct NAV信息。

5、OFDMA系统

OFDMA(Orthogonal Frequency Division Multiple Access/正交频分多址)是从802.11ax(WiFi 6)引入的一种新技术。这是一种使WiFi AP能够同时与多个STA(用户)通信的技术。

OFDM和OFDMA之间的主要区别可以如下所示。在OFDM中,在给定的时间只有一个用户占用整个频谱(frequency spectrum)。相反(On the contrary),在OFDMA中,在给定时间,MULTIPLE用户可以将整个频谱划分为多个频率段(frequency segment),并与AP同时通信。在该方案中,使用不同频谱的每个用户——来自每个用户的信号彼此不冲突(即,CSMA/CA过程没有问题)。

注:OFDMA是从第一天起就在4G(LTE)、5G(NR)蜂窝通信(cellular communication)中使用的机制。因此,如果你有4G/5G蜂窝协议的经验,你就会熟悉这个概念。

现有的方法(OFDM)有什么问题?

为什么我们决定在WiFi中引入OFDMA?换句话说(In other words),现有的OFDM方法有什么问题吗?我不会说OFDM有任何问题,但我可以说它有一些低效率。低效率来自于这样一个事实,即在给定的时间,单个用户占据了整个频谱(spectrum),而在此期间没有其他用户可以通信。这将导致两个重要方面的效率低下。首先,这种类型的频谱分配(spectrum allocation)在许多情况下会造成资源浪费。一份报告显示,相当数量的WiFi流量只有256字节或更小,很明显,如此少量的流量需要全频谱。另一个问题是,它不允许多个用户(即多个用户)在给定时间同时通信,这意味着所有其他用户都应该等待,直到一个用户完成其通信。这将导致除一个用户之外的所有用户的时间延迟。

OFDMA解决了上述问题。OFDMA可以将整个频谱划分为多个段,这些段刚好足够每个用户使用,从而更有效地使用频谱。此外,它可以减少许多用户的时间延迟,因为多个用户可以同时通信,而无需等到其他用户完成通信。

OFDMA调度的基本单元 Basic Unit of OFDAM Scheduling = RU

如上所述,OFDMA的基本原理是将整个频谱分割成多个小段。然后出现了一个问题。它可以拆分多小的部分?极端地说(Extremely speaking),我们能把整个频谱分成单个子载波(subcarriers)的倍数吗?我们能把频谱分成任意数量的子载波的倍数吗?答案是否定的。如果我们将频谱划分为小到单载波或任意跨度(span),那么在资源分配信令过程(resource allocation signaling process)中会有巨大的开销(overhead),并导致基带信号处理(baseband signal processing)困难。因此,决定指定一组离散大小的频谱(discrete sized spectrum)用于传输。频谱段的允许大小被称为RU(Resource Unit/资源单元)。存在多个不同大小的RU,并且可能的大小根据全频谱的带宽(bandwidth)略有不同地变化。例如,在20Mhz频谱的情况下,RU的大小及其包括全频谱的组合如下所示。正如您所注意到的,最小大小的RU由26个子载波(2 Mhz)组成,第二小的RU由52个子载波(4 Mhz)构成,然后是106个子载波(8 Mhz),然后是242个子载波(20 Mhz)。如果信道带宽更宽,我们可以使用更多子载波的RU,如484个子载波(20MHz)、996个子载波(80MHz)。

如何安排下行链路(downlink)?

正如您可能注意到的,OFDMA在频谱利用(spectrum utilization)方面提供了更大的灵活性(flexibility)。我们的经验表明,“任何更灵活的东西”都需要“更复杂”的信号过程(即更复杂的控制机制)。在相同的逻辑中,与OFDM相比,OFDMA将需要稍微复杂一点的信令过程。在下行链路(即AP到站)的情况下,OFDMA信令过程进行如下。

(1) :AP发送一个称为MU-RTS(请求发送)的触发器(trigger)。与OFDM中使用的传统RTS相比,该触发将携带更多的信息。由于OFDMA涉及多个频谱段和多个用户(站),因此该触发器应携带更多信息,如多个用户的目的地地址和每个用户的RU数量(频谱宽度)等(对我来说,该触发器似乎类似于4G/5G蜂窝技术中的DCI)。基本上,这个触发器会说“我有数据要发送给你们所有人,你们准备好了吗?”。在这个步骤中,由于DL OFDAM,触发可以同时传递给所有用户。

(2) :触发器中指定的用户(站)发送CTS(清除发送)。这表示“是的,我准备好了”。在这个步骤中,由于UL OFDMA,所有用户都可以同时发送CTS。

(3) :AP同时(simultaneously)为所有用户发送数据。

(4) :AP向所有用户发送BAR(Block Ack Request/阻止确认请求)。上面写着“你们收到并解码了数据吗?”在这一步中,得益于DL-OFDAM,触发器可以同时发送给所有用户。

(5) :站点(用户)发送Block ACK,意思是“是的,我得到了数据并解码,没有问题”。在这个步骤中,由于DL OFDAM,触发可以同时传递给所有用户。

注:与4G/5G蜂窝通信相比,在蜂窝系统中也使用了类似于触发器和ACK的东西,但没有CTS和BAR这样的东西。在蜂窝系统中,触发器和数据之间的定时(timing)以及数据和ACK之间的定时由更高层消息或触发器本身预先配置。这意味着与蜂窝系统相比,WiFi 6仍然具有更多的信令开销(handshaking overhead/握手开销)。如果您对蜂窝通信中的OFDMA调度方式感兴趣,请参阅本(4G/LTE)和本(5G/NR)说明。

如何安排上行链路(uplink )?

用于上行链路的OFDMA调度进行如下。

(1) AP向多个用户(站)发送触发器(BSRP,Buffer Status Report Poll缓冲区状态报告轮询)。意思是“嘿!你们有什么数据要发给我吗。得益于OFDMA,AP可以同时向多个用户发送该分组。

(2) 多个用户(站)同时向AP发送BSR(Buffer Status Report/缓冲状态报告)。上面写着“是的,我有数据要发送”。得益于OFDMA,所有被分配的UE可以同时发送分组。

(3) AP向同时发送BSR的多个用户发送MU-RTS。上面写着“你准备好发送数据了吗?”由于OFDMA,AP可以同时将数据包发送给多个用户。

(4) 多个站(用户)同时向AP发送CTS。上面写着“是的,我已经准备好发送了”。所有被分配的UE都可以同时发送该分组。

(5) AP向多个站发送触发器。上面写着“站1,你可以使用这个RU发送数据,站2,你可以用这个RU等发送数据”。得益于OFDMA,AP可以同时向多个用户发送该分组。

(6) 每个用户(站)同时发送数据。所有被分配的UE都可以同时发送该分组。

(7) AP向所有用户发送ACK。上面写着“我收到并解码了数据”。得益于OFDMA,AP可以同时向多个用户发送该分组。

OFDMA可以支持多少用户(站)?

在OFDMA中,每80 Mhz信道带宽(channel bandwidth)最多可支持37个站。

References :
The MU-RTS/CTS process in the HE (802.11ax) - standard
Generating the Trigger Frame
New Wireless LAN Technology: 802.11ax (Mar 2019)
UL OFDMA, basic Trigger Frame and Multi-STA BlockAck (Aug 2019)

6、触发(Trigger)

触发器是一种机制,通过该机制,AP可以通知或请求站点的各种信息,或者最重要的是向站点发送调度信息。它主要用于OFDMA过程。为此,AP发送一个称为触发帧(Trigger Frame)的特定MAC帧。下面列出了各种类型的触发帧。

基本触发帧
波束形成报告轮询(BFRP:Beamforming Report Poll)
多用户阻塞确认请求(MU-BAR:Multi-user block ack request)
要发送的多用户请求(MU-RTS:Multi-user request to send)
缓冲区状态报告轮询(BSRP:Buffer Status Report Poll)
GCR多母线(GCR MU-BAR)
带宽查询报告轮询(BQRP:Bandwidth Query Report Poll)
NDP反馈报告轮询(NFRP:NDP Feedback Report Poll)

1)触发帧的结构(Structure of Trigger Frame)

用于OFDMA过程的最常见/最重要的触发帧的结构如下所示。根据触发的目的(例如,下行链路OFDMA或上行链路OFDMA),一些字段将被设置为“保留”(不使用)。

2)触发示例

有许多不同的情况下使用触发帧,下面是一些示例,展示了触发帧是如何工作的。我认为触发帧最常见的用例是OFDMA调度过程。
Downlink OFDMA
Uplink OFDMA

References :
The MU-RTS/CTS process in the HE (802.11ax) - standard
Generating the Trigger Frame

7、波束成形(BeamForming)

波束形成是一种我们可以将天线辐射方向图(antenna radiation pattern)聚焦到特定方向的技术。在大多数传统的无线通信中,来自通信设备的辐射模式往往是全向的(omnidirection meaning),这意味着它以相似的能量强度向所有方向辐射,但在某些情况下(尤其是在使用高频的现代通信中),我们需要(或更好地)将辐射聚焦到某个方向,而不是向所有方向发射。

为什么要进行波束成形?

我认为波束形成有两个主要原因。第一种情况是,我们想出于特定目的有意(intentionally)进行波束成形,还有一种情况是我们需要进行波束成形——即使我们可能不想这样做。如果一个通信设备正在与分散在各处的许多其他设备通信,最好使用全向天线(omidirectional antenna)来覆盖所有这些设备。相反(On the contrary),如果一个设备在某个方向上仅与一个或几个设备通信,则在通信设备所在的某个方向形成波束(beam)将更有效(更少的能量浪费)。

在其他一些情况下,如使用非常高的频率,很难用单个天线(大部分是全向的)实现足够的距离覆盖。在这种情况下,一种常见的技术是使用多个天线来增加覆盖范围。一旦我们使用多天线(称为天线)阵列来增加覆盖范围,由于天线元件的阵列类型定位,就会形成特定形状的波束。使用这种阵列天线,即使我们想要…也很难创建全向辐射方向图。。。因此波束成形将是不可避免的解决方案。

无论动机(motivation)是什么,BeamForming都有利弊( pros and cons)。优点(advantage)是我们可以将辐射能量仅聚焦到必要的方向,从而减少能量浪费,缺点是它需要非常复杂的算法(complicated algorithm),能够找到接收器设备所在的正确方向,当接收器频繁改变位置时,这有时会变得非常复杂(如蜂窝通信(celluar communication)或某些WiFi应用程序)。

如何形成波束?

也就是说,如何以这种方式塑造辐射图案,使其指向某个方向?有很多方法可以做到这一点,据我所知,一些最广泛使用的方法如下所示。

最常见的方法是使用碟形天线或喇叭形天线(Dish or Horn antenna),但将这种天线用于小型WiFi热点(hotspot)或移动设备是不切实际的(impractical)。碟形天线或喇叭形天线的另一个问题是很难改变波束的方向。改变碟形天线或喇叭形天线的波束方向是手动改变天线的方向,或者放置一些电机,并使用电机改变方向(如Startlink碟形天线)。因此,对于小型设备或需要频繁改变波束方向的应用,它们使用阵列天线(以阵列形式排列的天线的倍数)。阵列中的每个天线元件可以是如下所示的贴片天线(patch antenna)或偶极天线(dipole antenna)。阵列天线的另一个优点是它可以通过电子方式改变波束方向。由于使用阵列天线的波束成形在WiFi、蜂窝系统等高端通信系统中得到了广泛的应用。我已经写了一篇关于波束成形的详细说明。如果您对波束成形的细节感兴趣,请参阅本说明。

如何在WiFi协议中执行波束成形?

现在我们知道了什么是波束成形,以及为什么要使用这种技术。然后出现了一个问题。发射器(transmitter,BeamFormer波束成形器)如何想知道它应该将波束(beam)指向哪个方向?如果发射器(transmitter)和接收器(reciever)的位置是固定的,那么确定波束方向将很简单。你只需将发射器和接收器的天线指向这样一种方式,即在安装时它们在视线中对齐(大多数卫星通信(satellite communication)或微波链路(microwave link)都以这种方式确定波束方向)。然而,在WiFi的情况下,AP和站点的位置,特别是站点的位置变化非常频繁。因此,现在的工作光束方向在几分钟后将不起作用。这意味着应该有一些机制(mechanism)可以使波束成形器(BeamFormer)动态地确定波束的正确方向。这种动态机制(Dynamic mechanism)被实现为802.11中的一种协议。波束成形过程有两种类型,称为隐式和显式过程(Implicit and Explicit process)。

隐式处理(Implicit Process):波束形成器从波束形成器(beamformee)的特定参考信号中隐式地计算出合适的波束。在这种情况下,波束成形器不会明确地告诉波束成形器什么是最适合自己的波束。

显式处理(Explicit process):波束形成器从波束形成器发送的显式信息中找出最佳波束。在这种情况下,波束形成器基于来自波束形成器的参考信号和向波束形成器明确的最佳波束选择的结果来计算出什么是适合它的最佳波束。

这两个过程可以总结如下。

YouTube

NETGEAR implicit beamforming (Feb 2016)
Beamforming both explicit and implicit (Aug 2020)
802 11n 802 11ac MIMO Transmit Beamforming (Dec 2020)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

程序设计入门——C语言 2023年5月9日

程序设计入门——C语言 一、基础理解1、什么是计算机?如何用计算机做事情?什么是应用软件?编程语言干啥的?计算机与人脑?学习编程能干啥?2、计算机-程序-算法3、解释语言vs编译语言 课程来源:链…

测试老鸟总结,性能测试常见瓶颈分析与调优,“我“也要卷出测试圈...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试过程中&a…

KingbaseES V8R3 集群运维系列 -- failover切换后集群自动恢复

​ 案例说明: KingbaseES V8R3集群默认在触发failover切换后,为保证数据安全,原主库需要通过人工介入后,恢复为新的备库加入到集群。在无人值守的现场环境,需要在触发failover切换后,主库可以自动恢复为新备…

jvm之图形化工具

写在前面 本文一起看下jvm图形化相关的工具,图形化的工具相比于命令行工具的好处是更加直观,也更容易分析问题。 1:jconsole 1.1:准备要连接的jvm进程 定义如下的类; package a.b; import java.util.concurrent.*…

Linux内核架构和工作原理

**前言:**作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。目前支持模块的动态装卸(裁剪)。Linux内核就是基于这个策略实现的。Linux进程1.采用层次结构,每个进程都依赖于一个父进程。内…

JavaScript模板引擎Template.js基本使用详解

template.js是一款JavaScript模板引擎,提供一套模板语法,简单好用,开发者可以写一个模板区块,每次传入的数据,生成对应数据产生的HTML片段,渲染不同的效果。官网:简洁语法版 https://github.com…

天猫数据分析:2023年Q1天猫净水器品牌销售TOP10排行榜

水质的好坏更是与人们的身体健康密切相关。随着社会经济的发展,居民生活水平提升,人们对饮用水质量、安全性的要求也不断提高,净水器也因此逐渐成为现代生活的必需品。 根据鲸参谋电商数据显示,2023年Q1在天猫平台上,净…

微服务#1 注册中心eareka和nacos

目录 注册中心: eureka 服务调用关系 eureka的作用 在Eureka架构中,微服务角色有两类 搭建EurekaServer服务, 服务注册和服务发现 Ribbon 负载均衡原理 ​编辑 负载均衡策略 饥饿加载 注册中心: nacos nacos服务搭建, 服务注册和发现 nacos服务集群属性 …

【shell脚本里的数组】

目录 一、数组的定义方法1、定义数组1.1、使用shell脚本来写出怎么查看这个数组有没有缺少元素1.2、使用shell脚本,来生成数组1.3、元素的切片 二、数组追加元素三、传输和传出1、向函数传入数组的值2、从函数返回数组 一、数组的定义方法 ( 20 10 60…

零基础入门人工智能学习路线:数学、编程、机器学习、深度学习和实践项目

如果你想开始学习人工智能,但是对于如何开始感到困惑,那么这里有一些零基础入门学习路线的建议,可以帮助你更好地理解和掌握人工智能的基础知识。 数学基础 作为人工智能的核心基础,数学知识是必不可少的。尤其是线性代数和概率论…

线性结构-链表

链表也是一种常用的线性数据结构,与数组不同的是,链表的存储空间并不连续,它是用一组地址任意的存储单元来存放数据的,也就是将存储单元分散在内存的各个地址上。 这些地址分散的存储单元叫做链表的节点,链表就是由一个…

亲测好用|甲方、专家和领导,用三维模型汇报方案如何投其所好?

身为设计方的你,有没有这样的经历: ➤ 一个非常优秀的方案未能被甲方采纳,反而甲方选择了一个不如自己的方案,造成了很大的遗憾; ➤ 在讲述自己的设计方案的时候,经常越说越散,甚至到了最后自…

ACM - 搜索与图论 - 基础(搜索 + 拓扑 + 最小生成树 + 最短路 + 二分图 + 欧拉路 + 最大流 + 其它)

搜索与图论 一、搜索1、分治矩阵二分 / 普通二分 模板万能二分模板 2、DFS例题1、AcWing 842. 排列数字例题2、AcWing 843. n-皇后问题 3、BFS例题1、AcWing 844. 走迷宫 (入门经典)例题2、到达 "12345678x":AcWing 845. 八数码 二、图论写在前面1、图的存…

自学软件测试,从10K到40K的技术路线,也就是这些东西...

如果有一天我从梦中醒来时,发现自己的几年自动化测试工程师经验被抹掉,重新回到了一个小白的状态。我想要重新自学自动化测试,然后找到一份自己满意的测试工作,我想大概只需要6个月的时间就够了,如果比较顺利的话&…

Cursor--一款强大的国内智能AI语言模型(据说对接了chatgpt4)

简介 Cursor是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码。 它支持多种编程语言,如 Python, Java, C#, JavaScript 等,并且可以根据你的输入和需求自动生成代码片段…

eSIM证书要求-涉及规范SGP.22-SGP.26-1

文档 Official Document SGP.22 – RSP Technical Specification v2.4 Official Document SGP.26 - RSP Test Certificates Definition ,包含官方测试证书 证书链的定义 三个曲线 为了便于互操作性,本规范仅限于以下三个曲线 AlgorithmIdentifier算法标…

英飞凌的AURIX TC4x系列芯片在汽车控制器上应用

英飞凌的AURIX TC4x系列微控制器--智能汽车安全的领导者来了! 汽车市场上出现了重大的颠覆者: 汽车E/E架构微控制器(MCU)在领域和区域控制方面的创新 加速从传统动力系统到xEV的转变 安全性和自动驾驶的提高。 英飞凌的AURIX TC4x系列解…

yolov5 8系列 labelme数据标注 并生成训练数据集

yolov5 8系列 labelme数据标注 数据集生成终极教程 一.数据集准备二.转换为yolo 数据集 一.数据集准备 创建一个data 文件夹在data文件夹下创建一个images 文件夹将所有图片数据放入images文件夹下 使用labelme标注数据 python环境下使用 pip install labelme 安装labelme在c…

边缘计算盒子要怎么选?

选择边缘计算盒子需要考虑以下几个因素: 性能需求:边缘计算盒子的性能应该与您的应用需求相匹配。如果需要处理大量数据或者部署多种复杂ai算法,那么就需要选择更高性能的盒子。 IVP06A边缘计算盒子是基于RV1126设计的一款支持深度智能边缘…

Makefile基础教程(条件判断语句)

文章目录 前言一、条件判断语句概念讲解1.ifeq 和 ifneq2.ifdef 和 ifndef3.ifeq 的比较操作符 二、条件判断语句的使用三、条件判断语句使用的注意事项四、条件判断语句只在预处理阶段有效总结 前言 本篇文章开始讲解Makefile中的条件判断语句,在各种编程语言中都…