蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

news2025/6/12 22:43:58

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的掌握(如 BLE 5.1 定位、Android 14 的扫描优化)。本文补充 20 + 道进阶面试题,结合实战案例,突破 “技术深水区”。


一、高阶场景面试题:复杂环境下的扫描挑战

Q16:多设备并发扫描时,如何避免扫描性能下降?(OPPO 2023 社招真题)

题目背景:OPPO 智能手表需同时扫描 20 + 智能家居设备(如灯泡、插座),常出现扫描延迟或丢包。

答案
性能下降的核心原因

  • 蓝牙芯片 HCI 缓冲区容量有限(通常≤1KB),高并发时数据包被覆盖;
  • 协议栈(Bluedroid)处理线程优先级低,无法及时处理大量广播包;
  • 应用层回调(如onScanResult)阻塞主线程,导致扫描结果堆积。

解决方案

关键代码示例(Android)

// 设置批量上报模式(延迟1秒上报,减少回调次数)
ScanSettings settings = new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
    .setReportDelay(1000)  // 1000ms延迟上报
    .build();

// 使用线程池处理扫描结果(避免主线程阻塞)
BluetoothLeScanner scanner = bluetoothAdapter.getBluetoothLeScanner();
scanner.startScan(filters, settings, new ScanCallback() {
    @Override
    public void onBatchScanResults(List<ScanResult> results) {
        Executors.newSingleThreadExecutor().execute(() -> {
            // 异步处理扫描结果(如去重、存储)
            processScanResults(results);
        });
    }
});

Q17:低功耗模式下,如何通过 “扫描 - 休眠” 策略平衡发现率与功耗?(vivo 2024 校招真题)

题目背景:vivo TWS 耳机需在待机时持续扫描手机,要求功耗≤1mA。

答案
核心策略:通过周期性 “扫描 - 休眠” 循环,在保证设备发现率的前提下降低平均功耗。

参数设计公式:平均功耗 = 扫描功耗 ×(扫描时间 / 总周期) + 休眠功耗 ×(休眠时间 / 总周期)

实战参数表(以 nRF52832 芯片为例):

场景扫描周期(T)扫描时间(t)休眠时间(T-t)发现率(理论值)平均功耗(mA)
快速发现期200ms100ms100ms95%2.1
稳定监控期2000ms50ms1950ms85%0.8

验证方法:使用功耗仪(如 Nordic Power Profiler Kit)实测,结合抓包工具统计漏扫率(漏扫率 = 未发现的广播包数 / 总广播包数)。

Q18:Android 12 + 的权限变更对 BLE 扫描有何影响?如何适配?(三星 2023 社招真题)

题目背景:三星 Galaxy S22 升级 Android 12 后,部分应用扫描失败。

答案
Android 12 + 的权限变更

  • 新增BLUETOOTH_SCAN权限(需动态申请);
  • 扫描时需声明uses-permissionuses-feature
  • 后台扫描需额外申请BLUETOOTH_ADMIN权限(部分机型限制)。

适配步骤(附权限声明示例)

①清单文件声明

<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />

②动态申请权限(Kotlin):  

val permissions = arrayOf(
    Manifest.permission.BLUETOOTH_SCAN,
    Manifest.permission.BLUETOOTH_CONNECT,
    Manifest.permission.ACCESS_FINE_LOCATION  // Android 11及以下仍需位置权限
)
ActivityResultContracts.RequestMultiplePermissions().launch(permissions)

③后台扫描限制:Android 12 + 禁止应用在后台持续扫描,需通过WorkManagerForegroundService实现定时扫描(如每 5 分钟扫描 10 秒)。

Q19:Android 中 startScan() 调用后无回调,可能的原因有哪些?

答案

①权限问题

  • 缺少 ACCESS_FINE_LOCATION(Android 6.0+)或 BLUETOOTH_SCAN(Android 12+)。
  • 解决方案:动态申请权限并检查系统设置。

②蓝牙未开启

  • 系统蓝牙开关关闭。
  • 解决方案:调用 BluetoothAdapter.enable() 或引导用户手动开启。

③扫描冲突

  • 多次调用 startScan() 未停止之前的扫描。
  • 解决方案:先调用 stopScan()

