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

【0x001F】HCI_Read_Clock_Offset命令详解

目录

一、命令概述

二、命令格式及参数说明

2.1. HCI_Read_Clock_Offset 命令格式

2.2. Connection_Handle

三、生成事件

3.1. HCI_Command_Status 事件

3.2. HCI_Read_Clock_Offset_Complete 事件

四、命令执行流程

4.1. 命令发送阶段

4.2. 命令接收与初步反馈阶段

4.3. 时钟偏移量获取阶段

4.4. 结果反馈阶段

4.5. 示例代码

五、应用场景

5.1. 加快连接建立速度

5.2. 优化寻呼过程

5.3. 实现同步通信功能

六、注意事项

6.1. 命令前提与参数

6.2. 命令执行与事件处理

6.3. 设备角色与命令处理

6.4. 时钟偏移量的理解与应用

6.5. 命令频率与资源占用

6.6. 安全性与兼容性


HCI_Read_Clock_Offset 是蓝牙主机控制器接口(HCI)命令集中的一个命令。主要功能是允许主机读取远程设备的时钟偏移量。在蓝牙通信中,系统时钟以及与远程设备的时钟偏移量对于确定远程设备用于寻呼扫描(page scan)的跳频频率非常重要。这个命令提供了一种机制,使得主机能够获取这些信息,以便在本地设备尝试与远程设备建立连接(例如,当本地主机发出 HCI_Create_Connection 或 HCI_Remote_Name_Request 命令时)加快寻呼过程。【0x0005】HCI_Create_Connection命令详解_hci create connection page timeout-CSDN博客【0x0019】HCI_Remote_Name_Request详解_蓝牙协议是如何获取对端设备的名字的-CSDN博客

一、命令概述

HCI_Read_Clock_Offset命令用于读取远程蓝牙设备的时钟偏移量。时钟偏移量是蓝牙设备的一个重要参数,它决定了设备在进行页面扫描时所使用的跳频频率。

通过读取远程设备的时钟偏移量,本地设备可以更快地找到并连接到远程设备,特别是在执行如HCI_Create_Connection或HCI_Remote_Name_Request等命令时。

二、命令格式及参数说明

2.1. HCI_Read_Clock_Offset 命令格式

HCI_Read_Clock_Offset 命令属于蓝牙HCI命令范畴。像其他 HCI 命令一样,包含命令操作码(OCF)和参数部分。

包括

  • 操作码(Opcode):用于标识HCI_Read_Clock_Offset命令。

  • 参数长度(Parameter Length):表示后续参数部分的字节数。对于HCI_Read_Clock_Offset命令,参数长度通常为2字节(0x02),指定连接句柄(Connection Handle)作为参数。
  • 参数(Parameters)
    • 连接句柄(Connection Handle):用于唯一标识当前主机与远程设备之间的连接。连接句柄是在建立连接时由蓝牙控制器分配的,并在后续通信中用于引用该连接。

2.2. Connection_Handle

Connection_Handle用于精确地指定要读取时钟偏移量的远程设备对应的连接。

 Connection_Handle 只有 12 位有效,在发送或接收包含此字段的数据时,应该确保只关注低 12 位的值,并忽略高 4 位(这些位通常会被设置为 0)。

三、生成事件

HCI_Read_Clock_Offset 命令本身不存在直接的返回参数,意味着主机在发送该命令后,不会立刻接收到远程设备时钟偏移量的相关数据。它是通过后续触发的相关事件来向主机传递相应信息的,所以主机需要正确处理这些事件才能获取到期望的时钟偏移量数值。

3.1. HCI_Command_Status 事件

当BR/EDR控制器接收到 HCI_Read_Clock_Offset 命令时,会向主机发送 HCI_Command_Status 事件。

这个事件的核心作用是通知主机,表明控制器已经成功接收到了命令,并且该命令已顺利进入处理流程。不过需要注意的是,此事件本身并不包含远程设备时钟偏移量的具体内容,它仅仅是起到一个告知主机命令传递环节正常、开始进入后续处理阶段的作用,让主机知晓命令已被接收,可以等待后续进一步的反馈。

3.2. HCI_Read_Clock_Offset_Complete 事件

