QMI8658 - 姿态传感器学习笔记 - Ⅲ

news2024/12/26 11:22:18

文章目录

    • 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 推荐工作条件

符号参数MINTYPEMAX单位
VDD供电电压1.711.83.6V
VDDIOIO脚供电电压1.711.83.6V
V(IL)数字低电平输入电压0.3*VDDIOV
V(IH)数字高电平输入电压0.7*VDDIO0.3+VDDIOV
V(OL)数字低电平输出电压0.1*VDDIOV
V(OH)数字高电平输出电压0.9*VDDIOV

2. 校准(COD)

支持陀螺仪X轴和Y轴的按需校准。 基于内部集成功能,QMI8658A可以校准陀螺仪X轴和Y轴的内部增益,从而获得更精确的灵敏度,并在QMI8658A芯片上更紧密地分布X轴和Y轴灵敏度。
请注意, 陀螺仪的 Z 轴不受 COD 影响。

2.1 校准步骤

  1. 设置 CTRL7.aEN = 0 和 CTRL7.gEN = 0,禁用加速度计和陀螺仪。
  2. 通过 CTRL9 命令发出 CTRL_CMD_ON_DEMAND_CALIBRATION (0xA2)。
  3. 等待约 1.5 秒让 QMI8658A 完成 CTRL9 命令。
  4. 读取 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 轴的未来数据。 同时,新的参数会更新到下面的寄存器中,供主机读取和保存。

  1. Gyro-X gain (16 bits) will be in dVX_L and dVX_H registers (0x51, 0x52)
  2. Gyro-Y gain (16 bits) will be in dVY_L and dVY_H registers (0x53, 0x54)
  3. 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 例程),如下所示:

  1. 通过设置 CTRL7.aEN = 0 和 CTRL7.gEN = 0 禁用加速度计和陀螺仪
  2. 将 Gyro-X 增益(16 位)写入寄存器 CAL1_L 和 CAL1_H 寄存器(0x0B,0x0C)
  3. 将 Gyro-Y 增益(16 位)写入寄存器 CAL2_L 和 CAL2_H 寄存器(0x0D,0x0E)
  4. 将 Gyro-Z 增益(16 位)写入寄存器 CAL3_L 和 CAL3_H 寄存器(0x0F,0x10)
  5. 将 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 中读取。 主机可以通过以下程序随时启动自检。
加速度计自检程序:

  1. 禁用传感器 (CTRL7 = 0x00)。
  2. 将适当的加速度计 ODR (CTRL2.aODR) 和位 CTRL2.aST (bit7) 设置为 1 以触发自检。
  3. 等待 QMI8658A 将 INT2 驱动为高电平,如果 INT2 已启用(CTRL1.bit4 = 1),或者 STATUSINT.bit0 设置为 1。
  4. 将 CTRL2.aST(bit7) 设置为 0,以清除 STATUSINT1.bit0 和/或 INT2。
  5. 检查 QMI8658A 是否将 INT2 驱动回低电平,并将 STATUSINT1.bit0 设置为 0。
  6. 阅读 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 中读取。 主机可以通过以下程序随时启动自检。
陀螺仪自检程序:

  1. 禁用传感器 (CTRL7 = 0x00)。
  2. 将位 gST 设置为 1。(CTRL3.bit7 = 1’b1)。
  3. 等待 QMI8658A 将 INT2 驱动为高电平,如果 INT2 已启用,或者 STATUSINT.bit0 设置为 1。
  4. 将 CTRL3.aST(bit7) 设置为 0,以清除 STATUSINT1.bit0 和/或 INT2。
  5. 检查 QMI8658A 是否将 INT2 驱动回低电平,或将 STATUSINT1.bit0 设置为 0。
  6. 读取陀螺仪自检结果:
  • 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

  1. 主机需要将此命令所需的数据提供给 QMI8658A。 主机通常通过将数据放置在一组称为 CAL 寄存器的寄存器中来实现这一点。 最多使用八个 CAL 寄存器。 请参阅表 29。
  2. 使用适当的命令值写入 Ctrl9 寄存器 0x0A,请参见表 28。
  3. 一旦根据命令值执行了相应的功能,设备将设置 STATUSINT.bit7 为 1,并提高 INT1(如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0)。
  4. 主机必须通过将 CTRL_CMD_ACK (0x00) 写入 CTRL9 寄存器来确认这一点,STATUSINT.bit7 (CmdDone) 将在收到 CTRL_CMD_ACK 命令时重置为 0。 如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0,则 INT1 在寄存器读取时被拉低。
  5. 如果设备需要任何数据,此时将可用。 为每个命令单独指定数据的位置。

