QMI8658 - 姿态传感器学习笔记 - Ⅲ
文章目录
- 1.复位
- 1.1 上电复位:
- 1.2 推荐工作条件
- 2. 校准(COD)
- 2.1 校准步骤
- 2.2 校准注意事项:
- 2.3 校准状态指示
- 2.4 校准参数更新
- 3. 自检
- 3.1 加速度计自检
- 3.2 陀螺仪自检
- 4. Ctrl9
- 4.1 写Ctrl9
- 4.2 读Ctrl9
- 4.3 Ctrl9详细命令说明
- 5. 中断
- 5.1 同步采样模式
- 5.2 非同步采样模式
- 6. 民间EVB评估板
- 6.1 [**模块获取链接**](https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-12236672109.13.81875d44YDxChS&id=719601687670)
- 6.2 模块资料更新记录
1.复位
1.1 上电复位:
通过将 VDD 和 VDDIO 线从断电状态(VDD = 0V,VDDIO = 0V)驱动到有效工作范围来初始化上电复位。 详见 3.2。 上电复位过程从 VDDIO 开始,并且 VDD 在最终电平的 1% 以内。
触发复位(上电复位和软件复位)后,QMI8658 将运行复位过程。 UI 寄存器、内部 RAM、FIFO 将设置为默认值,模拟和数字电路将被禁用。
1.2 推荐工作条件
符号 | 参数 | MIN | TYPE | MAX | 单位 |
---|---|---|---|---|---|
VDD | 供电电压 | 1.71 | 1.8 | 3.6 | V |
VDDIO | IO脚供电电压 | 1.71 | 1.8 | 3.6 | V |
V(IL) | 数字低电平输入电压 | 0.3*VDDIO | V | ||
V(IH) | 数字高电平输入电压 | 0.7*VDDIO | 0.3+VDDIO | V | |
V(OL) | 数字低电平输出电压 | 0.1*VDDIO | V | ||
V(OH) | 数字高电平输出电压 | 0.9*VDDIO | V |
2. 校准(COD)
支持陀螺仪X轴和Y轴的按需校准。 基于内部集成功能,QMI8658A可以校准陀螺仪X轴和Y轴的内部增益,从而获得更精确的灵敏度,并在QMI8658A芯片上更紧密地分布X轴和Y轴灵敏度。
请注意, 陀螺仪的 Z 轴不受 COD 影响。
2.1 校准步骤
- 设置 CTRL7.aEN = 0 和 CTRL7.gEN = 0,禁用加速度计和陀螺仪。
- 通过 CTRL9 命令发出 CTRL_CMD_ON_DEMAND_CALIBRATION (0xA2)。
- 等待约 1.5 秒让 QMI8658A 完成 CTRL9 命令。
- 读取 COD_STATUS 寄存器 (0x46) 以检查 COD 实现的结果/状态。
2.2 校准注意事项:
在此过程中,建议将设备置于安静状态,否则 COD 可能会失败并报错。
如果成功,之后重新校准的增益参数将应用于传感器数据。 更新后的增益输出到 UI 寄存器,主机可以读取,参见 14.3。 如果执行上电复位或软复位,重新校准的增益参数将丢失,QMI8658A 将使用片上默认增益参数。
如果失败,不影响陀螺仪的运行,QMI8658A 将继续使用之前的可用参数(最后一次成功的 COD 参数或片内默认参数)。
2.3 校准状态指示
如果 COD 命令成功执行,COD_STATUS 寄存器将输出 0x00 进行指示
2.4 校准参数更新
成功 COD 后,经过 COD 校正的新增益将应用于陀螺仪 X 和 Y 轴的未来数据。 同时,新的参数会更新到下面的寄存器中,供主机读取和保存。
- Gyro-X gain (16 bits) will be in dVX_L and dVX_H registers (0x51, 0x52)
- Gyro-Y gain (16 bits) will be in dVY_L and dVY_H registers (0x53, 0x54)
- Gyro-Z gain (16 bits) will be in dVZ_L and dVZ_H registers (0x55, 0x56)
如果主机保存了这些增益参数,则可以使用 CTRL9 命令 CTRL_CMD_APPLY_GYRO_GAINS (0xAA) 将它们传回 QMI8658A(无需再次调用 COD 例程),如下所示:
- 通过设置 CTRL7.aEN = 0 和 CTRL7.gEN = 0 禁用加速度计和陀螺仪
- 将 Gyro-X 增益(16 位)写入寄存器 CAL1_L 和 CAL1_H 寄存器(0x0B,0x0C)
- 将 Gyro-Y 增益(16 位)写入寄存器 CAL2_L 和 CAL2_H 寄存器(0x0D,0x0E)
- 将 Gyro-Z 增益(16 位)写入寄存器 CAL3_L 和 CAL3_H 寄存器(0x0F,0x10)
- 将 0xAA 写入 CTRL9 并遵循 CTRL9 协议
一旦 CTRL9 命令成功完成,恢复的增益将对 Gyroscope 的未来数据生效。
请注意,始终建议不时运行 COD 以应用 Gyro-X 和 Gyro-Y 灵敏度的精确和最新校正。 设计人员应小心恢复过时的增益参数,尤其是当 PCB 应力发生显着变化时。
3. 自检
3.1 加速度计自检
加速度计自检 (Check-Alive) 用于确定加速度计是否正常工作并在可接受的参数范围内工作。
它是通过施加静电力来驱动加速度计的三个 X、Y 和 Z 轴中的每一个来实现的。 如果加速度计机械结构通过感应至少 200 mg 来响应此输入刺激,则可以认为加速度计是正常工作的。
加速度计自检数据可在寄存器 dVX_L、dVX_H、dVY_L、dVY_H、dVZ_L 和 dVZ_H 中读取。 主机可以通过以下程序随时启动自检。
加速度计自检程序:
- 禁用传感器 (CTRL7 = 0x00)。
- 将适当的加速度计 ODR (CTRL2.aODR) 和位 CTRL2.aST (bit7) 设置为 1 以触发自检。
- 等待 QMI8658A 将 INT2 驱动为高电平,如果 INT2 已启用(CTRL1.bit4 = 1),或者 STATUSINT.bit0 设置为 1。
- 将 CTRL2.aST(bit7) 设置为 0,以清除 STATUSINT1.bit0 和/或 INT2。
- 检查 QMI8658A 是否将 INT2 驱动回低电平,并将 STATUSINT1.bit0 设置为 0。
- 阅读 Accel 自检结果:
- X channel: dVX_L and dVX_H (registers 0x51 and 0x52)
- Y channel: dVY_L and dVY_H (registers 0x53 and 0x54)
- Z channel: dVZ_L and dVZ_H (registers 0x55 and 0x56)
结果为 16 位,格式为 U5.11,分辨率为 0.5mg (1 / 2^11 g)。
如果所有三个轴的绝对结果都高于 200mg,则可以认为加速度计功能正常。 否则,加速度计不能被认为是有效的。
请注意,自检功能会自动将 full-scall 设置为 16g,并使用用户设置的 aODR (CTRL2.aODR)。 在自检结束时,QMI8658A 将在启动 Check-Alive) 例程之前使用用户设置的原始值更新 CTR2。
自检的典型时间(从将 aST 设置为 1,直到启用 INT2 的上升沿,或 STATUSINT.bit0 设置为 1)大约需要 25 个 ODR:
- 25ms @ 1KHz ODR
- 800ms @ 32Hz ODR
- 2.2s @ 11Hz ODR
3.2 陀螺仪自检
陀螺仪自检 (Check-Alive) 用于确定陀螺仪是否正常工作。
它是通过施加静电力来驱动陀螺仪的三个 X、Y 和 Z 轴中的每一个并测量相应 X、Y 和 Z 轴上的机械响应来实现的。 如果陀螺仪输出的等效幅度对于每个轴大于 300dps,则可以认为该陀螺仪正常工作。
陀螺仪自检数据可在输出寄存器 dVX_L、dVX_H、dVY_L、dVY_H、dVZ_L 和 dVZ_H 中读取。 主机可以通过以下程序随时启动自检。
陀螺仪自检程序:
- 禁用传感器 (CTRL7 = 0x00)。
- 将位 gST 设置为 1。(CTRL3.bit7 = 1’b1)。
- 等待 QMI8658A 将 INT2 驱动为高电平,如果 INT2 已启用,或者 STATUSINT.bit0 设置为 1。
- 将 CTRL3.aST(bit7) 设置为 0,以清除 STATUSINT1.bit0 和/或 INT2。
- 检查 QMI8658A 是否将 INT2 驱动回低电平,或将 STATUSINT1.bit0 设置为 0。
- 读取陀螺仪自检结果:
- X channel: dVX_L and dVX_H (registers 0x51 and 0x52)
- Y channel: dVY_L and dVY_H (registers 0x53 and 0x54)
- Z channel: dVZ_L and dVZ_H (registers 0x55 and 0x56)
以 U12.4 格式读取 16 位结果,分辨率为 62.5mdps (1 / 2^4 dps)。
如果所有三个轴的绝对结果都高于 300dps,则可以认为陀螺仪功能正常。 否则,陀螺仪不能被认为是功能性的。
请注意,自检功能会自动设置 CTRL3 的满量程 (gFS) 和 ODR (gODR)。 在自检结束时,QMI8658A 将在开始自检程序之前将 CTR3 更新为用户设置的原始值。
自检过程的典型时间(从将 gST 写入 1,直到 INT2 的上升沿(如果启用,或 STATUSINT.bit0 设置为 1))的成本约为 400 毫秒。
4. Ctrl9
4.1 写Ctrl9
- 主机需要将此命令所需的数据提供给 QMI8658A。 主机通常通过将数据放置在一组称为 CAL 寄存器的寄存器中来实现这一点。 最多使用八个 CAL 寄存器。 请参阅表 29。
- 使用适当的命令值写入 Ctrl9 寄存器 0x0A,请参见表 28。
- 一旦根据命令值执行了相应的功能,设备将设置 STATUSINT.bit7 为 1,并提高 INT1(如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0)。
- 主机必须通过将 CTRL_CMD_ACK (0x00) 写入 CTRL9 寄存器来确认这一点,STATUSINT.bit7 (CmdDone) 将在收到 CTRL_CMD_ACK 命令时重置为 0。 如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0,则 INT1 在寄存器读取时被拉低。
- 如果设备需要任何数据,此时将可用。 为每个命令单独指定数据的位置。
4.2 读Ctrl9
- 使用适当的命令值写入 Ctrl9 寄存器 0x0A。
- 一旦根据命令值执行了相应的功能,设备将设置 STATUSINT.bit7 为 1,并提高 INT1(如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0)。
- 主机必须通过将 CTRL_CMD_ACK (0x00) 写入 CTRL9 寄存器来确认这一点,STATUSINT.bit7 (CmdDone) 将在收到 CTRL_CMD_ACK 命令时复位为 0。 如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0,则 INT1 在寄存器读取时被拉低。
- 数据可从设备的 CAL 寄存器中获得。 为每个命令单独指定数据的位置。
4.3 Ctrl9详细命令说明
- CTRL_CMD_ACK(0x00)
主机在收到 CmdDone 信息时确认 QMI8658A,以结束 CTRL9 协议。 - CTRL_CMD_RST_FIFO(0x04)
将 0x04 写入 Ctrl9 寄存器 0x0a 的 CTRL9 命令允许主机指示设备重置 FIFO。 FIFO 数据、样本计数和标志将被清除并重置为默认状态。 - CTRL_CMD_REQ_FIFO(0x05)
当主机想要通过 CTRL9 进程写入 0x05 从 FIFO 中获取数据时,会发出此 CTRL9 命令。
成功完成 CTRL9 过程后,将启用 FIFO 读取模式,设备将 FIFO 数据定向到 FIFO_DATA 寄存器(0x17),直到 FIFO 为空。读取 FIFO 数据后,主机必须通过写入 FIFO_CTRL 寄存器将 FIFO_CTRL.FIFO_rd_mode 设置为 0,这将导致 FIFO_STATUS.FIFO_WTM/FIFO_FULL 被清除和/或 INT 引脚(如果启用)被取消断言。请参阅错误!未找到参考来源。错误!未找到参考来源。 CTRL9 操作,详见 8.8。 - CTRL_CMD_WRITE_WOM_SETTING(0x08)
当主机想要启用/修改设备的运动唤醒功能的触发阈值或消隐间隔时,会发出此 CTRL9 命令。有关设置此功能的详细信息,请参阅 12 运动唤醒 (WoM)。一旦指定的 CAL 寄存器加载了适当的数据,就会通过将 0x08 写入 CTRL9 寄存器 0x0A 来发出命令。 - CTRL_CMD_ACCEL_HOST_DELTA_OFFSET(0x09)
当主机想要手动更改加速度计偏移时,会发出此 CTRL9 命令。 每个增量偏移值应包含 16 位,格式为有符号 4.12(12 小数位,单位为 1 / 2^12)。 用户必须将偏移量写入以下寄存器:- Accel_Delta_X : {CAL1_H, CAL1_L}
- Accel_Delta_Y : {CAL2_H, CAL2_L}
- Accel_Delta_Z : {CAL3_H, CAL3_L}
接下来,通过将 0x09 写入 CTRL9 寄存器 0x0A 来发出命令。 请注意,当传感器重新上电或系统重置时,此偏移更改会丢失。
- CTRL_CMD_GYRO_HOST_DELTA_OFFSET(0x0A)
当主机想要手动更改陀螺仪偏移时发出此 CTRL9 命令。 每个增量偏移值应包含 16 位,格式为有符号 11.5(5 个小数位,单位为 1 / 2^5)。 用户必须将偏移量写入以下寄存器:- Gyro_Delta_X : {CAL1_H, CAL1_L}
- Gyro_Delta_Y : {CAL2_H, CAL2_L}
- Gyro_Delta_Z : {CAL3_H, CAL3_L}
接下来,通过将 0x0A 写入 CTRL9 寄存器 0x0A 来发出命令。 请注意,当传感器重新上电或系统重置时,此偏移更改会丢失。
- CTRL_CMD_CONFIGURE_TAP(0x0C)
此 CTRL9 命令用于配置 Tap 检测参数。 有关详细信息,请参阅 10.3 配置 Tap。 - CTRL_CMD_CONFIGURE_PEDOMETER(0x0D)
发出此 CTRL9 命令以配置计步器检测的参数。 有关详细信息,请参阅 11.2 配置计步器。 - CTRL_CMD_CONFIGURE_MOTION(0x0E)
发出此 CTRL9 命令以配置运动检测的参数。 请参阅 9.4 配置移动侦测。 - CTRL_CMD_RESET_PEDOMETER(0x0F)
发出此 CTRL9 命令以清除计步器的步数。 有关详细信息,请参阅 11.6 重置步数。 - CTRL_CMD_COPY_USID(0x10)
USID 是每个 QMI8658A 部件的唯一 ID。
此 CTRL9 命令将以下数据复制到 UI 寄存器中。 它由主机将 0x10 写入 CTRL9 来启动。 发出命令后,主机可以从如下所示的寄存器中读取数据:
FW_Version byte 0 → dQW_L
FW_Version byte 1 → dQW_H
FW_Version byte 2 → dQX_L
USID_Byte_0 → dVX_L
USID_Byte_1 → dVX_H
USID_Byte_2 → dVY_L
USID_Byte_3 → dVY_H
USID_Byte_4 → dVZ_L
USID_Byte_5 → dVZ_H
请注意,在上电复位或软复位成功后,FW_Version 和 USID 将自动复制到相应的寄存器一次,以供主机读取。 这些寄存器可以在启用传感器后更改,因此在读取之前应执行 CTRL_CMD_COPY_USID 命令将 FW_Version 和 USID 复制到相应的寄存器中。 - TRL_CMD_SET_RPU(0x11)
此 CTRL9 命令在主机配置 IO 上拉电阻时发出。 每个位控制一个电阻器组合,如表 30 所示:
Bit | 名称 | pin脚 | 说明 | 默认值 |
---|---|---|---|---|
0 | aux_rpu_dis | SDx,SCx,RESV-NC(pin10) | 0:启用上拉 1:禁用上拉 | 0 |
1 | icm_rpu_dis | SDx | 0:启用上拉 1:禁用上拉 | 0 |
2 | cs_rpu_dis | CS | 0:启用上拉 1:禁用上拉 | 0 |
3 | i2c_rpu_dis | SCL, SDA | 0:启用上拉 1:禁用上拉 | 0 |
4:7 | 保留 | NA |
主机通过发出带有 0x11 的 WCtrl9 命令写入适当的 CAL1_L 位。
默认情况下,启用所有上拉电阻。 向该位写入 1 将相应地禁用上拉电阻,而写入 0 将启用上拉电阻。
- CTRL_CMD_AHB_CLOCK_GATING(0x12)
当设置了锁定机制(CTRL7.bit7 == 1(syncSmpl))时,应该禁用CTRL_CMD_AHB_CLOCK_GATING,以保证数据读取的锁定机制,防止可能的错位。 有关详细信息,请参阅 14 按需校准 (COD)。 - CTRL_CMD_ON_DEMAND_CALIBRATION(0xA2)
此 CTRL9 命令使主机能够不时重新校准陀螺仪灵敏度。 请参阅 14 按需校准 (COD)。 - CTRL_CMD_APPLY_GYRO_GAINS(0xAA)
此 CTRL9 命令使主机能够将保存的陀螺仪增益恢复到 QMI8658A,以避免再次运行 COD。 当环境发生显着变化时不建议这样做,例如显着的 PCB 应力变化。 请参阅 14.4 保存和恢复新的增益参数。
5. 中断
QMI8658A 有两条中断线,INT1 和 INT2。
通过配置 CTRL1.bit3(INT1) 或 CTRL1.bit4(INT2),可以将 INT1 和 INT2 配置为 High-Z 模式或 Push-Pull 模式。如果 CTRL1.bit3 (CTRL1.bit4) 设置为 0,则 INT1(INT2) 将相应地设置为 High-Z 模式。而如果 CTRL1.bit3 (CTRL1.bit4) 设置为 1,则 INT1(INT2) 将相应地设置为 Push-Pull 模式。默认情况下,INT1 和 INT2 处于高阻模式。
如果 QMI8658A 配置为运动唤醒 (WoM) 模式,则不会生成传感器数据。 INT 引脚行为遵循 WoM 的配置,请参阅 12 运动唤醒 (WoM)。
如果 QMI8658A 未处于运动唤醒模式,则中断映射有两种模式,如下所述。主机可以将多个内部信号/中断源配置到 INT 引脚(INT1 和/或 INT2)。如果驱动到一个 INT 引脚,则多个源在 LOGIC-OR 中起作用。
5.1 同步采样模式
SyncSample 模式支持在读取过程中锁定值。请参阅 13 锁定机构有关传感器数据寄存器的详细信息。
设置 CTRL7.bit7(SyncSample) == 1 将启用 SyncSample 模式。
如图 12 所示。在 SyncSample 模式下,CTRL9 握手信号将被路由到 INT1。详情请查看 5.10。
如果启用,运动事件中断(任何运动、无运动、显着运动、计步器、轻敲)将路由到 INT1。
该模式不支持 FIFO 功能,DRDY 信号将被路由到 INT2。
5.2 非同步采样模式
该模式支持 FIFO 功能和自由中断配置,如图 13 所示。
如果 CTRL7.bit7(SyncSample) == 0,则 STATUSINT 寄存器的第 1 位将具有与 INT1 相同的值,而 STATUSINT 寄存器的第 0 位将具有与 INT2 相同的值。
在 Non-SyncSample 模式下,CTRL9 握手有两种方法。如果设置 CTRL8.bit7 = 0,主机可以检查 INT1 引脚是否为握手信号的高电平;如果设置 CTRL8.bit7 = 1,则轮询 STATUSINT.bit7 进行握手。
在 Non-SyncSample 模式下,可以通过设置 CTRL8.bit6 = 1 将运动事件中断配置为 INT1,或者通过设置 CTRL8.bit6 = 0 将运动事件中断配置为 INT2。请注意,运动事件引擎可以通过 CTRL8.bit 启用[4:0],详见表 22。
在 Non-SycnSample 模式下,传感器数据可以通过数据寄存器或 FIFO 输出。配置 FIFO_CTRL.FIFO_MODE = ‘bypass’ 模式,将启用 DRDY 功能并禁用 FIFO 功能;配置 FIFO_CTRL.FIFO_MODE = other 模式,将启用 FIFO 功能并禁用 DRDY 功能。
如果启用 FIFO 模式,如果 CTRL1.bit2 设置为 1,则 FIFO 中断可以配置到 INT1 引脚,如果 CTRL1.bit2 设置为 0,则可以将 FIFO 中断配置到 INT2 引脚。有关 FIFO 中断行为的更多详细信息,请参阅 8 FIFO 说明。
如果启用 DRDY 模式,如果 CTRL7.bit5(DRDY_DIS) 设置为 0,则 DRDY 信号将被路由到 INT2,如果 CTRL7.bit5(DRDY_DIS) 设置为 1,则 DRDY 信号将被路由到 INT2 引脚。
cmd | value | addr | time max(ms) | flag addr | flag value |
---|---|---|---|---|---|
reset | 0x0B | 0x60 | 15 | 0x4D | 0x80 |
6. 民间EVB评估板
6.1 模块获取链接
6.2 模块资料更新记录
相关文章:

