蓝牙概述及基本架构介绍

蓝牙概述及基本架构介绍

  • 1. 概述
    • 1.1 蓝牙的概念
    • 1.2 蓝牙的发展历程
    • 1.3 蓝牙技术概述
      • 1.3.1 Basic Rate(BR)
      • 1.3.2 Low Energy(LE)
  • 2. 蓝牙的基本架构
    • 2.1 芯片架构
    • 2.2 协议架构
      • 2.2.1 官方协议中所展示的蓝牙协议架构
        • 2.2.1.1 全局分析
        • 2.2.1.2 局部分析
      • 2.2.2 HW层,Transport层,Host层
        • 2.2.2.1 HW层——蓝牙芯片层
        • 2.2.2.2 Transport——数据传输层
        • 2.2.2.3 HOST——协议层
      • 2.2.3 BLE蓝牙体系架构
  • 3. 市场常见的蓝牙技术方案
    • 3.1 SOC单芯片方案
    • 3.2 SOC蓝牙+MCU方案
    • 3.3 蓝牙host+controller分开方案
  • 4 Bluez介绍
    • 4.1 Bluez概述
    • 4.2 Bluez目录介绍

1. 概述

1.1 蓝牙的概念

蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDA(掌上电脑)、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.11协议。

1.2 蓝牙的发展历程

自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到Bluetooth V5.2,经历了近9个版本的修订后,发展为当前的状况。
“蓝牙”的形成背景:

1998 年 5 月,爱立信、诺基亚、东芝、 IBM和英特尔公司等五家著名厂商, 在联合开展短程无线通信技术的标准化活动时提出了蓝牙技术,其宗旨是提供一种短距离、 低成本的无线传输应用技术。

芯片霸主 Intel 公司负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发, IBM 和东芝负责笔记本电脑接口规格的开发。

1999 年下半年,著名的业界巨头微软、摩托罗拉、三星、朗讯与蓝牙特别小组的五家公司共同发起成立了蓝牙技术推广组织,从而在全球范围内掀起了一股“蓝牙”热潮。
全球业界即将开发一大批蓝牙技术的应用产品, 使蓝牙技术呈现出极其广阔的市场前景,并预示着 21 世纪初将迎来波澜壮阔的全球无线通信浪潮。

蓝牙版本发布时间最大传输速率传输距离
蓝牙1.01998723Kbps10米
蓝牙1.12002810Kbps10米
蓝牙1.220031Mbps10米
蓝牙2.0+EDR20042.1Mbps10米
蓝牙2.1+EDR20073Mbps10米
蓝牙3.0+HS200924Mbps10米
蓝牙4.0-4.22010/2013/201424Mbps50米
蓝牙5.0-5.22016/2019/202048Mbps300米
  • 第一代蓝牙:关于短距离通讯早期的探索,使用的是BR技术,此时蓝牙的理论传输速率,只能达到721.2Kbps。
  • 第二代蓝牙:新增的 EDR(Enhanced Data Rate)技术,使得蓝牙设备的传输率可达 3Mbps。
  • 第三代蓝牙:核心是 AMP(Generic Alternate MAC/PHY),这是一种全新的交替射频技术,支持动态地选择正确射频,传输速率高达 24Mbps
  • 第四代蓝牙:主推” Low Energy”低功耗, BLE(Bluetooth Low Energy)低功耗功能
  • 第五代蓝牙:开启「物联网」时代大门,在低功耗模式下具备更快更远的传输能力

1.3 蓝牙技术概述

蓝牙协议包括两种技术:BR:Basic Rate和LE:Low Energy。这两种技术都包括搜索(discovery)管理、连接(connection)管理等机制,但它们是不能互通的。
厂商如果只实现了一种,那么只能与同样实现该技术的设备互通。
如果厂商要确保能和所有的蓝牙设备互通,那么就只能同时实现两种技术,而不去管是否真的需要。

1.3.1 Basic Rate(BR)

  • BR:Basic Rate是正宗的蓝牙技术,可以包括可选(optional)的EDR(Enhanced Data Rate)技术,以及交替使用的(Alternate)的MAC(Media Access Control)层和PHY层扩展(简称AMP(Alternate MAC and PHY layer extension))。
  • BR:最早期的蓝牙技术,速度只能达到721.2Kbps,在那个年代,已为高大上了。
  • EDR:随着技术的提升,使用EDR技术的蓝牙,理论速率可以达到2.1Mbps。
  • AMP:使用AMP技术的蓝牙,理论速率可以达到54Mbps。