如果命令是在中央设备(Central)上请求的,那么当链路管理器(Link Manager, LM)完成了 LMP(链路管理层协议)消息的交换,以获取时钟偏移信息后,本地 BR/EDR 控制器会向主机发送一个 HCI_Read_Clock_Offset_Complete 事件。这个事件包含时钟偏移的值(如果命令成功执行)和其他可能的字段。

如果命令是在外围设备(Peripheral)上请求的,链路管理器会立即向主机发送 HCI_Read_Clock_Offset_Complete 事件,而不需要交换 LMP 协议数据单元(PDU)。意味着在外围设备上,时钟偏移信息可能是立即可用的,或者外围设备不需要通过 LMP 交换来获取它。

四、命令执行流程

4.1. 命令发送阶段

  • 主机准备:确定有效的Connection_Handle(12位有效,范围0x00000x0EFF),明确要获取时钟偏移量的远程设备连接。
  • 发送命令:主机向BR/EDR控制器发送带有操作码的HCI_Read_Clock_Offset命令及Connection_Handle参数。

4.2. 命令接收与初步反馈阶段

  • 控制器接收:BR/EDR控制器验证命令,包括操作码和Connection_Handle的有效性。
  • 反馈状态:如果命令接收正常,控制器向主机发送HCI_Command_Status事件,表明命令已被接收并处理。

4.3. 时钟偏移量获取阶段

  • 中央设备请求
    • 链路操作:控制器通过LMP协议与远程设备进行消息交换,获取时钟偏移量。
    • 完成获取:链路管理器成功获取时钟偏移量后,准备向主机发送结果。
  • 外围设备请求
    • 立即反馈:链路管理器立即向主机发送HCI_Read_Clock_Offset_Complete事件,无需LMP消息交换。

4.4. 结果反馈阶段

  • 生成事件:对于中央设备请求,链路管理器完成获取后,BR/EDR控制器生成HCI_Read_Clock_Offset_Complete事件,包含时钟偏移量信息。
  • 主机处理:主机接收事件,提取时钟偏移量信息,进行后续处理,如计算跳频频率等。

4.5. 示例代码

以下代码示例将是一个高度简化的版本,旨在展示流程的逻辑结构,而不是实际的硬件交互。

#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>// 假设的蓝牙协议栈库头文件
#include "bluetooth_stack.h"// 假设的回调函数类型定义(在实际应用中,这些将由蓝牙协议栈库提供)
typedef void (*hci_command_status_callback)(uint8_t status);
typedef void (*hci_read_clock_offset_complete_callback)(int16_t clock_offset, uint8_t status);// 假设的全局变量(在实际应用中,这些可能是库的一部分或应用程序状态的一部分)
hci_command_status_callback command_status_cb = NULL;
hci_read_clock_offset_complete_callback read_clock_offset_complete_cb = NULL;// 假设的发送HCI命令的函数(在实际应用中,这将由蓝牙协议栈栈库提供)
bool send_hci_command(uint16_t opcode, uint8_t *params, size_t param_len, void *callback_context) {// 这里应该包含与蓝牙硬件控制器的实际通信代码// 但为了简化,我们仅打印命令并模拟成功发送printf("Sending HCI command: opcode=0x%04X, params=%p, len=%zu\n", opcode, params, param_len);return true; // 假设命令成功发送
}// 假设的HCI命令状态事件处理函数(由蓝牙协议栈库调用)
void on_hci_command_status(uint8_t status, void *context) {// 打印命令状态printf("HCI Command Status: status=0x%02X\n", status);// 调用用户提供的回调函数(如果有的话)if (command_status_cb) {command_status_cb(status);}// 如果命令成功,则继续获取时钟偏移量(对于中央设备)// 注意:在实际应用中,这里可能需要更多的状态管理来确保正确的流程if (status == 0x00) { // 假设0x00表示成功// 这里应该调用获取时钟偏移量的函数(对于中央设备)// 但为了简化,我们直接模拟一个完成事件simulate_clock_offset_completion(1234); // 假设的时钟偏移量}
}// 假设的获取时钟偏移量完成事件处理函数(由蓝牙协议栈库调用)
void on_hci_read_clock_offset_complete(int16_t clock_offset, uint8_t status, void *context) {// 打印时钟偏移量完成事件printf("HCI Read Clock Offset Complete: clock_offset=%d, status=0x%02X\n", clock_offset, status);// 调用用户提供的回调函数(如果有的话)if (read_clock_offset_complete_cb) {read_clock_offset_complete_cb(clock_offset, status);}
}// 假设的模拟时钟偏移量完成事件的函数(仅用于此示例)
void simulate_clock_offset_completion(int16_t clock_offset) {// 模拟一个成功的时钟偏移量读取完成事件on_hci_read_clock_offset_complete(clock_offset, 0x00, NULL); // 假设0x00表示成功
}// 用户调用以读取时钟偏移量的函数
void read_clock_offset(uint16_t connection_handle, hci_read_clock_offset_complete_callback callback) {// 设置回调函数read_clock_offset_complete_cb = callback;// 准备HCI命令参数uint8_t params[2] = {(connection_handle >> 8) & 0xFF, // 高字节connection_handle & 0xFF         // 低字节};// 发送HCI命令send_hci_command(0x041F, params, sizeof(params), NULL); // 0x0400是HCI组命令的基地址,0x1F是Read Clock Offset的操作码// 注意:在实际应用中,这里应该设置command_status_cb为on_hci_command_status的引用// 但由于此示例的简化性质,直接在send_hci_command之后模拟了命令状态的处理
}int main() {// 设置回调函数以处理命令状态和读取时钟偏移量完成事件command_status_cb = [](uint8_t status) {printf("Command status callback called with status=0x%02X\n", status);};read_clock_offset_complete_cb = [](int16_t clock_offset, uint8_t status) {printf("Read clock offset complete callback called with clock_offset=%d, status=0x%02X\n", clock_offset, status);};// 读取连接句柄为0x0001的设备的时钟偏移量read_clock_offset(0x0001, read_clock_offset_complete_cb);// 注意:在实际应用中,这里应该有一个事件循环来等待和处理来自蓝牙协议栈库的事件// 但由于此示例的简化性质,我们直接模拟了事件的处理return 0;
}