④设备不广播

  • 目标设备未开启广播(如处于休眠状态)。
  • 解决方案:使用抓包工具(如 Elisys)确认广播包。

⑤芯片/系统 Bug

  • 某些机型存在兼容性问题。
  • 解决方案:升级系统版本或针对特定机型做适配。

Q20:Android 后台扫描的限制与解决方案

答案

①限制

  • Android 8.0+ 对后台服务限制严格,startScan() 可能被系统终止。
  • 某些厂商(如华为、小米)对后台扫描有额外限制。

②解决方案

  • 前台服务:将扫描服务升级为前台服务,显示持续通知。
  • JobScheduler:使用 JobScheduler 定期唤醒应用执行扫描。
  • 厂商适配:针对特定机型(如小米)加入白名单。

二、安全、性能与特殊场景

Q21:BLE 扫描过程中可能存在哪些安全风险?如何防范?

答案

BLE 扫描可能面临以下安全风险:

①设备追踪与隐私泄露

  • 固定 MAC 地址可被长期监控,定位用户轨迹。
  • 广播数据含特征值(如设备名称、RSSI),暴露设备类型或用户行为。

②伪造广播与中间人攻击

  • 恶意设备伪造合法广播包,诱导连接后窃取数据或注入恶意指令。

③重放攻击

  • 截获合法广播包后重复发送,欺骗扫描设备执行错误操作(如开门、转账)。

④资源耗尽攻击

  • 大量伪造广播包占用扫描设备的 CPU / 内存资源,导致系统卡顿或崩溃。

防范措施:

①地址随机化(核心防护)

  • 使用 动态随机地址(Random Address)(BLE 4.2+),周期性更换 MAC 地址,避免长期追踪。
  • 区分 静态随机地址(Static Random Address)和 私有随机地址(Private Random Address),后者结合定时器进一步增强隐私性。蓝牙MAC地址-CSDN博客

②数据加密与认证

  • 对广播数据启用 AES-CCM 加密(需配合安全连接流程,如 LE Secure Connections)。
  • 在 GAP 层或应用层添加 设备认证机制(如预共享密钥、数字证书),验证广播源合法性。

③防重放与新鲜性校验

  • 在广播数据中嵌入 时间戳(Timestamp) 或 序列号(Sequence Number),扫描端校验数据新鲜性,拒绝重复包。

④扫描策略优化

  • 白名单过滤:仅扫描预信任的设备 UUID/MAC,拒绝未知设备广播。
  • 限制扫描时长与间隔:避免长时间全信道扫描,减少资源暴露窗口。
  • 信道跳频:结合 BLE 信道划分(37/38/39 广播信道),动态切换扫描信道,降低被干扰概率。

⑤固件与协议栈安全

  • 选用安全合规的协议栈(如 Zephyr、ARM mbed TLS),及时更新固件修补漏洞(如 BlueBorne、KRACK 等历史漏洞)。
  • 禁用不安全的旧协议(如 BLE 4.0 前的 Legacy Pairing),强制使用安全连接(Secure Connections)。

应用层安全设计

  • 对敏感操作(如配对、控制指令)添加 二次验证(如 PIN 码、生物识别)。
  • 限制广播数据中敏感信息的暴露(如隐藏设备型号、用户标识)。

BLE 扫描的安全风险需从 隐私保护、数据完整性、设备认证、资源管理 多维度防范,核心在于通过 地址随机化 + 加密认证 + 动态策略 构建防御体系,同时结合硬件(如支持安全元件的芯片)与固件的安全能力,实现端到端的安全防护。

Q22:如何在高密度设备环境中(如 1000+ 设备)优化扫描效率?

答案

在高密度设备环境中优化 BLE 扫描效率需多维度策略:

①硬件层:选用支持多链路并发和扫描分集(Scan Diversity)的芯片,提升并行处理能力与信号捕捉率。

②协议栈层:增大 HCI 缓冲区(修改 bt_stack.conf)避免数据溢出,提升扫描线程优先级(adb shell)确保资源抢占,启用主动扫描并合理配置扫描窗口 / 间隔(如缩短窗口提升频率)。