AMP的Alternate交替使用体现在:由于蓝牙自身的物理层和AMP技术差异太明显,BR/EDR和AMP是不能同时使用的。

简单的说,就是:BR和EDR是可以同时存在的,但BR/EDR和AMP只能二选一。

1.3.2 Low Energy(LE)

上面所讲的BR技术的进化路线,就是传输速率的加快、加快、再加快。但能量是守恒的,你想传的更快,代价就是消耗更多的能量。而有很多的应用场景,并不关心传输速率,反而非常关心功耗。这就是Bluetooth LE(称作蓝牙低功耗)产生的背景。

从它的英文名字上就可以看出它是一种低功耗蓝牙技术,是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。

低功耗蓝牙与经典蓝牙使用相同的2.4GHz无线电频率,因此双模设备可以共享同一个天线。低功耗蓝牙使用的调制系统更简单。

LE技术相比BR技术,差异非常大,或者说就是两种不同的技术,凑巧都加一个“蓝牙”的前缀而已。

目前BLE主要广泛应用于IoT产品领域。

技术规范经典蓝牙(BT)低功耗蓝牙(BLE)
无线电频率2.4GHz2.4GHz
距离10米最大100米
发送数据所需时间100ms<3ms
响应延时约100ms6ms
安全性64/128-bit及用户自定义的应用层128-bit AES及用户自定义的应用层
能耗100%(ref)1%-50%
空中传输数据速率1-3Mb/s1Mb/s
主要用途手机 游戏机 耳机 汽车 PC手机 游戏机 PC 智能穿戴设备汽车 家用电子

2. 蓝牙的基本架构

2.1 芯片架构

蓝牙的核心系统,由一个Host和一个或多个Controller组成。

  • BT Host:一个逻辑实体,在HCI(Host Controller Interface)的上层。
  • BT Controller:一个逻辑实体,在HCI(Host Controller Interface)的下层。

Bluetooth的主控制器,可能是以下几种:

  • BR/EDR Controller:内部包含Radio, Baseband,Link Manager,可选的HCI。
  • LE Controller :内部包含LE PHY,Link Layer ,可选的HCI
  • BR/EDR & LE Controller:BR/EDR与LE的组合的控制器
  • MAC/PHY (AMP) Controller:二级控制器,可替代的,内部包含 802.11 PAL (Protocol Adaptation Layer),802.11 MAC,PHY,可选的HCI。

根据Host与Controller的组成关系,常见的蓝牙芯片也分为以下几种:

  • 单模蓝牙芯片:单一传统蓝牙的芯片,单一低功耗蓝牙的芯片。即(1个Host结合1个Controller)
  • 双模蓝牙芯片:同时支持传统蓝牙和低功耗蓝牙的芯片。即(1个Host结合多个Controller)

因此,蓝牙芯片就会有以下几种架构:
在这里插入图片描述

2.2 协议架构

蓝牙的协议架构我们从两个视角来进行认识。

2.2.1 官方协议中所展示的蓝牙协议架构

在这里插入图片描述

2.2.1.1 全局分析
  1. Controller:
  • BR/EDR Controller:由Link Manager、Link Controller、BR/EDR Radio组成
  • LE Controller:由Link Manager、Link Controller、 LE Radio 组成
  • AMP Controller:由 AMP PAL, AMP MAC, AMP PHY组成
  1. Host:
  • BR/EDR Host:由 L2CAP、SDP 、GAP 组成
  • LE Host:由 L2CAP、SMP 、GAP 、Attribute protocol、GATT组成