上述代码是一个高度简化的示例,旨在展示流程的逻辑结构。并不包含与蓝牙硬件控制器的实际通信代码。

五、应用场景

HCI_Read_Clock_Offset命令主要用于读取远程设备的时钟偏移量,以实现更精确的时间同步和跳频操作。通过这一命令,蓝牙设备可以优化连接建立、寻呼过程以及同步通信功能,从而提升通信质量和用户体验。

5.1. 加快连接建立速度

  • 场景描述:在蓝牙设备频繁连接和断开的环境中,如智能手机与蓝牙耳机、蓝牙音箱等设备的连接过程,以及蓝牙物联网设备(如智能传感器与网关设备)之间的连接。
  • 应用方式:利用HCI_Read_Clock_Offset命令获取远程设备的时钟偏移量,本地设备可以更准确地预测远程设备的跳频频率,从而快速建立连接,减少连接等待时间。
  • 效果:提高连接速度,减少数据延迟,提升用户体验。

5.2. 优化寻呼过程

  • 场景描述:在蓝牙设备分布密集或电磁环境复杂的环境中,如蓝牙会议系统、蓝牙智能家居系统,以及工业环境等。
  • 应用方式:通过获取时钟偏移量,设备可以更精准地确定远程设备的寻呼扫描频率,避免干扰,提高寻呼成功率。
  • 效果:增强连接的稳定性和可靠性,减少因干扰导致的连接失败。

5.3. 实现同步通信功能

  • 场景描述:对时间同步要求较高的蓝牙应用场景,如蓝牙音频同步播放、蓝牙传感器网络中的时间同步数据采集等。
  • 应用方式:利用时钟偏移量实现设备间的通信频率同步,确保音频播放、数据采集等操作的同步性和准确性。
  • 效果:提升同步通信效果,如实现更精准的音频同步播放,提高传感器网络的监测效果。

六、注意事项

6.1. 命令前提与参数

  • 连接句柄有效性:确认Connection_Handle在有效范围内(0x00000x0EFF)。确保连接句柄对应的连接是ACL - U逻辑链路。
  • 命令参数:指定正确的远端设备地址(BD_ADDR)作为参数。