4.2 读Ctrl9

  1. 使用适当的命令值写入 Ctrl9 寄存器 0x0A。
  2. 一旦根据命令值执行了相应的功能,设备将设置 STATUSINT.bit7 为 1,并提高 INT1(如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0)。
  3. 主机必须通过将 CTRL_CMD_ACK (0x00) 写入 CTRL9 寄存器来确认这一点,STATUSINT.bit7 (CmdDone) 将在收到 CTRL_CMD_ACK 命令时复位为 0。 如果 CTRL1.bit3 = 1 & CTRL8.bit7 == 0,则 INT1 在寄存器读取时被拉低。
  4. 数据可从设备的 CAL 寄存器中获得。 为每个命令单独指定数据的位置。

4.3 Ctrl9详细命令说明

  • CTRL_CMD_ACK(0x00)
    主机在收到 CmdDone 信息时确认 QMI8658A,以结束 CTRL9 协议。
  • CTRL_CMD_RST_FIFO(0x04)
    将 0x04 写入 Ctrl9 寄存器 0x​​0a 的 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 寄存器 0x​​0A 来发出命令。
  • 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脚说明默认值
0aux_rpu_disSDx,SCx,RESV-NC(pin10)0:启用上拉 1:禁用上拉0
1icm_rpu_disSDx0:启用上拉 1:禁用上拉0
2cs_rpu_disCS0:启用上拉 1:禁用上拉0
3i2c_rpu_disSCL, SDA0:启用上拉 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 引脚。

cmdvalueaddrtime max(ms)flag addrflag value
reset0x0B0x60150x4D0x80

6. 民间EVB评估板

6.1 模块获取链接

请添加图片描述

6.2 模块资料更新记录

在这里插入图片描述

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

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

相关文章

直接缓存访问DCA

