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

USB学习——基本概念

文章目录

    • USB(Universal Serial Bus)概述
      • USB系统的描述
      • USB总线传输方式
      • USB的拓扑结构
    • USB的连接模型
    • USB控制器及分类
    • USB描述符
    • USB 端点
    • USB枚举过程
    • USB 四种传输类型
      • USB 事务
      • 批量传输(Bulk)
      • 中断传输(Interrupt)
      • 等时传输(Isochronous)
      • 控制传输(Control)
      • 端点类型与传输类型的关系
      • 传输类型与端点最大包长
    • 参考

本文记录下学习USB相关的基本概念

USB(Universal Serial Bus)概述

USB全称为Universal Serial Bus(通用串行总线),是一种快速、灵活的总线接口。它是为了解决日益增加的PC外设与有限的主板插槽和端口之间的矛盾而制定的一种串行通信标准。

USB一般分为USB低速,USB全速,USB高速和USB超高速,其分别对应于USB1.0,USB1.1,USB2.0和USB3.0,而USB3.0又分了GEN1,GEN2等。最新一代是USB4,传输速度为40Gbit/s,三段式电压5V/12V/20V,最大供电100W ,新型Type C接口允许正反盲插。

USB是一种电缆总线,支持在主机和各式各样的即插即用的外设之间进行数据传输。由主机预定的标准的协议使各种设备分享USB带宽,当其它设备和主机在运行时,总线允许添加、设置、使用以及拆除外设。

USB系统的描述

一个USB系统主要被定义为三个部分:USB的互连、USB的设备、USB的主机。
USB的互连是指USB设备与主机之间进行连接和通信的操作,主要包括以下几方面:

  1. 总线的拓扑结构:USB设备与主机之间的各种连接方式;
  2. 内部层次关系:根据性能叠置,USB的任务被分配到系统的每一个层次;
  3. 数据流模式:描述了数据在系统中通过USB从产生方到使用方的流动方式;
  4. USB的调度:USB提供了一个共享的连接。对可以使用的连接进行了调度以支持同步数据传输,并且避免的优先级判别的开销。

USB总线传输方式

USB2.0总线属一种轮讯方式的总线,主机控制端口初始化所有的数据传输。每一总线执行动作最多传送三个数据包。按照传输前制定好的原则,在每次传送开始时,主机控制器发送一个描述传输运作的种类、方向,USB设备地址和终端号的USB数据包,这个数据包通常称为标志包(token packet)。USB设备从解码后的数据包的适当位置取出属于自己的数据。数据传输方向不是从主机到设备就是从设备到主机。在传输开始时,由标志包来标志数据的传输方向,然后发送端开始发送包含信息的数据包或表明没有数据传送。接收端也要相应发送一个握手的数据包表明是否传送成功。发送端和接收端之间的USB数据传输,在主机和设备的端口之间,可视为一个通道。存在两种类型的通道:流和消息。流的数据不像消息的数据,它没有USB所定义的结构,而且通道与数据带宽、传送服务类型,端口特性(如方向和缓冲区大小)有关。USB中有一个特殊的通道——缺省控制通道,它属于消息通道,当设备一启动即存在,从而为设备的设置、查询状况和输入控制信息提供一个入口。

USB 的设备可以接在 PC 上的任意的 USB 接口上. 而使用 Hub 还可以扩展使更多的USB设备连接到系统中。USB的Hub 有一个上行的端口(到host) 有多个的下行端口(连接其它的设备),从而可以使整个的系统可以扩展的连接 127 个外设。其中 Hub 也算外设,对于USB 系统来说,USB的host永远在PC边,所有的其他连接到host都称为设备。在设备与设备之间是无法实现直线通信的,只有通过host的管理与调节才能够实现数据的互相传送。在系统中,通常会有一个根Hub,这个Hub一般有两个下行的端口。