6.2. 命令执行与事件处理

  • 命令发送与等待
    • 由中央设备发送HCI_Read_Clock_Offset命令。
    • 等待外设响应的HCI_Read_Clock_Offset_Complete事件。
  • 事件处理完整性
    • 不要仅依赖HCI_Command_Status事件,它只表示命令接收状态。
    • 确保正确处理并接收HCI_Read_Clock_Offset_Complete事件。
  • 事件屏蔽防范:检查并避免事件被意外屏蔽的情况。

6.3. 设备角色与命令处理

  • 中央/外围设备差异
    • 中央设备需等待LMP消息交互完成。
    • 外围设备会立即发送事件,不进行LMP PDUs交换。

6.4. 时钟偏移量的理解与应用

  • 数据准确性
    • 考虑到时钟偏移量可能存在的误差。
    • 根据应用场景对时钟偏移量进行校准或处理。
  • 应用场景适配
    • 根据具体需求合理应用时钟偏移量。
    • 结合设备功能和应用场景确定最佳使用方法。

6.5. 命令频率与资源占用

  • 避免过度请求:不要频繁发送命令,以免对系统资源和蓝牙链路造成负担。
  • 资源合理利用:考虑设备资源限制,合理安排命令执行时间。

6.6. 安全性与兼容性

  • 安全性考虑:确保连接已经过加密和身份验证。
  • 兼容性问题:查阅相关设备文档和规格书,确保命令的兼容性和正确性。

综上所述,HCI_Read_Clock_Offset命令是蓝牙技术中用于读取远程设备时钟偏移量的重要工具。通过正确使用该命令,可以加快本地设备与远程设备之间的连接速度,提高蓝牙通信的效率和稳定性。在使用该命令时,需要注意连接句柄的准确性、命令响应的处理、设备兼容性以及命令执行频率等因素。

相关文章:

【0x001F】HCI_Read_Clock_Offset命令详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Read_Clock_Offset 命令格式 2.2. Connection_Handle 三、生成事件 3.1. HCI_Command_Status 事件 3.2. HCI_Read_Clock_Offset_Complete 事件 四、命令执行流程 4.1. 命令发送阶段 4.2. 命令接收与初步反馈阶段 …...

UML(统一建模语言)及其图例使用指南

UML&#xff08;统一建模语言&#xff09;及其图例使用指南 一、UML 介绍二、UML 图表1. 用例图&#xff08;Use Case Diagram&#xff09;2. 类图&#xff08;Class Diagram&#xff09;3. 对象图&#xff08;Object Diagram&#xff09;4. 序列图&#xff08;Sequence Diagra…...

AI写标书工具:高效智能的标书撰写助手——标小兔

在现代商业竞争中&#xff0c;投标是许多企业获得项目的关键途径。而标书的质量直接影响中标的几率。传统的标书撰写过程繁琐&#xff0c;且容易出错&#xff0c;尤其是涉及到大量的数据整理、文字表达和排版工作&#xff0c;这些任务既费时又容易让人产生疲劳感。为了提升工作…...

计算机考研选西电还是成电?

谢邀~先来个总结&#xff1a;电子科技大学计算机综合实力优于西安电子科技大学&#xff0c;但是&#xff0c;二者计算机学硕考研难度没有太大差距&#xff0c;而且考试难度也同属于一个水平&#xff0c;成电性价比更高一些&#xff01;推荐同学优先报考作为985的电子科技大学&a…...

全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句)(一)

在C编程中&#xff0c;顺序结构和分支结构是两种基本的控制流结构&#xff0c;其中顺序结构是一种最简单、最基本的控制结构&#xff0c;即代码按照从上到下的顺序逐行执行&#xff0c;每个语句按照顺序执行&#xff0c;一条语句执行完再执行下一条语句&#xff0c;依次执行所有…...

【再谈设计模式】享元模式~对象共享的优化妙手

一、引言 在软件开发过程中&#xff0c;我们常常面临着创建大量细粒度对象的情况&#xff0c;这可能会导致内存占用过高、性能下降等问题。享元模式&#xff08;Flyweight Pattern&#xff09;就像是一位空间管理大师&#xff0c;它能够在不影响功能的前提下&#xff0c;有效地…...

NestJS中使用nestjs-plugin-module实现插件系统