2.2.1.2 局部分析
  1. Host层
  • Channel Manager:通道管理,主要用于创建、管理、关闭L2CAP通道,用于服务协议和应用数据的传输。
  • L2CAP Resource Manage:L2CAP资源管理,主要负责管理分片的PDU的正确提交。
  • Security Manager Protocol:SMP安全管理协议,主要负责生成加密密钥和身份密钥。
  • Attribute Protocol:ATT,属性协议,主要负责服务端与客户端点到点的数据传输。
  • AMP Manager Protocol:直接使用L2CAP与远程设备通信。
  • Generic Attribute Profile:GATT,提供更多的功能,概要文件描述了属性服务器中使用的服务层次结构、特征和属性,用于LE设备
  • Generic Access Profile:GAP,标识了基础的蓝牙设备的通用功能
  1. Controller层
  • Device Manager:控制蓝牙设备的通用行为,负责与蓝牙通信过程中,所有的与数据无关的操作,如查询设备,连接设备
  • Link Manager:链路管理,主要负责创建,修改,释放逻辑链路。
  • Baseband Resource Manager:基带资源管理,主要负责所有的访问无线电媒体
  • Link Controller:链路控制,主要负责从编码和解码蓝牙数据包
  • PHY:物理层,主要负责发送,接收物理通道的信息包

2.2.2 HW层,Transport层,Host层

在这里插入图片描述

2.2.2.1 HW层——蓝牙芯片层

HW层,指的是蓝牙芯片层,也就是我们上面说的Controller,包括以下几个部分:

  • RF(RADIO):射频层,本地蓝牙数据通过射频发送给远端设备,并且通过射频接收来自远端蓝牙设备的数据。
  • BB(BASEBAND):基带层,进行射频信号与数字或语音信号的相互转化,实现基带协议和其它的底层连接规程。
  • LMP(LINK MANAGER PROTOCOL):链路管理层,负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作
  • HCI(HOST CONTROLLER INTERFACE):主机控制器接口层,HCI层在芯片以及协议栈都有,芯片层面的HCI负责把协议栈的数据做处理,转换为芯片内部动作,并且接收到远端的数据,通过HCI上报给协议栈。
  • BLE PHY:BLE的物理层
    PHY层用来指定BLE所用的无线频段,调制解调方式和方法等。PHY层做得好不好,直接决定整个BLE芯片的功耗,灵敏度以及selectivity等射频指标。
  • BLE LL:BLE的链路层
    LL层是整个BLE协议栈的核心,也是BLE协议栈的难点和重点。像Nordic的BLE协议栈能同时支持20个link(连接),就是LL层的功劳。LL层要做的事情非常多,比如具体选择哪个射频通道进行通信,怎么识别空中数据包,具体在哪个时间点把数据包发送出去,怎么保证数据的完整性,ACK如何接收,如何进行重传,以及如何对链路进行管理和控制等等。LL层只负责把数据发出去或者收回来,对数据进行怎样的解析则交给上面的GAP或者ATT。
2.2.2.2 Transport——数据传输层

Transport层,主机控制层接口,通过硬件接口UART/USB/SDIO把HOST协议层的数据发送给Controller层,并且接收Controller层的数据。
该部分有几个协议:

  • H2:基于USB的传输
  • H4:基于UART的传输,最简单的传输方式,只在HCI raw data前面加上一个type
  • H5: 基于UART的传输
  • BCSP: 基于UART的传输
  • SDIO :基于SDIO的传输

H4需要蓝牙芯片的UART_TX/UART_RX/UART_CTS/UART_RTS/VCC/GND接到MCU;

H5只需要蓝牙芯片的UART_TX/UART_RX/VCC/GND接到MCU就可以通信。

2.2.2.3 HOST——协议层