USB的拓扑结构

  • USB的物理拓扑结构
    USB的物理拓扑指的是USB总线的实际物理设备连接关系。
    主机端提供USB根集线器,USB根集线器可外接USB外设,也可的外接USB的集线器HUB,用于拓展USB端点接口,拓展的USB集线器上的端口也可以外接USB设备。使用这种方式可实现USB设备的层层拓扑连接。不过这种拓扑关系最大的深度为7。
    在这里插入图片描述

一个USB集线器(HUB)的物理构如下:
在这里插入图片描述

可以看到,一个USB集线器是将一个USB连接端点拓展成多个USB端点的设备。

  • USB的逻辑拓扑结构
    USB的逻辑拓扑结构是站在USB主机的角度来讲,所以的连接到该USB总线上的USB设备具有同等的地位关系。主机对外接的USB设备的寻址访问使用相同的方式,只是有的设备需要USB集线器中继访问,有些USB设备是直接访问。
    在这里插入图片描述

USB的连接模型

USB是一种主从结构。主机叫做Host,从机叫做Device(也叫做设备),集线器也被当作一种特殊的设备处理,用于扩展USB端口(扩展的USB端口可以增加USB总线上物理设备的连接)。

USB的数据交换只能发生在主机和设备之间,主机和主机,设备和设备之间不能互连。为了在物理上区分主机和设备,使用了不同的插头和插座,可以参见USB硬件接口分类一节。USB总线上所有的数据传输都由主机主动发起,而设备只是被动的负责应答。例如,在读数据时,USB主机先发出读命令,设备收到该命令后,才返回数据。在USB OTG中,一个设备可以在从机和主机之间切换,这样就可以实现设备与设备之间的连接,大大增加了USB的使用范围。但这时依然没有脱离这种主从关系,两个设备之间必然有一个作为主机,另一个作为从机。USB OTG增加了一种MINI USB接头,比普通的4线USB多了一个ID表识线,用来表明它是主机还是设备,这个以后会讲到。

USB的拓扑结构为金字塔型。由一个USB主控制器出发,下面接USB集线器,USB集线器将一个USB口扩展为多个USB口,多个USB口又可以通过集线器为更多个接口。但USB协议中对集线器的层数是有限制的,USB1.1规定最多为5层,USB2.0规定最多为7层。
在这里插入图片描述
USB数据传输路径如下:USB主控制器发出数据包,通过根集线器,再通过下面的集线器(如果有的话),再发给USB设备;设备返回数据,交给它上层的集线器,上层的集线器再交给更上层的集线器,直到USB主控制器为止。而USB主控制器就可以跟CPU打交道了。在标准的PC机上,USB主控制器是挂在PCI总线上的。

USB控制器及分类

OHCI,UHCI,EHCI,xHCI区别与联系

USB主机控制器类型对应的USB的协议和支持的速率创立者功能划分常用于
OHCIUSB 1.1=Low Speed和Full SpeedCompaq,Microsoft和National Semiconductor硬件功能 > 软件功能⇒硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单扩展卡,嵌入式开发板的USB主控
UHCIUSB 1.1=Low Speed和Full SpeedIntel软件功能 > 硬件功能⇒软件的任务重,可以使用较便宜的硬件的USB控制器PC端的主板上的USB主控
EHCIUSB 2.0=High SpeedIntel定义了USB 2.0主控中所要实现何种功能,以及如何实现各种USB 2.0主控
xHCIUSB 3.0=Super SpeedIntel定义了USB 3.0主控中所要实现何种功能,以及如何实现各种USB 3.0主控

对应的EHCI规范,可以去Intel的官网找到:EHCI Specification
对应的xHCI规范,可以去Intel的官网找到:Extensible Host Controller Interface (xHCI) Specification for USB 3.0

USB描述符

USB 是一条协议总线,而 USB 描述符则会记录设备的类型、厂商和产品 ID(加载驱动)、端点情况、版本号等内容。每个 USB 设备由一个或多个配置(Configuration)组成,每个配置包含多个接口(Interface),每个接口包含多个端点(Endpoint)。
在这里插入图片描述

