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设备与主机之间进行连接和通信的操作,主要包括以下几方面:
- 总线的拓扑结构:USB设备与主机之间的各种连接方式;
- 内部层次关系:根据性能叠置,USB的任务被分配到系统的每一个层次;
- 数据流模式:描述了数据在系统中通过USB从产生方到使用方的流动方式;
- 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的协议和支持的速率 | 创立者 | 功能划分 | 常用于 |
---|---|---|---|---|
OHCI | USB 1.1=Low Speed和Full Speed | Compaq,Microsoft和National Semiconductor | 硬件功能 > 软件功能⇒硬件做的事情更多,所以实现对应的软件驱动的任务,就相对较简单 | 扩展卡,嵌入式开发板的USB主控 |
UHCI | USB 1.1=Low Speed和Full Speed | Intel | 软件功能 > 硬件功能⇒软件的任务重,可以使用较便宜的硬件的USB控制器 | PC端的主板上的USB主控 |
EHCI | USB 2.0=High Speed | Intel | 定义了USB 2.0主控中所要实现何种功能,以及如何实现 | 各种USB 2.0主控 |
xHCI | USB 3.0=Super Speed | Intel | 定义了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)状态过程:与数据过程传输方向相反;用来确认数据是否正确传输完成。
- (1)建立过程:由 USB 主机发起;由
-
2)枚举的详细过程:
-
(1)获取描述符:
-
- 主机检测到设备插入则对设备复位,复位后设备地址为 0。主机向地址 0 的设备的端点 0 发送获取设备描述符的标准请求(仅一次请求)(控制传输的建立过程)
-
- 设备收到请求后,将设备描述符返回主机(控制传输的数据过程)
-
- 主机接收到设备描述符,并确认无误后,返回 0 长度的确认数据包(控制传输的状态过程)
-
-
(2)设置地址。
-
- 主机向地址 0 的设备的端点 0 发出设置地址请求(控制传输的建立过程,该过程数据包中包含新的设备地址)
-
- USB 设备进入状态过程(因为该控制传输无数据过程),并等待主机请求状态返回(设备无法主动向主机返回)
-
- 设备收到主机输入的令牌包后,返回 0 长度的状态数据包。
-
- 主机发送应答包 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
相关文章:
![](https://i-blog.csdnimg.cn/direct/d11547e6ff0946ad9b7d2b891a28d06a.png)
USB学习——基本概念
文章目录 USB(Universal Serial Bus)概述USB系统的描述USB总线传输方式USB的拓扑结构 USB的连接模型USB控制器及分类USB描述符USB 端点USB枚举过程USB 四种传输类型USB 事务批量传输(Bulk)中断传输(Interrupt)等时传输(Isochronous)控制传输(Control)端点…...
![](https://i-blog.csdnimg.cn/direct/06a111f36a0d4a8a85d9df2b1ca3860e.png)
python-leetcode-三数之和
15. 三数之和 - 力扣(LeetCode) class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:nums.sort() # 排序n len(nums)res []for i in range(n):# 剪枝:如果当前数 > 0,三数之和不可能为 0if nums[i]…...
![](https://www.ngui.cc/images/no-images.jpg)
springboot整合拦截器
1.首先创建拦截器类: package com.example.interceptor;import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.sp…...
![](https://i-blog.csdnimg.cn/direct/094bec39f44d4f7e898d29aff13fd3ec.png)
B树与B+树:数据库索引的秘密武器
想象一下,你正在构建一个超级大的图书馆,里面摆满了各种各样的书籍。B树和B树就像是两种不同的图书分类和摆放方式,它们都能帮助你快速找到想要的书籍,但各有特点。 B树就像是一个传统的图书馆摆放方式: 1. 书籍摆放&…...
![](https://www.ngui.cc/images/no-images.jpg)
Lua语言中常用的字符串操作函数
string.sub(s, i, j) 功能: 截取字符串 s 中从位置 i 到位置 j 的子字符串。 local s "Hello, Lua!" print(string.sub(s, 1, 5)) -- 输出 "Hello" print(string.sub(s, 8, 11)) -- 输出 "Lua!" string.len(s) 功能:将字符串长度…...
![](https://www.ngui.cc/images/no-images.jpg)
HOW - Form 表单确认校验两种模式(以 Modal 场景为例)
目录 一、背景二、具体1. 模式一:点击确认进行校验提示2. 模式二:确认按钮依赖于表单内容实现说明 一、背景 基于react、antd form分别实现如下两种模式: 1、一个 Modal,点击确认进行校验提示2、一个 Modal,确认按钮…...
![](https://i-blog.csdnimg.cn/direct/c0ddb912155f4879bb65d30e9576c808.png)
LabVIEW部署Web服务
目录 LabVIEW部署Web服务1、创建项目2、创建Web服务3、新建WebVI3.1、使用GET方法3.2、使用POST方法 4、 部署和对应URL4.1、应用程序:80804.2、本地调试:80094.3、NI Web服务器:9090(禁用) 5、测试5.1、测试GET方法5.2、测试POST方法 6、实际…...
![](https://i-blog.csdnimg.cn/direct/3c2ab220a9114f0295142e6b8e3cd3c4.png)
进程件通信——网络通信——TCP
网络抓包工具:wireshark 抓取经过设备网卡的数据。 操作: 1. sudo wireshark 2. 选择要抓取的网卡----》any 3. 设置抓取的过滤条件 4. 进行网络通信 5. 分析数据 UDP: 用户数据报协议 UDP: 用户数据报协议 特点ÿ…...
![](https://i-blog.csdnimg.cn/img_convert/5c68d2ea14cb574b782f1d69872bbc3a.png)
【数据库】三、SQL语言
文章目录 三、SQL语言1 概述2 数据定义(DDL)2.1 定义数据库2.2 定义基本表2.3 修改基本表2.4 删除基本表 3 数据操作(DML)3.1 数据查询3.1.1 单表查询3.1.2 连接查询3.1.3 嵌套查询3.1.4 集合查询 3.2 数据更新3.2.1 插入数据3.2.2 修改数据3.2.3 删除数据 4 数据控制(DCL)5 视…...
![](https://www.ngui.cc/images/no-images.jpg)
Python对象的序列化和反序列化工具:Joblib与Pickle
在Python中,序列化是将内存中的对象转换为可存储或传输的格式的过程。常见的序列化格式有JSON、YAML、Pickle和Joblib等。其中,Pickle和Joblib是最常用的用于序列化和反序列化Python对象的工具。虽然这两者有很多相似之处,但它们在某些方面有…...
![](https://www.ngui.cc/images/no-images.jpg)
Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡
将 ProxySQL 配合 Spring Boot 使用,主要的目的是在 Spring Boot 应用程序中实现对 MySQL 主从同步的读写分离和负载均衡。这样,你可以利用 ProxySQL 自动将写操作路由到主库,而将读操作路由到从库。 1. 准备工作 确保你的 MySQL 主从同步环…...
![](https://img-blog.csdnimg.cn/img_convert/afd69b45eb77d0f51a9fc67a011f5312.jpeg)
量子计算遇上人工智能:突破算力瓶颈的关键?
引言:量子计算遇上人工智能——突破算力瓶颈的关键? 在数字化时代的浪潮中,人工智能(AI)正以前所未有的速度改变着我们的生活,从语音助手到自动驾驶,从医学诊断到金融分析,无不彰显其…...
![](https://i-blog.csdnimg.cn/direct/9f1b2f02ab724c0387dfc67a9f32c711.png)
【Unity插件】解决移动端UI安全区问题 - Safe Area Helper
在移动端设计界面时,必须要考虑的就是UI的安全区。 Unity本身也提供了Safearea的API。 但在asset store时已经有人提供了免费的插件(Safe Area Helper),我们可以直接使用。 插件链接: https://assetstore.unity.com/p…...
![](https://www.ngui.cc/images/no-images.jpg)
JSON.stringify 实现深度克隆的缺陷
在前端开发中,深克隆(Deep Clone)和浅克隆(Shallow Clone)是常见的操作。浅克隆和深克隆的区别主要体现在对象内部嵌套对象的处理方式上。 1. 浅克隆(Shallow Clone) 浅克隆是指创建一个新对象…...
![](https://i-blog.csdnimg.cn/direct/02b6673fa6a04f47861e77be53f77d80.png)
深度解析如何使用Linux中的git操作
1.如何理解版本控制 →Git&&gitee||github 多版本控制面对善变的甲方 版本控制是一种用于管理文件或代码变更的系统,帮助团队或个人追踪项目的历史记录,并支持多方协作开发。它在软件开发和文档管理中尤为重要,但也适用于其他需要追…...
![](https://i-blog.csdnimg.cn/direct/2681db1202d342d79bb28d8ca2468ccf.png)
el-table 合并单元格
参考文章:vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…...
![](https://www.ngui.cc/images/no-images.jpg)
Redis 三大问题:缓存穿透、缓存击穿、缓存雪崩
Redis 作为高性能的内存数据库,广泛应用于缓存场景。然而,在实际使用中,可能会遇到三大经典问题:缓存穿透、缓存击穿 和 缓存雪崩。这些问题如果不加以解决,可能会导致系统性能下降甚至崩溃。 1. 缓存穿透 问题描述 …...
![](https://www.ngui.cc/images/no-images.jpg)
常用字符串处理函数
常用字符串处理函数 strcspn函数原型参数说明返回值使用示例注意事项 strpbrk函数原型参数说明返回值使用示例 strcasecmp函数原型参数说明返回值使用示例注意事项 strcspn strcspn 是一个 C 和 C 标准库函数,用于计算一个字符串中不包含任何指定字符的最长前缀的长…...
![](https://i-blog.csdnimg.cn/img_convert/d4650b69e387ef1c51998b8d2dd446f7.png)
Pathview包:整合表达谱数据可视化KEGG通路
Pathview是一个用于整合表达谱数据并用于可视化KEGG通路的一个R包,其会先下载KEGG官网上的通路图,然后整合输入数据对通路图进行再次渲染,从而对KEGG通路图进行一定程度上的个性化处理,并且丰富其信息展示。(KEGG在线数…...
![](https://www.ngui.cc/images/no-images.jpg)
seleniun 自动化程序,python编程 我监控 chrome debug数据后 ,怎么获取控制台的信息呢
python 好的,使用 Python 来监控 Chrome 的调试数据并获取控制台信息,可以使用 websocket-client 库来连接 Chrome 的 WebSocket 接口。以下是一个详细的示例: 1. 安装必要的库 首先,你需要安装 websocket-client 库。可以使用…...
![](https://www.ngui.cc/images/no-images.jpg)
SQL中的数据库对象
视图:VIEW 概念 ① 虚拟表,本身不存储数据,可以看做是存储起来的SELECT语句 ② 视图中SELECT语句中涉及到的表,称为基表 ③ 针对视图做DML操作,对影响到基表中的数据,反之亦然 ④ 创建、删除视图本身&#…...
![](https://i-blog.csdnimg.cn/img_convert/1efcdad20f05490efc8a61d8916240ac.png)
DeepSeek:性能强劲的开源模型
deepseek 全新系列模型 DeepSeek-V3 首个版本上线并同步开源。登录官网 chat.deepseek.com 即可与最新版 V3 模型对话。 性能对齐海外领军闭源模型 DeepSeek-V3 为自研 MoE 模型,671B 参数,激活 37B,在 14.8T token 上进行了预训练。 论…...
![](https://i-blog.csdnimg.cn/img_convert/51fec787657dfcdd08333f8a596ba6e3.jpeg)
医疗可视化大屏 UI 设计新风向
智能化交互 借助人工智能与机器学习技术,实现更智能的交互功能。如通过语音指令或手势控制来操作大屏,医护人员无需手动输入,可更便捷地获取和处理信息。同时,系统能根据用户的操作习惯和数据分析,自动推荐相关的医疗…...
![](https://www.ngui.cc/images/no-images.jpg)
从企业级 RAG 到 AI Assistant , Elasticsearch AI 搜索技术实践
文章目录 01 AI 搜索落地的挑战02 Elasticsearch 向量性能 5 倍提升03 Elasticsearch 企业版 AI 能力全面解读04 阿里云 Elasticsearch 将准确率提升至 95%05 AI Assistant 集成通义千问大模型实现 AI Ops01 AI 搜索落地的挑战 在过去一年中,基座大模型技术的快速迭代推动了 …...
![](https://www.ngui.cc/images/no-images.jpg)
TypeScript语言的并发编程
TypeScript语言的并发编程 引言 随着现代应用程序的复杂性不断增加,性能和用户体验的重要性显得尤为突出。在这种背景下,并发编程应运而生,成为提升应用程序效率的重要手段。在JavaScript及其超集TypeScript中,尽管语言本身是单…...
![](https://i-blog.csdnimg.cn/direct/33a6b71ce4744674875cd5b85787191b.png)
benchANT 性能榜单技术解读 Part 1:写入吞吐
近期,国际权威数据库性能测试榜单 benchANT 更新了 Time Series: Devops(时序数据库)场景排名,KaiwuDB 数据库在 xsmall 和 small 两类规格下的时序数据写入吞吐、查询吞吐、查询延迟、成本效益等多项指标刷新榜单原有数据纪录。在…...
![](https://www.ngui.cc/images/no-images.jpg)
虚拟机防火墙管理
虚拟机防火墙管理 在网络防护方面,PVE提供了相当良好的防火墙管理功能,并且可以适用于节点实体机、客体机、让客体机内不需要另外再安装软体防火墙,对于效能与统一管理大有助益,管理者可以方便一次管理所有的防火墙规则࿰…...
![](https://i-blog.csdnimg.cn/direct/2665d77c25504269b23b89d1610620f9.png)
Nginx反向代理请求头有下划线_导致丢失问题处理
后端发来消息说前端已经发了但是后端没收到请求。 发现是下划线的都没收到,搜索之后发现nginx默认request的header中包含’_’时,会自动忽略掉。 解决方法是:在nginx里的nginx.conf配置文件中的http部分中添加如下配置: unders…...
![](https://i-blog.csdnimg.cn/blog_migrate/ed0afaffabc28cc474988b643d811f4e.png)
【STM32+CubeMX】 新建一个工程(STM32F407)
相关文章: 【HAL库】 STM32CubeMX 教程 1 --- 下载、安装 目录 第一部分、新建工程 第二部分、工程文件解释 第三部分、编译验证工程 友情约定:本系列的前五篇,为了方便新手玩家熟悉CubeMX、Keil的使用,会详细地截图每一步Cu…...
![](https://i-blog.csdnimg.cn/img_convert/277550ed4d31bb08365854aaa85264ba.png)
机器人避障不再“智障”:HEIGHT——拥挤复杂环境下机器人导航的新架构
导读: 由于环境中静态障碍物和动态障碍物的约束,机器人在密集且交互复杂的人群中导航,往往面临碰撞与延迟等安全与效率问题。举个简单的例子,商城和车站中的送餐机器人往往在人流量较大时就会停在原地无法运作,因为它不…...
![](/images/no-images.jpg)
温州有没有做鞋的网站/北京seo排名方法
docker 部署 ES集群 1. 安装docker 在/opt/software 目录下新建docker目录,上传docker_build.sh脚本并执行 sh docker_build.sh#!/bin/bash yum -y install gcc yum -y install gcc-c ##验证gcc版本 gcc -v##卸载老版本 yum remove docker docker-client docker-…...
![](/images/no-images.jpg)
双井做网站的公司/搜索推广竞价托管哪家好
给div设置overflow-y:scroll;内容滚动时,移动端会出现卡顿现象, -webkit-overflow-scrolling: touch;可以加速设备,WebKit私有的属性“-webkit-overflow-scrolling: touch”(允许独立的滚动区域和触摸回弹) <!DOCTY…...
![](https://img-blog.csdnimg.cn/img_convert/bff9c35ef5de878f7f9627a5fc84c765.png)
方庄网站建设/上海培训机构整顿
一晃眼2019年已过大半,年初信誓旦旦要学习新技能的小伙伴们立的flag都完成的怎样了?2019年对于大前端技术领域而言变化不算太大,目前三大技术框架日趋成熟,短期内不大可能出现颠覆性的前端框架(内心OS:出了也学不动了)…...
![](/images/no-images.jpg)
电商网站制作/百度指数大数据
没有顺序关系,可前可后。...
![](http://p1.jquerycn.cn/phpcn/c/9/c9fcff479914f0d392c32678f52a73a8.jpg)
工作日志怎么写/凤山网站seo
刚接触Python语言,在练习的时候发现脚本里无法出现中文(Python2.x中不支持中文,以下指仅在Python2.x环境下,Python3.x默认已支持中文),输入中文后,脚本会闪退,无法运行。例如&#x…...
![](/images/no-images.jpg)
西安网站建设第一品牌/宁波seo搜索排名优化
人力资源管理的 含义 (P7 ) 人力资源管理是组织中与人的管理有关的管理职能,包括获取 、 使用 、 开发 、保留人力资源的各种策略 、 政策 、 制度与管理实践 , 通过影响员工的态度 、 行为和绩效 , 进而实现组织的目标…...