HOST层,此部分就是蓝牙协议栈,该部分包括多个协议:

  • L2CAP(Logical Link Control and Adaptation Protocol):逻辑链路控制与适配协议,将ACL数据分组,对高层应用的数据进行分组,并提供协议复用和服务质量交换等功能。通过协议多路复用、分段重组操作和组概念,向高层提供面向连接的和无连接的数据服务。

    L2CAP对LL进行了一次简单封装,LL只关心传输的数据本身,L2CAP就要区分是加密通道还是普通通道,同时还要对连接间隔进行管理。

  • SDP(SERVICE DISCOVERY PROTOCOL):服务发现协议,为应用程序提供发现可用服务,并确定服务特征的方法。

  • RFCOMM(Serial Port Emulation):串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等协议都是直接走的RFCOMM

  • SPP(SERIAL PORT PROFILE):蓝牙串口协议

  • HID(HUMAN INTERFACE DEVICE):人机接口协议,HID还是有很多广泛的用途的,比如蓝牙鼠标,蓝牙键盘,蓝牙自拍杆,蓝牙手柄等。

  • IAP:苹果的特有协议,分为IAP1/IAP2,一般做Carplay或者iPod功能会涉及到该协议

  • PBAP(Phone Book Access):蓝牙电话本访问协议

  • MAP(MESSAGE ACCESS PROFILE):蓝牙短信访问协议

  • OBEX:对象交换协议,蓝牙电话本,蓝牙短信,文件传输等协议都是走的OBEX

  • HFP(Hands-Free):蓝牙免提协议

  • HSP:蓝牙耳机协议,最开始的蓝牙耳机协议,算是一个简化版的HFP。

  • A2DP(Advanced Audio Distribution): 蓝牙音乐协议

  • SM: 蓝牙BLE安全管理协议
    SMP用来管理BLE连接的加密和安全的,如何保证连接的安全性,同时不影响用户的体验,这些都是SMP要考虑的工作。

  • GAP(GENERIC ACCESS PROFILE):它定义了蓝牙设备的基本要求。
    它联系了所有的不同的层之间的交互,也描述了设备发现、建立连接、安全、认证、关联模型和发现服务的行为和方法。

    对于BR/EDR,它定义了一个蓝牙设备,包括无线电、基带、链路管理器、L2CAP和服务发现协议(SDP)功能。
    对于LE,它定义一个物理层(PHY),链路层,L2CAP,安全管理器,属性协议和通用属性配置文件。

    GAP是对LL层payload(有效数据包)如何进行解析的两种方式中的一种,而且是最简单的那一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的功能极其有限。GAP目前主要用来进行广播,扫描和发起连接等。

  • ATT(Attribute Protocol):蓝牙属性协议,用于发现、读、写对端设备的协议(针对BLE设备),ATT允许设备作为服务端提供拥有关联值的属性集 ,让作为客户端的设备来发现、读、写这些属性;同时服务端能主动通知客户端。
    简单来说,ATT层用来定义用户命令及命令操作的数据,比如读取某个数据或者写某个数据。BLE协议栈中,开发者接触最多的就是ATT。BLE引入了attribute概念,用来描述一条一条的数据。Attribute除了定义数据,同时定义该数据可以使用的ATT命令,因此这一层被称为ATT层。

  • GATT(Generic Attribute Profile):蓝牙通用属性协议,描述了一种使用ATT的服务框架 ,该框架定义了数据交换的格式。

    GATT用来规范attribute中的数据内容,并运用group(分组)的概念对attribute进行分类管理。没有GATT,BLE协议栈也能跑,但互联互通就会出问题,也正是因为有了GATT和各种各样的应用profile,BLE摆脱了ZigBee等无线协议的兼容性困境,成了出货量最大的2.4G无线通信产品。

GATT与ATT的关系:GATT 是脱胎于 ATT ,ATT 是 Attribute Protocol Specification 属性规范协议,注意ATT是协议,而GATT是规范,两者不同点在于 ATT规定了数据格式,而 GATT 则是按照 ATT 的格式将具体数据填充进去。

2.2.3 BLE蓝牙体系架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 市场常见的蓝牙技术方案

3.1 SOC单芯片方案

一般是半导体厂商半开源协议栈,把开发的蓝牙协议栈直接烧写到蓝牙芯片中,(比如CSR BC4/5,CSR8670,CSR8675,TI CC2540,NRF51xxx,NRF52xxx,乐鑫ESP32等等),架构如下:
在这里插入图片描述
市场上的常见产品:蓝牙音箱,蓝牙耳机,蓝牙手环,蓝牙心率带

3.2 SOC蓝牙+MCU方案

就是在1)的基础上,通过特定的interface(UART居多),发送自定义的command来达到想要的功能,比如发送0x01代表搜索周围设备,当然在产品中肯定不会定义这么简单的command,一般要加上command id + command len + command para data + command check sum来实现功能。

架构如下:
在这里插入图片描述
此部分的应用一般用于外设功能相对于复杂,需要驱动很多外设,但是单芯片方案的性能达不到的情况下一般用这种方案。

3.3 蓝牙host+controller分开方案