1. 安装依赖 npm install brewww/nestjs-plugin-module2. 定义插件接口 首先&#xff0c;我们需要定义一个插件接口&#xff0c;这个接口定义了插件需要实现的方法。 hello/plugin.interface.ts export interface HelloServicePlugin {helloworld(): string;hello(name: st…...

jvm排查问题-实践追踪问题 与思路--堆内堆外内存泄漏排查方针

概述 排查问题的一般思路是:现象 ——> 直接原因 ——>根本原因。 从问题现象出发,可以分为 应用逻辑问题、资源使用问题、虚拟机异常: 应用逻辑可能导致报错增加、死锁、程序退出等;资源问题主要集中在CPU上升和内存上升(OOM Kill);虚拟机问题通常包括GC问题、进…...

Presence:Colyseus用于管理实时分布式数据的工具

Colyseus Presence 详细介绍 Presence 是 Colyseus 中用于管理实时分布式数据的一种工具。它主要用于在多房间、多服务器或分布式部署中实现玩家的实时在线状态、数据共享和通信。Presence 提供了一套简单的 API 来处理诸如在线玩家跟踪、分布式数据存储和发布/订阅模式等功能…...

梳理你的思路(从OOP到架构设计)_认识框架(Framework) 01

目录 1、 是框架的核心要素​编辑&i> 范例1&#xff1a; 范例2&#xff1a; 范例3&#xff1a; 1、 <E&I>是框架的核心要素 在特定领域(Domain)里&#xff0c;将EIT造形的<E&I>部份有意义地组合起来&#xff0c;就成为框架(Framework)了。基本…...

【C++11】类型分类、引用折叠、完美转发

目录 一、类型分类 二、引用折叠 三、完美转发 一、类型分类 C11以后&#xff0c;进一步对类型进行了划分&#xff0c;右值被划分纯右值(pure value&#xff0c;简称prvalue)和将亡值 (expiring value&#xff0c;简称xvalue)。 纯右值是指那些字面值常量或求值结果相当于…...

字节跳动Java开发面试题及参考答案(数据结构算法-手撕面试题)

怎么判断两个链表是否相交?怎么优化? 判断两个链表是否相交可以采用多种方法。 一种方法是使用双指针。首先分别遍历两个链表,得到两个链表的长度。然后让长链表的指针先走两个链表长度差的步数。之后,同时移动两个链表的指针,每次比较两个指针是否指向相同的节点。如果指…...

科汛网校KesionEDU CheckOrder SQL注入漏洞复现

0x01 产品简介 科汛网校KesionEDU是KESION科汛开发的在线教育建站系统,支持在线直播教学、课程点播、录播授课等多种教学方式,满足不同场景下的教学需求。提供问答互动、学习点评、在线笔记等功能,增强学员与教师之间的互动交流。拥有在线考试系统,支持单选、多选、问答等…...

【ELK】ES单节点升级为集群模式--太细了!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言准备工作1. 查看现状【单节点】2. 原节点改集群模式3. 改es配置文件&#xff0c;增加集群相关配置项4. *改docker映射的端口* 启动新节点5. docker-compose起一…...

Spring AOP是什么

目录 谈谈自己对于 AOP 的了解 Spring AOP 和 AspectJ AOP 有什么区别? AOP 常见的通知类型有哪些? 多个切面的执行顺序如何控制? 谈谈自己对于 AOP 的了解 AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关&#xff0c;却为业务模块所共同调用的逻辑…...

Ch9 形态学图像处理

Ch9 形态学图像处理 blog点此处&#xff01;<--------- 四大算子相应性质。 腐蚀、膨胀、开闭之间的含义、关系 文章目录 Ch9 形态学图像处理预备知识(Preliminaries)膨胀和腐蚀(Dilation and Erosion)腐蚀膨胀膨胀与腐蚀的对偶关系 开闭操作(Opening and Closing)开运算闭…...

epoll学习

epoll是1个服务端监听n个客户端的多路复用技术&#xff08;通讯方式socket&#xff09; epoll&#xff1a;&#xff08;事件驱动&#xff09;服务端通过管道通讯方式将有变化事件的客户端保存到1个队列 select/poll&#xff1a;&#xff08;轮询驱动&#xff09;服务端主动遍…...

