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

zephyr RTOS 中 bt_le_adv_start函数的功能应用

目录

概述

1 功能

1.1 功能介绍

1.2 函数原型

2 参数说明

2.1 广播参数(bt_le_adv_param)

2.2 常用广播选项(options)

2.3 广播数据(bt_data)

3 示例代码

3.1 启动可连接广播(带设备名称)

 3.2 启动不可连接广播(iBeacon 示例)

4 常见问题

4.1 广播无法启动?

4.2  如何停止广播?

4.3 如何动态修改广播数据?

总结


概述

bt_le_adv_start 是一个函数名称,通常出现在蓝牙低功耗(Bluetooth Low Energy, BLE)相关的开发中,特别是在嵌入式系统或蓝牙协议栈的实现中。它的功能是启动蓝牙低功耗(BLE)设备的广播(Advertising)

Advertising的功能说明:


  1. 启动广播

    • 使BLE设备开始发送广播数据包,以便其他设备(如智能手机、扫描器)可以发现它。

    • 广播是BLE设备向外宣告自身存在的主要方式。

  2. 参数配置

    • 通常需要传入广播参数(如广播间隔、广播类型、广播数据等)。

    • 例如:

      • 广播类型:可连接广播(Connectable)、非可连接广播(Non-connectable)、定向广播(Directed)等。

      • 广播数据:设备名称、服务UUID、制造商数据等。

  3. 返回值

    • 通常返回一个错误码(如 0 表示成功,非零值表示失败)。

典型使用场景:

  • 在BLE设备初始化后调用此函数,开始被其他设备扫描或连接。

  • 例如:智能手环、信标(Beacon)、传感器设备等

1 功能

1.1 功能介绍

bt_le_adv_start() 用于:

  1. 启动 BLE 广播,使设备可被其他 BLE 设备(如手机、扫描器)发现。

  2. 配置广播参数,如广播类型、间隔、广播数据等。

  3. 支持多种广播模式,如可连接广播、非可连接广播、定向广播等。

  • 通常需要传入广播参数(如广播间隔、广播类型、广播数据等)。

  • 例如:

    • 广播类型:可连接广播(Connectable)、非可连接广播(Non-connectable)、定向广播(Directed)等。

    • 广播数据:设备名称、服务UUID、制造商数据等。

典型使用场景:

  • 在BLE设备初始化后调用此函数,开始被其他设备扫描或连接。

  • 例如:智能手环、信标(Beacon)、传感器设备等。

1.2 函数原型

int bt_le_adv_start(const struct bt_le_adv_param *param,const struct bt_data *ad, size_t ad_len,const struct bt_data *sd, size_t sd_len);

参数说明

参数类型说明
paramconst struct bt_le_adv_param *广播参数(类型、间隔等)
adconst struct bt_data *广播数据(Advertising Data)
ad_lensize_t广播数据长度
sdconst struct bt_data *扫描响应数据(Scan Response Data,可选)
sd_lensize_t扫描响应数据长度

返回值

  • 0:广播启动成功。

  • 负值:错误码(如 -EINVAL 参数无效,-ENOMEM 内存不足等)。

2 参数说明