这种应用算是蓝牙最复杂的应用,适用于蓝牙使用情景较复杂的情况下使用,比如车载蓝牙等。客户需要有很多蓝牙协议,比如蓝牙电话(HFP),蓝牙音频(A2DP),蓝牙音乐控制(AVRCP),蓝牙电话本(PBAP),蓝牙短信(MAP),BLE,HID,如果你说以上还能用soc做,那么再加上Carplay的IAP/IAP2,Android Auto的RFCOMM BT呢,基本以上就需要这种方案了。

其中Transport是一个协议,H2就是在USB的基础上的协议,H4,H5,BCSP是UART基础上的协议,当然还有SDIO。
在这里插入图片描述
市场上常见产品:手机,功能较为复杂的蓝牙手表。

4 Bluez介绍

4.1 Bluez概述

BlueZ 是官方 Linux Bluetooth 栈,由主机控制接口(Host Control Interface ,HCI)层、Bluetooth 协议核心、逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol,L2CAP)、SCO 音频层、其他 Bluetooth 服务、用户空间后台进程以及配置工具组成。

BlueZ 的架构主要分为以下几个组件:

  • HCI(Host Controller Interface)层:这是 BlueZ 与蓝牙硬件之间的接口层。它负责与蓝牙控制器进行通信,发送和接收命令、事件和数据包。HCI 层通常由 Linux 内核提供的驱动程序来实现。
  • L2CAP(Logical Link Control and Adaptation Protocol)层:L2CAP 是蓝牙协议栈中的一个重要组件,提供了对称的、面向连接的数据通信服务。它在底层的物理链路之上建立逻辑连接,并负责分配信道和数据包的传输。
  • SDP(Service Discovery Protocol)层:SDP 提供了一种机制,用于在蓝牙设备之间发现和描述可用的服务和其特性。它允许设备查询其他设备上支持的服务,并获取服务的详细信息。
  • RFCOMM(Radio Frequency Communication)层:RFCOMM 是一种在 L2CAP 上运行的协议,它模拟了串行通信接口,使蓝牙设备能够像使用串口一样进行数据通信。
  • GAP(Generic Access Profile)层:GAP 定义了蓝牙设备之间的通用访问规范,包括设备发现、连接和身份验证等功能。它定义了设备的角色、广播和扫描行为,以及与配对和安全性相关的规则。
  • GATT(Generic Attribute Profile)层:GATT 是蓝牙 Low Energy(LE)模式中的一个重要概念,用于定义蓝牙设备之间的通信协议。它基于客户端-服务器模型,其中服务提供者提供各种服务,并通过 GATT 协议使客户端可以读取和写入服务的属性。

BlueZ 还提供了一组丰富的工具和库,用于在 Linux 系统上开发和管理蓝牙应用程序。这些工具包括 hciconfig(用于配置 HCI 接口)、hcitool(用于执行蓝牙设备和操作的低级别命令)、bluetoothctl(用于交互式地管理蓝牙设备)等。

4.2 Bluez目录介绍

Bluez协议栈下载地址:http://www.bluez.org/
目录架构介绍:
在这里插入图片描述

android/ - 用于替代android中bluedroid的android版本bluez源码。
attrib/ - 包含gatttool 源码以及与gatt attribute相关的代码,gatttool程序入口为gatttool.c。   
btio/ - 通过的标准socket接口与BlueZ5 kernel模块通信。
client/ - bluetoothctl源码,程序入口为main.c。
doc/ - BlueZ5 API文档。
emulator/ - 与bluetooth虚拟controller工具相关的代码。
gdbus/ - BlueZ5自带的内部gdbus库源码。
gobex/ - Blue5自带的内部gobex库源码。
lib/ - libbluetooth.so 源码,提供BlueZ4 API,用来支持某些第三方应用。
monitor/ - btmon源码, 程序入口为main.c。
obexd/ - obexd源码,程序入口为src/main.c。
peripheral/ - 与蓝牙ble的GATT相关的代码?。
plugins/ - BlueZ5插件源码(neard,autopair等插件)。
profiles/ - BlueZ5蓝牙上层协议(a2dp,hid等)源码。
src/ - bluetoothd源码,程序入口为main.c。
test/ - Bluez5测试脚本。
tools/ - Bluez5测试工具集源码。
unit/ - PTS测试相关的一些代码?。
README / INSTALL - 配置,编译,安装Bluez5的说明。
Makefile.obexd - 定义obexd编译规则,此文件被include于Makefile.am中。
Makefile.plugins - 定义BlueZ5的plugins(neard,autopair等)的编译规则, 此文件被include于Makefile.am中。
Makefile.tools - 定义BlueZ5测试工具集的编译规则,此文件被include于 Makefile.am中。
Makefile.am - 定义了Bluez5的编译规则。用于automake工具,生成 Makefile.in文件。
Makefile.in - 用于configure脚本,生成最终的Makefile文件。
configure.ac - 用于autoconf工具,生成configure脚本。
configure - 配置编译选项,生成最终的Makefile文件,以及config.h文件