《CS2》报错dxgi.dll缺失怎么办?《CS2》游戏提示dxgi.dll缺失要怎么解决?

一、dxgi.dll缺失的根源 游戏安装问题&#xff1a;dxgi.dll文件是DirectX图形接口的一部分&#xff0c;如果游戏安装不完整或安装过程中出现问题&#xff0c;可能会导致该文件缺失。 系统更新或配置变动&#xff1a;Windows操作系统的更新或某些系统配置的变动&#xff0c;有时…...

Python基础语法之元组

主页有列表&#xff0c;集合和字典的知识点&#xff08;包含对应练习^V^&#xff09; 关注我更新更多初学实例&#xff08;下一个更新元组基础练习&#xff0c;然后集中更新一下C语言&#xff09; 欢迎纠错 元组 一.元组的应用场景 思考&#xff1a;如果想要存储多个数据&am…...

如何实现 MySQL 的读写分离?

面试题 你们有没有做 MySQL 读写分离&#xff1f;如何实现 MySQL 的读写分离&#xff1f;MySQL 主从复制原理的是啥&#xff1f;如何解决 MySQL 主从同步的延时问题&#xff1f; 面试官心理分析 高并发这个阶段&#xff0c;肯定是需要做读写分离的&#xff0c;啥意思&#x…...

Vue.js框架:在线教育系统的安全性与稳定性

2.1系统开发使用的关键技术 本系统在开发中选择B/S框架进行设计&#xff0c;语言采用Java&#xff0c;数据库采用Mysql&#xff0c;并在设计中加入VUE.js技术&#xff0c;本系统的运行环境为Idea。 2.2 VUE.js技术介绍 VUE.js是一个用来开发前台界面的JavaScript框架&#xff0…...

[python SQLAlchemy数据库操作入门]-11.面向对象方式操作股票数据

哈喽,大家好,我是木头左! 通过ORM,开发者可以使用Python类来表示数据库表,从而使得数据库操作更加直观和易于维护。本文将介绍如何使用SQLAlchemy ORM来操作股票数据。 安装 SQLAlchemy 需要安装SQLAlchemy库。可以使用pip命令进行安装: pip install sqlalchemy定义股票…...

Windows 11 中利用 WSL - Linux 虚拟环境部署 ChatTTS-Enhanced 项目教程

#工作记录 在使用 Windows 系统尝试部署一些特定项目时&#xff0c;我们可能会遇到各种各样依赖包安装的问题。比如在 Windows 系统下&#xff0c;当我们想要在 Python 3.10 虚拟环境中&#xff0c;使用命令 “pip install resemble-enhance” 以及 “pip install WeTextProces…...

NPM老是无法install,timeout?npm install失败

NPM老是无法install&#xff0c;timeout&#xff1f; 尝试一下如下操作 一、 更换国内源 npm config set registry https://registry.npmmirror.com npm install或指定源install npm install pkg --registry https://registry.npmmirror.com --legacy-peer-deps如下图 二…...

音乐极客的新玩具:香橙派Zero3快速搭建Melody个人音乐平台

文章目录 前言1. 添加镜像源2. 本地部署Melody3. 本地访问与使用演示4. 安装内网穿透5. 配置Melody公网地址6. 配置固定公网地址 前言 今天要给喜欢听音乐的朋友们介绍一个超酷的DIY项目&#xff0c;在香橙派Zero3上使用Melody搭建自己的个人在线音乐平台&#xff0c;并且借助…...

springboot3版本结合knife4j生成接口文档

1.概述 knife4j官网为&#xff1a;介绍 | Knife4j (xiaominfo.com)https://doc.xiaominfo.com/docs/introduction 初步了解的码友可以初步了解一下官网的如下几个模块&#xff1a; 其中在快速开始模块中&#xff0c;不同的springboot版本都有一个使用的案例demo如下图位置&am…...

广州大彩串口屏安卓/linux触摸屏四路CVBS输入实现同时显示!

一、适用范围 适合广州大彩A40系列产品 产品型号&#xff1a; 二、概述 CVBS只需要一条线缆即可完成视频信号的传输&#xff0c;具有兼容性强、使用简单、成本低廉等优点。典型分辨率为720x480&#xff08;NTSC制&#xff09;或720x576&#xff08;PAL制&#xff09;。 三、…...

