当前位置: 首页 > article >正文

BLE四大广播模式详解:可连接/不可连接/定向/周期广播

一、前言在低功耗蓝牙BLE开发中广播Advertising是设备发现、连接建立、数据广播、设备重连的核心基石所有BLE交互流程均始于广播报文的收发。不同于传统经典蓝牙BLE所有广播行为标准化、可配置、可管控开发者可根据业务场景精准选择广播模式平衡设备发现成功率、连接速度、功耗、数据承载量四大核心指标。日常开发中90%的蓝牙疑难问题均是广播模式误用导致设备前台可搜后台失联、重连延迟过高、广播数据截断、功耗飙升、无法被指定设备绑定、老旧机型兼容异常等。绝大多数开发者仅会使用默认可连接广播对不可连接、定向、周期广播的底层特性、适用边界、平台差异一无所知导致项目后期迭代频繁踩坑。BLE 协议栈标准定义了四类核心广播模式覆盖所有BLE业务场景可连接非定向广播、不可连接非定向广播、定向可连接广播、周期扩展广播。本文摒弃空洞理论深度拆解每种模式的底层协议原理、时序逻辑、报文结构、参数配置同时补齐Android、iOS、Flutter三平台完整生产级代码细化平台差异、报错处理、参数调优、避坑方案全方位落地BLE广播开发。二、BLE广播基础核心认知在深入四大模式前必须掌握BLE广播底层基础才能理解不同模式的设计逻辑与差异。1. 广播信道机制BLE 不占用数据通信信道专门独立3个广播信道规避数据传输干扰保障设备发现稳定性37信道、38信道、39信道。所有广播报文会依次在三个信道循环发送扫描设备监听对应信道即可捕获广播数据。2. 核心参数定义广播间隔Advertising Interval两次广播报文发送的时间间隔间隔越小、发现越快、功耗越高间隔越大、功耗越低、发现延迟越高。广播超时Timeout广播持续运行时长超时后自动停止广播0代表永久广播。可连接性是否允许外围设备发起连接请求。可扫描性是否允许外围设备发送扫描请求、获取扫描响应数据。广播数据扫描响应数据普通广播最大承载31字节数据扫描响应可额外携带31字节合计62字节BLE5.0周期广播突破该限制。三、四大广播模式核心对照表全网最全下表整合协议定义、核心属性、能力限制、功耗等级、兼容版本、业务场景是BLE广播开发选型核心依据。广播模式协议宏定义可连接可扫描定向对象数据上限功耗等级兼容版本核心场景可连接非定向广播ADV_IND✅✅无全局广播62字节中BLE4.0设备首次配对、常规搜索连接、通用设备发现不可连接非定向广播ADV_NONCONN_IND❌❌无全局广播31字节极低BLE4.0Beacon信标、传感器数据上报、点位打卡、纯数据透传定向可连接广播ADV_DIRECT_IND✅❌唯一指定MAC设备0字节无自定义数据高短时爆发BLE4.0设备断线快速重连、绑定设备专属回连、低延迟唤醒周期扩展广播ADV_EXT_IND可选配置可选配置无全局广播超大字节可配置BLE5.0大数据广播、设备组网、音频同步、批量设备状态同步四、四大广播模式深度原理拆解1. 可连接非定向广播ADV_IND这是BLE项目默认最常用的广播模式也是兼容性最好、功能最全面的基础模式。设备开启该广播后会在37/38/39三个信道循环发送广播报文公开对外暴露设备信息。该模式同时支持广播报文扫描响应报文双数据承载普通广播包携带设备基础信息设备名、厂商ID扫描响应可携带自定义业务数据合计62字节有效数据。任意外围设备扫描到广播后可主动发起扫描请求获取完整数据也可直接发起连接请求建立BLE链路。底层时序逻辑广播设备周期性发送广播包 → 扫描设备捕获报文 → 可选择发起扫描/连接 → 广播设备响应请求。核心优缺点适配全平台、支持交互、可扩展数据缺点是持续广播功耗偏高易被陌生设备扫描、连接干扰不适合纯数据低功耗场景。2. 不可连接非定向广播ADV_NONCONN_IND纯单向数据广播模式彻底关闭扫描响应与连接能力是BLE功耗最低的广播方案。该模式仅单向对外发送固定广播报文不响应任何外围设备的扫描请求、连接请求无任何双向交互逻辑。协议限制仅支持31字节单广播包数据无扫描响应扩展空间数据承载量有限但极致省电。设备开启该广播后无需处理任何上层交互事件CPU、蓝牙模块可进入低功耗休眠状态续航可提升50%以上。核心适用场景无需连接的纯上报业务包括室内定位Beacon、温湿度传感器实时上报、设备点位打卡、广播型状态同步等。3. 定向可连接广播ADV_DIRECT_IND专属一对一广播模式核心作用是快速重连、设备绑定。该广播不会对外公开广播仅针对开发者指定的唯一MAC地址设备发送广播报文拒绝所有其他设备的扫描、连接请求。协议分为两种占空比模式高占空比模式广播间隔仅3.75ms毫秒级低延迟专门用于断线瞬间回连但协议强制限制最大存活时间1.28秒超时自动终止低占空比模式间隔更长、功耗更低可延长广播时长。硬性协议限制定向广播不支持任何自定义广播数据仅能传递设备基础连接信息无法携带业务数据这是很多开发者踩坑的核心点。该模式只做「快速唤醒、建立连接」不做数据透传。4. 周期扩展广播ADV_EXT_INDBLE5.0 重磅升级的广播模式彻底打破BLE4.0广播的所有限制是高端蓝牙设备组网、大数据传输的核心能力。传统BLE4.0广播存在62字节数据上限、无同步机制、信道固定的短板周期扩展广播全部优化。核心能力支持超长广播数据包、支持广播周期同步、支持多信道扩展、可自由配置是否可连接、可扫描。多设备可同步监听同一周期广播实现一对多批量数据同步完美适配设备组网、音频同步、批量固件状态上报等复杂场景。核心限制仅支持BLE5.0及以上设备老旧安卓、iOS低版本设备无法兼容项目使用必须做版本兼容降级处理。五、Android 原生全模式完整实战代码KotlinAndroid 5.0API21及以上完整支持BLE广播APIAndroid 12需要新增蓝牙扫描、广播动态权限适配。以下代码包含四种模式完整实现、权限适配、回调监听、异常处理、广播启停、资源释放可直接用于生产。import android.Manifest import android.bluetooth.le.AdvertiseCallback import android.bluetooth.le.AdvertiseSettings import android.bluetooth.le.AdvertiseData import android.bluetooth.le.BluetoothLeAdvertiser import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothManager import android.content.Context import android.content.pm.PackageManager import android.os.Build /** * BLE四大广播模式统一管理类 * 适配Android5.0兼容Android12权限 */ class BleAdvertiseManager(private val context: Context) { private val bluetoothAdapter: BluetoothAdapter by lazy { val bluetoothManager context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager bluetoothManager.adapter } private val advertiser: BluetoothLeAdvertiser by lazy { bluetoothAdapter.bluetoothLeAdvertiser } // 全局广播回调统一处理成功/失败 private val advertiseCallback object : AdvertiseCallback() { override fun onStartSuccess(settingsInEffect: AdvertiseSettings?) { super.onStartSuccess(settingsInEffect) println(BLE广播启动成功) } override fun onStartFailure(errorCode: Int) { super.onStartFailure(errorCode) println(BLE广播启动失败错误码$errorCode) } } // 1. 可连接非定向广播 ADV_IND fun startConnectableAdv() { if (!checkBluetoothPermission()) return // 广播参数配置低延迟、可连接、永久广播 val settings AdvertiseSettings.Builder() .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY) .setConnectable(true) .setTimeout(0) .setTxPowerLevel(AdvertiseSettings.TX_POWER_HIGH) .build() // 广播数据携带设备名称 val data AdvertiseData.Builder() .setIncludeDeviceName(true) .setIncludeTxPowerLevel(true) .build() advertiser.startAdvertising(settings, data, advertiseCallback) } // 2. 不可连接非定向广播 ADV_NONCONN_IND低功耗纯数据广播 fun startNonConnectableAdv() { if (!checkBluetoothPermission()) return // 低功耗模式、不可连接、永久广播 val settings AdvertiseSettings.Builder() .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_POWER) .setConnectable(false) .setTimeout(0) .setTxPowerLevel(AdvertiseSettings.TX_POWER_LOW) .build() // 自定义厂商数据31字节内 val data AdvertiseData.Builder() .addManufacturerData(0x1234, byteArrayOf(0x01, 0x02, 0x03, 0x04, 0x05)) .build() advertiser.startAdvertising(settings, data, advertiseCallback) } // 3. 定向可连接广播 ADV_DIRECT_IND指定设备重连 fun startDirectConnectAdv(targetMac: String) { if (!checkBluetoothPermission()) return // 定向广播默认高优先级、可连接、1.28s超时 val settings AdvertiseSettings.Builder() .setConnectable(true) .setTimeout(1280) .setTxPowerLevel(AdvertiseSettings.TX_POWER_HIGH) .build() // 定向广播无自定义数据 val data AdvertiseData.Builder().build() advertiser.startAdvertising(settings, data, targetMac, advertiseCallback) } // 4. 周期扩展广播 ADV_EXT_INDBLE5.0专属 fun startExtPeriodAdv() { if (!checkBluetoothPermission()) return // 校验设备是否支持BLE5.0扩展广播 if (!bluetoothAdapter.isLeExtendedAdvertisingSupported) { println(当前设备不支持BLE5.0周期广播) return } val settings AdvertiseSettings.Builder() .setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_BALANCED) .setConnectable(false) .setTimeout(0) .build() val data AdvertiseData.Builder() .addManufacturerData(0x5678, ByteArray(20) { 0x01 }) .build() advertiser.startAdvertising(settings, data, advertiseCallback) } // 停止所有广播释放资源 fun stopAllAdv() { advertiser.stopAdvertising(advertiseCallback) println(BLE广播已全部停止) } // 权限校验适配Android12 private fun checkBluetoothPermission(): Boolean { return if (Build.VERSION.SDK_INT Build.VERSION_CODES.S) { context.checkSelfPermission(Manifest.permission.BLUETOOTH_ADVERTISE) PackageManager.PERMISSION_GRANTED } else { true } } }六、iOS 原生全模式完整实战代码SwiftiOS 蓝牙广播基于CBPeripheralManager实现存在系统硬性限制无原生定向广播API、后台广播严格限流、周期广播仅高版本支持。以下代码补齐模式适配、状态监听、异常捕获、跨平台兼容方案。import UIKit import CoreBluetooth /// BLE广播管理类 iOS全模式适配 class BleAdvertiseManager: NSObject, CBPeripheralManagerDelegate { private var peripheralManager: CBPeripheralManager! private var isBLE5Support: Bool false override init() { super.init() // 初始化蓝牙外设管理器 peripheralManager CBPeripheralManager(delegate: self, queue: nil, options: [ CBPeripheralManagerOptionShowPowerAlertKey: true ]) // 检测BLE5.0扩展广播支持性 isBLE5Support peripheralManager.isLeExtendedAdvertisingSupported } // 1. 可连接广播 ADV_IND func startConnectableAdv() { let advData: [String: Any] [ CBAdvertisementDataLocalNameKey: iOS_BLE_Connect_Device, CBAdvertisementDataTxPowerLevelKey: NSNumber(value: 4) ] // 防止重复广播 if peripheralManager.isAdvertising { peripheralManager.stopAdvertising() } peripheralManager.startAdvertising(advData) print(iOS可连接广播启动) } // 2. 不可连接广播 ADV_NONCONN_IND func startNonConnectableAdv() { let advData: [String: Any] [ CBAdvertisementDataManufacturerDataKey: Data([0x01, 0x02, 0x03, 0x04]) ] if peripheralManager.isAdvertising { peripheralManager.stopAdvertising() } peripheralManager.startAdvertising(advData) print(iOS不可连接低功耗广播启动) } // 3. iOS定向广播 模拟实现系统无原生API业务层过滤 func startDirectAdv(targetMac: String) { // iOS无法发送原生定向广播通过开启可连接广播拦截连接请求实现定向效果 startConnectableAdv() print(iOS模拟定向广播启动仅允许\(targetMac)连接) } // 4. 周期扩展广播 BLE5.0 func startExtPeriodAdv() { guard isBLE5Support else { print(当前iOS设备不支持BLE5.0周期广播) return } // iOS扩展广播配置 let advData: [String: Any] [ CBAdvertisementDataLocalNameKey: iOS_BLE_Ext_Device ] peripheralManager.startAdvertising(advData) } // 停止广播 func stopAdv() { if peripheralManager.isAdvertising { peripheralManager.stopAdvertising() print(iOS广播已停止) } } // 蓝牙状态监听 func peripheralManagerDidUpdateState(_ peripheral: CBPeripheralManager) { switch peripheral.state { case .poweredOn: print(蓝牙正常开启) case .poweredOff: print(蓝牙已关闭) case .unauthorized: print(蓝牙权限未开启) default: print(蓝牙状态异常) } } }iOS核心限制深度说明iOS系统出于隐私安全管控彻底屏蔽ADV_DIRECT_IND 原生定向广播无法像Android一样指定MAC定向广播。生产解决方案全局开启可连接广播在连接回调中拦截非目标MAC设备主动拒绝陌生设备连接完美模拟定向广播效果。同时iOS后台广播会被系统节流间隔大幅拉长无法实现前台高频广播效果。七、Flutter 跨平台全模式统一封装生产级可用Flutter 无原生蓝牙能力依赖社区成熟插件flutter_blue_plus实现跨平台统一广播能力抹平Android/iOS平台差异。以下代码封装四大广播模式、状态监听、异常捕获、启停管控一套代码双端通用。1. 项目依赖配置dependencies: flutter_blue_plus: ^1.13.32. Flutter 完整广播工具类import package:flutter_blue_plus/flutter_blue_plus.dart; /// Flutter BLE四大广播模式统一封装 class FlutterBleAdvManager { /// 1. 可连接非定向广播 ADV_IND static Futurebool startConnectableAdv() async { try { await FlutterBluePlus.startAdvertising( localName: Flutter_BLE_Device, connectable: true, timeout: 0, txPowerLevel: TxPowerLevel.high, ); return true; } catch (e) { print(可连接广播启动失败$e); return false; } } /// 2. 不可连接低功耗广播 ADV_NONCONN_IND static Futurebool startNonConnectableAdv() async { try { await FlutterBluePlus.startAdvertising( connectable: false, timeout: 0, txPowerLevel: TxPowerLevel.low, manufacturerData: { 0x1234: [0x01, 0x02, 0x03, 0x04, 0x05] }, ); return true; } catch (e) { print(不可连接广播启动失败$e); return false; } } /// 3. 跨平台兼容定向广播模拟实现适配iOSAndroid static Futurebool startDirectAdv(String targetMac) async { try { // 统一开启可连接广播业务层拦截连接请求 await startConnectableAdv(); // 监听连接请求仅放行目标设备 FlutterBluePlus.onConnectionReceived.listen((event) { if(event.device.remoteId.str ! targetMac) { event.device.disconnect(); } }); return true; } catch (e) { print(定向广播模拟启动失败$e); return false; } } /// 4. 周期扩展广播BLE5.0 static Futurebool startExtPeriodAdv() async { try { // 校验设备BLE版本 bool support await FlutterBluePlus.isSupported; if(!support) return false; await FlutterBluePlus.startAdvertising( connectable: false, timeout: 0, manufacturerData: { 0x5678: List.generate(20, (index) 0x02) }, ); return true; } catch (e) { print(周期广播启动失败$e); return false; } } /// 停止所有广播 static Futurevoid stopAllAdv() async { await FlutterBluePlus.stopAdvertising(); } } /// 业务调用示例 // await FlutterBleAdvManager.startConnectableAdv(); // await FlutterBleAdvManager.startNonConnectableAdv();八、四大广播模式场景选型与参数调优指南1. 精准选型规则设备首次配对、通用搜索连接优先 可连接非定向广播兼容性拉满适配所有设备纯数据上报、低功耗续航优先优先 不可连接广播关闭所有交互极致省电设备绑定、断线快速回连、低延迟重连优先 定向广播一对一专属连接防干扰大数据传输、设备组网、批量同步优先 周期扩展广播突破数据长度限制2. 广播参数调优经验用户交互场景低延迟模式广播间隔100ms以内提升发现成功率后台常驻场景平衡模式间隔500ms~1s兼顾功耗与可用性超低功耗场景低功耗模式间隔2s以上大幅降低耗电重连场景高功率短时定向广播毫秒级唤醒设备九、生产级高频坑点深度解析与解决方案1. 可连接广播常见问题问题后台设备搜不到、多设备连接干扰、功耗过高。解决方案前台低延迟广播后台自动切换低功耗间隔业务层增加设备白名单拦截陌生连接请求。2. 不可连接广播常见问题问题无法被扫描、数据无法扩展、新手误以为功能异常。解决方案该模式协议本身不支持扫描响应无需适配扫描逻辑数据严格控制在31字节内。3. 定向广播致命坑点问题广播1.28秒自动消失、无法携带自定义数据、iOS无原生支持。解决方案定向广播仅用于重连唤醒业务数据连接后透传iOS统一使用「可连接广播连接拦截」模拟定向效果。4. 周期广播兼容坑点问题老旧设备完全无法扫描、部分安卓机型适配失效。解决方案必须做版本判断BLE5.0以下设备自动降级为普通可连接广播保障兼容。5. 跨平台通用坑点广播未手动停止会造成蓝牙模块资源泄漏、后续广播启动失败Android12/iOS13必须申请蓝牙权限否则广播直接失效无报错频繁启停广播会导致蓝牙栈异常需增加启停间隔防抖

相关文章:

BLE四大广播模式详解:可连接/不可连接/定向/周期广播

一、前言在低功耗蓝牙(BLE)开发中,广播(Advertising)是设备发现、连接建立、数据广播、设备重连的核心基石,所有BLE交互流程均始于广播报文的收发。不同于传统经典蓝牙,BLE所有广播行为标准化、…...

从多路复用到三维光阵:Arduino驱动8x8x8 LED立方体全解析

1. 项目概述:用Arduino点亮一个三维世界几年前,我第一次在创客展上看到一个8x8x8的LED立方体,那种由数百个光点构成的、在三维空间中流动的动画效果,瞬间就把我吸引住了。它不像普通的平面LED屏,而是真正有“深度”的光…...

Arduino PWM转4-20mA工业电流信号:二阶滤波与V/I转换电路设计

1. 项目概述:从PWM到工业标准电流信号在工业自动化、过程控制和传感器领域,4-20 mA电流环是一个几乎无处不在的标准。它用4 mA代表测量值的下限(如0C),20 mA代表上限(如100C),这种设…...

为Alchitry Au FPGA开发板外接JTAG接口的完整指南

1. 项目概述与核心价值如果你正在使用基于Xilinx Artix-7 FPGA的Alchitry Au或Au开发板,并且已经厌倦了每次调试或烧录都要依赖板载的USB-JTAG桥接芯片,或者你的项目已经将板载USB接口挪作他用,那么为你的开发板外接一个独立的JTAG调试器&…...

告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略

告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略当GIS初学者第一次安装ArcGIS 10.6时,往往会被其庞大的安装体积所震惊。许多用户习惯性地点击"下一步",结果发现C盘空间被迅速吞噬,系统运行变得迟缓。本文将深…...

基于Arduino的模块化DIY智能时钟:从RTC到RGB LED的完整实现

1. 项目概述:打造一台高度可定制的DIY RGB LED时钟如果你和我一样,对市面上千篇一律的电子钟感到审美疲劳,同时又对Arduino和电子DIY充满热情,那么这个项目可能就是为你准备的。我们不是在简单地组装一个套件,而是在亲…...

论文创新点像挤牙膏?导师强推这几个AI论文平台

想写论文又快又好,关键是用对 AI 工具、走对流程——资深教授普遍推荐:千笔AI(中文全流程首选) 豆包学术版(轻量高效) DeepSeek 学术版(理工 / 长文本) Grammarly Academic&#xff…...

收藏必看|2026 版大厂 AI 岗位薪资曝光!普通程序员转型大模型最全指南

深夜收到大厂 HR 好友发来的内部资料,再三叮嘱切勿对外泄露。如今网络信息传播速度极快,这份 2026 年企业 AI 岗真实薪资内幕,也值得给广大程序员、零基础入行小白参考借鉴。 翻看完整薪资台账后,真切感受到当下大模型赛道的薪资差…...

从分立逻辑到单片机:基于ATmega8的MIDI通道分析仪设计与实现

1. 项目概述:从分立逻辑到单片机的MIDI通道分析仪进化史二十年前,当我在《Elektor》杂志上发表第一版MIDI通道分析仪时,整个数字音乐世界还处于一个相当“硬核”的阶段。那个版本的设计,用今天的话来说,简直就是一场“…...

自制BLE112串口编程器:基于Bootloader的免调试器烧录方案

1. 项目概述:为BLE112模块打造一款免调试器的RS232编程器在嵌入式开发,特别是早期的蓝牙低功耗(BLE)模块应用中,我们常常会遇到一个棘手的问题:官方开发工具链的依赖和限制。以Silicon Labs(当时…...

【2026最新】应对Turnitin查重:实测5大英文查降AI宝藏工具,一站式搞定初稿

现在的英文初稿,无论是期刊文章、SCI 还是普通的 Course Essay,基本都需要评估内容的原创度,进行文章 AI 率检测。很多伙伴以为纯手敲就能过,结果一查数据依然不尽如人意。 针对英文内容,咱们必须使用专门的英文检测和…...

小米MIMO最新邀请码

欢迎使用,各得10元体验金...

苏州创新药20年,站上全球产业洗牌暴风眼

一个城市的创新药产业集群如何从无到有,又如何在全球化临界点寻找自己的位置。文|徐鑫编|任晓渔过去一年多,苏州是全球创新药产业版图中一个绕不过去的城市。大额海外授权交易频繁传出,在中国高端制造走出去的背景下&a…...

第二周(第12周)

1.单电源供电的二阶低通滤波器2.功率放大电路...

如何在macOS上免费解锁QQ音乐加密文件:完整指南

如何在macOS上免费解锁QQ音乐加密文件:完整指南 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果…...

适合地产人用的中介房源管理系统

在房产经纪行业,房源管理与客源管理是经纪人日常工作的核心,直接影响业务效率与成交转化。选择一套适配行业需求的中介房源管理系统,能帮助中介团队规范流程、降低运营成本、大幅提升业绩。今天我们以客观视角,详细解析全房源系统…...

【DeepSeek测试用例生成实战指南】:20年QA专家亲授5大高覆盖率生成模式与3个避坑红线

更多请点击: https://codechina.net 第一章:DeepSeek测试用例生成的核心价值与适用边界 DeepSeek系列大模型在代码理解与生成任务中展现出显著的上下文建模能力,其测试用例生成功能并非通用“黑盒测试器”,而是聚焦于**单元级、函…...

2026年,本地精准营销高性价比服务商来袭,你还不了解一下?

在本地商业竞争日益激烈的2026年,实体店面临着诸多挑战,引流难、成本高、复购率低等问题困扰着众多商家。而中粤(广州)信息科技有限公司作为本地精准营销的高性价比服务商,正以其独特的优势和卓越的服务,为…...

DeepSeek基准测试避坑手册:92%开发者忽略的4大陷阱——硬件配置偏差、tokenizer不一致、batch size幻觉、温度值污染

更多请点击: https://codechina.net 第一章:DeepSeek基准测试避坑手册:92%开发者忽略的4大陷阱——硬件配置偏差、tokenizer不一致、batch size幻觉、温度值污染 硬件配置偏差:GPU显存与计算精度的隐性干扰 在A100(8…...

服务器日志分析实战:用Python追踪HTTP 404错误并可视化异常频率

作为一名爬虫开发者或网站运维人员,服务器日志就像飞机的“黑匣子”——它记录了每个请求的来龙去脉。而404错误(页面未找到)尤其值得关注:它可能是用户输错了网址,可能是你爬虫的URL构造逻辑有漏洞,也可能是网站改版后旧的链接失效了。更严重的是,大量突然涌出的404请求…...

别再死记硬背Payload了!我用XSS-Game靶场,带你拆解18种过滤规则背后的绕过逻辑

从XSS-Game靶场实战中掌握18种过滤规则的逆向思维在网络安全领域,跨站脚本攻击(XSS)始终是Web应用面临的主要威胁之一。许多开发者虽然了解XSS的基本概念,但当面对各种复杂的过滤规则时,往往不知如何系统分析并构造有效…...

物联网与云技术赋能咖啡后处理:CeriTech 的实时监控系统实践

1. 项目概述:用物联网与云技术重塑咖啡后处理在印尼的咖啡农场里,传统的发酵与干燥过程很大程度上依赖“感觉”和“经验”。一位有经验的农人可能会用手触摸、用鼻子闻,或者根据天气和日照时间来估算发酵是否完成、干燥是否均匀。这种方法固然…...

Vue3 图片标框功能实现方案

基于 Vue3 组合式 API 的图片标框(画框、标注、选框)完整实现,核心逻辑封装在 GetBoxes 组件里,复制就能用 一、功能说明 ✅ 在图片上鼠标拖拽画矩形框 ✅ 实时显示框坐标(x, y, width, height) ✅ 支持多…...

Java数组工具类实战:设计不可实例化的静态工具类

实现一个工具类 MathUtils,满足以下要求: 1. 所有方法均为静态,且该类不能从外部实例化(提示:使用私有构造器)。 2. 提供三个静态方法:- maxArray(int[] arr):返回较大值&#xff1b…...

极致精简,功能强大的PDF编辑工具

这是一款功能全面的PDF编辑工具 你只需要导入一份PDF格式文件 就可以快速的对它进行插入 批注编辑保护转换等各种操作 而且无需登录 也可以直接使用 在插入选项中可以进行插入文字图片 页面页眉页脚页码文档背景水印视频音频等 在批注选项中可以管理批注隐藏批注 高亮显示 文本…...

Agent开发面试通关攻略:吃透稳拿offer

阅读前置:2026年当下最卷也最缺人的AI岗位,一定是AI Agent开发。最近刷遍CSDN、牛客、力扣最新面经,发现一个非常明显的招聘趋势:普通大模型微调岗位饱和内卷,而AI Agent开发岗位人才严重缺口,薪资更高、竞…...

告别手写UI!用NXP GUI Guider拖拽设计LVGL界面,5分钟搞定音乐播放器Demo

嵌入式UI开发革命:5分钟用GUI Guider构建LVGL音乐播放器在嵌入式系统开发中,用户界面(UI)设计曾长期是工程师的痛点——既要考虑资源受限的硬件环境,又要实现流畅美观的交互体验。传统手动编写UI代码的方式不仅效率低下,调试过程更…...

告别外部中断!用EnableInterrupt库轻松搞定Arduino Nano多通道PWM读取(附完整代码)

Arduino Nano多通道PWM读取实战:用EnableInterrupt突破硬件限制当你用Arduino Nano开发四轴飞行器或机器人项目时,是否遇到过这样的尴尬:遥控器的四个通道PWM信号需要同时读取,但Nano只有两个外部中断引脚?这个问题困扰…...

力扣HOT100(30)两两交换链表中的节点

链表的交换要注意 “链表不断链”。前驱和后继都要连着迭代法(必学死磕!O (n) 时间,O (1) 空间)1. 为什么必须用虚拟头节点?因为交换后链表的头节点会变! 比如示例 1 中,原来的头是 1&#xff0…...

Wechat2RSS:微信公众号转RSS订阅工具

文章目录Wechat2RSS:微信公众号转RSS订阅工具Wechat2RSS:微信公众号转RSS订阅工具 ttttmr开源的Wechat2RSS项目,目前在GitHub上获得1409颗Star,项目地址为https://github.com/ttttmr/Wechat2RSS。该工具的核心作用是将微信公众号…...