bluez核心代码在src目录下,入口函数是main.c,bluez5编译后会生成bluetoothd可执行文件,该可执行文件在linux系统启动时自动加载,加载配置文件放在/etc/init/bluetooth.conf。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

android自定义桌面应用

android自定义桌面应用 这篇文章主要讲下自定义桌面应用. 效果主要是调用packageManager来获取当前所有的程序,并在自定义桌面程序中展示,并支持跳转. 主要的代码如下: 1.manifest声明 <activity android:name".MainActivity"><intent-filter><ac…

【Spring Boot】Swagger的常用注解

在Swagger的开发过程中&#xff0c;我们需要在Controller代码等处添加相应的注解&#xff0c;以便可以提高生成的接口文档的可读性为了解决这些问题&#xff0c;Swagger提供了很多的注解&#xff0c;通过这些注解&#xff0c;我们可以更好更清晰的描述我们的接口&#xff0c;包…

如何运用AppLink平台中的数据连接器组件

AppLink平台组件组成 AppLink平台组件分成三个板块触发事件组件、基础组件和数据连接器 数据连接器组件里面有10个组件&#xff0c;目前也在不断新增更多的数据连接器&#xff0c;那他们在AppLink平台里的原理、触发动作以及怎么使用呢&#xff1f;接下来用MySQL和TimescaleD…

探索接口测试:SOAP、RestFul规则、JMeter及市面上的接口测试工具

引言 在当今软件开发领域&#xff0c;接口测试扮演着至关重要的角色。随着系统变得日益复杂和互联&#xff0c;对于内部和外部接口的测试变得愈发关键。接口测试不仅仅是验证接口的正确性&#xff0c;更是确保系统的稳定性、安全性和性能优越性的关键一环。 本篇博客将带您深入…

2024 年应该使用 Bun、Node.js 还是 Deno

2024 年应该使用 Bun、Node.js 还是 Deno 到 2024 年&#xff0c;构建基于 JavaScript 的现代 API 相对简单。我们可以使用Express.js等库并在几分钟内启动可用的 API。但是&#xff0c;现在最具挑战性的部分是选择正确的 JavaScript 引擎。 目前主流的三个运行时是&#xff…

【Redis缓存】RedisTemplate如何获取符合要求的key,批量获取key

RedisTemplate如何获取符合要求的key,批量获取key 一、方法/命令二、数据使用 一、方法/命令 如果使用命令的形式&#xff0c;输入以下命令即可 keys *如果使用RedisTemplate&#xff0c;则方法为 redisTemplate.keys()获取所有符合条件的key。 二、数据使用 redis中缓存了…

西南科技大学数字电子技术实验一(数字信号基本参数与逻辑门电路功能测试及FPGA 实现 )预习报告

手写报告稍微认真点写&#xff0c;80随便有 目录 一、计算/设计过程 1、通过虚拟示波器观察和测量信号 2、通过实际电路&#xff08;电阻、开关、发光二极管&#xff09;模拟逻辑门电路 二、画出并填写实验指导书上的预表 三、画出并填写实验指导书上的虚表 四、粘贴原理…

Kafka 保证消息消费全局顺序性

当有消息被生产出来的时候&#xff0c;如果没有指定分区或者指定 key &#xff0c;那么消费会按照【轮询】的方式均匀地分配到所有可用分区中&#xff0c;但不一定按照分区顺序来分配 我们知道&#xff0c;在 Kafka 中消费者可以订阅一个或多个主题&#xff0c;并被分配一个或多…

前端页面带值跳转

前端页面带值跳转 querry>url searchParamers,url后附加参数&#xff0c;传递的值长度与有限vuex&#xff08;全局状态管理&#xff09;&#xff0c;搜索页面将关键词塞到状态中&#xff0c;所搜结果页从状态取值。 使用axios整合前后端 axios官网&#xff1a;axios 在前…