③应用层

  • 过滤策略:按 UUID/MAC/RSSI 预筛选目标设备,减少无效回调;
  • 异步批量处理:用 RxJava 等线程池异步处理扫描结果,通过setReportDelay()启用批量上报,降低 CPU 负载;
  • 去重机制:用集合缓存已发现设备地址,避免重复处理;
  • 分时扫描:采用周期性扫描或分信道轮询(如跨 37/38/39 信道分布),规避同频干扰。

④动态调优:根据设备密度自适应调整扫描参数(如延长间隔降低功耗),结合硬件特性(如多天线)提升抗干扰能力。

Q23:BLE 扫描与 Wi-Fi 扫描的共存问题如何解决?

答案

BLE与 Wi-Fi 均工作在 2.4GHz 公共频段(部分 Wi-Fi 也使用 5GHz),两者扫描时可能因频段重叠导致信号干扰,表现为扫描速度变慢、设备漏检或 Wi-Fi 吞吐量下降。解决共存问题需从硬件设计、系统调度、协议优化等多层面入手,以下是核心解决方案:

①硬件层优化:物理隔离与射频协同

  • 独立天线设计

    • 使用独立的 Wi-Fi 和 BLE 天线,或通过 天线分集技术 减少信号耦合干扰。
    • 示例:部分芯片组(如高通 QCA6391)集成独立射频链路,支持 Wi-Fi 与 BLE 并行工作。
  • 射频前端优化

    • 通过 射频开关(RF Switch) 或 双工器(Diplexer) 分时复用天线,避免同时收发信号。
    • 启用 动态频率选择(DFS)(仅适用于 5GHz Wi-Fi),避开 2.4GHz 频段的密集干扰。

②系统层调度:分时复用与优先级管理

  • 分时扫描(Time Division)

    • 操作系统(如 Android/iOS)通过 共存调度器 协调 Wi-Fi 和 BLE 扫描的时序:
      • 当 Wi-Fi 进行信道扫描或数据传输时,暂缓 BLE 扫描;
      • BLE 扫描期间,降低 Wi-Fi 扫描的频率或优先级。
    • 示例:Android 的 WiFiManager 和 BluetoothLeScanner 可通过系统服务动态调整扫描窗口。
  • 优先级配置

    • 根据业务场景设定优先级:
      • 视频通话、文件传输等 Wi-Fi 高负载场景,优先保障 Wi-Fi 带宽;
      • 低功耗蓝牙(如 ibeacon 定位)场景,可允许 BLE 间歇性扫描。

③协议层优化:信道规避与参数调整

  • 信道错峰策略

    • BLE 扫描时优先使用 非重叠信道
      • BLE 信道 1(2402MHz)、37(2402MHz)对应 Wi-Fi 的低频段(信道 1-3),干扰较少;
      • 避开 Wi-Fi 常用信道(如信道 6、11)。
    • 通过 主动扫描 替代 被动扫描,减少扫描时间(主动扫描可快速获取设备响应)。
  • 扫描参数调优

    • 减小 BLE 扫描窗口(Scan Window)或增大扫描间隔(Scan Interval),降低持续占用信道的时间。
    • 示例:Android 中通过 ScanSettings.Builder.setScanMode() 设置 LOW_LATENCY 或 LOW_POWER 模式,平衡扫描效率与共存性。

④应用层优化:动态感知与策略适配

  • 干扰感知与动态调整

    • 应用层实时监测 Wi-Fi 信号强度(如通过 WifiManager.getConnectionInfo()),当检测到 Wi-Fi 高负载时,主动延迟或降级 BLE 扫描频率。
    • 结合业务场景灵活切换扫描策略:
      • 后台定位场景:采用低频扫描(如间隔 10 秒);
      • 实时通信场景:临时提升扫描优先级,但限制持续时间。
  • 批量处理与节能模式

    • 使用 批量上报模式(如 BLE 的 setReportDelay())减少回调次数,降低 CPU 占用和射频开关频率。
    • 启用 Wi-Fi 的 节能模式(PS-Poll) 或 BLE 的 连接态节能机制(如超长间隔连接),避免持续唤醒射频模块。

⑤芯片级解决方案:共存芯片与固件优化

  • Combo 芯片协同

    • 采用集成 Wi-Fi/BLE 的单芯片方案,芯片内部通过 时分双工(TDD) 或 频分双工(FDD) 硬件机制实现共存。
    • 固件层预定义共存规则,如 Wi-Fi 传输时自动暂停 BLE 广播接收。
  • 厂商定制化驱动:部分厂商(如 Broadcom、Realtek)在驱动层提供 共存配置接口,可通过系统参数(如 Android 的 bt_config.conf)调整 BLE 与 Wi-Fi 的协同策略。

