蓝牙概述及基本架构介绍

news2024/7/6 17:40:52

蓝牙概述及基本架构介绍

  • 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。

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

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

相关文章

矢量图片转换软件Vector Magic mac中文版功能特色

Vector Magic mac是一款图片转换矢量图&#xff0c;该软件使用世界上最好的全彩色自动描摹器&#xff0c;快速准备好您的作品进行打印、绣花、剪裁等操作。 Vector Magic mac功能特色 只需上传即可在线自动将 JPG、PNG、BMP 和 GIF 位图图像转换为真正的 SVG、Eps 和 PDF 矢量…

【前端】three.js

文章目录 概述three.js-master目录结构Threejs 的基本要素场景相机透视相机正交相机 网格2d3d 灯光AmbientLight(环境光)平行光&#xff08;DirectionalLight&#xff09;点光源&#xff08;PointLight&#xff09;聚光灯&#xff08;SpotLight&#xff09; 渲染器 Threejs 的实…

NABOCUL集团专注科研创新 为内源护肤、护发提供更优选择

据权威媒体报道,日本知名化妆品集团NABOCUL Cosmetics株式会社研通过多年的科技创新和内源护肤研究,创新研发Olandu、TakuMin、“CIMIVOSOTUY”等核心成分,向中国消费者传递“关爱恒久之美”的理念,更好地释放内源护肤的独特魅力,为人们内源护肤、护发提供了全新选择。 据了解,…

如何使用vs2022通过excel.exe生成VC、C++能够使用的头文件

我们在开发MFC、VC、C项目时&#xff0c;有时候需要操作excel文件的读写&#xff0c;我们一般常用方式是调用微软的excel驱动方式调用&#xff0c;但调用驱动前&#xff0c;我们需要生成我们C能够调用到的头文件&#xff0c;一般常用文件有&#xff1a; #include "CAppli…

内网穿透的应用-Jupyter Notbook+cpolar内网穿透实现公共互联网访问使用数据分析工作

文章目录 1.前言2.Jupyter Notebook的安装2.1 Jupyter Notebook下载安装2.2 Jupyter Notebook的配置2.3 Cpolar下载安装 3.Cpolar端口设置3.1 Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 在数据分析工作中&#xff0c;使用最多的无疑就是各种函数、图表、…

spirng+maven实现的宠物管理系统

spirngmaven实现的宠物管理系统,演示地址:登录页面 共分为3中角色 管理员 账号&#xff1a;admin 密码&#xff1a;123456 医生&#xff1a; 账号&#xff1a;医生1 密码&#xff1a;123456 普通用户&#xff1a; 账号&#xff1a;1 密码&#xff1a;123456 数据库为mysql5.7…

人工智能入门,什么是AlphaGo式搜索?

AlphaGo式搜索是一种搜索算法&#xff0c;它是由DeepMind开发的AlphaGo团队在开发AlphaGo程序时使用的搜索策略。 AlphaGo是一个基于人工智能的围棋程序&#xff0c;它在2016年击败了世界冠军柯洁&#xff0c;引起了广泛的关注。 AlphaGo式搜索的核心思想是使用蒙特卡洛树搜索…

全文检索[ES系列] - 第495篇

历史文章&#xff08;文章累计490&#xff09; 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 M…

软件测试工程师一定要会的用例设计思路

职场新人对测试用例的困惑无非有以下几点 1、什么是测试用例&#xff0c;为什么要写测试用例&#xff1f; 2、不知道怎么写&#xff0c;写了也不知道写的是否完整。 同时&#xff0c;在这我也准备了一份软件测试视频教程&#xff08;含接口、自动化、性能等&#xff09;&…

伦敦金现图形态分析(深度好文)

对价格行为交易者来说&#xff0c;伦敦金价走势图表中的一些特殊形态&#xff0c;能够带来比较靠谱的交易信号。然而交易并不只和形态有关&#xff0c;也和我们能够从图表形态中阅读到什么&#xff0c;以及如何理解其他交易者对价格波动的推动有关。 在对伦敦金走势图的技术形态…

Postman接口测试 —— 调用接口!