SpringCloud--分布式事务实现

一、分布式事务 首先要明白事务是指数据库中的一组操作&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部不执行&#xff0c;以保持数据的一致性和完整性。在本地事务中&#xff0c;也就是传统的单机事务&#xff0c;必须要满足原子性(Atomicity)、一致性(Consistenc…

计算机组成原理——存储器(主存容量扩展)

对于字扩展与位扩展的解释&#xff1a; 计算机原理中的字&#xff0c;位扩展&#xff0c;都给老子进来学&#xff0c;看不懂算我输&#xff01; 如果主存的容量无法满足 CPU 的需求&#xff0c;可以通过存储器扩展来解决&#xff0c;扩展的方式有两种&#xff1a; 主存的位数…

“职场中的‘特色人物’:与‘个性’领导和同事的碰撞与成长“

文章目录 每日一句正能量前言程序员是怎么和产品经理battle的&#xff1f;科班程序员非科班程序员 程序员的团队合作密码&#xff1a;协作与领导的艺术职场人际关系的技巧后记 每日一句正能量 乌云的背后是阳光&#xff0c;阳光的背后是彩虹。 前言 在职场中&#xff0c;我们都…

训练 CNN 对 CIFAR-10 数据中的图像进行分类

1. 加载 CIFAR-10 数据库 import keras from keras.datasets import cifar10# 加载预先处理的训练数据和测试数据 (x_train, y_train), (x_test, y_test) cifar10.load_data() 2. 可视化前 24 个训练图像 import numpy as np import matplotlib.pyplot as plt %matplotlib …

Python网络爬虫练习

爬取历年中国大学排名(前20名)&#xff0c;并随机选取一所高校画图展示其历年总分变化,并计算平均分&#xff0c;在图上展示该平均分直线&#xff1a; 代码如下&#xff1a; import matplotlib.pyplot as plt import pandas as pd import requests import randomdef main(yea…

蓝桥杯day01——根据给定数字划分数组

题目描述 给你一个下标从 0 开始的整数数组 nums 和一个整数 pivot 。请你将 nums 重新排列&#xff0c;使得以下条件均成立&#xff1a; 所有小于 pivot 的元素都出现在所有大于 pivot 的元素 之前 。所有等于 pivot 的元素都出现在小于和大于 pivot 的元素 中间 。小于 piv…

代码随想录算法训练营 ---第四十八天

第一题&#xff1a; 简介&#xff1a; 注&#xff1a;本题简介是我的思路&#xff0c;题解思路看下方。 动态规划五部曲&#xff1a; 1.确定dp数组的含义 //dp[i]表示 偷到第i家能偷到的最大金额 for(int i2;i<nums.size();i){if(i-3>0)dp[i] max(dp[i-2],dp[i-3])nu…

智慧城市交通大屏|助力解决城市交通问题

2017年起&#xff0c;数字孪生连续三年被Gartner列入“未来科技十大趋势”&#xff0c;由此可见数字孪生技术正屹立在数字化发展的风口之中。 数字孪生作为物理世界的数字映射&#xff0c;将流程、物体的信息利用数字技术实时映射到系统中&#xff0c;可以对某个设备、某个企业…

【挑战业余一周拿证】二、在云中计算 - 第 3 节 - Amazon EC2 定价

目录 第 3 节 - Amazon EC2 定价 一、按需 适用场景 二、Savings Plans 适用场景 三、预留实例 三种付款模式 四、Spot 实例 适用场景 五、专用主机 适用场景 关注订阅号 首页&#xff1a;【挑战业余一周拿证】AWS 认证云从业者 - 基础 课程目录&#xff1a;【挑…

网站纪念哀悼主题风格

前言 在许多情况下&#xff0c;为了表达对逝者的怀念和哀悼&#xff0c;网站会将其风格调整为黑白色。这种做法在一些网站中非常常见&#xff0c;包括一些社交媒体平台和新闻网站等。 当一个网站将其风格调整为黑白色时&#xff0c;这通常意味着它正在为一些悲伤的事件或纪念日…

leetCode 77.组合 + 回溯算法 (bactracking) + 剪枝 + 图解 + 笔记

77. 组合 - 力扣&#xff08;LeetCode&#xff09; 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] …