DP读书:鲲鹏处理器 架构与编程(六)PCI Express 总线
处理器与服务器:PCI Express 总线
- PCI Express 总线
- 1. PCI Express 总线的特点
- a. 高速差分传输
- b. 串行传输
- c. 全双工端到端连接
- d. 基于多通道的数据传输方式
- e. 基于数据包的传输
- 2. PCI Express 总线的组成与拓扑结构
- a. 根复合体
- b. PCI Express桥
- c. 功能单元
- 3. PCI Express 总线的层次结构
- a. 层次结构
- b. 分组结构
- 4. PCI Express 总线的拓扑发现
- 5. PCI Express 总线的总线事务
- 6. PCI Express 总线的地址空间
- 7. PCI Express 总线的中断机制
- 8. PCI Express 总线的差错处理和差错报告
PCI Express 总线
PCI Express(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,原来的名称为“3GIO”,是由英特尔在2001年提出的。PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。PCIe交由PCI-SIG(PCI特殊兴趣组织)认证发布后才改名为“PCI-Express”,简称“PCI-e”。PCI Express有多种规格,从PCI Express x1到PCI Express x32,能满足将来一定时间内出现的低速设备和高速设备的需求。
1. PCI Express 总线的特点
a. 高速差分传输
PCI Express总线的特点之一是高速差分传输。这种传输方式使用LVDS(Low Voltage Differential Signaling,低电压差分信号) 技术,允许多个设备通过一条高速数据线进行连接,从而实现更高的数据传输速率。PCI Express x16接口支持的最大数据传输速率可达16GB/s,足以满足各种高速设备的需求。
b. 串行传输
PCI Express总线另一个特点是串行传输。与传统的并行总线不同,PCI Express总线采用串行方式传输数据。这种传输方式具有更高的数据传输速率和更低的传输延迟。串行传输还可以减少所需的信号线数量,从而降低硬件成本和系统复杂性。
c. 全双工端到端连接
PCI Express总线的一个特点是全双工端到端连接。这意味着数据可以在两个方向上同时传输,从而提高了传输效率。这种连接方式是基于数据包的传输,可以实现类似计算机网络中的交换和路由功能。
在PCI Express总线中,每个设备都有自己的专用 通道(Lane),可以直接与其他设备进行通信。这种分布式通信架构提高了系统性能和可dB扩展性。全双工传输方式还可以减少传输延迟,提高数据传输速率。
总之,PCI Express总线通过全双工端到端连接实现了高性能、高带宽的数据传输。这种连接方式提高了传输效率和系统性能,适用于各种高速设备的应用场景。
d. 基于多通道的数据传输方式
PCI Express总线采用基于多通道的数据传输方式。这种传输方式允许多个设备通过一条高速数据线连接,从而实现更高的数据传输速率。PCI Express总线支持1、2、4、8、12、16和32通道的连接,以满足不同系统设备对数据传输带宽的不同需求。
基于多通道的数据传输方式可以提高数据传输的效率和速度。通过将数据分配到不同的通道中,可以同时处理多个数据流,从而减少传输延迟并提高系统性能。
此外,PCI Express总线还支持数据分通道传输模式。在这种模式下,数据可以在不同的通道中同时传输,从而实现更高的数据传输速率。例如,PCI Express x16接口可以实现最大16GB/s的数据传输速率,足以满足高速设备的需求。
总之,PCI Express总线采用基于多通道的数据传输方式,提高了数据传输的效率和速度,适用于各种高速设备的应用场景。
e. 基于数据包的传输
PCI Express总线采用基于数据包的传输方式。这种传输方式将数据封装在数据包中,并通过PCI Express总线进行传输。每个数据包都包含发送方的信息和接收方的信息,从而实现了高效的数据传输。
基于数据包的传输方式具有以下优点:
1. 高效性:基于数据包的传输方式可以避免不必要的传输,从而提高了传输效率。
2. 灵活性和扩展性:基于数据包的传输方式可以灵活地支持不同的数据类型和数据长度,并且可以随着系统的扩展而扩展。
3. 支持QoS和虚拟通道:基于数据包的传输方式支持QoS(Quality of Service)和虚拟通道,可以实现优先级控制和特定数据流的传输。
4. 支持热插拔和电源管理:基于数据包的传输方式支持热插拔和电源管理,可以提高系统的可靠性和节能性能。
总之,PCI
Express总线采用基于数据包的传输方式,具有高效性、灵活性和扩展性,支持QoS和虚拟通道,以及热插拔和电源管理等功能,适用于各种高速设备的应用场景。
2. PCI Express 总线的组成与拓扑结构
a. 根复合体
PCI Express总线由多个组件组成,其中最重要的是根复合体(Root Complex)。
根复合体是PCI Express总线中的一个关键组件,它负责将主机系统连接到PCI Express总线。根复合体通常由一个或多个**根端口(Root Port)**组成,每个根端口都可以连接一个或多个PCI设备。
根复合体还可以包含其他组件,例如串行总线(Serial Bus) 和 中断控制器(Interrupt Controller) 等。串行总线用于连接多个设备,而中断控制器则负责处理中断请求。
PCI Express总线的拓扑结构可以根据具体应用场景进行调整。常见的拓扑结构包括星型、树型和Mesh型等。在星型拓扑中,所有设备都直接连接到根复合体;在树型拓扑中,设备可以按照层次结构进行连接,形成类似树的形状;在Mesh型拓扑中,设备之间可以有多条连接路径,从而提高了系统的可靠性和可扩展性。
总之,PCI Express总线由多个组件组成,其中最重要的是根复合体。根复合体负责将主机系统连接到PCI Express总线,并可以包含其他组件。PCI Express总线的拓扑结构可以根据具体应用场景进行调整,常见的拓扑结构包括星型、树型和Mesh型等。
b. PCI Express桥
除了根复合体之外,PCI Express总线还包括PCI Express桥。
PCI Express桥是PCI Express总线中的一个重要组件,它的作用是将PCI Express总线连接到其他类型的总线或设备。通过桥接,PCI Express总线可以与其他总线或设备进行通信和数据传输。PCI Express桥可以连接不同类型的总线或设备,例如PCI总线、AGP总线、USB总线等。通过桥接,这些设备可以与PCI Express总线进行通信和数据传输。在PCI Express总线的拓扑结构中,桥是常见的组件之一。通过桥接,可以将多个总线或设备连接在一起,形成一个更大的网络。这种网络可以是星型、树型或Mesh型等,具体取决于应用场景和系统设计。
总之,PCI Express总线中的另一个重要组件是PCI Express桥,它的作用是将PCI Express总线连接到其他类型的总线或设备,从而形成一个更大的网络。
c. 功能单元
PCI Express总线由以下几个主要功能单元组成:
- 根组件(Root Complex)。 根组件是PCI Express总线的一个关键组件,它负责将主机系统连接到PCI E xpress总线。根组件通常由一个或多个**根端口(Root Port)组成,每个根端口都可以连接一个或多个PCI设备。根组件还可以包含其他组件,例如串行总线(Serial Bus)和中断控制器(Interrupt Controller)**等。
- 交换器(Switch)。 交换器是PCI Express总线中的一个重要组件,它的功能主要是为I/O总线提供输出端,并支持在不同终端设备间进行对等数据传输。交换器通常以软件的形式提供,包括多个逻辑PCI到PCI的桥连接,以及与传统PCI设备的兼容性。
- 终端设备(Endpoint)。 终端设备是PCI Express总线中的另一个重要组件,它可以被视为一个单独的设备,该设备通过PCI Express端口连接到总线上。终端设备通常具有高速数据传输能力,可以支持各种不同的数据类型和数据长度。
这些功能单元在PCI Express总线的拓扑结构中也扮演着重要的角色。例如,根组件可以形成一个星型或树型的拓扑结构,而交换器则可以在这个拓扑结构中提供更复杂的连接。同时,终端设备可以被视为拓扑结构中的节点,它们可以通过交换器进行通信和数据传输。
除了这些主要的功能单元外,PCI Express总线还包括其他一些组件,例如事务层、数据链路层和物理层等,这些组件提供了更高级别的功能和特性。
3. PCI Express 总线的层次结构
a. 层次结构
PCI Express总线采用分层设计,共分为四层,从下到上分别是物理层、数据链路层、处理层和软件层。
1. 物理层:物理层定义了电气和机械规范,包括线路规格、信号定义、传输速率等内容,它实现了比特流的传输。
2. 数据链路层:数据链路层负责在设备之间建立连接,并实现可靠的数据传输。数据链路层还处理错误检测和纠正,例如奇偶校验和冗余校验。
3. 处理层:处理层负责处理事务,例如数据包的封装、解封装和排序。处理层还负责处理各种请求类型,例如内存读/写请求、IO读/写请求等。
4. 软件层:软件层包括驱动程序和操作系统接口,它提供了标准的API接口,使得各种应用程序可以方便地使用PCI Express总线。
这种分层设计使得PCI Express总线具有灵活性和可扩展性,可以适应不同类型的应用需求。同时,分层设计也便于系统设计和管理,提高了系统的可靠性和稳定性。
b. 分组结构
PCI Express总线的分组结构是指数据包被分为多个组(Packet Group),每个组包含一个或多个数据包(Packet)。这种分组结构有助于提高数据传输的效率和可靠性。
在PCI Express总线的分组结构中,每个分组都包含以下信息:
1. 包头(Header):包头包含了该分组的元信息,例如分组的长度、类型、序列号等。
2. 数据段(Data):数据段包含了实际需要传输的数据,其长度由包头中的长度字段指定。
3. 帧间隔(Interframe Spacing):帧间隔是指在连续的两个帧之间插入的空闲时间,以保障总线稳定和避免数据冲突。
通过采用分组结构,PCI Express总线可以更好地处理数据传输过程中的各种问题,例如数据包的丢失、错误检测和纠正等。同时,分组结构也提高了数据传输的效率和可靠性,可以适应不同类型的应用需求。
4. PCI Express 总线的拓扑发现
PCI Express总线的拓扑发现是指通过一定的协议和机制,在系统中识别和确定PCI Express设备的连接关系和数据传输路径的过程。PCI Express总线采用了基于交换机和端点设备的拓扑结构,因此拓扑发现的结果可以反映这种结构的特点。
在PCI Express总线中,拓扑发现主要依赖于以下两个协议:
- PCI Express链路层协议:链路层协议定义了在PCI Express设备之间传输数据时所需的各种信号和消息,包括设备检测、配置、复位等操作。通过链路层协议,可以获取设备的链路状态和连接关系。
- PCI Express配置空间协议:配置空间协议定义了在设备初始化阶段,操作系统如何读取和配置设备的寄存器、接口、功能等信息。通过配置空间协议,可以获取设备的配置信息和能力。
在拓扑发现的过程中,通常需要执行以下步骤:
1. 设备检测:检测系统中是否存在PCI Express设备,以及设备的类型和数量。
2. 设备初始化:对设备进行初始化操作,包括分配设备号、设置设备参数等。
3. 设备枚举:通过读取配置空间协议中的设备寄存器和配置信息,获取设备的接口、功能、资源等信息。
4. 设备配置:根据设备的配置信息和能力,为设备分配必要的资源,并设置设备的参数。
5. 设备连接:通过链路层协议,检测设备的连接关系和链路状态,并建立设备之间的通信路径。
通过以上步骤,可以获取PCI Express总线的拓扑结构,包括设备的连接关系、设备的配置信息和数据传输路径等。这对于系统管理和应用程序开发都具有重要的意义。
5. PCI Express 总线的总线事务
PCI Express总线支持多种总线事务,包括存储器读写、IO读写、配置读写总线事务,以及Message消息总线事务等。
这些总线事务在PCIe设备之间传递数据时起到重要作用。例如,存储器读写事务用于直接操作硬件,产生总线周期实现数据传递;IO读写事务用于读写I/O端口的数据;配置读写事务用于读取或写入设备的配置信息;而Message消息事务则用于发送和接收消息类型的报文。
为了处理这些总线事务,PCI Express总线使用分层结构,其中事务层负责相应总线事务的转换。根据不同的事务类型,事务层会产生不同类型的TLP报文,并根据不同的路由方式进行数据转发。
graph TB
A[PCI Express总线]
B[南桥/北桥控制器]
C[设备]
D[I/O地址空间 (0x0000-0x3FFF)]
E[内存地址空间 (0xC0000000-0xF8000000)]
F[PCI总线编号 (Bus, Device, Function, Register)]
G[基址寄存器]
H[限制寄存器]
A -->|连接| B
B -->|映射到系统的I/O地址空间| D
B -->|映射到系统的内存地址空间| E
C -->|通过PCI总线编号进行寻址| F
C -->|提供基址寄存器和限制寄存器| G
C -->|提供基址寄存器和限制寄存器| H
6. PCI Express 总线的地址空间
PCI Express总线的地址空间分为两个部分:I/O地址空间和内存地址空间。
I/O地址空间用于访问设备的I/O端口,其地址范围是0x0000-0x3FFF。这些地址通过南桥或北桥控制器映射到系统的I/O地址空间,并通过PCI总线编号(Bus, Device, Function和Register) 进行寻址。
内存地址空间用于访问设备的内存,其地址范围是0xC0000000-0xF8000000。这些地址通过南桥或北桥控制器映射到系统的内存地址空间,并通过PCI总线编号(Bus, Device, Function) 进行寻址。在映射过程中,设备需要向北桥或南桥控制器提供基址寄存器(Base Register)和限制寄存器(Limit Register),以确定该设备所使用的内存范围。
需要注意的是,不同的操作系统和硬件平台可能对I/O地址空间和内存地址空间的映射方式有所不同,因此在进行系统设计时需要仔细考虑。
7. PCI Express 总线的中断机制
PCI Express总线中断机制与PCI总线类似,它支持传统的基于IRQ(Interrupt Request) 的中断方式,也引入了新的消息中断方式。
在传统的基于IRQ的中断方式中,每个设备有一个单独的IRQ线路,通过IRQ共享来减少中断的开销。这种方式在较老的PCI设备中比较常见。
在新的消息中断方式中,设备使用MSI(Message Signaled Interrupt)或 MSI-X(Message Signaled Interrupt eXtension) 发送中断请求到根设备。MSI使用32位消息地址和32位消息数据,而MSI-X使用更复杂的消息格式。这种方式可以提高中断处理的效率,适用于高性能、高吞吐量的设备。
在PCI Express总线中,中断控制器不再是必需的,根设备可以直接接收和处理中断请求。对于传统的基于IRQ的中断方式,中断控制器仍然需要,但可以通过PCI Express端点驱动程序进行配置和管理。
总之,PCI Express总线的中断机制支持传统基于IRQ的方式和新的消息中断方式,以满足不同设备的需要。
8. PCI Express 总线的差错处理和差错报告
PCI Express总线定义了三种错误报告方式:Completions、Poisoned Packet(又称为错误传递)和Error Message。这些错误类型可以通过设备控制寄存器中的相关位进行使能或者禁止,也可以通过设备状态寄存器相关位查询错误状态。
对于Completions错误,当Request在Completion阶段返回错误状态时,会通过Completion中的状态位向Request返回错误信息。
对于Poisoned Packet错误,当接收端收到一个已经被破坏的TLP数据包时,接收端会返回一个Poisoned
Packet错误,告知发送端该数据包已经被破坏。对于Error Message错误,当出现致命错误或者某些特定类型的非致命错误时,可以通过Error Message报告错误信息。
对于链路错误,一般发生在物理层与数据链路层通信的过程中。对于Downstream的设备,如果链路上发生了Fatal错误,此时该设备并不能够向Root报告错误。这种情况下,需要Upstream设备向Root来报告错误。
class PCIExpressDevice {- 控制寄存器: ControlRegister- 状态寄存器: StatusRegister+ 使能Completions错误()+ 禁止Completions错误()+ 使能PoisonedPacket错误()+ 禁止PoisonedPacket错误()+ 使能ErrorMessage错误()+ 禁止ErrorMessage错误()+ 查询错误状态(): ErrorStatus
}class DownstreamDevice {+ 向Root报告错误()
}class UpstreamDevice {+ 向Root报告错误()
}class RootComplex {- 错误报告信息: ErrorReport
}PCIExpressDevice --> ControlRegister
PCIExpressDevice --> StatusRegister
PCIExpressDevice --> ErrorStatus
PCIExpressDevice --> ErrorReport
DownstreamDevice --> UpstreamDevice
UpstreamDevice --> RootComplex
+-------------------+ +----------------+ +----------------+
| PCI Express | | Root Complex | | Device |
| | | | | |
| +---------------+ | Req to | +-------------+ | Req to | |
| | Endpoint |-----------> | | Downstream | |-----------> | |
| | Device | TLP | | Port/Link | | TLP | |
| +---------------+ | | +-------------+ | | |
| | | | | |
+-------------------+ +-----------------+ +----------------+
相关文章:
DP读书:鲲鹏处理器 架构与编程(六)PCI Express 总线
处理器与服务器:PCI Express 总线 PCI Express 总线1. PCI Express 总线的特点a. 高速差分传输b. 串行传输c. 全双工端到端连接d. 基于多通道的数据传输方式e. 基于数据包的传输 2. PCI Express 总线的组成与拓扑结构a. 根复合体b. PCI Express桥c. 功能单元 3. PCI…...

Pyqt5-开源工具分解功能(文本拖拽)
开源第四篇:功能实现之拖拽功能与配置文件。 写这个功能的初衷,是因为,每次调试我都要手动敲命令,太麻烦了,想偷个懒,所以直接给这功能加上了,顺便衍生出了另一个想法,配置文件自动填写相关数据。 先看个简单的拖拽功能: 很明显吧,还是比较便捷的。所以我们本章,就在…...

Java版B/S架构 智慧工地源码,PC、移动、数据可视化智慧大屏端源码
智慧工地是什么?智慧工地主要围绕绿色施工、安全管控、劳务管理、智能管理、集成总控等方面,帮助工地解决运营、管理方面各个难点痛点。在互联网的加持下促进项目现场管理的创新与发展,实现工程管理人员与工程施工现场的整合,构建…...

无涯教程-PHP - Session选项
从PHP7 起, session_start()()函数接受一系列选项,以覆盖在 php.ini 中设置的会话配置指令。这些选项支持 session.lazy_write ,默认情况下此函数为on,如果会话数据已更改,则会导致PHP覆盖任何会话文件。 添加的另一个…...
The Age of Data and AI: Challenges and Opportunities
Simply put Abstract: This paper examines the impact of the “Age of Data” on the field of artificial intelligence (AI). With the proliferation of digital technologies and advancements in data collection, storage, and processing, organizations now have ac…...

WPF 项目中 MVVM模式 的简单例子说明
一、概述 MVVM 是 Model view viewModel 的简写。MVVM模式有助于将应用程序的业务和表示逻辑与用户界面清晰分离。 几个概念的说明: model :数据,界面中需要的数据,最好不要加逻辑代码view : 视图就是用户看到的UI结构 xaml 文件viewModel …...
基于nginx禁用访问ip
一、背景 网络安全防护时,禁用部分访问ip,基于nginx可快速简单实现禁用。 二、操作 1、创建 conf.d文件夹 在nginx conf 目录下创建conf.d文件夹 Nginx 扩展配置文件一般在conf.d mkdir conf.d 2、新建blocksip.conf文件 在conf.d目录新建禁用ip的扩展配置文…...

【第三阶段】kotlin语言的内置函数let
1.使用普通方法对集合的第一个元素相加 fun main() {//使用普通方法对集合的第一个元素相加var list listOf(1,2,3,4,5)var value1list.first()var resultvalue1value1println(result) }执行结果 2.使用let内置函数对集合的第一个元素相加 package Stage3fun main() {//使用…...

【C++入门到精通】C++入门 —— 模版(template)
阅读导航 前言一、模版的概念二、函数模版1. 函数模板概念2. 函数模板定义格式3. 函数模板的原理4. 函数模版的实例化🚩隐式实例化🚩显式实例化 5. 函数模板的匹配原则 三、类模板1. 类模板的定义格式2. 类模板的实例化 四、非类型模板参数1. 概念2. 定义…...
ARM汇编【3】:LOAD/STORE MULTIPLE PUSH AND POP
LOAD/STORE MULTIPLE 有时一次加载(或存储)多个值更有效。为此,我们使用LDM(加载多个)和STM(存储多个)。这些指令有一些变化,基本上只在访问初始地址的方式上有所不同。这是…...

Python之Qt输出UI
安装PySide2 输入pip install PySide2安装Qt for Python,如果安装过慢需要翻墙,则可以使用国内清华镜像下载,输入命令pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple PySide2,如下图, 示例Demo i…...
【1day】复现泛微OA某版本SQL注入漏洞
目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 一、漏洞描述 泛微e-cology是一款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公。泛微OA存在SQL注入漏洞,攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据…...

安卓系列机型-禁止卸载某个APP 防止误卸载软件 无需root权限
安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析_安卓机器的博客-CSDN博客 上一期讲了如何禁止安装某个app。今天讲下如何禁止卸载某app。正好相反的操作。任何操作有利有弊。主要看使用者如何对待使用。 💔💔💔以腾讯的一款游…...

【算法系列篇】二分查找——这还是你所知道的二分查找算法吗?
文章目录 前言什么是二分查找算法1.二分查找1.1 题目要求1.2 做题思路1.3 Java代码实现 2.在排序数组中查找元素的第一个和最后一个位置2.1 题目要求2.2 做题思路2.3 Java代码实现 3.搜索插入位置3.1 题目要求3.2 做题思路3.3 Java代码实现 4.x的平方根4.1 题目要求4.2 做题思路…...
【前端从0开始】JavaSript——分支流程控制
流程控制 在任何一门程序设计语言中,都需要支持满足程序结构 化所需要的三种流程控制: ●顺序控制 ●分支控制(条件控制) ●循环控制 顺序控制:在程序流程控制中,最基本的就是顺序控制。程序会按照自上而下的顺序执行…...

Linux权限
Linux中一切皆文件,那么文件就应该有相对于的类型,而在Linux当中,类型不是直接看后缀来决定的。 -普通文件、文本、可执行、归档文件等d目录b块设备、block、磁盘c字符设备、键盘、显示器p管道文件s网络socket文件l链接文件 link 然后后面的九…...

PMP如何备考?学习方式这里有
预习阶段:强烈建议跟着习课视频学习(自己看书真的很难看懂),初步了解PMBOK,有个大致印象; 精讲阶段:这个时候就需要静下心来深入了解各个知识模块,不仅是看PMBOK,还要尽…...

【Java转Go】快速上手学习笔记(四)之基础篇三
目录 泛型内置泛型的使用切片泛型和泛型函数map泛型泛型约束泛型完整代码 接口反射协程特点WaitGroupgoroutine的调度模型:MPG模型 channel介绍语法:举例:channel遍历基本使用和协程一起使用案例一案例二 select...casemain.go 完整代码 文件…...

vue中form和table标签过长
form标签过长 效果: 代码: <el-form-item v-for"(item,index) in ticketEditTable1" :label"item.fieldNameCn" :propitem.fieldName :key"item.fieldNameCn" overflow"":rules"form[item.fieldName…...
java基础复习(第七日)
java基础复习(七) 1.MQ如何避免消息重复投递或重复消费? 在消息生产时,MQ 内部针对每条生产者发送到消息生成一个 inner-msg-id,作为去重的依据(消息投递失败并重传),避免重复的消息进入队列;…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...