【消息序列】详解(7):剖析回环模式--设备测试的核心利器
目录
一、概述
1.1. 本地回环模式
1.2. 远程环回模式
二、本地回环模式(Local Loopback mode)
2.1. 步骤 1:主机进入本地环回模式
2.2. 本地回环测试
2.2.1. 步骤 2a:主机发送HCI数据包并接收环回数据
2.2.2. 步骤 2b:主机发送HCI命令包并接收环回命令事件
2.3. 步骤 3:主机退出本地环回模式
三、远程环回模式
3.1. 步骤1:本地设备启用远程环回,远程主机建立连接
3.2. 步骤2:接收远程主机的数据并环回
3.3. 步骤3:本地主机退出远程环回模式并断开连接
四、应用场景
4.1. 本地回环模式应用场景
4.2. 远程环回模式应用场景
五、注意事项
5.1. 本地环回模式
5.2. 远程环回模式
六、总结
Loopback Mode(回环模式)主要用于设备的测试目的。在回环模式下,设备会将发送出去的数据流重新接收回来,形成一个闭环测试环境。本文介绍蓝牙技术中的两种测试模式:远程环回模式和本地回环模式。远程环回模式允许通过空中接口将接收到的数据直接环回给远程设备,主要用于验证蓝牙设备间通信链路的畅通性和数据传输的完整性。本地回环模式则是一种将主机发送给控制器的特定类型数据进行回环处理的测试模式,用于测试主机与控制器之间数据传输的准确性、完整性以及相关处理逻辑的正确性。
一、概述
回环模式主要是专门应用于设备测试场景的一种工作模式。它的核心用途在于帮助开发人员、测试人员或者技术维护人员等去检验设备的各项功能是否正常、性能是否达到预期等,而并非用于设备正常的对外通信或日常使用场景中。蓝牙技术中的远程环回模式和本地回环模式是两种重要的测试模式,它们各自具有独特的特点和应用场景。以下是对这两种模式的概述。
1.1. 本地回环模式
- 定义:本地回环模式是一种特定的测试模式,主要用于将主机发送给控制器的特定类型数据进行回环处理。
- 工作原理:在本地回环模式下,主机发送的数据(如HCI命令、HCI ACL数据、HCI同步数据等)会被控制器接收并重新发送回主机。这种回环机制可以检查数据在主机与控制器之间传输的准确性、完整性以及相关处理逻辑是否正确。
- 应用场景:本地回环模式主要用于蓝牙设备的硬件测试、软件开发、调试等阶段。通过这种模式,开发者可以方便地验证蓝牙设备的主机与控制器之间的通信是否正常,以及数据处理逻辑是否正确。
1.2. 远程环回模式
- 定义:远程环回模式是蓝牙技术中的一种测试功能,允许设备通过空中接口将接收到的数据直接环回给远程设备。
- 工作原理:在远程环回模式下,当设备A向设备B发送数据时,设备B会将这些数据重新发送回设备A,形成一个闭环测试环境。这种模式主要用于验证蓝牙设备之间的通信链路是否畅通无阻,以及数据在传输过程中的完整性。
- 应用场景:远程环回模式常用于蓝牙设备的出厂测试、性能验证、兼容性测试等场景。通过这种模式,可以确保蓝牙设备在不同距离、不同环境下都能稳定地传输数据。
远程环回模式和本地回环模式是蓝牙技术中两种重要的测试模式,它们各自具有独特的特点和应用场景。远程环回模式主要用于验证蓝牙设备之间的通信链路和数据传输质量,而本地回环模式则更关注于主机与控制器之间的数据传输和处理逻辑的正确性。通过这两种模式,可以全面测试蓝牙设备的性能和稳定性,确保设备在实际应用中能够稳定、可靠地工作。
二、本地回环模式(Local Loopback mode)
本地回环模式是一种特定的测试模式,主要用于将主机(Host)发送给控制器(Controller)的一些特定类型的数据进行回环处理,也就是让发送出去的数据再返回到主机端,以此来测试相关的功能和数据传输情况。涉及的数据包类型包括接收到的 HCI 命令、HCI ACL(Asynchronous Connectionless)数据以及 HCI 同步数据数据包等,通过这种回环机制可以检查数据在主机与控制器之间传输的准确性、完整性以及相关处理逻辑是否正确。
2.1. 步骤 1:主机进入本地环回模式
当主机进入本地环回模式时,会触发一系列的事件来确认该模式的成功激活。以下是进入本地环回模式的详细步骤和事件生成的说明。
-
主机发送HCI_Write_Loopback_Mode命令:主机通过发送
HCI_Write_Loopback_Mode
命令来请求进入本地环回模式。这个命令是专门用于设置蓝牙主机控制器接口(HCI)进入环回模式的。 -
生成HCI_Connection_Complete事件:在接收到
HCI_Write_Loopback_Mode
命令后,控制器会开始模拟连接,并生成四个HCI_Connection_Complete
事件。这些事件分别对应于不同类型的连接:-
第一个
HCI_Connection_Complete
事件表示ACL(Asynchronous Connection-Less)连接的建立。 -
接下来的三个
HCI_Connection_Complete
事件表示SCO(Synchronous Connection-Oriented)或eSCO(Extended Synchronous Connection-Oriented)连接的建立。这些连接通常用于语音或音频数据的同步传输。 -
注意:在实际应用中,可能不会有四个SCO或eSCO连接同时建立,这里的描述是为了展示可能的连接类型。实际生成的连接类型和数量可能取决于具体的蓝牙设备和配置。
-
-
生成HCI_Command_Complete事件:在所有必要的连接建立完成后,控制器会生成一个
HCI_Command_Complete
事件来确认HCI_Write_Loopback_Mode
命令的成功执行。这个事件标志着主机已成功进入本地环回模式。
2.2. 本地回环测试
本地环回模式是蓝牙技术中一种重要的测试功能,它允许蓝牙设备在无需外部设备连接的情况下,通过其内部的蓝牙控制器和主机之间的接口,实现数据的自我环回。这一功能不仅限于数据(如ACL数据包)的环回,还包括主机控制器接口(HCI)命令的环回。
2.2.1. 步骤 2a:主机发送HCI数据包并接收环回数据
在本地环回模式下,当主机发送一个HCI数据包给控制器时,它会从控制器那里接收到完全相同的数据包作为回应。这一步骤验证了从主机到控制器再到主机的数据传输路径是否畅通无阻。
-
主机A发送数据:当主机A处于本地环回模式时,它会通过ACL数据包的形式,向蓝牙控制器发送数据。ACL数据包是蓝牙通信中用于传输用户数据的主要数据包类型。
-
数据在控制器内部环回:蓝牙控制器接收到来自主机A的数据包后,不会尝试将这些数据包发送给外部设备,而是直接在内部将这些数据包环回给主机A。意味着数据在控制器内部被复制,并沿着与发送方向相反的路径返回给主机。
-
主机A接收环回的数据:主机A通过HCI(主机控制器接口)接收到来自控制器的环回数据包。这些数据包与主机A最初发送的数据包在内容上完全相同,只是经过了控制器的内部处理。
-
验证数据完整性:主机A可以比较发送的数据包和接收到的环回数据包,以验证数据在传输过程中的完整性。如果两者完全匹配,那么可以认为蓝牙硬件和软件在这一方面的表现是正确的。
2.2.2. 步骤 2b:主机发送HCI命令包并接收环回命令事件
除了数据包的环回外,主机发送的大多数HCI命令包也会在控制器处理后,以HCI_Loopback_Command事件的形式环回给主机。这些事件包含了原始HCI命令包的内容,并作为事件的有效载荷返回。这一步骤验证了主机命令的正确执行和传输。
- 主机A发送HCI命令:当主机A处于本地环回模式时,它会向蓝牙控制器发送HCI命令数据包。这些命令可能包括配置设备、查询状态或执行其他管理任务。
- 控制器处理并环回HCI命令:蓝牙控制器接收到HCI命令后,不会执行该命令(或至少不会执行其通常的操作,如与外部设备通信),而是会生成一个特殊的HCI事件——
HCI_Loopback_Command
事件。这个事件包含了原始HCI命令的内容,作为其有效载荷(payload)的一部分。 - 主机A接收环回的HCI命令事件:主机A通过HCI接口接收到来自控制器的
HCI_Loopback_Command
事件。通过检查这个事件的有效载荷,主机A可以验证它发送的HCI命令是否被正确接收和环回。 - 验证HCI命令的完整性:主机A可以比较发送的HCI命令和接收到的
HCI_Loopback_Command
事件中的命令内容,以确保它们在传输过程中没有发生变化。这种验证对于确保HCI接口的稳定性和可靠性至关重要。
2.3. 步骤 3:主机退出本地环回模式
当主机完成所有必要的测试后,它会退出本地环回模式。这一步骤通常涉及发送特定的HCI命令给蓝牙控制器,并接收一系列事件作为响应,最终确认已成功退出环回模式。
- 发送HCI_Write_Loopback_Mode命令:主机A通过发送
HCI_Write_Loopback_Mode
命令给蓝牙控制器,指示其退出本地环回模式。这个命令通常包含一个参数,用于指定是否启用环回模式(在这种情况下,参数将设置为不启用环回)。 - 接收HCI_Disconnection_Complete事件:
- 在控制器处理完
HCI_Write_Loopback_Mode
命令并准备退出环回模式之前,可能会生成多个HCI_Disconnection_Complete
事件。这些事件通常用于通知主机,之前由于环回模式而建立的任何ACL(异步连接)连接、SCO(同步连接)连接或eSCO(扩展SCO)连接现在已被断开。 - 需要注意的是,如果在环回模式下没有建立任何SCO或eSCO连接,那么相应的
HCI_Disconnection_Complete
事件可能不会出现。但是,由于ACL连接在环回模式下通常是必需的,因此至少会收到一个关于ACL连接的断开完成事件。
- 在控制器处理完
- 接收HCI_Command_Complete事件:最后,主机A会接收到一个
HCI_Command_Complete
事件,作为对HCI_Write_Loopback_Mode
命令的响应。这个事件表明命令已被成功执行,且蓝牙控制器现在已退出本地环回模式。
通过本地环回模式,开发者可以轻松地测试和验证主机与控制器之间的通信是否正常,从而确保蓝牙设备的稳定性和可靠性。此外,这一模式还可以用于诊断通信故障,帮助开发者快速定位并解决问题。
远程环回(Remote Loopback)模式是蓝牙技术中的一种测试功能,它允许通过空中接口将接收到的数据直接环回给远程设备。这种模式主要用于验证蓝牙设备之间的通信链路是否畅通无阻,以及数据在传输过程中的完整性。以下是远程环回模式的详细步骤:
三、远程环回模式(Remote Loopback mode )
远程环回(Remote Loopback)模式是蓝牙技术中的一种测试功能,它允许通过空中接口将接收到的数据直接环回给远程设备。这种模式主要用于验证蓝牙设备之间的通信链路是否畅通无阻,以及数据在传输过程中的完整性。
3.1. 步骤1:本地设备启用远程环回,远程主机建立连接
本地蓝牙设备通过发送特定的HCI命令给其蓝牙控制器,来启用远程环回模式。
- 本地设备启用远程环回:本地设备(我们称之为Host A)通过发送
HCI_Write_Loopback_Mode
命令给其蓝牙控制器,来启用远程环回模式。此命令中应包含一个参数,明确指出启用的是远程环回,而非本地环回。 - 命令执行确认:一旦蓝牙控制器接收到并处理了
HCI_Write_Loopback_Mode
命令,它会向Host A返回一个HCI_Command_Complete
事件,以此确认命令已成功执行,且远程环回模式已激活。 - 远程主机建立ACL连接:与此同时,远程设备(我们称之为Host B)会尝试与Host A建立ACL连接。ACL连接是蓝牙设备间进行数据传输的基础。
- 连接建立完成:若Host A接受Host B的连接请求,则两者间的ACL连接将成功建立。此时,Host A已准备好接收来自Host B的数据,并将其按照远程环回模式的要求进行环回。
3.2. 步骤2:接收远程主机的数据并环回
在远程环回模式已经开启且连接建立好的基础上,数据从远程主机(Host B)发送到本地设备后,在本地设备的控制器(Controller)中进行回环处理,以此来实现对链路数据传输及回环功能的测试与验证。
整个流程基于前面步骤中 Host A 已成功进入远程环回模式,并且 Host B 也与 Host A 建立了相应连接的基础之上展开。此时,Host B 开始发送数据分组,这些数据分组承载着各种测试信息或者模拟的实际应用数据等内容,目的是利用远程环回模式的特性,观察数据经过空中传输到达 Host A 后再回环返回的情况,进而检测链路各环节在数据处理、传输准确性以及回环功能等方面的表现。
- 数据发送:远程主机(Host B)通过已建立的ACL连接,向本地设备(Host A)发送数据包。这些数据包可以是任意的蓝牙数据,用于测试数据传输的完整性和准确性。
- 数据接收:本地设备的蓝牙控制器(LM-A)接收到来自Host B的数据包后,会根据远程环回模式的设置,直接将数据包在控制器内部进行环回,而不是将其传递给上层的主机(Host A)进行处理。
- 环回确认:在数据包被环回后,本地设备的蓝牙控制器可能会通过内部机制确认环回操作的成功。然而,在远程环回测试中,通常更关注的是远程主机(Host B)能否成功接收到环回的数据包,以此来验证数据传输的完整性和链路的正确性。
-
HCI_Number_Of_Completed_Packets(主机控制器接口已完成分组数量):主要用于反馈已经成功完成传输的数据分组的数量信息。对于 Host B 或者整个链路系统来说,可以通过这个信令了解到目前有多少数据分组按照预期完成了从发送到回环的全过程,进而判断链路的数据传输效率、是否存在数据丢失等情况。例如,如果发送了一定数量的数据分组,但 HCI_Number_Of_Completed_Packets 反馈回来的数量少于发送数量,那就可能意味着在链路传输或者回环过程中出现了数据丢失等问题,需要进一步排查链路各环节的情况。
- 数据包确认:远程主机(Host B)在发送数据包后,会期待接收来自本地设备(Device A)的确认或响应。在远程环回模式下,这种确认通常是通过接收环回的数据包来实现的。
- 数据传输和环回的循环:上述过程可能会重复多次,以确保在不同的数据包大小和传输条件下,远程环回模式都能正确地工作。
3.3. 步骤3:本地主机退出远程环回模式并断开连接
在完成远程环回模式下的数据测试等相关操作后,Host A 发起退出远程环回模式的操作,随后 Host B 进行相应处理,断开之前建立的连接,使整个通信链路恢复到常规状态的过程。在实际应用中,退出远程环回模式和断开连接通常是蓝牙设备测试或通信过程中的一个重要环节,它们确保了设备能够正确地释放资源并准备进入下一个通信状
- 退出远程环回模式:本地主机(Host A)通过发送
HCI_Write_Loopback_Mode
命令给其蓝牙控制器,并指定参数为“无环回”(no loopback),来请求退出远程环回模式。蓝牙控制器(LM-A)接收到该命令后,会执行相应的操作来关闭远程环回功能,并准备接收和处理来自上层主机(Host A)或其他蓝牙设备的数据包。 - 命令执行确认:一旦蓝牙控制器(LM-A)成功执行了退出远程环回模式的操作,它会向本地主机(Host A)返回一个
HCI_Command_Complete
事件,以此确认命令已成功执行,且远程环回模式已关闭。 - 断开ACL连接:在确认远程环回模式已关闭后,远程设备(Host B)可以选择断开与本地设备(Host A)之间的ACL连接。通常是通过发送一个断开连接的请求给本地设备的蓝牙控制器(LM-A)来实现的。本地设备的蓝牙控制器(LM-A)接收到断开连接的请求后,会执行相应的操作来释放与远程设备(Host B)之间的连接资源,并准备接受新的连接请求。
远程环回模式是一种非常有用的测试功能,它可以帮助开发者验证蓝牙设备之间的通信链路和数据传输的完整性。通过这种模式,开发者可以确保蓝牙设备在实际使用中能够正确、可靠地传输数据。
四、应用场景
蓝牙技术中的本地回环模式和远程环回模式各自具有独特的应用场景和注意事项。以下是对这两种模式的应用场景的梳理。
4.1. 本地回环模式应用场景
本地回环模式主要用于验证设备内部的功能和通信性能。以下是本地回环模式的主要应用场景:
- 蓝牙硬件测试:在蓝牙设备的硬件设计阶段,制造商会利用本地回环模式来全面测试蓝牙芯片的接收、发送功能以及数据在硬件层面的处理准确性。这有助于确保蓝牙硬件的基本功能正常,为后续的开发和测试奠定坚实基础。
- 软件开发和调试:本地回环模式对于蓝牙设备的软件开发和调试至关重要。开发者可以利用这一模式来验证软件协议栈的正确性,以及软件在处理蓝牙数据时的稳定性和可靠性。通过模拟主机和控制器之间的数据传输,开发者可以更容易地发现和修复软件中的潜在问题。
- 系统集成测试:在蓝牙设备与其他系统(如嵌入式系统、操作系统等)集成时,本地回环模式可用于验证设备在集成环境中的通信性能。这有助于确保蓝牙设备在与其他系统交互时能够正常工作,从而满足实际应用场景的需求。
- 设备内部功能测试:在蓝牙设备开发阶段,本地环回模式还可以用于测试主机和控制器之间的数据传输和处理功能。例如,通过发送HCI命令并观察返回的数据,可以验证控制器是否正确理解并处理了这些命令。这有助于确保设备内部的功能正常,提高设备的整体性能和稳定性。
- 软件更新后的验证:当蓝牙设备的固件或软件进行更新后,本地回环模式可用于验证更新后的主机-控制器通信是否受到影响。通过发送各种类型的HCI数据并检查回环数据的准确性,可以确保更新没有引入新的通信问题,从而保障设备的正常运行。
- 故障排查:当怀疑主机与控制器之间的数据传输出现问题时,本地回环模式是一种有效的故障排查工具。通过发送和接收相同类型的数据,并对比原始数据和回环后的数据,可以确定问题是出在主机发送端、控制器接收和返回端,还是其他中间环节。这有助于快速定位并解决问题,提高设备的可靠性和稳定性。
本地回环模式在蓝牙设备的开发和测试过程中具有广泛的应用场景和重要性。通过充分利用这一模式,可以确保蓝牙设备的硬件、软件以及系统集成等方面的性能和稳定性得到全面验证和提升。
4.2. 远程环回模式应用场景
远程环回模式主要用于验证蓝牙设备之间的通信链路和数据传输质量。以下是远程环回模式的主要应用场景。
- 蓝牙设备兼容性测试:
- 在蓝牙设备的设计和开发阶段,制造商常使用远程环回模式来测试新设备与市场上现有设备的兼容性。这可以确保新设备能够与不同品牌、不同型号的蓝牙设备无缝连接和通信,满足广泛的用户需求。
- 当蓝牙设备的固件或软件更新以支持新功能时,远程环回模式也可用于测试更新后的设备与其他设备的兼容性,确保更新不会破坏现有的通信能力。
- 无线通信链路验证:远程环回模式可用于验证蓝牙设备之间的无线通信链路是否畅通无阻。通过发送和接收数据,可以检查链路是否存在中断、干扰或信号衰减等问题,从而确保设备在实际应用场景中能够稳定地传输数据。
- 数据传输完整性测试:在数据传输过程中,数据包的完整性至关重要。远程环回模式允许设备在接收到数据后立即将其发送回发送方,从而验证数据在传输过程中是否保持完整。这对于确保蓝牙设备在传输敏感或关键数据时不会出错至关重要。
- 设备间通信链路测试:在蓝牙设备配对和连接的初始阶段,远程环回模式可用于验证两个设备之间的通信链路质量。通过发送特定类型的数据(如音频数据、控制命令等),并检查返回的数据是否完整和准确,可以判断蓝牙链路是否能够稳定地支持所需的应用场景。
- 多设备通信系统测试:在复杂的蓝牙多设备系统(如智能家居系统、无线耳机系统、车载蓝牙系统等)中,远程环回模式可以用于测试不同设备之间的通信链路。通过控制中心向各个设备发送数据,并让设备将接收到的数据回环给控制中心,可以验证整个通信链路的可靠性和数据完整性,确保系统能够正常运行并满足用户需求。
- 故障排查和性能优化:当蓝牙设备在实际使用过程中出现通信问题时,远程环回模式可以作为一种有效的故障排查工具。通过发送和接收数据,可以定位问题所在,并采取相应的措施进行修复。此外,远程环回模式还可以用于性能优化,通过调整通信参数和数据传输策略,提高蓝牙设备的通信效率和稳定性。
远程环回模式在蓝牙设备的开发和测试过程中具有广泛的应用场景和重要性。通过充分利用这一模式,可以确保蓝牙设备之间的通信链路和数据传输质量得到全面验证和提升,从而满足实际应用场景的需求。
五、注意事项
5.1. 本地环回模式
- 数据类型限制:本地环回模式主要适用于特定类型的数据,如HCI命令、HCI ACL数据和HCI同步数据数据包等。在测试过程中,需确保发送的数据类型符合本地环回模式能够处理的范围。
- 测试环境干扰:尽量避免外部干扰对测试结果的影响,如设备内部的电磁干扰。保持测试环境的稳定性,以获得准确的测试结果。
- 软件配置影响:主机和控制器的软件配置可能对本地环回模式产生影响。在测试过程中,要记录软件配置信息,并在出现异常结果时考虑软件配置是否为原因之一。
- 数据格式和协议:确保发送和接收的数据格式和协议与设备的实际使用情况相匹配。
- 数据完整性检查:本地环回测试应包括对数据完整性的检查,以确保数据在硬件和软件层面的处理过程中不会丢失或损坏。
- 系统资源占用:注意系统资源的占用情况,避免过多的资源占用导致设备性能下降或测试失败。
5.2. 远程环回模式
- 连接稳定性:确保设备之间的连接稳定性,考虑设备距离、周围环境(如干扰源)等因素。
- 设备兼容性和协议支持:确认参与测试的设备都支持远程环回模式,并遵循相同的蓝牙协议版本和相关规范。
- 数据安全和隐私:注意数据的安全性和隐私保护,确保在测试过程中不会泄露用户的隐私信息。采取适当的数据加密或匿名化措施。
- 设备距离和障碍物:确保设备之间的距离和障碍物不会影响通信质量。
- 干扰源:避免在测试环境中存在其他蓝牙设备或无线设备,以减少干扰对测试结果的影响。
- 数据速率和带宽:根据测试需求选择合适的数据速率和带宽进行测试。避免过高的数据速率导致通信链路不稳定,或过低的数据速率无法充分验证设备性能。
通过综合考虑以上注意事项,可以确保在进行本地环回模式和远程环回模式测试时获得准确、可靠的测试结果,从而有效验证蓝牙设备的性能和兼容性。
六、总结
蓝牙技术中的本地回环模式和远程环回模式均在测试方面有着重要作用。本地回环模式着重于检测主机与控制器之间的数据交互情况,针对如 HCI 命令、HCI ACL 数据、HCI 同步数据数据包等特定类型的数据进行回环,以此来确认数据传输过程中的准确性、完整性以及相关处理逻辑是否无误,为保障蓝牙通信各环节的正常运作提供了有效的测试手段。而远程环回模式侧重于验证不同蓝牙设备之间通信链路的畅通性以及数据传输时的完整性,是在设备间通过空中接口实现数据回环的机制,其操作涉及开启模式、数据传输回环以及退出模式并断开连接等流程。总之,这两种回环模式从不同层面助力蓝牙技术的功能测试与完善,对确保蓝牙通信质量有着积极意义。
相关文章:
【消息序列】详解(7):剖析回环模式--设备测试的核心利器
目录 一、概述 1.1. 本地回环模式 1.2. 远程环回模式 二、本地回环模式(Local Loopback mode) 2.1. 步骤 1:主机进入本地环回模式 2.2. 本地回环测试 2.2.1. 步骤 2a:主机发送HCI数据包并接收环回数据 2.2.2. 步骤 2b&…...
解决Ubuntu 22.04系统中网络Ping问题的方法
在Ubuntu 22.04系统中,网络问题时有发生,尤其是当涉及到静态IP地址配置和网线直连的两台机器时。本文将探讨一种常见问题——断开并重新连接网线后,尽管网卡显示为UP状态,但无法立即ping通对方机器,以及如何解决这一问…...
【大数据学习 | Spark-SQL】Spark-SQL编程
上面的是SparkSQL的API操作。 1. 将RDD转化为DataFrame对象 DataFrame: DataFrame是一种以RDD为基础的分布式数据集,类似于传统数据库中的二维表格。带有schema元信息,即DataFrame所表示的二维表数据集的每一列都带有名称和类型。这样的数…...
15分钟做完一个小程序,腾讯这个工具有点东西
我记得很久之前,我们都在讲什么低代码/无代码平台,这个概念很久了,但是,一直没有很好的落地,整体的效果也不算好。 自从去年 ChatGPT 这类大模型大火以来,各大科技公司也都推出了很多 AI 代码助手ÿ…...
manim动画编程(安装+入门)
文章目录 1.基本介绍2.效果展示3.安装步骤3.1安装manba软件3.2配置环境变量3.3查看是否成功3.4什么是mamba3.5创建虚拟环境3.6尝试进入虚拟环境 4.vscode操作4.1默认配置文件 5.安装ffmpeg6.安装manim软件6.vscode制作7.我的学习收获 1.基本介绍 这个manim就是一款软件&#x…...
STL算法之数值算法<stl_numeric.h>
这一节介绍的算法,统称为数值(numeric)算法。STL规定,欲使用它们,客户端必须包含头文件<numeric>.SGI将它们实现与<stl_numeric.h>文件中。 目录 运用实例 accumulate adjacent_difference inner_product partial_sum pow…...
Oracle如何记录登录用户IP
在运维场景中,在定位到某个SQL引起系统故障之后,想知道是哪台机器发过来的,方便定位源头,该如何解决? 在 Oracle 数据库中记录登录用户的 IP 地址可以通过多种方法实现。以下是几种常见的方法,包括使用触发…...
Python图像处理:打造平滑液化效果动画
液化动画中的强度变化是通过在每一帧中逐渐调整液化效果的强度参数来实现的。在提供的代码示例中,强度变化是通过一个简单的线性插值方法来控制的,即随着动画帧数的增加,液化效果的强度也逐渐增加。 def liquify_image(image, center, radius…...
构建Ceph分布式文件共享系统:手动部署指南
#作者:西门吹雪 文章目录 micro-Services-TutorialCeph分布式文件共享方案部署Ceph集群使用CephCeph在kubernetes集群中的使用 micro-Services-Tutorial 微服务最早由Martin Fowler与James Lewis于2014年共同提出,微服务架构风格是一种使用一套小服务来开发单个应…...
数据结构——用数组实现栈和队列
目录 用数组实现栈和队列 一、数组实现栈 1.stack类 2.测试 二、数组实现队列 1.Queue类 2.测试 查询——数组:数组在内存中是连续空间 增删改——链表:链表的增删改处理更方便一些 满足数据先进后出的特点的就是栈,先进先出就是队列…...
vue3typescript,shims-vue.d.ts中declare module的vue声明
webpack已经有了vue-loader这些loader了,为什么还需要declare module *.vue’呢? declare module 是为了告诉 tsc 这是一个“模块”。 如果不声明, IDE 里因为 tsc 类型检查, lint 会标红。 但vue-loader 是在 Webpack 构建阶段使…...
C/C++基础知识复习(30)
1) 什么是 C 中的 Lambda 表达式?它的作用是什么? Lambda 表达式: 在 C 中,Lambda 表达式是一种可以定义匿名函数的机制,可以在代码中快速创建一个内联的函数对象,而不需要显式地定义一个函数。Lambda 表…...
【NLP 1、人工智能与NLP简介】
人人都不看好你,可偏偏你最争气 —— 24.11.26 一、AI和NLP的基本介绍 1.人工智能发展流程 弱人工智能 ——> 强人工智能 ——> 超人工智能 ① 弱人工智能 人工智能算法只能在限定领域解决特定的问题 eg:特定场景下的文本分类、垂直领域下的对…...
网络安全事件管理
一、背景 信息化技术的迅速发展已经极大地改变了人们的生活,网络安全威胁也日益多元化和复杂化。传统的网络安全防护手段难以应对当前繁杂的网络安全问题,构建主动防御的安全整体解决方案将更有利于防范未知的网络安全威胁。 国内外的安全事件在不断增…...
Swagger记录一次生成失败
最近在接入Swagger的时候遇到一个问题,就是Swagger UI可以使用的,但是/v3/docs 这个接口的json返回的base64类型的json,并不是纯json,后来检查之后是因为springboot3里面配置了json压缩。 Beanpublic HttpMessageConverters cusHt…...
Go 语言常用工具方法总结
在 Go 语言开发中,常常需要进行一些常见的类型转换、字符串处理、时间处理等操作。本文将总结一些常用的工具方法,帮助大家提高编码效率,并提供必要的代码解释和注意事项(go新人浅浅记录一下,以后来翻看🤣&…...
ThingsBoard规则链节点:GCP Pub/Sub 节点详解
目录 引言 1. GCP Pub/Sub 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 数据传输 3.2 数据分析 3.3 事件通知 3.4 任务调度 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台࿰…...
【Linux】select,poll和epoll
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符fd,一旦某个描述符就绪(一般是读就绪或者写就绪),系统会通知有I/O事件发生了(不能定位是哪一个)。但sel…...
Qt程序发布及打包成exe安装包
参考:Qt之程序发布以及打包成exe安装包 目录 一、简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以…...
python怎样运行js语句
1. 安装 pip install PyExecJS # 需要注意, 包的名称:PyExecJS 2. 简单使用 import execjs execjs.eval("new Date") 返回值为: 2018-04-04T12:53:17.759Z execjs.eval("Date.now()") 返回值为:152284700108…...
汽车渲染领域:Blender 和 UE5 哪款更适用?两者区别?
在汽车渲染领域,选择合适的工具对于实现高质量的视觉效果至关重要。Blender和UE5(Unreal Engine 5)作为两大主流3D软件,各自在渲染动画方面有着显著的差异。本文将从核心定位与用途、工作流程、渲染技术和灵活性、后期处理与合成四…...
JAVA实现将PDF转换成word文档
POM.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...
前端-Git
一.基本概念 Git版本控制系统时一个分布式系统,是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景:多人开发管理代码;异地开发,版本管理,版本回滚。 Git 的三个区域&a…...
如何分析Windows防火墙日志
Windows防火墙,也被称为Windows Defender Firewall,是一种内置的安全功能,可以主动监控和分析运行Windows操作系统的计算机上通过Windows防火墙的网络流量,主要目的是作为计算机和互联网或其他网络之间的屏障,使管理员…...
工作坊报名|使用 TEN 与 Azure,探索你的多模态交互新场景
GPT-4o Realtime API 发布,语音 AI 技术正在进入一场新的爆发。语音AI技术的实时语音和视觉互动能力将为我们带来更多全新创意和应用场景。 实时音频交互: 允许应用程序实时接收并响应语音和文本输入。自然语音生成: 减少 AI 技术生成的语音…...
学习笔记041——Elastic Search的学习与使用以及SpringBoot整合
文章目录 1、Elastic Search介绍1.1、ES 的数据结构1.2、ES 为什么查询快1.3、CRUD 2、Spring Boot 整合 ES 1、Elastic Search介绍 Elasticsearch是一个分布式的、基于RESTful API的搜索和分析引擎,广泛用于大规模数据存储和快速检索。它最初由Shay Banon于20…...
R安装rgdal报错 解决办法
尝试了网上很多办法,不知道哪一步解决了,记录一下所有步骤: 1. 尝试github安装 options(repos c(CRAN "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))install.packages("devtools")library(devtools)devtools::in…...
【智能制造-46】人机工程(工厂自动化)
工作空间设计 设备布局规划 根据人体测量学数据,合理安排自动化设备、生产线和工作区域的布局。例如,考虑工人的操作空间和活动范围,确保他们能够舒适地接近和操作设备。在汽车装配车间,机器人和工人的工作区域应划分明确&#…...
C#笔记(5)
一、winform项目与窗体控件 1、部分类的使用 好处:让自动生成的代码后置,我们编写程序的代码显得更加简洁 特点:在最后编译的时候,仍然编译成一个窗体类。 窗体和控件的基本使用 3、Event事件(委托--》事件&#…...
【软件国产化】| Windows和Linux下文件名后缀是否区分大小写
今天在开发过程中遇到了个软件在Linux系统和Windows系统下功能表现不一致的bug,具体表现为: 插入一张图片(A文件夹中的001.jpg),然后使用“图片替换”功能,用B文件夹中的图片(B文件夹中的001.JP…...
微网站怎么自己做/国际国内新闻最新消息今天
/*测试版的实现 开始*/介绍在用GridView自带的排序功能排序时,无法直观的知道当前是通过哪个字段排序?是升序还是降序?所以扩展一下,用图片或文字的形式来提示一下当前是根据哪个字段排序,是升序还是降序。控件开发1、…...
做家居网站/百度一下首页百度一下
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我们知道,公历的平年是365天,闰年是366天。置闰的方法是能被4整除的年份在2月加一天,但能被100整除的不闰,能被400整除的又闰。因此,像1600、2000、2400年都是闰年&#x…...
wordpress设置安全/成都网站seo外包
2019独角兽企业重金招聘Python工程师标准>>> 对工具类的功能来说,与其在微信中找各种接口不如直接调用其他wap站更好,(http://r2.mo.baidu.com/webapp_html.php?version4_0&fnwebpage_flash)有一些wap站可以参考&…...
旅游wordpress/网站是否含有seo收录功能
一、简介 EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点。ehcache官网:http://www.ehcache.org/ 可以下载文档看看,里面关于EhCache缓存写的非常清楚。 二、特点 主要的特性有: 1. 快速 2. 简单 3. 多种缓存策略 …...
专业做消防工程师的正规网站/深圳网站关键词优化推广
2019独角兽企业重金招聘Python工程师标准>>> 以项目名为myTest,当前类名为test(其中package com.sun.app),test.txt为test同目录下为例: 全路径: 1.当前类test.class文件的URI目录 URL url test.class.getResource("")…...
塘沽网站建设优化/电商运营转行后悔了
生活的许多因素可能会引起皮肤老化,皮肤松弛,让皮肤状态看起来更老。为了让皮肤变得更好,我们必须注意饮食,调整心情,不仅如此还需要使用美容仪对自己的皮肤进行保养,让我们一起来了解一下如何避免皮肤松弛…...