直接缓存访问DCA:网卡原本DMA写是将接收到的数据帧写入系统内存,DCA机制是网卡DMA写输入的数据能直接发送到属于CPU内部的L2高速缓存中,从而提高网络IO的性能。 设备驱动程序要初始化网卡的DCA功能,将CPU ID号(通过获取…

CentOS安装Whisper | RedHat安装Whisper | 服务器上安装Whisper

1、升级Python版本(可选) CentOS 7.9 系统默认安装的Python版本有两个,如果输入python -V我们看到的是python2的版本信息,如果我们输入python3 -V我们看到的是python3的版本信息。 由于whisper要求使用的是python版本是在3.8到3…

Linux(Ubuntu)安装和使用Edge浏览器

全文内容完全由AI创作,并通过人工核验,感谢各位的阅读。 Microsoft Edge是一款现代化的浏览器,它拥有众多功能和强大的性能,为用户带来更加流畅的浏览体验。 Edge最近推出了分屏功能,支持一个窗口同时显示两个选项卡&…

MySQL基础 — 多表查询以及事务管理

文章目录 MySQL基础 — 多表查询以及事务管理一、多表查询1.1 对应关系1.2 准备数据1.3 概述1.4 内连接1.5 外连接1.6 自连接1.7 联合查询 union1.8 子查询1.8.1 标量子查询1.8.2 列子查询1.8.3 行子查询1.8.4 表子查询 二、事务2.1 简介2.2 操作演示2.3 控制事务2.3.1 控制事务…

深入浅出Vite:深入理解 Rollup 的插件机制

上一节我们学会了 Rollup 构建工具的使用,相信你已经对 Rollup 的基础概念和使用有了基本的掌握。同时我们也知道,仅仅使用 Rollup 内置的打包能力很难满足项目日益复杂的构建需求。对于一个真实的项目构建场景来说,我们还需要考虑到模块打包…

如何通过CRM系统做好客户的分级分类

随着市场竞争的不断加剧,尤其是以客户为中心时代的到来,企业越来越注重客户的管理和服务。而CRM系统,作为企业客户管理的重要工具,其核心任务是对客户进行分级分类,以便更好地为客户提供定制化的服务。 客户之间的价值…

在 Docker 容器中安装 nvm

目录 前言一、步骤1.下载nvm安装脚本2.激活nvm3.安装Node.js4.验证 Node.js 是否安装成功5.如果需要安装特定版本的 Node.js,可以使用以下命令6.如果需要使用特定版本的 Node.js,可以使用以下命令6.验证特定版本的 Node.js 是否安装成功 总结 前言 提示…

关于 arduino 中的 random()和randomSeed()的使用

0、random() 函数: 用于生成一个指定范围内的伪随机整数,可以使用该函数在程序中产生不同的随机数。其语法如下: random(min, max) 其中,min 表示随机数的最小值,max 表示随机数的最大值(不包括该…

介绍几种常见的运维发布策略

随着Devops的发展,为了提高运维发布的成功率,探索出了多种发布策略。本文简单介绍几种常见发布策略, 以及它们适用的场景和优缺点。 第一种,停机发布 这是最早的一种发布策略,停机发布会在发布以前关闭服务,停止用户…

benders分解算法 逻辑思路整理(加星)

Benders decomposition 目录 1.benders的分类 2. 经典的benders分解 2.1 经典的benders分解注意点 2.2 benders分解的核心——子问题和对偶子问题的分析 benders分解本质是: (1)将问题分解为松弛主问题和子问题 (2&#xff0…

支付宝SDK接口调试- cpolar内网穿透工具实现公网地址调试(1)

文章目录 1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道 4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名 6. 使用固定二级子域名进行访问 转发自cpolar内网穿透的文章:Java支付宝沙箱环境支付&#xff0…

Cisco Identity Services Engine (ISE) 3.2 Patch2 发布 - 思科身份服务引擎

Cisco Identity Services Engine (ISE) 3.2 Patch2 发布 - 思科身份服务引擎 请访问原文链接:https://sysin.org/blog/cisco-ise-3/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 工作场所零信任安全的核心所在 …

FL Studio水果软件好用吗?对电脑硬件环境有哪些需求

如果你打算将来朝着艺术和音乐方向发展,那么学习音乐理论和音乐制作就是一门基础课了。 实践才是检验学习效果途径,在我们日常的练习中,一款功能强大且易学的音乐制作工具是少不了的。在没有实际体验过各个音乐制作工具的功能前,…

SpringCloud概论

目录 1.实现微服务需要解决的问题 2.解决这些问题需要的技术栈 3.spring cloud 4.Netflix和Alibaba 5.springCloud和doubbo 6.版本适配 7.停更 1.实现微服务需要解决的问题 马丁福勒于2014年在一篇文章中提出微服务架构,原文地址如下: Microser…

C++STL— stack和queue的介绍及使用

stack stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其只能从容器的一端进行元素的插入与提取操作。 stack的定义方式 方式一&#xff1a; 使用默认的适配器定义栈。 stack<int> st1; 方式二&#xff1a; 使用特定的适配器定义…

病毒分析丨plubx

作者丨黑蛋 一、基本信息 文件名称 00fbfaf36114d3ff9e2c43885341f1c02fade82b49d1cf451bc756d992c84b06 文件格式 RAR 文件类型(Magic) RAR archive data, v5 文件大小 157.74KB SHA256 00fbfaf36114d3ff9e2c43885341f1c02fade82b49d1cf451bc756d992c84b06 SHA1 1c251974b2e…

CTF 2023 三道pwn题

作者丨selph appointment_book 程序信息 程序保护信息&#xff1a; ➜ HeroCTF checksec appointment_book [*] /home/selph/ctf/HeroCTF/appointment_book Arch: amd64-64-little RELRO: No RELRO Stack: Canary found NX: NX enabled …

报名仅剩十天!又一开发者公布高分方案源代码,助力软件杯选手高效解题

‍‍ 本文作者&#xff1a;艾宏峰 算法工程师 M6 Global赛道总排名4th KDD Cup 2022风电功率预测飞桨赛道5th “中国软件杯”大学生软件设计大赛——龙源风电赛道&#xff0c;5月31日预选赛截止&#xff0c;80%选手将晋级区域赛&#xff0c;欢迎大家抓紧报名&#xff01; 赛题背…

如何编写快速高效的SQL查询(二)——为什么查询速度会慢与优化数据访问样例

为什么查询速度会慢&#xff1f; 我们现在已经知道MySQL优化器帮我们做了什么了&#xff0c;在尝试编写快速的查询之前&#xff0c;需要清楚一点&#xff0c;真正重要的是响应时间。如果把查询看作一个任务&#xff0c;那么它由一系列子任务组成&#xff0c;每个子任务都会消耗…

Django+mysql+bootstrap学习

python与mysql 创建表结构 create databse unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci; use unicom; create table admin(id int not null auto_increment primary key,username varchar(16) not null,password varchar(64) not null,mobile char(11) not null )…