描述符说明
设备描述符设备唯一,向主机说明设备类型、端点 0 最大包长、设备版本、配置数量等
配置描述符至少一个,主机只能选择一个,向主机说明配置包含的接口数、配置编号、供电方式、所需电流 等
接口描述符至少一个,向主机说明接口编号、端点数(不包括端点0)、接口所使用的类、子类、协议等。通过接口来实现功能,固所需端点数不确定
端点描述符可为0个,说明端点的端点号及方向、端点传输类型、最大包长度、查寻时间间隔 等
字符串描述符提供一些方便人们阅读的信息,非必需。

主机首先获取 “设备描述符”,然后获取 “标准配置描述符”,根据其内部的配置描述符集合长度值,一次性将配置描述符、接口描述符、类特殊描述符(如果有)、端点描述符读回;字符串描述符是单独获取的。

USB 端点

端点(Endpoint):实现 USB 设备功能的物理缓冲区实体,USB 主机和设备通过端点进行数据交互。USB 通信的基本单位,分为控制端点(Control Endpoint)、中断端点(Interrupt Endpoint)、批量端点(Bulk Endpoint)和等时端点(Isochronous Endpoint)。

USB枚举过程

枚举,主机从设备读取各种描述符信息,并根据这些信息来加载合适的驱动程序,从而知道设备类型、如何通信等。

控制传输:是 USB 传输模式的一种,它保证数据正确性,是设备枚举过程中采用的传输方式

  • 1)控制传输的过程:

    • (1)建立过程:由 USB 主机发起;由 SETUP 令牌包 + DATA0 数据包 构成; 建立过程中指定数据长度为 0,则没有数据过程。
    • (2)数据过程(可选):控制读则输入数据;控制写则输出数据;
    • (3)状态过程:与数据过程传输方向相反;用来确认数据是否正确传输完成。
  • 2)枚举的详细过程:

    • (1)获取描述符:

        1. 主机检测到设备插入则对设备复位,复位后设备地址为 0。主机向地址 0 的设备的端点 0 发送获取设备描述符的标准请求(仅一次请求)(控制传输的建立过程)
        1. 设备收到请求后,将设备描述符返回主机(控制传输的数据过程)
        1. 主机接收到设备描述符,并确认无误后,返回 0 长度的确认数据包(控制传输的状态过程)
    • (2)设置地址。

        1. 主机向地址 0 的设备的端点 0 发出设置地址请求(控制传输的建立过程,该过程数据包中包含新的设备地址)
        1. USB 设备进入状态过程(因为该控制传输无数据过程),并等待主机请求状态返回(设备无法主动向主机返回)
        1. 设备收到主机输入的令牌包后,返回 0 长度的状态数据包。
        1. 主机发送应答包 ACK 给设备,设备收到后启用新的设备地址
    • (3)主机再次获取设备描述符:使用新的设备地址;获取全部 18 字节(可多次请求);

    • (4)主机获取配置描述符:共 9 字节;根据所描述的配置集体总长度获取配置集合;

    • (5)获取字符串描述符(可选):HID 设备还会获取报告描述符等;单独获取;

  • 可参考:https://www.usbzh.com/article/detail-110.html

USB 四种传输类型

USB 总线上传输的基本单位是包,但需要将包组织成事务(Transaction)才能传输数据。

USB 协议规定 4 种传输类型:批量传输、等时(也作同步)传输、中断传输、控制传输。
控制传输包括 3 个过程,建立过程、状态过程分别是一个事务,数据过程则可能包含多个事务;
其余 3 种传输方式则每传输一次是一个事务。

USB 事务

事务通常由 2 个或 3 个包组成:令牌包、数据包、握手包

  • 令牌包:启动一个事务,由主机发送
  • 数据包:传送数据,方向由令牌包指定
  • 握手包:数据接收方接收正确后,发送握手包;设备也可使用 NAK 握手包来表示数据未准备好。

批量传输(Bulk)

批量传输使得批量事务传输数据。
一次批量事务有 3 个阶段:令牌包阶段、数据包阶段、握手包阶段(下图中两行虚线隔开了三个阶段)。
应用场景:数据量大、对数据的实时性要求不高的场合,如大容量存储设备(Mass Storage Device,MSD)、USB 打印机、扫描仪等