一、获取接口信息 通过接口文档/fiddler,Charles,F12等抓包获取接口信息 二、分析接口信息 &#xff08;1&#xff09;请求方式:get/post &#xff08;2&#xff09;参数方式&#xff1a;有哪些参数/参数类型/必填项 &#xff08;3&#xff09;是否带请求头&#xff1a;带…

学嵌入式,已经会用stm32做各种小东西了,下一步是什么

学嵌入式&#xff0c;已经会用stm32做各种小东西了&#xff0c;下一步是什么&#xff0c;研究stm32的内部吗&#xff1f; 针对题主这种类型的&#xff0c;首先我想提出几个技术问题。 1&#xff0c;除了那几个常用的外设&#xff0c;stm32上集成的众多外设是否都有实际的使用经…

SpringCloudAlibaba微服务 【实用篇】| Nacos注册中心

目录 一&#xff1a;Nacos注册中心 1. 认识和安装Nacos 2. Nacos快速入门 3. Nacos服务分级存储模型 ①Nacos服务分级存储模型 ②NacosRule负载均衡 ③根据权重负载均衡 4. Nacos环境隔离 二&#xff1a;Nacos和Eureka的对比 tips&#xff1a;前些天突然发现了一个巨…

为了深入理解优秀的RPC框架Dubbo,从基于Netty手写一个RPC框架开始

什么是RPC 在分布式服务框架中&#xff0c;在java领域中有很多实现远程通讯的技术&#xff0c;例如RMI、Hessian、SOAP、ESB 和JMS。 要实现网路机器间的通讯&#xff0c;首先需要看看计算机网络通信的基本原来&#xff0c;在底层层面看&#xff0c;网络通信需要做得就是将流…

【OpenCV】图像上绘制文字cv2.putText()函数用法,添加倾斜透明水印

图像上绘制文字 1. 概述2. cv2.putText()函数参数3. 图像上绘制非中文文字4. 图像上绘制中文文字5. 图片上添加倾斜透明文字水印 1. 概述 在OpenCV中&#xff0c;调用cv2.putText()函数可添加文字到指定位置&#xff0c;对于需要在图片中加入文字的场景提供了一种比较直接方便的…

表单项样式1(输入框,选择框)

样式均写在全局文件下&#xff08;src/assets/style/home.scss&#xff09; 1、选择框 效果&#xff1a; 选择时&#xff1a; 代码&#xff1a; //选择框 .el-select{.el-input__inner{border-radius: 0px;font-size: 14px;color: #CBEEFF;background: rgba(23,111,172,0.12…

当「华为还是备选,迪爹还是迪子」时宇宙厂一面原题

写在前面 2021 年还是互联网元年&#xff0c;当时常规的华为 Offer 还是普遍人的备选&#xff0c;如今的迪爹&#xff08;BYD&#xff09;也还是 "来投就给 Offer" 的迪子。 只有字节&#xff0c;当时是公认炙手可热的"宇宙厂"。 作为在 2021 就提前体验了…

TikTok小店运营秘籍:打造有温度的社交电商

引言 TikTok作为全球短视频平台的领军者&#xff0c;日渐成为创业者和小商家的新天地。通过TikTok小店&#xff0c;创业者们可以将独特的产品呈现给全球观众。 然而&#xff0c;要在这个竞争激烈的市场中脱颖而出&#xff0c;不仅需要敏锐的商业嗅觉&#xff0c;还需要打造一个…

网易云音乐7天黑胶VIP会员免费领取入口怎么领取网易云音乐黑胶VIP7天会员?

网易云音乐7天黑胶VIP会员免费领取入口怎么领取网易云音乐黑胶VIP7天会员&#xff1f; 1、百度搜索「词令」&#xff0c;在搜索框内输入词令「vip163」关键词直达口令&#xff0c;进入网易云音乐7天黑胶VIP会员免费领取入口&#xff1b; 2、输入网易云音乐黑胶VIP7天会员领取词…

Intellij Idea 调试界面断点“下一步” 按钮不见了怎么办

问题图示例&#xff1a; 原因 Debug 工具栏&#xff08; Toolbar &#xff09;被隐藏了 解决方案 操作步骤 点击Debug面板设置图标->再点击 Show Toobar 点击后效果 工具栏再现&#xff0c;又可以愉快的下一步了 Debug 图标设置按钮一般位于Debug面板的右上角