典型场景与验证方法:

  • 验证工具:使用频谱分析仪(如 Keysight N934x)监测 2.4GHz 频段占用情况,对比同时扫描时的信号重叠度。
  • 极端场景测试:在密集 Wi-Fi 环境(如办公室、商场)中,测试 BLE 设备的扫描成功率与 Wi-Fi 吞吐量的相互影响。

BLE 与 Wi-Fi 共存的核心是 分时、分信道、分优先级 的资源管理。通过硬件隔离减少物理干扰,系统层动态调度避免信道冲突,应用层根据业务灵活适配扫描策略,结合芯片级协同优化,可有效提升两者的并行工作效率。实际开发中需结合设备硬件能力与场景需求,选择性价比最优的方案(如优先采用支持共存的 Combo 芯片,其次通过软件策略调优)。


三、前沿技术面试题:BLE 5.1 + 与扫描的结合

Q24:BLE 5.1 的 AoA/AoD 定位技术如何与扫描结合?(华为 2024 校招真题)

题目背景:华为智能家居场景需通过 BLE 定位设备(如空调遥控器)。

答案
核心概念

  • AoA(Angle of Arrival):接收设备(如手机)通过多个天线接收广播包的相位差,计算发射设备的到达角度;
  • AoD(Angle of Departure):发射设备(如遥控器)通过多个天线发送广播包,接收设备计算离开角度。

扫描与定位的结合流程(附示意图):

关键 API(Android 12+)

// 启用AoA扫描(需手机支持多天线)
ScanSettings settings = new ScanSettings.Builder()
    .setPhy(ScanSettings.PHY_LE_1M)
    .setLegacy(false)
    .setUseAoA(true)  // 启用到达角计算
    .build();

// 从ScanResult获取方位角
ScanResult result = ...;
if (result.getPrimaryPhy() == BluetoothDevice.PHY_LE_1M) {
    float angle = result.getAngleOfArrival();  // 单位:度(°)
}

Q25:BLE 5.2 的 “周期性广播同步(Periodic Advertising Sync)” 如何优化扫描功耗?(苹果 2023 社招真题)

题目背景:苹果 AirPods Pro 需在低电量时保持与 iPhone 的连接。

答案
传统扫描的痛点:设备需持续轮询广播通道,导致高功耗。

BLE 5.2 的改进

  • 设备按固定周期(16ms~2.56s)发送周期性广播;
  • 扫描设备同步到该周期,仅在广播发送时刻唤醒监听,其他时间休眠。

功耗对比(AirPods 案例)

技术扫描功耗(mW)发现延迟(ms)适用场景
传统扫描5.2100~500常规设备发现
周期性同步1.116~256低功耗长连接设备

Q26:华为2023校招题

题目:设计BLE扫描参数使设备在10秒内发现率>95%,且功耗低于5mA

 参考答案

new ScanSettings.Builder()
    .setScanMode(ScanSettings.SCAN_MODE_BALANCED)
    .setReportDelay(0) // 实时上报
    .setScanInterval(80) // 80×0.625ms=50ms
    .setScanWindow(48)   // 48×0.625ms=30ms
    .build();

理论依据
50ms间隔覆盖100ms广播周期概率:P = 1 - (1 - 30/100)^3 ≈ 97.3%(三通道轮询) 

Q27:小米2024社招题

题目:BLE扫描导致UI卡顿如何优化?

解决方案

①回调线程分离:将扫描回调分发至工作线程

HandlerThread workerThread = new HandlerThread("BLE-Callback");
workerThread.start();
scanner.startScan(filters, settings, new ScanCallback() {
    @Override
    public void onScanResult(...) {
        // 在workerThread执行
    }
});

②去重合并:相同设备200ms内仅更新一次

③数据预解析:广播包解析在Native层完成 


四、实战演练:扫描问题的端到端调试

场景 1:智能手表配对时扫描不到手机(小米手环 7 开发案例)

现象:用户打开手环蓝牙后,无法扫描到已开启蓝牙的 iPhone 15。