中断传输(Interrupt)

中断传输是一种保证查询频率的传输。中断端点在端点描述符中报告查询间隔,主机保证在间隔内进行一次轮值。(此中断非单片机中断,而是主机 Host 保证在某个时间间隔内进行一次传输)

中断传输也可以不断地检测状态,然后使用批量传输来传送大量数据。

应用场景:适合数据量小,但时间要求严格的设备,如从机接口设备(Human Interface Device,HID)中的鼠标、键盘等设备。

等时传输(Isochronous)

等时传输使用等时事务(Isochronous Transaction)来传输数据,不保证数据 100% 正确,但支持数据量大且实时性高。

应用场景:数据量大,实时性要求高,如音视频设备等。(与批量传输场景区别是等时传输可容忍少量数据错误,但保证不能停顿。)

控制传输(Control)

控制传输分为三个过程:建立过程、数据过程(可选)、状态过程。控制传输要保证数据传输过程中的数据完整性,如枚举过程中各种描述符的获取以及设置地址、设置配置等。

端点类型与传输类型的关系

一个具体的端点,只能工作在一种传输模式下。通常把工作在什么模式下的端点,就叫做什么端点,如控制端点、批量端点。

如,端点 0 是每个 USB 设备都必须具备的默认控制端点,它一上电就存在并可用。还记得枚举过程就是通过控制传输来进行的。

传输类型与端点最大包长

每个端点描述符都规定了端点所支持的最大数据包长。

传输低速最大包长全速最大包长高速最大包长
控制传输8字节可选 8、16、32、64 字节64字节
等时传输不支持1023 字节1024 字节
中断传输8字节64 字节1024 字节
批量传输不支持可选 8、16、32、64 字节512 字节

参考

https://www.usb.org/
USB in a NutShell
usb
USB中文网
USB 概述及协议基础
USB 2.0 Specification
Universal Serial Bus Specification
Universal Serial Bus Specification
Universal Serial Bus 3.0 Specification
The History of USB Standards from 1.0 to USB4
usb made simple
USB 2.0 Architecture Explained
USB Descriptors

相关文章:

USB学习——基本概念

文章目录 USB(Universal Serial Bus)概述USB系统的描述USB总线传输方式USB的拓扑结构 USB的连接模型USB控制器及分类USB描述符USB 端点USB枚举过程USB 四种传输类型USB 事务批量传输(Bulk)中断传输(Interrupt)等时传输(Isochronous)控制传输(Control)端点…...

vue3 初体验

git代码git clone https://github.com/kailong321200875/vue-element-plus-admin.git 后端自己写python,Django架构 1.报错:跨域,代理的方式解决 server: {port:4000, ##前端启动端口proxy: {// 选项写法/api: {target: http://127.0.0.1…...

CAPL语法基础

CAPL语法基础 目录 CAPL语法基础1. 引言2. 数据类型、变量与常量2.1 数据类型2.2 变量2.3 常量2.4 案例1:使用变量和常量计算圆的面积 3. 运算符与表达式3.1 算术运算符3.2 关系运算符3.3 逻辑运算符3.4 位运算符3.5 案例2:使用运算符实现简单的逻辑判断…...

代码的形状:重构的方向

大概2周前写了一篇《代码的形状:从外到内的探索与实践》 涵树:代码的形状:从外到内的探索与实践 觉得这个话题还可以继续,它是一个从无形到有形的过程,而这个过程感觉就是王阳明先生说的“心即理”的探寻过程。 我讨论代码的形状&#xff…...

144.《在 macOS 上安装 Redis》

文章目录 在 macOS 上安装 Redis先决条件安装在前台启动和停止 Redis使用 launchd 启动和停止 Redis连接到 Redis后续步骤Next steps redis 官方安装教程是英文,本文只是将英文文档翻译成中文,方便大家阅读 redis官方安装教程:download redis…...

使用mysql报Communications link failure异常解决

