蓝牙耳机和手机的具体蓝牙通信流程

news2026/5/2 9:29:54
蓝牙耳机和手机通信不是只有一条“蓝牙连接”这么简单。实际上一副耳机和手机之间通常会同时跑好几个协议/通道1. 经典蓝牙 BR/EDR 用来传音乐、通话、播放控制 A2DP / AVRCP / HFP 2. BLE 低功耗蓝牙 用来做弹窗、配套 App 控制、电量显示、ANC 设置、OTA 等 GAP / GATT 3. 如果是新一代 LE Audio 可能用 BLE Isochronous LC3 传音频大多数普通蓝牙耳机尤其是传统 TWS 耳机核心还是听歌A2DP 控制播放/音量AVRCP 打电话HFP App 控制/电量/弹窗BLE GATT1. 手机和耳机之间不是 IP 端口而是蓝牙地址 Profile网络通信里你熟悉的是IP 地址 端口号 例如 192.168.1.10:8080蓝牙里不是这样。蓝牙设备靠蓝牙地址 BD_ADDR Service UUID L2CAP PSM RFCOMM Channel Profile例如手机蓝牙地址 11:22:33:44:55:66 耳机蓝牙地址 AA:BB:CC:DD:EE:FF手机连接耳机不是连接IP:Port而是先发现耳机地址然后查询它支持哪些蓝牙服务A2DP Sink 支持播放音乐 AVRCP Target 支持播放控制 HFP HF 支持通话 Battery Service 支持电量读取 厂商私有服务 支持 App 控制2. 总体通信架构图传统蓝牙耳机大概是这样手机 App / 系统音频 / 电话 │ ├── A2DP音乐音频 ├── AVRCP播放/暂停/上一曲/下一曲/音量 ├── HFP电话通话 └── BLE GATT电量、弹窗、设置、OTA │ 手机蓝牙协议栈 │ 蓝牙射频 2.4GHz │ 耳机蓝牙协议栈 │ ├── A2DP Sink接收音乐 ├── AVRCP Controller/Target控制播放 ├── HFP HF通话 └── BLE GATT Server给手机 App 读写配置 │ 音频解码 / DSP / DAC / 功放 / 喇叭3. 第一次连接配对 Pairing 流程第一次使用耳机时通常要进入配对模式。比如耳机开盖后进入配对耳机AA:BB:CC:DD:EE:FF 手机11:22:33:44:55:663.1 耳机进入可发现状态耳机开始让自己可以被手机发现耳机进入 Inquiry Scan / Page Scan 或者 BLE Advertising手机蓝牙设置里开始搜索设备。手机会看到设备名Vik Earbuds 地址AA:BB:CC:DD:EE:FF 设备类型Audio / Headset3.2 手机点击连接耳机用户在手机上点Vik Earbuds手机开始和耳机建立底层链路。经典蓝牙里面大概是手机 耳机 Inquiry 扫描 ──────── 耳机响应设备信息 Page 连接 ──────── 建立 ACL 链路 Pairing ─────── 配对认证 生成 Link Key ────── 双方保存密钥 开启加密 ─────── 后续通信加密3.3 配对成功后保存密钥手机和耳机都会保存一个密钥叫Link Key保存后下次就不需要重新配对了。下次开盖时流程变成耳机广播/可连接 手机识别到这是以前配对过的设备 手机自动重连 用之前保存的 Link Key 加密连接所以你平时看到的“自动回连”底层就是靠之前保存的配对信息。4. 配对后手机查询耳机支持什么服务配对和底层连接建立后手机会通过SDP查询耳机支持哪些服务。SDP 全称Service Discovery Protocol 服务发现协议手机会问耳机你支持哪些蓝牙服务耳机会告诉手机我支持 1. A2DP Sink可以接收音乐 2. AVRCP可以控制播放 3. HFP HF可以作为通话耳机 4. 可能还有 Battery Service 5. 可能还有厂商私有 BLE 服务可以类比 TCP 里的端口发现TCP 服务端开放 80 / 443 / 1883 端口 蓝牙 耳机暴露 A2DP / AVRCP / HFP / GATT 服务5. 听音乐时A2DP 工作流程听歌走的是A2DP。A2DP 全称Advanced Audio Distribution Profile 高级音频分发协议角色是手机A2DP Source 耳机A2DP Sink意思是手机是音频源头 耳机是音频接收端5.1 A2DP 音乐链路流程比如手机播放一首歌手机音乐 App ↓ 手机系统音频框架 ↓ 蓝牙 A2DP Source ↓ 音频编码 SBC / AAC / aptX / LDAC ↓ AVDTP ↓ L2CAP ↓ ACL 蓝牙链路 ↓ 耳机蓝牙芯片 ↓ A2DP Sink ↓ 音频解码 ↓ DSP 音效处理 ↓ I2S / PCM ↓ DAC / 功放 ↓ 喇叭出声图手机 蓝牙耳机 音乐 App │ │ PCM 原始音频 ▼ A2DP Source │ │ 编码成 SBC/AAC/aptX/LDAC ▼ AVDTP / L2CAP / ACL │ 2.4GHz 蓝牙无线传输 ├────────────────────────────────────── A2DP Sink │ │ 解码成 PCM ▼ DSP / DAC / 喇叭5.2 音频不是直接传 PCM手机一般不会直接把 PCM 裸音频丢给耳机而是先编码。常见编码SBC蓝牙 A2DP 基础必选编码 AAC苹果/部分安卓常用 aptX高通方案常见 LDAC索尼方案常见 LHDC部分国产耳机常见大概流程音乐文件 / 流媒体 ↓ 手机解码成 PCM ↓ 再编码成蓝牙音频编码例如 SBC/AAC ↓ 发给耳机 ↓ 耳机解码成 PCM ↓ 播放所以蓝牙耳机里通常有蓝牙协议栈 音频 codec 解码器 DSP 音效算法 DAC 或外部 Codec 功放 扬声器6. 播放控制AVRCP 工作流程你按耳机上的按钮单击播放/暂停 双击下一曲 三击上一曲 长按音量加减/语音助手这些通常走AVRCP。AVRCP 全称Audio/Video Remote Control Profile 音视频远程控制协议它管的是播放 暂停 上一曲 下一曲 音量 歌曲信息 播放状态6.1 耳机控制手机播放暂停比如你按一下右耳耳机检测到按键 ↓ 耳机协议栈生成 AVRCP 命令 ↓ 发送 Play/Pause 命令给手机 ↓ 手机系统收到控制命令 ↓ 音乐 App 暂停/播放图蓝牙耳机 手机 按键单击 │ ▼ AVRCP Controller │ │ Play/Pause 命令 ├────────────────────────────── AVRCP Target │ ▼ 音乐 App 暂停/播放这里常见角色是耳机AVRCP Controller 手机AVRCP Target但是实际产品里手机和耳机可能都同时支持 Controller/Target因为还要处理音量、状态、歌曲信息等。6.2 手机把歌曲信息发给耳机有些耳机或车机能显示歌曲名 歌手 播放进度 播放状态这也可以通过 AVRCP 相关机制传递。比如手机当前播放 歌名Song A 歌手Artist B 状态Playing耳机或车机可以获取这些媒体信息。7. 打电话时HFP 工作流程打电话不是走 A2DP而是走HFP。HFP 全称Hands-Free Profile 免提协议角色手机Audio Gateway简称 AG 耳机Hands-Free简称 HF意思是手机是电话网关 耳机是免提设备7.1 HFP 包含两部分HFP 里有两条重要通道1. 控制通道 RFCOMM 上跑 AT 命令 2. 语音音频通道 SCO / eSCO 链路上传双向语音可以画成手机 耳机 HFP AG HFP HF │ │ │ AT 命令控制通道走 RFCOMM │ ├───────────────────────────────────────────┤ │ │ │ SCO/eSCO 语音通道 │ ├───────────────────────────────────────────┤7.2 来电话时具体发生什么假设手机来电手机收到蜂窝网络来电 ↓ 手机通过 HFP 控制通道通知耳机 ↓ 耳机响铃/播放提示音 ↓ 用户按耳机接听 ↓ 耳机通过 AT 命令告诉手机接听 ↓ 手机建立 SCO/eSCO 语音链路 ↓ 双向语音开始具体一点手机 AG 耳机 HF 来电 │ │ RING / 来电状态通知 ├──────────────────────────────────── 耳机响铃提示 用户按耳机接听 ATATA ────────────────────────────────────┤ 建立 SCO/eSCO 语音链路 ├════════════════════════════════════┤ 手机下行语音 ───────────────────────── 耳机麦克风上行语音 ──────────────────7.3 通话音频怎么走通话音频和听歌不同。听歌A2DP 高音质 单向手机 - 耳机 延迟可以稍高通话HFP 双向语音 手机 - 耳机对方说话 耳机 - 手机你的麦克风声音 低延迟 音质比 A2DP 低HFP 常见语音编码CVSD传统窄带语音 mSBC宽带语音俗称高清通话的一种基础方式所以你会发现听音乐时音质好 一进入电话/语音聊天音质可能变差原因是手机从 A2DP 音乐通道切换到了 HFP 通话通道。8. 为什么打电话时音乐音质会变差因为模式切换了。听音乐时手机 - 耳机 A2DP SBC/AAC/aptX/LDAC 高码率 单向音频打电话时手机 - 耳机 HFP CVSD/mSBC 低延迟双向语音 同时要用麦克风蓝牙经典音频里传统 HFP 不是为高保真音乐设计的而是为实时语音通话设计的。所以A2DP适合听音乐 HFP适合打电话9. 电量显示、弹窗、降噪设置BLE GATT 流程很多耳机连接手机时除了经典蓝牙还会开一个 BLE 通道。BLE 常用于1. 开盖弹窗 2. 左右耳电量 3. 充电盒电量 4. ANC 降噪模式设置 5. 通透模式设置 6. 触摸按键功能设置 7. 固件 OTA 升级 8. 查找耳机 9. EQ 设置9.1 BLE 角色通常耳机BLE Peripheral GATT Server 手机BLE Central GATT Client流程耳机 BLE 广播 ↓ 手机扫描到耳机 ↓ 手机连接 BLE ↓ 手机发现 GATT 服务 ↓ 手机读写 Characteristic9.2 读取电量例子假设耳机有一个 GATT 服务Service UUID厂商私有服务 Characteristic UUID电量特征值手机读取手机 GATT Client 耳机 GATT Server Read Battery Characteristic ──────── 查询当前电量 ──────────────────────────────────── Response: 左耳 85% 右耳 82% 盒子 60%9.3 设置降噪模式例子手机 App 里点开启 ANC 降噪手机通过 BLE 写耳机的某个 Characteristic手机 GATT Client 耳机 GATT Server Write ANC Mode ON ──────────────── 耳机切换 DSP 参数 开启降噪算法 ──────────────────────────────────── Write Response / Notify 状态9.4 BLE GATT 不负责传统音乐音频这个要注意。传统蓝牙耳机里音乐不是 BLE GATT 传的 通话也不是 BLE GATT 传的BLE GATT 主要传控制命令 状态 电量 配置 少量数据传统音乐和通话主要走A2DP / HFP10. 一次完整连接过程从开盖到听歌下面把流程完整串起来。10.1 耳机开盖耳机上电 ↓ 读取 Flash 里保存的配对记录 ↓ 发现之前连过手机 11:22:33:44:55:66 ↓ 进入回连模式耳机可能同时做两件事1. 经典蓝牙尝试回连手机 2. BLE 开始广播让手机或 App 发现10.2 手机发现耳机如果之前配对过手机系统可能自动发现并回连手机蓝牙后台扫描/监听 ↓ 发现耳机 ↓ 根据配对记录发起连接10.3 建立经典蓝牙 ACL 链路先建立基础链路手机 耳机 建立 ACL 链路 ────────── 成功 认证加密 ────────── 成功ACL 可以理解为经典蓝牙里的普通数据链路A2DP、AVRCP、HFP 的控制部分很多都基于它承载。10.4 建立 Profile 连接手机接着连接多个 Profile1. A2DP准备传音乐 2. AVRCP准备播放控制 3. HFP准备电话通话大概手机 耳机 连接 A2DP ──────────────── A2DP Sink 就绪 连接 AVRCP ──────────────── 播放控制就绪 连接 HFP ──────────────── 通话控制就绪10.5 手机开始播放音乐手机音乐 App 播放 ↓ 手机系统选择蓝牙耳机作为音频输出 ↓ A2DP Start ↓ 手机编码音频 ↓ 蓝牙发送 ↓ 耳机接收解码 ↓ 喇叭播放流程图手机音乐 App │ ▼ 系统音频路由选择蓝牙耳机 │ ▼ A2DP Source 编码 SBC/AAC/aptX │ ▼ 蓝牙 ACL 链路发送音频包 │ ▼ 耳机 A2DP Sink 解码 │ ▼ DSP / DAC / 喇叭11. 听歌过程中按耳机按键比如用户双击右耳下一曲耳机按键/触摸检测 ↓ 耳机 MCU/蓝牙 SoC 判断为“下一曲” ↓ 通过 AVRCP 发送 Next 命令 ↓ 手机收到 AVRCP 命令 ↓ 音乐 App 切到下一首 ↓ 手机继续通过 A2DP 发新歌音频图耳机 手机 双击右耳 │ ▼ AVRCP: NEXT ├────────────────────────────────── 音乐 App 下一曲 A2DP 继续发音频 ═══════════════════════════════════12. 听歌时突然来电话这个流程很典型。当前状态 A2DP 正在播放音乐 AVRCP 可控制播放 HFP 已连接但未通话来电话后手机收到来电 ↓ 暂停或降低 A2DP 音乐 ↓ 通过 HFP 通知耳机来电 ↓ 耳机播放铃声/提示音 ↓ 用户按耳机接听 ↓ HFP 建立 SCO/eSCO 语音链路 ↓ 开始双向通话流程图手机 耳机 A2DP 音乐播放中 ════════════════════════════════════ 来电 │ │ HFP RING / call status ├───────────────────────────────── 用户按耳机接听 │ HFP ATATA ─────────────────────────────────┤ 建立 SCO/eSCO 语音链路 ══════════════════════════════════ 手机下行语音 ─────────────────────── 耳机麦克风上行语音 ────────────────挂断后SCO/eSCO 语音链路关闭 ↓ HFP 回到空闲 ↓ 手机恢复 A2DP 音乐播放13. TWS 左右耳之间怎么通信TWS 耳机还多一个问题手机怎么同时给左耳和右耳传声音常见有几种方案。13.1 传统主从转发模式早期或普通 TWS 常见手机只连接主耳 主耳再把另一声道转发给副耳例如手机 ────蓝牙经典链路──── 右耳主耳 ────私有链路──── 左耳副耳流程手机把立体声音频发给右耳 右耳播放右声道 右耳把左声道转发给左耳 左耳播放左声道图手机 │ │ A2DP 立体声音频 ▼ 右耳主耳 ├── 播放右声道 └── 转发左声道 ───── 左耳副耳 └── 播放左声道缺点主耳耗电更快 主耳延迟更重 左右耳同步难度高13.2 双耳分别和手机通信一些新方案会让手机和左右耳都建立某种连接降低单主耳压力。概念上类似手机 ├──────── 左耳 └──────── 右耳但具体实现和芯片厂商、手机系统、耳机方案强相关。很多 TWS 同步技术是厂商私有的例如高通、恒玄、络达、苹果等都有自己的方案。13.3 左右耳同步要解决什么TWS 难点不只是收到声音还要1. 左右耳同时播放不能一边快一边慢 2. 延迟要低 3. 主副耳切换 4. 单耳入盒/出盒检测 5. 左右耳电量同步 6. 通话时麦克风选择 7. 降噪参数同步所以 TWS 耳机里面除了手机通信还有耳机左/右之间通信 主副耳角色管理 音频同步算法 电量和状态同步14. 蓝牙耳机里的协议栈分层传统蓝牙耳机大概这样应用层 耳机业务逻辑、按键、入耳检测、电量、ANC、提示音 Profile 层 A2DP / AVRCP / HFP / BLE GATT / OTA Profile 协议层 AVDTP / AVCTP / RFCOMM / SDP / ATT / GATT / SMP 适配层 L2CAP / HCI 控制器 Baseband / Link Manager / Link Layer / PHY 硬件 2.4GHz RF / PA / LNA / 天线更具体一点音乐 A2DP ↓ AVDTP ↓ L2CAP ↓ HCI / Controller ↓ Radio 播放控制 AVRCP ↓ AVCTP ↓ L2CAP ↓ HCI / Controller ↓ Radio 通话控制 HFP ↓ RFCOMM ↓ L2CAP ↓ HCI / Controller ↓ Radio 通话语音 HFP Audio ↓ SCO / eSCO ↓ Baseband ↓ Radio App 控制 BLE GATT ↓ ATT ↓ L2CAP ↓ BLE Link Layer ↓ Radio15. 传统蓝牙音频和 BLE 的区别很多人容易混蓝牙耳机连接手机是 BLE 吗答案是不一定。 传统听歌和打电话主要是经典蓝牙 BR/EDR。 BLE 多用于控制和状态。对比功能常用协议听音乐A2DP经典蓝牙播放/暂停/下一曲AVRCP经典蓝牙电话通话HFP经典蓝牙电量显示HFP/BLE GATT/厂商协议都有可能App 设置 ANC/EQBLE GATT 常见开盖弹窗BLE 广播 厂商协议常见固件 OTABLE GATT 或经典蓝牙私有通道都有可能新 LE AudioBLE Isochronous LC316. 新一代 LE Audio 简单说明新一点的蓝牙音频可能支持LE Audio。LE Audio 不再是传统 A2DP/HFP 那套而是基于Bluetooth LE Isochronous Channels LC3 编码典型特点1. 使用 LC3 音频编码 2. 支持低功耗音频 3. 支持广播音频 Auracast 4. 支持更标准化的多设备音频 5. 左右耳同步机制更现代简单理解传统蓝牙耳机 经典蓝牙 BR/EDR A2DP/HFP LE Audio 耳机 BLE LC3 Isochronous Channel不过目前大量耳机仍然是传统 A2DP/HFP 为主BLE 只是辅助控制。17. 从嵌入式开发角度你真正要关心哪些事件如果你在耳机固件里做开发通常会关心这些状态机事件1. 开机 2. 进入配对模式 3. 被手机发现 4. 手机发起连接 5. 配对成功/失败 6. ACL 连接成功 7. A2DP 连接成功 8. AVRCP 连接成功 9. HFP 连接成功 10. A2DP 开始播放 11. A2DP 暂停 12. HFP 来电 13. HFP 接听 14. SCO/eSCO 建立 15. 通话结束 16. BLE GATT 连接 17. 手机 App 写配置 18. 断开连接 19. 回连 20. 入盒/出盒 21. 左右耳主副切换在代码里通常就是一堆 callback/event例如BT_EVENT_ACL_CONNECTED BT_EVENT_ACL_DISCONNECTED BT_EVENT_A2DP_CONNECTED BT_EVENT_A2DP_STREAM_START BT_EVENT_A2DP_STREAM_SUSPEND BT_EVENT_AVRCP_PLAY BT_EVENT_AVRCP_PAUSE BT_EVENT_HFP_CONNECTED BT_EVENT_HFP_RING BT_EVENT_HFP_CALL_ACTIVE BT_EVENT_SCO_CONNECTED BT_EVENT_BLE_CONNECTED BT_EVENT_GATT_WRITE不同芯片平台名字不一样但逻辑差不多。18. 最完整的一条主线你可以把手机和蓝牙耳机通信过程记成这条线第一次使用 耳机进入配对模式 ↓ 手机扫描发现耳机 ↓ 手机连接耳机 ↓ 双方配对生成 Link Key ↓ 手机通过 SDP 查询耳机服务 ↓ 建立 A2DP / AVRCP / HFP 连接 ↓ 可能再建立 BLE GATT 连接 ↓ 开始正常使用 听音乐 手机音乐 App ↓ A2DP 编码音频 ↓ 蓝牙发送 ↓ 耳机解码播放 按键控制 耳机按键 ↓ AVRCP 命令 ↓ 手机控制音乐 App 打电话 手机来电 ↓ HFP 通知耳机 ↓ 用户接听 ↓ 建立 SCO/eSCO ↓ 双向语音 App 控制 手机 App ↓ BLE GATT 写 Characteristic ↓ 耳机修改 ANC/EQ/按键配置19. 最简单总结手机和蓝牙耳机之间通常不是一个协议而是一组协议同时工作。 A2DP 手机给耳机传音乐。 AVRCP 耳机控制手机播放、暂停、上一曲、下一曲、音量。 HFP 手机和耳机进行电话通话控制用 AT 命令语音走 SCO/eSCO。 BLE GATT 手机 App 读取电量、设置降噪、EQ、按键、做 OTA 等。 SDP 手机查询耳机支持哪些服务。 配对 Pairing 手机和耳机建立安全关系保存密钥下次自动回连。 TWS 还要处理左右耳之间的同步、转发、主副耳切换。一句话记听歌走 A2DP 按键控制走 AVRCP 打电话走 HFP 电量和 App 设置多半走 BLE GATT 第一次连接要配对 配对后靠密钥自动回连。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…