pikachu靶场搭建详细步骤

一、靶场下载 点我去下载 二、靶场安装 需要的环境&#xff1a; mysqlApaches&#xff08;直接使用小皮面板Phpstudy&#xff1a;https://www.xp.cn/&#xff09;&#xff0c;启动他们 设置网站&#xff0c;把靶场的路径对应过来 对应数据库的信息 由于没有核对数据库的信…...

Astherus 联手 PancakeSwap 推出 asCAKE,CAKE 最大化收益的最优解?

Astherus 是本轮市场周期中最具创新性的 DeFi 协议之一&#xff0c;其通过推出 AstherusEx 以及 AstherusEarn 两个产品&#xff0c;正在基于真实收益启动 DeFi 市场的增长&#xff0c;并成为加密投资者捕获收益的最佳协议。PancakeSwap 是 BNB Chain 上最大的 DEX&#xff0c;…...

JVM实战—2.JVM内存设置与对象分配流转

大纲 1.JVM内存划分的原理细节 2.对象在JVM内存中如何分配如何流转 3.部署线上系统时如何设置JVM内存大小 4.如何设置JVM堆内存大小 5.如何设置JVM栈内存与永久代大小 6.问题汇总 1.JVM内存划分的原理细节 (1)背景引入 (2)大部分对象的存活周期都是极短的 (3)少数对象…...

无问社区-无问AI模型

无问AI模型是无问社区新上线的一款AI功能&#xff0c;支持文本图像的输入&#xff0c;在文本理解能力、推理能力、视觉能力上相较于“社区助手”有了很大的提升。 我们在预训练模型的技术上增加1.7亿token的训练数据进行强化训练使其具备更好的效果。 更好的消息是我们准备了…...

【记录】列表自动滚动轮播功能实现

目录 效果展示代码 效果展示 代码 <!-- 首页 --> <template><div class"page_body_item_body" mouseenter"stopScroll" mouseleave"scroll(false)"><ele-tableclass"eleTable":table-options"options"…...

前缀树介绍

数风流人物&#xff0c;还看今朝&#xff01; 前缀树 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补全和拼写检查。 前…...

Solon v3.0.5 发布!(Spring 可以退休了吗?)

Solon 框架&#xff01; 新一代&#xff0c;面向全场景的 Java 应用开发框架。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。 追求&#xff1a; 更快、更小、更简单提倡&#xff1a; 克制、高效、开放、生态 有什么特点&am…...

基础组件:

基础组件&#xff1a; RichText 富文本组件&#xff0c;解析并显示HTML格式文本。 适用场景&#xff1a; RichText组件适用于加载与显示一段HTML字符串&#xff0c;且不需要对显示效果进行较多自定义的应用场景。RichText组件仅支持有限的通用属性和事件。具体见属性与事件…...

【LeetCode 面试经典150题】详细题解之滑动窗口篇

【LeetCode 面试经典150题】详细题解之滑动窗口篇 1 滑动窗口理论基础1.1 算法思想1.2 使用场景1.3 使用思路 2 209.长度最小的子数组2.1 题目分析2.2 算法步骤2.3 代码实现2.4 时间复杂度 3 3.无重复字符的最长字串3.1 题目分析3.2 算法步骤3.3 代码实现3.4 复杂度分析 4 30.串…...

【 CSS 】sass 扩展语言的安装

一、全局安装node-sass Sass世界上最成熟、稳定和强大的CSS扩展语言 | Sass中文网 https://www.npmjs.com/package/node-sass NPM镜像_NPM下载地址_NPM安装教程-阿里巴巴开源镜像站 注意&#xff1a;nodejs版本14以上&#xff0c;否则node-sass安装不成功 npm install -g mi…...

【Linux】Linux中用户信息相关的配置文件:/etc/passwd、/etc/group、/etc/shadow、/etc/sudoers

1 用户信息 1.1 /etc/passwd linux上用户的信息保存在/etc/passwd中&#xff0c;看文件名会以为这里保存的是用户密码&#xff0c;但实际上用户密码保存在另一个文件中。 /etc/passwd文件中每行保存一个用户的信息&#xff0c;例如&#xff1a; root:x:0:0:root:/root:/bin…...