背景 线上使用polarDB,基于mysql(5.7),架构为springbootmybatisplusdurid连接池,部分业务场景涉及大表更新和查询操作,在查询慢sql且超过一定时间时就会报出"Communications link failure"异常,主要体现在界…...

搭建一个fastapi的项目,调用ollama服务

1. 项目结构 my_project/ │ ├── app/ │ ├── main.py # FastAPI应用的入口 │ ├── services/ # 包含服务逻辑 │ │ └── ollama_service.py │ ├── models/ # 定义数据模型 │ │ └── response.py │ ├─…...

【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录前言 🍃一、实体对象更新1.1 单条与批量1.2 不更新某列1.3 只更新某列1.4 NULL列不更新1.5 无主键/指定列…...

Elasticsearch—索引库操作(增删查改)

Elasticsearch中Index就相当于MySQL中的数据库表 Mapping映射就类似表的结构。 因此我们想要向Elasticsearch中存储数据,必须先创建Index和Mapping 1. Mapping映射属性 Mapping是对索引库中文档的约束,常见的Mapping属性包括: type:字段数据类…...

C#进阶-在Ubuntu上部署ASP.NET Core Web API应用

随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。ASP.NET Core 作为一个跨平台、高性能的框架,非常适合在 Linux 环境中运行。本篇博客将详细介绍如何在 Linux 服务器上部署 ASP.NET Core Web API 应用,包…...

执行这个composer require topthink/think-mongo 报错

安装tp5 mongodb扩展 执行这个composer require topthink/think-mongo 报错 解决方法: 1 把composer.json里的"overtrue/wechat": "4.2.11",注释掉再执行 2 composer require topthink/think-mongo1.* 安装mongo的1版本...

大语言模型训练数据集格式

1. SFT(有监督微调)的数据集格式 对于大语言模型的训练中,SFT(Supervised Fine-Tuning)的数据集格式可以采用以下方式: 输入数据:输入数据是一个文本序列,通常是一个句子或者一个段…...

stringRedisTemplate.execute执行lua脚本

stringRedisTemplate.execute执行lua脚本 1. 引入必要依赖 确保项目中已经引入了Spring Data Redis相关依赖&#xff0c;例如在 Maven 项目中&#xff0c;一般会有如下依赖&#xff08;版本号根据实际情况调整&#xff09;&#xff1a; <dependency><groupId>or…...

鸿蒙UI(ArkUI-方舟UI框架)

参考&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/arkts-layout-development-overview-V13 ArkUI简介 ArkUI&#xff08;方舟UI框架&#xff09;为应用的UI开发提供了完整的基础设施&#xff0c;包括简洁的UI语法、丰富的UI功能&#xff…...

Linux-蓝牙协议

SPP (Serial Port Profile): 串口协议&#xff08;SPP&#xff09;是一个蓝牙配置文件&#xff0c;允许设备通过蓝牙模拟传统的串行端口通信。它通常用于无线串口连接&#xff0c;允许设备如计算机和外设&#xff08;例如打印机或条形码扫描器&#xff09;之间进行数据传输。A…...

CES Asia 2025:科技盛宴即将开启,续写辉煌篇章

随着2025年国际消费类电子产品展览会&#xff08;CES&#xff09;在美国拉斯维加斯盛大开幕并展现出诸多令人瞩目的发展趋势&#xff0c;亚洲科技界也对即将到来的CES Asia 2025充满期待&#xff0c;一场科技盛宴即将在亚洲大陆续写辉煌。 在刚刚拉开帷幕的CES 2025上&#xff…...

tutorial3.c

这个教程程序展示了如何使用 libxlsxwriter 库向 Excel 文件中写入不同类型的数据&#xff0c;包括字符串、数字和日期。以下是程序的主要步骤和功能&#xff1a; 定义数据结构&#xff1a; 定义了一个 expense 结构体&#xff0c;包含三个成员&#xff1a;item&#xff08;项…...

C# 获取当前运行路径的6种实用方法