调试步骤与解析

①确认手机广播状态:使用 nRF Connect 抓包,发现 iPhone 15 的广播包中AD Type 0x09(设备名称)字段为空。

②检查扫描过滤条件:手环应用设置了ScanFilter过滤设备名称为 “iPhone”,但 iPhone 默认广播名称为空(需用户手动开启 “显示蓝牙名称”)。

③优化方案

  • 移除设备名称过滤,改为通过服务 UUID(如0000180A-0000-1000-8000-00805F9B34FB,手机信息服务)过滤;
  • 在应用层增加提示:“请确保手机蓝牙名称已开启”。

场景 2:Android 平板扫描时频繁崩溃(三星 Tab S8 案例)

现象:平板调用startScan()后,系统报BluetoothGattService: Binder is dead错误。

根因分析与解决

步骤操作结论
1. 检查日志查看logcat,发现btif_gattc线程 ANR扫描线程被阻塞
2. 分析代码应用在onScanResult中执行耗时操作(如数据库写入)主线程阻塞导致 Binder 死亡
3. 修复方案将扫描结果处理移至子线程(如使用Coroutine崩溃率从 30% 降至 0%

场景 3:汽车钥匙(BLE)扫描延迟高(特斯拉 Model 3 案例)

现象:用户靠近车辆时,钥匙需 3 秒以上才能扫描到汽车广播。

优化策略

优化点原方案新方案效果(延迟)
扫描模式低功耗模式(SCAN_MODE_LOW_POWER)平衡模式(SCAN_MODE_BALANCED)3s→500ms
扫描窗口50ms150ms(覆盖汽车广播周期)500ms→200ms
通道优先级轮询 37/38/39 通道优先扫描 38 通道(汽车常用)200ms→100ms

场景4:解析一个 BLE 扫描相关的系统崩溃日志 

日志片段

FATAL EXCEPTION: BluetoothLeScanner
Process: com.example.bleapp, PID: 12345
java.lang.SecurityException: Need ACCESS_FINE_LOCATION permission
    at android.os.Parcel.createException(Parcel.java:2071)
    ...

解析步骤

①异常类型识别SecurityException,权限相关问题。

②权限检查

  • Android 6.0+ 需要 ACCESS_FINE_LOCATION 权限。
  • 即使不使用位置信息,BLE 扫描仍需该权限(因设备可能携带位置信息)。

③解决方案

  • 动态申请权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
    != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, 
        new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
        REQUEST_CODE_LOCATION);
}
  • 添加权限声明到 AndroidManifest.xml: 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

五、Android BLE 扫描常见问题汇总表

问题类型现象描述可能原因解决方法
扫描无回调调用startScan()后无onScanResult权限未申请(Android 12 + 的BLUETOOTH_SCAN动态申请权限 + 检查Settings
扫描结果重复同一设备每秒回调多次设备广播间隔 < 扫描窗口应用层去重(记录 MAC + 时间戳)
扫描丢包抓包显示有广播包但应用无回调Bluedroid HCI 缓冲区溢出开启批量上报(setReportDelay()
扫描功耗高设备续航下降明显扫描间隔过小(如 < 100ms)切换为 “扫描 - 休眠” 策略(如 Interval=1s)
iOS 设备难扫描无法扫描到 iPhone/iPadiOS 默认广播包不包含服务 UUID使用withServices:nil关闭过滤
后台扫描失效应用切后台后扫描停止Android 12 + 禁止后台持续扫描使用ForegroundService+ 定时任务

六、总结

BLE 扫描的进阶能力,本质是协议理解 + 平台适配 + 问题调试的技术闭环:

  • 协议层:掌握 BLE 5.0/5.1/5.2/5.4/6.0 的扩展特性(如扩展广播、周期性同步);
  • 平台层:熟悉 Android/iOS 的扫描 API 差异(如 Android 的ScanFilter、iOS 的CBCentralManager);
  • 调试层:熟练使用抓包工具(Elisys)、功耗仪(Power Profiler)、日志分析(logcat/syslog)。

通过本文补充的进阶题与实战案例,你不仅能应对面试中的 “超纲问题”,更能在实际开发中成为 BLE 扫描的 “技术专家”。


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

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

相关文章

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

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

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…