2.1 广播参数(bt_le_adv_param

struct bt_le_adv_param {uint8_t  id;            // 广播标识(通常为 0)uint32_t options;       // 广播选项(如 `BT_LE_ADV_OPT_CONNECTABLE`)uint16_t interval_min;  // 最小广播间隔(单位:0.625ms)uint16_t interval_max;  // 最大广播间隔(单位:0.625ms)uint8_t  peer[6];       // 定向广播的目标地址(可选)
};

2.2 常用广播选项(options

选项说明
BT_LE_ADV_OPT_CONNECTABLE可连接广播(允许设备连接)
BT_LE_ADV_OPT_USE_NAME自动包含设备名称在广播数据中
BT_LE_ADV_OPT_SCANNABLE允许扫描请求(Scan Request)
BT_LE_ADV_OPT_DIR_MODE_LOW_DUTY低占空比定向广播

 

2.3 广播数据(bt_data

广播数据采用 Advertising Data (AD) 格式,通常包括:

  • 设备名称

  • 服务 UUID

  • 制造商特定数据(如 Beacon 数据)

struct bt_data {uint8_t type;   // 数据类型(如 `BT_DATA_NAME_COMPLETE`)uint8_t data_len;const uint8_t *data;
};

常用广播数据类型(type

类型说明
BT_DATA_FLAGSBLE 广播标志(如 BT_LE_AD_GENERAL
BT_DATA_NAME_COMPLETE完整设备名称
BT_DATA_UUID16_ALL16-bit UUID 列表
BT_DATA_MANUFACTURER_DATA自定义厂商数据

 

3 示例代码

3.1 启动可连接广播(带设备名称)

#include <bluetooth/bluetooth.h>
#include <bluetooth/gap.h>static const struct bt_data ad[] = {BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR),BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, sizeof(DEVICE_NAME) - 1),
};int start_advertising(void) {struct bt_le_adv_param *adv_param = BT_LE_ADV_PARAM(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_USE_NAME,BT_GAP_ADV_FAST_INT_MIN_2,  // 100ms (min)BT_GAP_ADV_FAST_INT_MAX_2,   // 150ms (max)NULL                         // 无目标设备);int err = bt_le_adv_start(adv_param, ad, ARRAY_SIZE(ad), NULL, 0);if (err) {printk("Advertising failed (err %d)\n", err);return err;}printk("Advertising started\n");return 0;
}

 3.2 启动不可连接广播(iBeacon 示例)

static const struct bt_data ad[] = {BT_DATA_BYTES(BT_DATA_MANUFACTURER_DATA, 0x4C, 0x00, // Apple Company ID0x02, 0x15, // iBeacon type// UUID, Major, Minor, TX Power0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10,0x00, 0x01, // Major0x00, 0x02, // Minor0xC8        // TX Power (-56 dBm)),
};int start_beacon(void) {struct bt_le_adv_param *adv_param = BT_LE_ADV_PARAM(0, // 非可连接BT_GAP_ADV_FAST_INT_MIN_2,BT_GAP_ADV_FAST_INT_MAX_2,NULL);int err = bt_le_adv_start(adv_param, ad, ARRAY_SIZE(ad), NULL, 0);if (err) {printk("Beacon failed (err %d)\n", err);return err;}printk("iBeacon advertising started\n");return 0;
}

4 常见问题

4.1 广播无法启动?

  • 检查 bt_enable() 是否已成功调用。

  • 确保广播参数合法(如 interval_min <= interval_max)。

  • 检查广播数据是否超过 31 字节限制。

4.2  如何停止广播?

int bt_le_adv_stop(void);

4.3 如何动态修改广播数据?

先停止广播,修改数据后再重新启动:

bt_le_adv_stop();
// 修改 ad[] 数据
bt_le_adv_start(new_param, new_ad, new_len, NULL, 0);

总结

功能API
启动广播bt_le_adv_start()
停止广播bt_le_adv_stop()
广播参数struct bt_le_adv_param
广播数据struct bt_data

在 Zephyr 中,bt_le_adv_start() 是 BLE 开发的核心 API,用于控制设备的可发现性和广播内容。

相关文章:

zephyr RTOS 中 bt_le_adv_start函数的功能应用

目录 概述 1 功能 1.1 功能介绍 1.2 函数原型 2 参数说明 2.1 广播参数&#xff08;bt_le_adv_param&#xff09; 2.2 常用广播选项&#xff08;options&#xff09; 2.3 广播数据&#xff08;bt_data&#xff09; 3 示例代码 3.1 启动可连接广播&#xff08;带设备名…...

双按键控制LED(中断优先级)

1.启动时&#xff0c;两个LED灯熄灭&#xff0c;1秒钟后&#xff08;定时器实现&#xff09;&#xff0c;LED自动点亮&#xff1b; 2.按键1按下后&#xff0c;通过中断int0把两个LED熄灭5s时间&#xff0c;int0优先级设置为最高&#xff08;优先级必须设置&#xff0c;设置后才…...

美团即时零售大动作,将独立的闪购将会改变什么?

4月12日上午&#xff0c;美团核心本地商业CEO王莆中在社交媒体上发文&#xff0c;宣布美团将在下周正式发布即时零售品牌&#xff0c;标志着美团将进一步发展即时零售业务。 首先&#xff0c;从市场格局角度来看&#xff0c;美团将独立的闪购品牌推出&#xff0c;会进一步加剧…...

如何安装git?

以下是 Windows、macOS 和 Linux 系统安装 Git 的详细步骤&#xff1a; 一、Windows 系统安装 Git 下载安装包 访问 Git 官网下载页&#xff0c;点击下载 Windows 版安装程序&#xff08;如 Git-2.45.1-64-bit.exe&#xff09;。 运行安装程序 安装选项&#xff1a; 选择安装路…...

Ubuntu上docker、docker-compose的安装

今天来实践下Ubuntu上面安装docker跟docker-compose&#xff0c;为后面安装dify、fastgpt做准备。 一、安装docker sudo apt-get updatesudo apt-get install docker.io 然后系统输入 docker --version 出现下图即为docker安装成功。 二、安装docker-compose 我先看下系统…...

ubuntu如何设置静态ip

服务器有时是通过dhcp动态获取ip的&#xff0c;有时出于远程登录方便的考虑&#xff0c;会将其设置为静态ip&#xff0c;以下是设置静态ip的方法 在 Ubuntu 中设置静态 IP 的方法取决于你使用的网络管理工具&#xff08;如 netplan、NetworkManager 或 ifconfig&#xff09;。…...

js原型和原型链

js原型&#xff1a; 1、原型诞生的目的是什么呢&#xff1f; js原型的产生是为了解决在js对象实例之间共享属性和方法&#xff0c;并把他们很好聚集在一起&#xff08;原型对象上&#xff09;。每个函数都会创建一个prototype属性&#xff0c;这个属性指向的就是原型对象。 …...

大数据 - 2. Hadoop - HDFS

前言 HDFS&#xff1a;分布式文件系统 为什么海量数据需要分布式存储技术&#xff1f; 文件过大时&#xff0c;单台服务器无法承担&#xff0c;要靠数量来解决。数量的提升带来的是网络传输、磁盘读写、CPU、内存等各方面的提升。 众多的服务器一起工作&#xff0c;如何保证…...

嵌入式硬件常用总线接口知识体系总结和对比

0.前言 在嵌入式工程实现中,多多少少我们都使用过总线,各种各样的总线应用于不同场合,不同场景有不同的优势,但是我们在作为工程师过程中在如何选择项目合适的总线,根据什么来选?需要我们对项目全局和总线特征有所了解,本文目的就是对比多种总线的关键特征 我们在聊到…...

prime 1 靶场笔记(渗透测试)

环境说明&#xff1a; 靶机prime1和kali都使用的是NAT模式&#xff0c;网段在192.168.144.0/24。 Download (Mirror): https://download.vulnhub.com/prime/Prime_Series_Level-1.rar 一.信息收集 1.主机探测&#xff1a; 使用nmap进行全面扫描扫描&#xff0c;找到目标地址及…...

(二十四)安卓开发中的AppCompatActivity详解

在安卓开发中&#xff0c;AppCompatActivity 是一个非常核心的类&#xff0c;它继承自 Activity&#xff0c;并通过 Android Support Library&#xff08;现已迁移至 AndroidX&#xff09;提供了对 ActionBar 和 Material Design 的支持。它的主要作用是帮助开发者在不同版本的…...

AI大模型+全渠道整合:容联七陌智能客服赋能制造业升级

自《中国制造2025》战略提出以来&#xff0c;制造业的智能化发展进入快车道&#xff0c;但行业仍面临劳动力成本上升、供应链不透明、客户需求碎片化等挑战。企业亟需通过技术手段实现降本增效&#xff0c;而智能化客户服务成为关键突破口。 与此同时&#xff0c;客服行业正经历…...

Vue 技术解析:从核心概念到实战应用

Vue.js 是一款流行的渐进式前端框架&#xff0c;以其简洁的 API、灵活的组件化结构和高效的响应式数据绑定而受到开发者的广泛欢迎。本文将深入解析 Vue 技术的核心概念、原理和应用场景&#xff0c;帮助开发者更好地理解和使用 Vue.js。 一、Vue 的设计哲学与核心概念 &…...

中英文提示词对AI IDE编程能力影响有多大?

深度剖析 &#x1f9e0;&#xff1a;中英文提示词对AI IDE编程能力影响有多大&#xff1f;&#xff08;附实战建议&#xff09; 作者&#xff1a;AI助手 | 日期&#xff1a;2023-10-27 | 标签&#xff1a;AI, IDE, Prompt Engineering, LLM, 编程效率 摘要&#xff1a;随着 AI…...

ARM处理器程序烧写方式

一、烧写原理 无论是jtag还是串口烧写&#xff0c;本质都是先通过上位机&#xff08;keil 或者flymcu或者芯片官方上位机等烧写bin的上位机&#xff09;往mcu的ram里烧写一段代码即.FLM文件&#xff0c;这段代码在上位机&#xff08;keil体现在配置项里&#xff0c;flymcu应该…...

AI 项目详细开发步骤指南

AI 项目详细开发步骤指南 一、环境搭建详解 1. JDK 17 安装与配置 Windows 系统安装步骤&#xff1a; 访问 Oracle 官网下载 JDK 17 安装包&#xff1a;https://www.oracle.com/java/technologies/downloads/#java17下载 Windows x64 Installer 版本双击安装包&#xff0c;…...

文本纠错WPS插件:提升文档质量的利器

文本纠错WPS插件&#xff1a;提升文档质量的利器 引言 在数字化办公日益普及的今天&#xff0c;文档的质量直接影响到我们的工作效率和形象。一个错别字或标点错误&#xff0c;可能就会让我们的专业形象大打折扣。今天&#xff0c;我要向大家介绍一款强大的WPS插件——文本纠…...

Node.js 模块包的管理和使用是

一、模块包的概念 1.模块分类&#xff1a; 核心模块&#xff1a;Node.js 内置模块&#xff08;如 fs, http, path&#xff09;&#xff0c;无需安装直接引用。 本地模块&#xff1a;开发者自己编写的模块文件&#xff0c;通过相对路径引入。 第三方模块&#xff1a;通过 npm…...

腾讯云golang一面

go垃圾回收机制 参考自&#xff1a;https://zhuanlan.zhihu.com/p/334999060 go 1.3 标记清除法 缺点 go 1.5 三色标记法 屏障机制 插入屏障 但是如果栈不添加,当全部三色标记扫描之后,栈上有可能依然存在白色对象被引用的情况(如上图的对象9). 所以要对栈重新进行三色标记扫…...

【Three.js基础学习】35.Particles Cursor Animation Shader

前言 关于着色器应用和画布&#xff0c;实现黑白色照片动态效果 一、代码 script.js ​ import * as THREE from three import { OrbitControls } from three/addons/controls/OrbitControls.js import particlesVertexShader from ./shaders/particles/vertex.glsl import p…...

安卓性能调优之-掉帧测试

掉帧指的是某一帧没有在规定时间内完成渲染&#xff0c;导致 UI 画面不流畅&#xff0c;产生视觉上的卡顿、跳帧现象。 Android目标帧率&#xff1a; 一般情况下&#xff0c;Android设备的屏幕刷新率是60Hz&#xff0c;即每秒需要渲染60帧&#xff08;Frame Per Second, FPS&a…...

六、分布式嵌入

六、分布式嵌入 文章目录 六、分布式嵌入前言一、先要配置torch.distributed环境二、Distributed Embeddings2.1 EmbeddingBagCollectionSharder2.2 ShardedEmbeddingBagCollection 三、Planner总结 前言 我们已经使用了TorchRec的主模块&#xff1a;EmbeddedBagCollection。我…...

13-scala模式匹配

模式匹配是检查某个值&#xff08;value&#xff09;是否匹配某一个模式的机制&#xff0c;一个成功的匹配同时会将匹配值解构为其组成部分。它是Java中的switch语句的升级版&#xff0c;同样可以用于替代一系列的 if/else 语句。 语法 一个模式匹配语句包括一个待匹配的值&a…...

Multisim使用说明详尽版--(2025最新版)

一、Multisim14前言 1.1、主流电路仿真软件 1. Multisim&#xff1a;NI开发的SPICE标准仿真工具&#xff0c;支持模拟/数字电路混合仿真&#xff0c;内置丰富的元件库和虚拟仪器&#xff08;示波器、频谱仪等&#xff09;&#xff0c;适合教学和竞赛设计。官网&#xff1a;艾…...

试一下阿里云新出的mcp服务

前言 MCP这段时间的发展可谓是如火如荼&#xff0c;各种教程也是层出不穷&#xff0c;基本的教程都是如何集成各类型的mcp(比如高德地图)到开发工具(比如cursor)&#xff0c;效果很好&#xff0c;但是有个问题就是&#xff0c;配置教程较为繁琐。 阿里云悄然上线的mcp 今天早上…...

正弦波有效值和平均值(学习笔记)

一个周期的正弦波在坐标轴上围的面积有多大&#xff1f; 一般正弦波以 y Asin(wx)表示&#xff0c;其中A为振幅&#xff0c;W为角速度。周期T 2π/w; 确定积分区间是x 0&#xff0c;到x 2π。 计算绝对值积分&#xff1a; 变量代还&#xff1a;wx θ&#xff0c;dx dθ…...

科研软件分享

这个帖子不定期更新&#xff0c;分享博主自己使用的很好用的科研软件 1 connectedpaper Connected Papers | Find and explore academic papers 2 Semantic Scholar...

Python(12)深入解析Python参数传递:从底层机制到高级应用实践

目录 一、参数传递的编程哲学1.1 参数传递的本质1.2 参数传递类型矩阵 二、参数传递核心规则2.1 位置参数与关键字参数2.2 可变参数处理 三、参数传递高级特性3.1 类型约束与提示3.2 参数内存优化 四、参数传递工程实践4.1 防御性参数校验4.2 参数依赖注入 五、参数传递性能优化…...

MVCC是什么?MVCC的作用是什么?MVCC实现方式有哪些?

MVCC&#xff08;多版本并发控制&#xff09;详解 一、MVCC是什么&#xff1f; MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff09;是数据库管理系统中的一种并发控制机制&#xff0c;它通过维护数据的多个版本来实现非阻塞读和高并发…...

007.Gitlab CICD缓存与附件

文章目录 缓存与产物缓存与产物概述 同分支不同job数据共享默认数据共享不同 Job 数据共享 不同分支相同job数据共享跨分支同job数据共享 不同分支不同job数据共享跨分支跨job数据共享 将文件/夹保存为附件产物介绍创建产物跨job共享产物 缓存与产物 缓存与产物概述 缓存是一…...

A006-基于Selenium和JMeter的吉屋web端的自动化测试设计与实现

产出&#xff1a;自动测试脚本测试用例开题报告自动化测试报告论文jmeter性能测试 --------------------**论文主要内容***----- 第1章 吉屋web端需求分析 1.1 吉屋web端功能需求分析 由于社会对知识获取的需求不断增长&#xff0c;海量繁多的房屋信息已难以依靠传统人工高效…...

图像预处理-边缘填充,透视变换和色彩空间基础

一.边缘填充 一般来图片操作之后会有空区域&#xff0c;就是对空出来的区域进行了像素值的填充&#xff0c;(0&#xff0c;0&#xff0c;0)也就是黑色像素值的填充。 # 默认黑色填充 import cv2 as cvimg cv.imread(../images/lena.png) # 先让原图旋转45度 M cv.getRotatio…...

数字化赋能,众趣科技助力智慧园区深化管理运营能力

数字化、网络化和智能化&#xff0c;被公认为是未来社会发展的大趋势。随着全球物联网、云计算等新一代信息技术不断成熟&#xff0c;传统的招商管理运营模式难以满足园区当下所需&#xff0c;以“园区互联网”为理念的“智慧园区”应运而生&#xff0c;同时融入社交、移动、物…...

《AI大模型应知应会100篇》 第16篇:AI安全与对齐:大模型的灵魂工程

第16篇&#xff1a;AI安全与对齐&#xff1a;大模型的灵魂工程 摘要 在人工智能技术飞速发展的今天&#xff0c;大型语言模型&#xff08;LLM&#xff09;已经成为推动社会进步的重要工具。然而&#xff0c;随着这些模型能力的增强&#xff0c;如何确保它们的行为符合人类的期…...

MCP的另一面

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

Golang|锁相关

文章目录 并发安全性与原子操作读写锁分布式锁 并发安全性与原子操作 普通数据类型在并发读写中是会出现问题的&#xff0c;有时候操作会被吞&#xff0c;导致脏写&#xff0c;比如上面n加了两次应该为2&#xff0c;但是由于并发&#xff0c;n最后还是只加了一次 读写锁 sync.…...

大模型面经 | 介绍一下大模型微调方法Prefix Tuning、Prompt Tuning、P-Tuning和P-Tuning v2

大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...

JMeter的高并发和高频率和分布式

性能测试 模拟各种正常的、峰值的测试环境&#xff0c;检测程序的各项性能指标是否能够达标 高并发 JMeter中内置了定时器&#xff0c;可以实现时间模式相关的性能测试 需求1:同一时刻100个同学去访问学生管理系统的查询所有学院信息功能&#xff0c;统计高并发情况下平均响…...

设计模式-模板模式

设计模式-模板模式&#xff0c;不用重复写大的逻辑&#xff0c;父类定义好不变的模板方法&#xff0c;子类使用&#xff0c;当框架是父类的框架时可以继承...

手机端可部署的开源大模型; 通义千问2.5训练和推理需要的内存和外存

手机端可部署的开源大模型 目录 手机端可部署的开源大模型Qwen2.5 0.5B 7b 推理采用手机内存需要多少Qwen2.5 0.5B不同量化精度下的内存需求Qwen2.5 7B不同量化精度下的内存需求通义千问2.5训练和推理需要的内存和外存推理阶段1. Qwen2.5 - 7B2. Qwen2.5 - 14B3. Qwen2.5 - 72B…...

记录学习的第二十五天

今天终于又开始更新了。实在是星期六的蓝桥杯给了我一个大大的打击&#xff0c;今天终于好不容易缓过来了&#xff0c;可以好好学算法了。 还是老规划&#xff0c;力扣的每日一题。不过今天的每日一题我之前做过了&#xff0c;就又提交了一次来签到。 之后三道哈希表题目。 我一…...

leetcode03 -- 武汉旅游查询系统

武汉旅游查询系统 1 界面展示 1.首页地图界面 2.查找功能 在查找框内输入查找的景点名称 查找到的景点在地图上进行定位,右侧展示景点的详细信息。 3.添加景点功能 在地图上点击某个位置,系统弹出一个输入框供用户填写景点的名称和描述。 在弹出的输入框中输入景点名…...

R 语言科研绘图第 39 期 --- 饼状图-旭日

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

R语言操作练习2

加载tidyr包&#xff0c;探索table1,table2,table3,table4a, table4b维度和结构 将table4a进行宽转长操作&#xff0c;列名为country,year,population 基于题2&#xff0c;以country为横坐标&#xff0c;population为纵坐标&#xff0c;fillyear&#xff0c;采用dodge形式作柱…...

【秣厉科技】LabVIEW工具包——OpenCV 教程(19):拾遗 - imgproc 基础操作(上)

文章目录 前言imgproc 基础操作&#xff08;上&#xff09;1. 颜色空间2. 直方图3. 二值化4. 腐蚀、膨胀、开闭运算5. 梯度与轮廓6. 简易绘图7. 重映射 总结 前言 需要下载安装OpenCV工具包的朋友&#xff0c;请前往 此处 &#xff1b;系统要求&#xff1a;Windows系统&#x…...

python中,sort(reverse=True)与列表.reverse的区别

python中&#xff0c;sort(reverseTrue)与列表.reverse的区别 在 Python 中&#xff0c;sort(reverseTrue) 和 列表.reverse() 是两种不同的操作&#xff0c;主要区别如下&#xff1a; 1. sort(reverseTrue) 作用&#xff1a; 对列表进行降序排序&#xff08;即从大到小排列…...

Java【多线程】(8)CAS与JUC组件

目录 1.前言 2.正文 2.1CAS概念 2.2CAS两种用途 2.2.1实现原子类 2.2.2实现自旋锁 2.3缺陷&#xff1a;ABA问题 2.4JUC组件 2.4.1Callable接口 2.4.2ReentrantLock&#xff08;与synchronized对比&#xff09; 2.4.3Semaphore信号量 2.4.4CountDownLatch 3.小结 1…...

MATLAB仿真多相滤波抽取与插值的频谱变化(可视化混叠和镜像)

MATLAB画图仿真多相滤波抽取与插值的频谱变化 可视化多速率信号处理抽取与插值的频谱变化 实信号/复信号 可视化混叠和镜像 目录 前言 一、抽取的基本原理 二、MATLAB仿真抽取运算 三、内插的基本原理 四、MATLAB仿真内插运算 总结 前言 在多速率系统中增加信号采样率的运…...

Docker 与 Podman常用知识汇总

一、常用命令的对比汇总 1、基础说明 Docker&#xff1a;传统的容器引擎&#xff0c;使用 dockerd 守护进程。 Podman&#xff1a;无守护进程、无root容器引擎&#xff0c;兼容 Docker CLI。 Podman 命令几乎完全兼容 Docker 命令&#xff0c;只需将 docker 替换为 podman。…...

Spark-SQL简介

Spark-SQL: Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 Hive and SparkSQL: Drill,Impala.Shark Shark 是伯克利实验室 Spark 生态环境的组件之一. Shark 的出现&#xff0c;使得 SQL-on-Hadoop 的性能比 Hive 有了 10-100 倍的提高。 Spark-S…...