C# 获取当前运行路径的多种方法 在C#中&#xff0c;获取当前运行路径&#xff08;即程序的工作目录&#xff09;是常见的需求&#xff0c;尤其在处理文件读写、日志记录和配置文件时。不同的场景可能需要使用不同的方法来获取路径。本文将介绍几种常用的获取当前运行路径的方法…...

龙蜥Linux系统部署docker21.1.3版本

龙蜥系统配置docker环境 更新yum源 更新软件源中的包。 yum update安装底层工具 yum install -y yum-utils device-mapper-persistent-data lvm2添加阿里云仓库 # 添加阿里云的docker镜像仓库 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/c…...

.NET中的框架和运行环境

在.NET生态系统中&#xff0c;框架和运行环境是两个不同的概念&#xff0c;它们各自扮演着重要的角色。 下面我将分别介绍.NET中的框架和运行环境&#xff0c;并解释它们之间的区别。 .NET 框架&#xff08;Frameworks&#xff09; 框架提供了一套预定义的类库、工具和服务&…...

STM32的存储结构

STM32F103 芯片是基于 ARM Cortex-M3 内核的微控制器&#xff0c;它集成了多种类型的存储器&#xff0c;每种存储器都有其特定的作用和存储对象。以下是关于 STM32F103 中 Flash、ROM 和 SRAM 的详细介绍&#xff1a; 1. Flash Memory (闪存) 作用&#xff1a;Flash 是非易失性…...

微信小程序

一、小程序文件结构 1.目录结构 pages文件夹&#xff1a;存放【页面文件夹】&#xff0c;一个【页面文件夹】就是一个页面&#xff0c;存放着小程序页面文件。即pages中的每一个文件夹都存放着一个小程序页面的文件&#xff08;js、wxml、json、wxss&#xff09; 页面文件夹…...

《CPython Internals》阅读笔记:p76-p95

《CPython Internals》学习第 5 天&#xff0c;p76-p95 总结&#xff0c;总计 20 页。 一、技术总结 无。 二、英语总结(生词&#xff1a;1) 1.check vi/vt. to exam sth to ensure it is correct, true, or in good condition.示例&#xff1a; (1)After I’d finished …...

HOW - Form 表单 label 和 wrapper 对齐场景

一、背景 在日常使用 表单 时&#xff0c;我们一般有如下布局&#xff1a; 可以通过 Form 表单提供的配置直接设置&#xff1a; <Formform{form}labelCol{{ span: 4 }}wrapperCol{{ span: 20 }}onFinish{handleSubmit}><Form.Itemlabel"输入框"name"…...

Js的回调函数

一、什么是回调函数&#xff08;Callback&#xff09;&#xff1f; 回调函数&#xff08;Callback Function&#xff09;是指一个函数被作为参数传递给另一个函数&#xff0c;并在特定事件发生或操作完成时执行。 可以通俗地理解为一种“委托”机制。 在JavaScript中&#xff0…...

FairGuard游戏安全2024年度报告

导 读&#xff1a;2024年&#xff0c;国内游戏市场实际销售收入3257.83亿元&#xff0c;同比增长7.53%&#xff0c;游戏用户规模6.74亿人&#xff0c;同比增长0.94%&#xff0c;市场收入与用户规模双双实现突破&#xff0c;迎来了历史新高点。但游戏黑灰产规模也在迅速扩大&…...

ant-design-vue 1.X 通过id获取a-input组件失败

1.ant-design-vue 1.X 问题描述 当我在a-form组件中&#xff0c;以v-decorator指令绑定表单组件时&#xff0c;无法根据我设置的verify-code-input获取元素 <a-input type"text" id"verify-code-input" class"paIpt":placeholder"$t(…...

JS爬虫实战演练