electron-vite_18 设置系统音量loudness报错

loudness是一款控制系统音量输出的一款 Node.js 库&#xff1b;但是在electron-vite中直接使用编译的时候会报错&#xff1b;这个时候需要单独处理&#xff1b; 错误分析 error Error: spawn E:\xxx\out\main\adjust_get_current_system_volume_vista_plus.exe 查看编译后项目…...

springboot测试类里注入不成功且运行报错

目录 出错信息 原因 出错信息 写测试类的时候&#xff0c;一直说我注入不成功 而且我运行的时候报错了 java.lang.IllegalStateException: Unable to find a SpringBootConfiguration, you need to use ContextConfiguration or SpringBootTest(classes...) with your te…...

Harmony 网络请求

Http数据请求 axios第三方网络请求工具 1.下载ohpm 2.安装axios 3.使用axios...

Webpack在Vue CLI中的应用

webpack 作为目前最流行的项目打包工具&#xff0c;被广泛使用于项目的构建和开发过程中&#xff0c;其实说它是打包工具有点大材小用了&#xff0c;我个人认为它是一个集前端自动化、模块化、组件化于一体的可拓展系统&#xff0c;你可以根据自己的需要来进行一系列的配置和安…...

docker-componse集群部署Tdengine3.3.2.0

一、centos7.5集群部署三台机器使用docker-componse进行部署 1、三台服务器分别配置host vim /etc/hosts 192.168.13.244 td.master 192.168.13.245 td.slave1 192.168.12.70 td.slave2 2、...

4.3 数据库HAVING语句

having子句要和group by子句联合起来才能使用&#xff0c;不能单独去使用&#xff0c;接下来咱们看一下为什么要引入having子句语法呢&#xff1f;引入having子句也是出于无奈&#xff0c;因为有些条件查询&#xff0c;用group by子句并不能满足要求&#xff0c;比如说查询部门…...

如何使用React,透传各类组件能力/属性?

在23年的时候&#xff0c;我主要使用的框架还是Vue&#xff0c;当时写了一篇“如何二次封装一个Vue3组件库&#xff1f;”的文章&#xff0c;里面涉及了一些如何使用Vue透传组件能力的方法。在我24年接触React之后&#xff0c;我发现这种扩展组件能力的方式有一个专门的术语&am…...

C# 6.0版本的WebAPI接口部署到Linux服务器

将 C# 6.0 的 Web API 部署到 Linux 服务器涉及多个步骤&#xff0c;包括准备环境、构建和发布应用程序、配置 Web 服务器以及确保应用程序正常运行。以下是详细的部署指南&#xff1a; 1. 准备开发环境 安装 .NET SDK 确保你已经在本地开发环境中安装了 .NET SDK&#xff08;…...

ArkTs组件(2)

一.下拉列表组件&#xff1a;Select 1.接口 Select(options: Array<SelectOption>) 参数名类型必填说明optionsArray<SelectOption>是设置下拉选项。 SelectOption对象说明 名称类型必填说明valueResourceStr是 下拉选项内容。 iconResourceStr否 下拉选项图片…...

Bash 脚本教程

注&#xff1a;本文为 “Bash 脚本编写” 相关文章合辑。 BASH 脚本编写教程 as good as well于 2017-08-04 22:04:28 发布 这里有个老 American 写的 BASH 脚本编写教程&#xff0c;非常不错&#xff0c;至少没接触过 BASH 的也能看懂&#xff01; 建立一个脚本 Linux 中有…...

SQL创建和操纵表

本文介绍创建、更改和删除表的基本知识。 1. 创建表 SQL 不仅用于表数据操纵&#xff0c;而且还用来执行数据库和表的所有操作&#xff0c;包括表本身的创建和处理。一般有两种创建表的方法&#xff1a; 多数DBMS 都具有交互式创建和管理数据库表的工具&#xff1b;表也可以…...

1.微服务灰度发布(方案设计)

前言 微服务架构中的灰度发布&#xff08;也称为金丝雀发布或渐进式发布&#xff09;是一种在不影响现有用户的情况下&#xff0c;逐步将新版本的服务部署到生产环境的策略。通过灰度发布&#xff0c;你可以先将新版本的服务暴露给一小部分用户或特定的流量&#xff0c;观察其…...