QMI8658 - 姿态传感器学习笔记 - Ⅲ
文章目录 1.复位1.1 上电复位:1.2 推荐工作条件 2. 校准(COD)2.1 校准步骤2.2 校准注意事项:2.3 校准状态指示2.4 校准参数更新 3. 自检3.1 加速度计自检3.2 陀螺仪自检 4. Ctrl94.1 写Ctrl94.2 读Ctrl94.3 Ctrl9详细命令说明 5. 中断5.1 同步采样模式5.…...

PHP+vue二手车交易信息网站系统
原来二手车网站由于二手车网站制度的不完善,许多城市的二手车网站市场都很少,而且欺诈行文较严重,肆意提高价格,隐瞒汽车所存在的故障问题,人们买卖二手车还是经过朋友帮忙介绍的途径来实现。这就导致了很多人的想卖车…...
NTM中attr的用法
代码1 attrs class CopyTaskParams(object):name attrib(default"copy-task")controller_size attrib(default100, convertint)controller_layers attrib(default1,convertint)num_heads attrib(default1, convertint)sequence_width attrib(default8, convert…...

【python资料】pandas的条件查询
一、说明 在使用Pandas的DataFrame进行数据挖掘的时候,需要形形色色的条件查询,但是这些查询的基本语法是啥,查询的灵活性如何,本文将对他们进行详细列出,便于以后查阅。 二、Pandas条件查询方法 2.1 简单条件查询 1、…...

中间件(三)- Kafka(二)
Kafka 6. 高效读写&Zookeeper作用6.1 Kafka的高效读写6.2 Kafka中zookeeper的作用 7. 事务7.1 Producer事务7.2 Consumer事务 8. API生产者流程9. 通过python调用kafka9.1 安装插件9.2 生产者(Producer)与消费者(Consumer)9.3…...

DAY01_MySQL基础数据类型navicat使用DDL\DML\DQL语句练习
目录 1 数据库相关概念1.1 数据库1.2 数据库管理系统1.3 常见的数据库管理系统1.4 SQL 2 MySQL2.1 MySQL安装2.1.1 安装步骤 2.2 MySQL配置2.2.1 添加环境变量2.2.2 MySQL登录2.2.3 退出MySQL 2.3 MySQL数据模型2.4 MySQL目录结构2.5 MySQL一些命令2.5.1 修改默认账户密码2.5.2…...

数据安全复合治理框架和模型解读(0)
数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,当前和未来更需要专业和创新。数据安全治理要充分考虑现实数据场景,强化业务安全与数据安全治理,统一来治理,…...
Java程序设计入门教程--逻辑运算符和位运算符
目录 逻辑运算符 位运算符 逻辑运算符 逻辑运算符就是表示逻辑关系的运算符。下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假。 逻辑运算符表 操作符 描述 例子 && 当且仅当两个操作数都为真,条件才为真。 &…...

接口测试简介以及接口测试用例设计思路
接口测试简介 1.什么是接口 接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准,就好比usb接口,他是系统向外接提供的一种用于物理数据传输的一个接口,当然仅仅是一个接口是不能进行传输的&#x…...

C++ Qt项目实战:构建高效的代码管理器
C Qt项目实战:构建高效的代码管理器 一、项目概述(Introduction)1.1 项目背景(Project Background)1.2 项目目标(Project Goals)1.3 项目应用场景(Project Application Scenarios&am…...

【JavaScript 递归】判断两个对象的键值是否完全一致,支持深层次查询,教你玩转JavaScript脚本语言
博主:東方幻想郷 Or _LJaXi 专栏分类:JavaScript | 脚本语言 JavaScript 递归 - 判断两个对象的键值 🌕 起因🌓 代码流程⭐ 第一步 判断两个对象的长度是否一致⭐ 第二步 循环 obj 进行判断两个对象⭐ 第三步 递归条件判断两个对象…...
卷积、相关、匹配滤波、脉冲压缩以及模糊函数
文章目录 【 1. 卷积 】1.1 连续卷积1.2 离散卷积【 2.相关 】2.1 自相关2.2 互相关【 3.匹配滤波 】3.1 滤波器模型3.2 有色噪声-匹配滤波器3.3 白噪声-匹配滤波器3.3.1 原始-白噪声-匹配滤波器3.3.2 简化-白噪声-匹配滤波器3.4 动目标的匹配滤波【 4.脉冲压缩】4.1 时域脉冲压…...

C# 栈(Stack)
目录 一、概述 二、基本的用法 1.入栈 2.出栈 Pop 方法 Peek 方法 3.判断元素是否存在 4.获取 Stack 的长度 5.遍历 Stack 6.清空容器 7.Stack 泛型类 三、结束 一、概述 栈表示对象的简单后进先出 (LIFO) 非泛型集合。 Stack 和 List 一样是一种储存容器&#x…...

网络流量监控及流量异常检测
当今的企业面临着许多挑战,尤其是在监控其网络基础设施方面,需要确保随着网络规模和复杂性的增长,能够全面了解网络的运行状况和安全性。为了消除对网络性能的任何压力,组织应该采取的一项重要行动是使用随组织一起扩展的工具监控…...
六.热修复
文章目录 前言什么是热修复?如何进行热修复?热修复需要解决的问题 1.Android常用的热修复解决方案2.ClassLoader类加载机制2.1 Android类加载器2.2 双亲委托机制2.3 类查找流程 3.插桩式热修复运行期修复落地3.1 什么是字节码插桩?3.2 ASM3.3…...

2000万的行数在2023年仍然是 MySQL 表的有效软限制吗?
谣言 互联网上有传言说我们应该避免在单个 MySQL 表中有超过 2000 万行。否则,表的性能会下降,当它超过软限制时,你会发现 SQL 查询比平时慢得多。这些判断是在多年前使用HDD硬盘存储时做出的。我想知道在2023年对于基于SSD的MySQL数据库来说…...
jvm问题排查
常用工具 命令查询资源信息 top:显示系统整体资源使用情况 vmstat:监控内存和 CPU iostat:监控 IO 使用 netstat:监控网络使用 查看java进程 jps 查看运行时信息 jinfo pid gc工具 jstat: 查看jvm内存信息 GCViewer — 离线分析G…...

【Redis】浅谈Redis-集群(Cluster)
文章目录 前言1、集群实现1.1 创建cluster目录,并将redis.conf复制到该文件夹1.2 复制redis.conf,并进行配置1.3 启动redis,查看启动状态1.4 合成集群1.5 查看集群1.6 集群读写操作 2、SpringBoot整合redis集群2.1 引入包2.2 设置配置2.3 使用…...

Python3实现基于ARIMA模型来预测茅台股票价格趋势
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...

自动化测试selenium环境搭建
自动化测试工具selenium搭建 1. 自动化和selenium基本概念 1) 什么是自动化?为什么要做自动化? 自动化测试能够代替一部分的手工测试,自动化测试能够提高测试的效率。随着项目功能的增加,版本越来越多,版本的回归测试的压力也…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

MySQL:分区的基本使用
目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...