【0x0014】HCI_Read_Local_Name命令详解
目录
一、命令概述
二、命令格式
三、返回事件及参数说明
3.1. HCI_Command_Complete 事件
3.2. Status
3.3. Local_Name
四、命令执行流程
4.1. 命令发送
4.2. 控制器接收并处理命令
4.3. 控制器返回结果
4.4. 主机接收并解析事件包
4.5. 示例代码
五、应用场景
六、注意事项
6.1. 蓝牙控制器状态
6.2. 命令格式与参数
6.3. 设备兼容性与版本差异
6.4. 数据准确性和完整性
6.5. 错误处理
6.6. 数据使用与隐私保护
6.7. 其他注意事项
HCI_Read_Local_Name命令是蓝牙主机控制器接口(HCI)中的一个命令,用于读取存储在蓝牙BR/EDR(Basic Rate/Enhanced Data Rate)控制器中的本地设备名称。
一、命令概述
HCI_Read_Local_Name命令的主要功能是读取蓝牙BR/EDR控制器中存储的本地设备名称。这个名称是一个用户友好的字符串,用于在蓝牙设备之间显示和识别。通过执行此命令,主机可以获取到本地蓝牙设备的名称,并在需要的时候进行显示或传输。
二、命令格式
HCI_Read_Local_Name
命令遵循HCI命令包的标准格式。
命令的详细格式:
- Packet Type(1字节):对于HCI命令包,其值为
0x01
,表示这是一个HCI命令数据包。 - Opcode(2字节):
- 操作码,由OGF(Opcode Group Field,操作码组字段)和OCF(Opcode Command Field,操作码命令字段)组成。
- 对于
HCI_Read_Local_Name
命令:- OGF:
0x03
(表示Link Control Commands and Link Policy Commands组) - OCF:
0x0014
(表示具体的Read Local Name命令)
- OGF:
- Parameter Total Length(1字节):表示命令参数部分的长度。对于
HCI_Read_Local_Name
命令,由于它不接受任何参数,因此此字段的值通常为0x00
。 - Parameters(0字节):命令参数部分。由于
HCI_Read_Local_Name
命令不接受任何参数,因此此部分为空。
三、返回事件及参数说明
3.1. HCI_Command_Complete 事件
当HCI_Read_Local_Name
命令执行完成后,会生成一个HCI_Command_Complete
事件(除非该事件被屏蔽)。这是蓝牙HCI协议中的标准行为。
HCI_Command_Complete
事件用于通知主机HCI命令已成功执行,并返回命令的结果。该事件的格式通常包括以下几个部分:
- Event Code(1字节):表示事件类型的代码。对于
HCI_Command_Complete
事件,其值通常为0x0E
。 - Packet Length(1字节):表示事件数据部分的长度,包括返回参数和状态码。
- Number of HCI Command Packets(1字节):通常设置为
0x01
,表示此事件对应于一个HCI命令的完成。 - Command Opcode(2字节):与已完成的HCI命令相对应的操作码(Opcode)。
- Status(1字节):表示命令执行的状态。如果值为
0x00
,则表示命令成功执行。其他值表示不同的错误类型。 - Return Parameters(可变长度):包含命令执行的结果。对于
HCI_Read_Local_Name
命令,这将包括读取到的本地名称。名称的长度是可变的,并且紧跟在状态码之后。
3.2. Status
Status状态码是HCI_Read_Local_Name
命令执行结果的重要指示器,主机需要正确解析和处理它以确保蓝牙通信的可靠性和稳定性。
-
0x00:
HCI_Read_Local_Name
命令成功执行。意味着蓝牙控制器已正确读取并返回了本地设备的名称。 -
0x01 至 0xFF:
HCI_Read_Local_Name
命令执行失败。这些值表示不同的错误类型。蓝牙Controller错误代码全面概览_connection rejected due to limited resources-CSDN博客
3.3. Local_Name
Local_Name
参数是 HCI_Read_Local_Name
命令响应( HCI_Command_Complete
事件)的一部分,用于表示蓝牙设备的本地名称。这个名称是对用户友好的描述性名称,采用 UTF-8 编码。
Local_Name
参数的最大长度为 248 个字节。实际名称的长度可能会小于这个最大值,并且名称的末尾不需要用空字符(null terminator)填充。如果名称的实际长度小于 248 个字节,则剩余的空间可能会被忽略或用于未来的扩展。
在实际应用中,这个长度限制可能意味着名称需要被截断以适应这个限制,或者设备制造商可能选择使用更短的名称以避免截断。
四、命令执行流程
4.1. 命令发送
- 主机(Host)构建符合HCI命令格式的
HCI_Read_Local_Name
命令包。 - 命令包包括操作码(OCF为
0x0014
)和表示无额外参数的字节。 - 通过HCI传输层(如USB、UART等)将命令包发送给蓝牙控制器。
4.2. 控制器接收并处理命令
- 蓝牙控制器接收命令包,解析操作码,识别为
HCI_Read_Local_Name
命令。 - 控制器查找预先存储的用户友好名称(存储在特定存储区域)。
4.3. 控制器返回结果
- 若查找成功,控制器构建
HCI_Command_Complete
事件包,包含:- 原命令操作码
- 状态码(
0x00
表示成功) - 读取到的本地名称(最大248字节,UTF-8编码)
- 若查找失败,构建
HCI_Command_Complete
事件包,状态码为非0x00
值(0x01
-0xFF
),无有效本地名称数据。
4.4. 主机接收并解析事件包
- 主机接收
HCI_Command_Complete
事件包,解析操作码,确认是HCI_Read_Local_Name
命令的反馈。 - 解析状态码,判断命令执行是否成功:
- 状态码为
0x00
:成功读取本地名称,提取并用于后续操作(如显示、配对)。 - 状态码为非
0x00
值:根据错误码执行错误处理(如提示用户读取失败、重新尝试)。
- 状态码为
4.5. 示例代码
以下是一个简化的C语言代码示例,用于展示HCI_Read_Local_Name
命令的基本执行流程。请注意,这只是一个概念性的示例,并不包含完整的蓝牙HCI协议栈实现或实际的硬件接口代码。
#include <stdio.h>
#include <stdint.h>
#include <stdbool.h>
#include <string.h>// 假设的HCI命令和事件结构
typedef struct {uint16_t opcode;uint8_t param_len;// 对于HCI_Read_Local_Name,没有额外参数,所以这里不再定义参数字段
} hci_command_packet;typedef struct {uint8_t event_code;uint8_t param_len;uint16_t opcode;uint8_t status;char name[249]; // 包括空终止符,最大248字节名称 + 1字节空终止符
} hci_command_complete_event;// 假设的函数,用于发送HCI命令并接收事件响应
bool send_hci_command_and_wait_for_event(hci_command_packet* cmd, hci_command_complete_event* evt) {// 这里应该包含发送HCI命令到蓝牙控制器的代码,// 以及等待并接收HCI事件响应的代码。// 由于这是一个示例,这些实现细节被省略了。// 假设命令成功执行,并且我们收到了一个模拟的事件响应evt->event_code = 0x0E; // HCI Command Complete Event codeevt->param_len = sizeof(evt->opcode) + sizeof(evt->status) + strlen("MyBluetoothDevice") + 1; // 包括空终止符evt->opcode = cmd->opcode;evt->status = 0x00; // 成功状态码strcpy(evt->name, "MyBluetoothDevice"); // 模拟的本地名称return true; // 假设发送和接收都成功
}int main() {// 构建HCI_Read_Local_Name命令hci_command_packet cmd;cmd.opcode = 0x1014; // OGF=0x01 (Link Control Commands), OCF=0x0014 (Read Local Name)cmd.param_len = 0; // 没有额外参数// 准备接收事件响应的变量hci_command_complete_event evt;// 发送命令并等待响应if (send_hci_command_and_wait_for_event(&cmd, &evt)) {// 检查状态码if (evt.status == 0x00) {// 命令成功执行,打印本地名称printf("Local Name: %s\n", evt.name);} else {// 命令执行失败,打印错误状态码printf("Error: Command failed with status code 0x%02X\n", evt.status);}} else {// 发送或接收命令失败printf("Error: Failed to send command or receive event\n");}return 0;
}
此外,请注意,这个示例中的事件结构hci_command_complete_event
是一个简化的版本,它只包含了读取本地名称命令所需的最少字段。在实际应用中,HCI事件结构可能包含更多的字段和信息。
五、应用场景
以下是该命令的典型使用场景梳理。
-
设备初始化与自检:在蓝牙设备启动或重置后,系统可以使用HCI_Read_Local_Name命令来确认设备名称是否已正确设置。对于设备的初始化和自检过程非常重要,确保设备在通信前具备正确的身份标识。
-
设备兼容性检查:在蓝牙设备与其他设备进行配对或连接之前,通过读取本地设备的名称,可以检查设备之间的兼容性。某些设备可能只与具有特定名称或名称格式的设备兼容。
-
用户交互与识别:在蓝牙设备的用户界面中,显示本地设备的名称有助于用户识别和管理设备。例如,在智能手机的蓝牙设置菜单中,用户可以看到已配对或可发现的蓝牙设备的名称。
-
日志记录与调试:在蓝牙设备的开发、测试和维护过程中,记录设备的名称有助于开发者进行日志分析和问题排查。通过读取本地设备的名称,开发者可以确认设备是否按预期工作。
-
设备管理与配置:在企业环境或智能家居系统中,管理员可能需要通过读取蓝牙设备的名称来管理和配置设备。例如,管理员可以根据设备名称将设备分配到不同的网络或组别中。
-
蓝牙技术研究与开发:对于从事蓝牙技术研究和开发的工程师来说,了解如何读取本地设备的名称是实现设备发现、连接和通信等基本功能的基础。
需要注意的是,在使用HCI_Read_Local_Name命令时,应确保蓝牙控制器处于可用状态,并且与主机建立了有效的通信连接。此外,由于不同蓝牙设备和协议栈的实现可能存在差异,因此在实际应用中可能需要参考特定设备或协议栈的文档来正确使用该命令。
六、注意事项
为确保该命令的正确执行和设备的稳定运行,以下是对使用此命令时需要注意的方面的总结梳理。
6.1. 蓝牙控制器状态
- 可用性:确保蓝牙控制器已打开并准备好进行通信。
- 连接状态:在需要时,确认蓝牙控制器与主机之间已建立有效的通信连接。
6.2. 命令格式与参数
- 遵循规范:严格遵循蓝牙核心规范中定义的HCI命令格式。
- 参数正确:确保命令的发送格式正确,包括操作码、参数总长度等字段,尽管HCI_Read_Local_Name通常不需要额外参数。
6.3. 设备兼容性与版本差异
- 兼容性:考虑不同品牌和型号蓝牙设备对HCI命令的实现差异,确保命令与目标设备的蓝牙控制器兼容。
- 版本更新:注意蓝牙核心规范的更新,确保设备支持所使用的蓝牙版本,并考虑版本间可能存在的细微差异,如名称存储格式、编码方式或长度限制。
6.4. 数据准确性和完整性
- 编码格式:确保正确解析UTF-8编码的本地名称,避免乱码。
- 长度限制:考虑本地名称248字节的长度限制,避免名称被截断或丢失信息。
6.5. 错误处理
- 错误码识别:熟悉蓝牙规范中的控制器错误代码,以便在命令执行失败时确定具体原因。
- 超时处理:设置适当的超时机制,处理命令发送后未收到响应的情况,如重新发送命令、检查连接状态或提示用户设备故障。
6.6. 数据使用与隐私保护
- 合法使用:确保获取的设备名称信息用于合法且符合隐私政策的目的。
- 隐私保护:遵守相关隐私保护法规和标准,确保用户数据的安全。
6.7. 其他注意事项
- 权限要求:在执行HCI命令前,确保具有相应的操作系统或平台权限。
- 命令频率:合理控制命令发送频率,避免对蓝牙控制器造成负担或导致设备不稳定。
综上所述,HCI_Read_Local_Name
命令是蓝牙技术中用于读取本地设备用户友好名称的重要工具,它对于提高蓝牙设备的可用性和用户体验具有重要意义。
相关文章:
【0x0014】HCI_Read_Local_Name命令详解
目录 一、命令概述 二、命令格式 三、返回事件及参数说明 3.1. HCI_Command_Complete 事件 3.2. Status 3.3. Local_Name 四、命令执行流程 4.1. 命令发送 4.2. 控制器接收并处理命令 4.3. 控制器返回结果 4.4. 主机接收并解析事件包 4.5. 示例代码 五、应用场景 …...
理解Java领域中的 DTO、PO 和 VO
在 Java 开发中,DTO(Data Transfer Object)、PO(Persistent Object)和 VO(Value Object)是在不同层面用于数据处理和传递的概念,它们各自有着独特的作用: 一、DTO&#…...
成都和力九垠科技有限公司九垠赢系统Common存在任意文件上传漏洞
免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...
框架模块说明 #09 日志模块_01
背景 日志模块是系统的重要组成部分,主要负责记录系统运行状态和定位错误问题的功能。通常,日志分为系统日志、操作日志和安全日志三类。虽然分布式数据平台是当前微服务架构中的重要部分,但本文的重点并不在此,而是聚焦于自定义…...
Unity热更文件比较工具类
打包出来的热更文件,如果每次都要全部上传到CDN文件服务器,不进耗费时间长,还浪费流量。 所以让AI写了个简单的文件比较工具类,然后修改了一下可用。记录一下。 路径可自行更改。校验算法这里使用的是MD5,如果使用SH…...
Python性能分析深度解析:从`cProfile`到`line_profiler`的优化之路
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在软件开发过程中,性能优化是提升应用质量和用户体验的关键环节。Python作为广泛应用的高级编程语言,其性能分析工具为开发者提供了强大的…...
EF Core配置及使用
Entity Framework Core是微软官方的ORM框架。 ORM:Object Relational Mapping。让开发者用对象操作的形式操作关系数据库。 EF Core是对于底层ADO.NET Core的封装,因此ADO.NET Core支持的数据库不一定被EF Core支持。 代码创建数据库Code First 建实…...
EPS32基础篇开发
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 开发 EPS32基础篇 前言一、GPIO输入输出GPIO可设置一下4种状态代码示例:检测按键,按下时:LED亮,松开时,LED灭 二、…...
【时时三省】(C语言基础)常见的动态内存错误2
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 对非动态开辟空间内存使用free释放 示例: 这个arr数组是在栈上的 *p指向的就是arr 对非动态空间也用了free ferr只能在动态开辟空间使用 使用free释放一块动态开辟空间的一部分…...
Harmony OS开发-ArkUI框架速成四
程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前! 1.图标库 1.1 图标库概述 HarmonyOS 图标库为 HarmonyOS 开发者提供丰富的在线图…...
vulnhub Earth靶机
搭建靶机直接拖进来就行 1.扫描靶机IP arp-scan -l 2.信息收集 nmap -sS -A -T4 192.168.47.132 得到两个DNS; 在443端口处会让我们加https dirb https://earth.local/ dirb https://terratest.earth.local/ #页面下有三行数值 37090b59030f11060b0a1b4e0000000000004312170a…...
ScheduledExecutorService详解
ScheduledExecutorService 是 Java 并发工具包 (java.util.concurrent) 中的一个接口,用于在指定的延迟后执行任务,或者以固定的时间间隔周期性执行任务。它是 ExecutorService 的子接口,提供了更强大的调度功能。 ScheduledExecutorService…...
logback日志文件多环境配置路径
项目中遇到问题,springboot项目 本地jar包部署到现场后,经常遇到现场的日志存放的路径会更改,经过查阅,有两种方式,下面简单说明一下。 一、第一种 启动jar包时 添加参数 --logging.configF:\hgtest\config\logback.x…...
判断一个变量是否为NaN
1. JS代码 NaN(不是一个数字,但数据类型为number)是执行数学运算没有成功,返回失败的结果。 另外,NaN 不等于 NaN 。 //利用 NaN 是唯一一个不等于自身的特点 function _isNaN(val) {if (val ! val) {return true;}ret…...
Flask 快速入门
1. Flask 简介 1.1 什么是 Flask Flask 是一个用 Python 编写的轻量级 Web 框架,被誉为 微框架。它提供基础功能,如路由、请求处理和模板引擎,但不强迫开发者使用特定库或工具,赋予开发人员高度的自由选择权,以满足不…...
性能测试03|JMeter:断言、关联、web脚本录制
目录 一、断言 1、响应断言 2、json断言 3、持续时间断言 二、关联 1、正则表达式介绍 2、正则表达式提取器 3、Xpath提取器 4、JSON提取器 5、JMeter属性 三、web脚本录制 一、断言 定义:让程序自动判断实际的返回结果是否与预期结果保持一致 自动校验…...
微信小程序调用 WebAssembly 烹饪指南
我们都是在夜里崩溃过的俗人,所幸终会天亮。明天就是新的开始,我们会变得与昨天不同。 一、Rust 导出 wasm 参考 wasm-bindgen 官方指南 https://wasm.rust-lang.net.cn/wasm-bindgen/introduction.html wasm-bindgen,这是一个 Rust 库和 CLI…...
java_配置使用nacos完整示例
参考:49 尚上优选项目-平台管理端-整合ESMQ实现商品上下架-流程分析_哔哩哔哩_bilibili 1. 下载安装nacos https://github.com/alibaba/nacos/releases 2. 解压,运行 PS D:\path/to\nacos-server-2.4.3\nacos\bin> .\startup.cmd -m standalone 3.…...
Go语言性能优化-字符串格式化优化
在 Go 语言中,格式化字符串(例如使用 fmt.Sprintf、fmt.Printf 等函数)确实可能对性能产生影响,尤其是当频繁执行格式化操作时。格式化字符串涉及对格式符的解析和数据类型的转换,这会增加额外的开销。为了减少格式化字符串带来的性能影响,可以采取以下一些优化策略: 1…...
Spring源码分析之事件机制——观察者模式(二)
目录 获取监听器的入口方法 实际检索监听器的核心方法 监听器类型检查方法 监听器的注册过程 监听器的存储结构 过程总结 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二ÿ…...
机器学习和深度学习
机器学习(Machine Learning,简称 ML)和深度学习(Deep Learning,简称 DL)都是人工智能(AI)领域的重要技术,它们的目标是使计算机通过数据学习和自主改进,从而完…...
MetaGPT - 多Agent框架
文章目录 一、关于 MetaGPT功能介绍快速开始的演示视频教程 二、安装Pip安装Docker安装 一、关于 MetaGPT MetaGPT 为GPTs分配不同的角色,以形成一个协作实体来完成复杂的任务。 github : https://github.com/geekan/MetaGPTtwitter : https://twitter.com/MetaGP…...
Hyperbolic dynamics
http://www.scholarpedia.org/article/Hyperbolic_dynamics#:~:textAmong%20smooth%20dynamical%20systems%2C%20hyperbolic%20dynamics%20is%20characterized,semilocal%20or%20even%20global%20information%20about%20the%20dynamics. 什么是双曲动力系统? A hy…...
TIM的输入捕获
IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中 我们使用测周法测频率 void IC_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphCl…...
SCAU期末笔记 - 数据库系统概念往年试卷解析
数据库搞得人一头雾水,题型太多太杂,已经准备摆烂了。就刷刷往年试卷,挂不挂听天由命。 2019年 Question 1 选择题 1. R ∩ S R∩S R∩S等于一下哪个选项? 画个文氏图秒了 所以选A. R ∩ S R − ( R − S ) R∩SR-(R-S) R∩…...
黑马跟学.苍穹外卖.Day01
黑马跟学.苍穹外卖.Day01 苍穹外卖-day01课程内容1. 软件开发整体介绍1.1 软件开发流程1.2 角色分工1.3 软件环境 2. 苍穹外卖项目介绍2.1 项目介绍2.2 产品原型2.3 技术选型 3. 开发环境搭建3.1 前端环境搭建3.2 后端环境搭建3.2.1 熟悉项目结构3.2.2 Git版本控制3.2.3 数据库…...
获取系统启动时间
获取系统启动时间 uptime命令 gbgb:~$ uptime09:29:41 up 2:21, 4 users, load average: 0.00, 0.00, 0.00 gbgb:~$ 这里的up 13 min表示系统已经运行了2个小时13分钟。 date 命令 /proc/uptime gbgb:~$ date -d "$(awk -F. {print $1} /proc/uptime) second ago&…...
Istio 补充 Kubernetes 的不足
1 Istio 补充 Kubernetes 的不足 Kubernetes 强大但无法解决复杂分布式系统中的非功能性需求,如流量路由、协议转换、请求重试和负载均衡。Istio作为Service Mesh,通过独立的代理进程处理这些需求,避免直接修改业务代码。 2. 独立的代理进程…...
以图像识别为例,关于卷积神经网络(CNN)的直观解释
大家读完觉得有意义记得关注和点赞!!! 作者以图像识别为例,用图文而非数学公式的方式解释了卷积神经网络的工作原理, 适合初学者和外行扫盲。 目录 1 卷积神经网络(CNN) 1.1 应用场景 1.2 起…...
使用PyTorch实现基于稀疏编码的生成对抗网络(GAN)在CIFAR-10数据集上的应用
使用PyTorch实现基于稀疏编码的生成对抗网络(GAN)在CIFAR-10数据集上的应用 目录 使用PyTorch实现基于稀疏编码的生成对抗网络(GAN)在CIFAR-10数据集上的应用1. 引言2. 数据集介绍3. 模型网络结构3.1 网络结构3.2 编码器3.3 生成器3.4 判别器4. 模型优化器与损失函数4.1 优…...
Java重要面试名词整理(十八):Sentinel
文章目录 服务雪崩及其解决方案技术选型: Sentinel or Hystrix 流量治理组件Sentinel**基于SentinelResource注解埋点实现资源保护** Sentinel控制台**限流阈值类型****流控模式****直接****关联** **流控效果**系统规则——系统自适应保护 限流算法**计数器法****滑动时间窗口…...
【微信小程序获取用户手机号
微信小程序获取用户手机号有2种,一种是前端自己解密,一种是获取后发给后端,后端去解密 重点:要在微信公众平台设置里面绑定微信开放平台账号,不然反解不出来用户手机号上代码: <button style"font-size: 16px;" open-type"getPhoneNumber" getphonenumb…...
Profinet转EtherNet/IP网关连接AB PLC的应用案例
某大型制造企业的生产车间同时采用了西门子 S7 - 1500 PLC 作为核心控制系统的一部分,负责主要生产流程的控制与数据处理;而在特定生产环节,由于历史设备遗留或工艺配套需求,存在使用 AB PLC 的情况。这就导致了在整个自动化生产系…...
Maven的依赖管理
1. 依赖管理 依赖管理,可以将有关依赖项的所有信息放在共同的POM中,并对子POM中的工件进行更简单的引用。举个例子: 父POM <project>......<dependencyManagement><dependencies><dependency><groupId>gro…...
验证码识别插件 - captcha-killer
验证码识别插件 - captcha-killer 简介 captcha-killer 是一款用于 Burpsuite 的验证码识别插件。它的主要功能是调用各种验证码识别接口,以便在进行渗透测试时能够自动识别和绕过验证码。这个插件本身并不直接进行验证码的识别,而是通过调用外部的 OC…...
面试题解,Java中的“对象”剖析
一、说一说JVM中对象的内存布局?new一个对象到底占多大内存? 话不多说,看下图,对象的内存布局图 一个对象的内存布局主要由三部分组成:对象头(Object Header)、实例数据(Instance D…...
对计网大题的一些指正(中间介绍一下CDM的原理和应用)
目录 前言: (1)五层原理体系结构每层功能: 下面是文档的答案: 我在之前的博客里面有介绍过五层原理体系结构, 按理来说,第五层应该是应用层才对,而会话层的功能应该被放到应用层…...
122. 买卖股票的最佳时机 II
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/?envTypestudy-plan-v2&envIdtop-interview-150问题分析: 和买卖股票的最佳时机I这题相比,区别就是可以买多只股票虽然同时只能持有一支,但是我们还是可以…...
qt中如何判断字符串是否为数字,整数,浮点数?
在 Qt 中,可以使用多种方法来判断字符串是否为数字、整数或浮点数。Qt 提供了一些方便的字符串和数值处理函数,可以帮助你实现这些判断。以下是几种常见的方法: 1. 使用 QRegularExpression Qt 提供了 QRegularExpression 类,可…...
《GICv3_Software_Overview_Official_Release_B》学习笔记
1.不同版本的 GIC 架构及其主要功能如下图所示: 2.GICv2m(Generic Interrupt Controller Virtualization Model)是针对ARM架构的GIC(通用中断控制器)的一种扩展, GICv2m扩展为虚拟化环境中的中断管理提供了…...
告别Kibana:Elasticsearch 桌面客户端的新变革
告别Kibana:Elasticsearch 桌面客户端的新变革 在大数据处理与分析领域,Elasticsearch 及其相关技术的应用日益广泛。长期以来,Kibana 在数据可视化与查询管理方面占据重要地位,但随着技术的不断发展,用户对于更高效、…...
【蓝桥杯研究生组】第14届Java试题答案整理
试题链接:链接 A题 满足条件的答案有:35813116 public class TianShu {public static void main(String[] args) {int ans 0;// 2000.1.1 - 2000000.1.1// 年份是月份的倍数,也是日的倍数for (int year2000; year<2000000; year) {for …...
链式调用方式重写父类set方法导致fastjson解析的对象属性未赋值
反序列化后发现属性为null 昨天使用fastjson的JSON.parseArray(json, class)反序列化的时候,发现返回的list列表中的对象某个属性为null,但是json字符串里面这个属性是有值的,经过排查发现是因为子类重写了父类的set方法,且返回值…...
[AUTOSAR 基础入门] - AUTOSAR配置工具
返回总目录 前文我们提到了要借助 EasySAR 平台来助力大家更好地融合 AUTOSAR 的理论与实践,让大家能够切实将所学知识转化为实际操作能力。建议大家感兴趣的去注册一下看看。跳转链接:EasySAR EasySAR是昂辉科技基于 AUTOSAR 方法论设计的一款面向汽车…...
鸿蒙开发:实现键值数据库存储
前言 鸿蒙当中数据持久化存储,为我们提供了多种的实现方式,比如用户首选项方式,关系型数据库方式,键值型数据库方式,文件存储方式等等,对于数据量比较的小的,我们直接选择轻量级的用户首选项方式…...
ip属地的信息准确吗?ip归属地不准确怎么办
在数字化时代,IP属地信息成为了我们日常生活中不可或缺的一部分。在各大社交媒体平台上,IP属地信息都扮演着重要的角色。然而,随着技术的不断进步和网络的复杂性增加,IP属地信息的准确性问题也日益凸显。那么,IP属地信…...
CSS——1.优缺点
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><link rel"stylesheet" type"text/css" href"1-02.css"/></head><body><!--css:层叠样式表…...
Android设备使用AOA协议进行主机与配件模式通信
1.使用TYPC-C数据线连接两台华为手机: TYPE-C线,先连接下图右边的ACCESSORY 再连接左边的HOST 此时左边的HOST(白色) 会给右边的ACCESSORY(黑色) 充电 接着打开左连接的HostChart会自动调起授权,然后会启动右边的AccessoryChart USB HOS…...
MySQL中深度分页问题的优化
MySQL中深度分页问题的优化 在MySQL中,使用LIMIT子句进行分页查询时,可能会遇到一个常见的性能问题:当LIMIT子句中的偏移量X很大时,查询速度会显著下降。例如,LIMIT 0,10可能只需要20毫秒,而LIMIT 1000000,…...
5. C语言 常量与宏定义
本章目录: 前言一、什么是常量?1. 整型常量2. 浮点型常量3. 字符常量4. 字符串常量 二、如何定义常量?1. 使用 #define 宏定义2. 使用 const 关键字 三、#define 和 const 的区别四、使用建议1. 使用场景区分2. 避免宏定义的潜在问题 五、特殊用法与小技…...