在这个小红书私信通里面进行一个js的爬虫 文字发送 async function sendChatMessage(content) {const url https://pro.xiaohongshu.com/api/edith/ads/pro/chat/chatline/msg;const params new URLSearchParams({porch_user_id: 677e116404ee000000000001});const messageD…...

JVM vs JDK vs JRE

JVM是Java虚拟机的缩写&#xff0c; 用于实现Java的一次编译&#xff0c;处处运行。 Java代码写成.class后&#xff0c;由本地的虚拟机运行。 JDK&#xff08;Java Development Kit&#xff09;是一个功能齐全的 Java 开发工具包&#xff0c;供开发者使用。 JDK包含了JRE。…...

OpenCV相机标定与3D重建(47)从两幅图像中的一组匹配点恢复相机的姿态(旋转和平移)函数recoverPose()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从两幅不同相机拍摄的图像中对应的点恢复相对相机旋转和平移&#xff0c;使用手性检查。返回通过该检查的内点数量。 cv::recoverPose 是 OpenCV…...

代码随想录算法训练营day27

代码随想录算法训练营 —day27 文章目录 代码随想录算法训练营前言一、贪心算法理论基础二、455.分发饼干三、376. 摆动序列53. 最大子数组和总结 前言 今天是算法营的第27天&#xff0c;希望自己能够坚持下来&#xff01; 今日任务&#xff1a; ● 贪心算法理论基础 ● 455.…...

基于华为ENSP的OSPF状态机、工作过程、配置保姆级别详解(2)

本篇技术博文摘要 &#x1f31f; 基于华为enspOSPF状态机、OSPF工作过程、.OSPF基本配置等保姆级别具体详解步骤&#xff1b;精典图示举例说明、注意点及常见报错问题所对应的解决方法 引言 &#x1f4d8; 在这个快速发展的技术时代&#xff0c;与时俱进是每个IT人的必修课。我…...

【数据结构】链表

目录 ​编辑 1.2链表 1.2.1 链表的特性 1.2.2 单向链表 遍历无头单向链表 遍历有头单向链表 链表尾插法练习 1.2.3 单向链表的函数操作 单向链表的特点&#xff1a; 1.2链表 链表又称单链表、链式存储结构&#xff0c;用于存储逻辑关系为“一对一”的数据。 和顺序表…...

RabbitMQ解决消息积压的方法

目录 减少发送mq的消息体内容 增加消费者数量 批量消费消息 临时队列转移 监控和预警机制 分阶段实施 最后还有一个方法就是开启队列的懒加载 这篇文章总结一下自己知道的解决消息积压得方法。 减少发送mq的消息体内容 像我们没有必要知道一个的中间状态&#xff0c;只需…...

机器学习是?

机器学习&#xff08;Machine Learning&#xff09;是一门多领域交叉学科&#xff0c;涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科; 是人工智能&#xff08;AI&#xff09;的一个分支&#xff0c;也是AI的核心领域&#xff0c;它专注于开发算法和模型&#…...

jupyter出现“.ipynb appears to have died. It will restart automatically.”解决方法

原因 解决方法&#xff1a;更新jupyter的版本 1.打开anaconda prompt 2、更新jupyter版本 在anaconda prompt输入以下指令 conda update jupyter如图&#xff1a;...

计算机毕业设计PyHive+Hadoop深圳共享单车预测系统 共享单车数据分析可视化大屏 共享单车爬虫 共享单车数据仓库 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

c++开源协程库libgo介绍及使用,srs协程,boost协程 Boost::fiber

https://www.cnblogs.com/qwsdcv/p/9115364.html Boost - 从Coroutine2 到Fiber - 开学五年级了 - 博客园 协程就是由程序员控制跑在线程里的“微线程”。它可以由程序员调度&#xff0c;切换协程时代价小(切换根据实现不同&#xff0c;消耗的CPU周期从几十到几百不等)&#x…...

微服务实现高并发 秒杀系统,前后端实现

一、前端实现 前端项目初始化 首先&#xff0c;我们需要创建一个新的 Vue 3 项目。你可以使用 Vue CLI 来快速搭建项目。 安装 Vue CLI&#xff08;如果尚未安装&#xff09; bash npm install -g vue/cli 创建 Vue 项目 bash vue create seckill-frontend cd seckill-f…...

Eureka缓存机制

一、Eureka的CAP特性 Eureka是一个AP系统&#xff0c;它优先保证可用性&#xff08;A&#xff09;和分区容错性&#xff08;P&#xff09;&#xff0c;而不保证强一致性&#xff08;C&#xff09;。这种设计使得Eureka在分布式系统中能够应对各种故障和分区情况&#xff0c;保…...

PHP语言的学习路线

PHP语言的学习路线 PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛使用的开源服务器端脚本语言&#xff0c;尤其适用于Web开发。由于其易学易用、功能强大&#xff0c;PHP成为了许多动态网站和Web应用程序开发的首选语言。随着Web3.0和云计算的兴起&#xff0c…...

python学opencv|读取图像(二十八)使用cv2.warpAffine()函数平移图像

【1】引言 前序已经对图像操作进行了广泛的学习&#xff0c;包括读取、放大缩小&#xff0c;改变BGR通道值等&#xff0c;相关链接包括且不限于&#xff1a; python学opencv|读取图像-CSDN博客 python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python(1)使…...

[Linux]Mysql9.0.1服务端脱机安装配置教程(redhat)

前言 本教程适用于在yum源不可用的LInux主机上安装Mysql的场景。 以redhat系主机做操作示例&#xff0c;debian系主机可参照步骤&#xff0c;将对应的rpm -ivh命令换成dpkg -i。 1. 官网下载安装包 https://dev.mysql.com/downloads/mysql/ 1.1 版本分类 MySQL Enterprise…...

个人 ALL IN ONE 方案搭建方案分享(从硬件到软件)及内网穿透方案

这里只做大概方案分享&#xff0c;每个虚拟机的部署细节滤过。 个人 ALL IN ONE 方案搭建方案分享 本指南将详细介绍如何基于现有硬件搭建一体化家庭/个人服务器解决方案&#xff0c;涵盖从软硬件配置、系统安装到功能实现以及性能优化的全过程。实现集 软路由、旁路由、NAS 网…...

TrustRAG:增强RAG系统鲁棒性与可信度的创新框架

在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;LLMs&#xff09;凭借其强大的语言处理能力在诸多领域大放异彩。检索增强生成&#xff08;RAG&#xff09;系统&#xff08;面向企业RAG&#xff08;Retrieval Augmented Generation&#xff09;系统的多维检索框架…...

使用证件照制作软件的常见问题及解决方案

在数字化时代&#xff0c;证件照的制作变得越来越简单。借助各种证件照制作软件&#xff0c;我们可以轻松在家中制作出符合要求的证件照。然而&#xff0c;用户在使用这些软件时&#xff0c;可能会遇到一些常见问题。为了帮助您顺利制作出满意的证件照&#xff0c;我们整理了一…...

通过gradle发布aar或jar携带sources-jar到maven nexus

找了很久&#xff0c;没有找到满意的。终于找到一个好的办法。 gradle7.x适用。比以前的写法简洁。 发布传统的jar工程 比如okhttp&#xff0c;fastjson等项目&#xff0c;纯java工程。 直接创建新文件publish.gradle: apply plugin: maven-publishProperties properties …...

SAP推出云端ERP解决方案,加速零售行业数字化转型

2025年1月9日&#xff0c;SAP发布了一款专为零售行业设计的云端ERP行业解决方案——S/4HANA Cloud Public Edition&#xff0c;进一步推动企业向云端迁移。这款解决方案旨在集中运营数据&#xff0c;整合财务、采购和商品管理流程&#xff0c;以帮助零售企业优化运营效率。 核…...

RK3568 Android 13 内置搜狗输入法小计

问&#xff1a;为什么写&#xff1f; 答&#xff1a;网上搜出来的都试过了&#xff0c;不行&#xff01;下面直接上代码和注意事项&#xff01; 首先到这个目录&#xff08;/RK3568/Rockchip_Android13_SDK_Release/device/rockchip/rk356x/tl3568_evm/preinstall&#xff09…...

微服务-Nacos(注册中心)

Nacos Nacos可以看作注册中心配置中心&#xff0c;比Eureka更加强大。 注册中心 在父工程中引入SpringCloudAlibaba的版本依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId&g…...