什么是计算机中的高速公路-总线?

news2024/11/20 21:22:33

文章目录

    • 总线是什么?
    • 常见总线类型有哪些?
    • 总线的串行和并行的区别?
    • 数据总线
    • 地址总线
      • CPU的寻址能力
      • 32位CPU最大支持4G内存?
    • 控制总线
    • 总线的共享性和独自性
    • 系统总线的结构
      • 单总线结构
      • 双总线结构
      • 三总线结构
    • 总线传输的四个阶段
    • 总线仲裁
      • 集中总裁方式
      • 分布仲裁方式
    • 总线的性能指标
    • 尾语

大家好,我是呼噜噜,在之前的文章计算机的基本组成是什么样子的中,我们知道了现代计算机还是沿用了冯·诺依曼计算机架构,分别是运算器、控制器、存储器、输入设备、输出设备。那么计算机是如何让这些部件相互通信,传递数据的?其实计算机的各个部件就是依赖总线系统,相互协调,连接成一个整体,本文就来详细聊聊总线系统

总线是什么?

总线是贯穿整个系统的是一组电子管道,是连接各个部件的信息传输线,是各个部件共享的传输介质,称作总线,它携带信息字节并负责在各个计算机部件间传递

在总线出现之前,我们计算机各个设备都是各自单独互相通信的,如果有n个设备,由于他们都需各自单独互相通信,其中一个设备需要和其他n-1个设备通信,那系统的复杂度为N^2

为了降低系统复杂度,工程师们想到了一个办法,在计算机中设计一个公共的线路,其他的各个设备都不需要各自单独互相通信,只需和这个公共线路通信,将指令和数据传送给线路,线路代为转递,这样系统复杂度就可以降为了N

这条线路就像一个高速公路,我们把它称为总线(Bus),总线除了降低了系统复杂性,还提供了一个标准化的数据交换方式,便于接口设计,各个硬件按照总线的标准实现接口,而无需考虑对方接口或总线的工作原理,有利于各个部件模块化设计。这样的设计下,注册在总线上的各个模块就是低耦合的,方便未来代码的维护或者扩展。

常见总线类型有哪些?


计算机系统中的总线,按功能可以划分为以下 3 类:

  1. 片内总线。片内总线顾名思义就是芯片内部的总线,它是CPU芯片内部寄存器与寄存器之间、寄存器与算术逻辑部件ALU之间、ALU与控制部件之间 传输数据所用的公共连接线称为 片内总线
  2. 通信总线。通信总线是在计算机系统之间、计算机系统与外部设备(如远程通信设备、测试设备)之间传送信息的总线,通信总线也称外部总线
  3. 系统总线。系统总线是计算机系统内各功能部件(CPU、主存、I/O接口)之间互相连接的总线。按系统总线传输信息内容的不同,又可以分为3 种:数据总线、地址总线和控制总线。下文我们将具体看一下这三类总线

内部总线:查阅各种资料发现各种说法都有,比如维基百科的上是指南桥芯片与北桥芯片之间的连线;国内有的资料说芯片内部的总线即片内总线为内部总线,有的说是微机中各插件板与系统板之间的总线等等,概念太乱了,本文就不阐述了,感兴趣的话可以留言讨论

总线的串行和并行的区别?

在详细介绍数据总线、地址总线和控制总线之前,我们还得先了解一下总线的串行和并行的区别

数据传输格式可将总线划分为并行总线串行总线

  1. 串行总线,由于只需一条传输线就能实现数据的收发
  2. 并行总线,就是数据传输有多根线,这样就可以一次发送多位的数据。


同样一个字节数据(8位),串行通信要分8次由低位到高位按顺序一位位地传送,而并行通信由于有8根线路,可以一次把8位数据传送过去。通俗点讲,串行如同开一辆车分八次把货物运走,并行就是同时开8辆车,一口气把货物运走。

在早期计算机中,计算机的主频比较低,串行总线传输效率比并行总线慢,毕竟并行一次可以传多位,肯定比串行快。但并行总线也有一些问题:

  • 传输线数量多,意味着接口就需要很多针脚,占用更多的布线空间。老式计算机里的并行接口做得很大,接线比较宽,针脚非常多。
  • 并行的链路越多,对数据传输的干扰就越强,因此并行总线需要加强抗干扰的能力,不然传输过程中数据就可能被损坏
  • 如果并行传输过程中数据中有一位故障了,就需要重新对齐数据再次传输

但随着计算机和材料学的高速发展,计算机的主频越来越高,并行的信号线之间会产生严重干扰,对每条线等长的要求也越高,反过来会限制计算机主频的提升,而串行总线则没有这个问题,因此像现在USB接口,让串行传输浴火重生

虽然串行每次传输的数据少,但它可以不断提高工作频率来提高传输速度,最终超过并行总线传输效率。

再有如果传输过程中有一位的数据出现异常,并行总线就需要重新对齐数据再传输过去。而串行总线如果一位数据出错了,只需要重新传输一次就好了,由于串行总线频率高,很快就可以把错误数据重新传输过去。串行总线成本较低,还可以节约计算机硬件的布线空间

使用串行总线,在数据发送和接收的时候要进行拆卸和装配,串行-并行格式需要转换。

数据总线

数据总线(Data Bus),用来传输各功能部件之间的实际数据信息,它是双向传输的,它既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。这里的数据的含义是广义的,它可以是真正的数据,也可以是指令代码、状态信息或者其他,大家不要被绕进去

通常总线被设计成传送定长的字节块,也就是(word)。字中的字节数(即字长)是一个基本的系统参数,各个系统中都不尽相同。另外计算机最小的存储单位字节(Byte),1 字节等于 8 位(1Byte=8bit),而位/比特(bit)是计算机最小的数据传输单位1 字节等于 8 位(1Byte=8bit)这个换算规则大家需要牢记

现在的大多数机器字长(计算机能直接处理的二进制数据的位数)要么是4个字节(4*8 =32位),要么是8个字节(64位)。本文我们不对字长做任何固定的假设

数据总线的位宽,也就是数据总线的宽度是计算机的一个重要指标,一般情况下:数据总线的位宽 = CPU的位宽 = CPU内部通用寄存器的位宽 = 机器字长,但是数据总线宽度不一定等于机器字长,比如下图中8088型号处理器,2者就不相等

数据总线的位宽为8位的话,数据总线数量有8条,由于每条传输线一次只能传输1位二进制数据,所以8根数据线一次可传送一个8位二进制数据(即一个字节)

地址总线

地址总线(Address Bus),地址总线专门用于传输的是地址信号,指出数据总线上的数据源地址、目的数据在主存单元或I/O 设备 的地址,也就是指向 CPU 将要操作的内存地址。地址总线是单向传输的(地址只能从CPU传向外部存储器或I/O设备的端口),其位数与主存空间的大小有关

CPU的寻址能力

计算机最小的存储单位字节(Byte),计算机将8个bit归为一组,为字节,每一个字节都对应一个内存地址。内存的地址是从0 开始编号的,然后自增排列,最后一个地址为内存总字节数 -1。CPU只需要知道某个数据类型的地址, 就可以直接去到对应的内存位置去提取数据了。

CPU的寻址能力与它的地址总线位宽有关,与数据总线宽度(CPU位宽=数据总线位宽)无关**。16位CPU的地址总线位宽可以是20位,也可以是24位。CPU的位宽最好不要小于地址总线位宽,需要通过北桥进行数据转换,工作起来比较复杂, 16位 CPU 一次最多只能操作16位宽的地址总线,最好16位CPU和16位的地址总线位宽搭配,但CPU的位宽不能大于地址总线位宽**。

地址总线位宽决定了CPU能直接访问的主存容量大小,CPU 通过地址总线来指定存储单元的位置(注意是字节而不是字),地址总线上能传送多少信息,CPU 就可以对多少个存储单元进行寻址。

如果一台8位计算机,其地址总线为16位的话,有16根地址线来传递地址信号,每一条线能够传递的数据都是 0 或 1
则其最大可寻址空间为2^16B= 64*1024B= 64KB,影响CPU的寻址能力是它的地址总线位宽,与其CPU位宽无关。

32位CPU最大支持4G内存?

64位、32位指的是CPU寄存器的数据宽度,也叫 CPU 的位宽,他们最主要区别在于CPU一次能计算多少字节数据

  • 32位CPU,表明处理器 一次可以计算 4 个字节(Byte),即一次可以计算32位(bit)数据。
  • 64位CPU,表明处理器 一次可以计算 8 个字节(Byte),即一次可以计算64位(bit)数据。

32位CPU最大支持4G内存,这是怎么算出来的?它的前提条件是CPU的位宽等于地址总线位宽
32位CPU,其地址总线位宽也是32位,根据地址总线位宽我们可以算出:2^32B = 4GB,2^35b = 4GB其最大内存寻址能力只能达到是4G。我们就算给这台32位的电脑装8G的内存条,也无法提高其计算能力。
但是我们刚刚只是举得最普遍的情况,32位CPU,其地址总线位宽也可以是36位,40位

控制总线

控制总线(Control Bus),用来传输的是控制或状态信号,控制总线是双向传输的,一般用于发送和接收信号,比如存储器读、存储器写、中断、设备复位等信号。控制总线的宽度决定了CPU对外部器件的控制能力

总线的共享性和独自性

总线具有分时和共享性:
分时是指同一时刻只允许有一个部件向总线发送信息,若系统中有多个部件,则它们只能分时地向总线发送信息。
共享是指总线上可以挂接多个部件,各个部件之间互相交换地信息都可通过这组线路分时共享。

也就是在某一时刻只允许有一个部件,占有总线的控制权,可以向总线发送信息,但多个部件可同时从总线上接收相同的信息

系统总线的结构

我们一直说系统总线的设计概念,我们来看下实际上计算机中的总线结构

单总线结构


最初的单总线结构只有一条总线叫做系统总线,把各个部分连接起来,所有设备间的通信都要经过系统总线,单总线结构就会显得负载比较重,同时只能有两个设备进行通信,其他设备间想要通信就必须等待。所以负载大,无法支持并发操作

双总线结构

由于I/O 设备的访问速度是非常慢的,CPU这么昂贵的资源,不能让它一直等待I/O 设备的响应,所以增加一条I/O 总线,用于在多个外部设备与通道之间传送数据,将低速 I/O 设备从单总线上分离出来。另一条是主存总线,用于在 CPU、主存和通道之间传送数据。

通道是具有特殊功能的处理器,能对I/O设备进行统一管理。

三总线结构


三总线结构在二总线结构上(主存总线, I/O 总线),新增DMA总线

DMA(直接内存访问)是现代计算机一个非常重要的特点,在它出现之前,主存总线和IO总线读取内存和IO设备的数据,都是有CPU所控制的,由于CPU的读取速度比主存、IO设备、硬盘上的读取速度差距快的多(完全不是一个量级的),CPU是非常昂贵的资源,不能让它一直等待主存、IO设备的响应数据,所以有了DMA之后,CPU将总线的控制权交给DMA,让DMA可以不受CPU的控制,由DMA控制器来实现和完成的,去独自与主存、IO设备交互。也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高

我们知道总线的控制权具有分时独占性,DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,DMA完成任务后通过归还总线控制权,由于DMA控制器和CPU都有访内请求,可将地址、数据等信号送到总线上,甚至都不需要经过"申请-建立-归还总线控制权"的过程,直接控制权转移,让DMA与CPU交替访问内存。由于耗时极短,产生"同时访问"内存的现象

所以DMA总线提高了 I/O 设备的性能,使其更快地响应命令,提高系统吞吐量。

还有四总线结构,PCI总线结构, 双独立总线结构等就不介绍了,感兴趣的自行去查阅相关资料。

总线传输的四个阶段

  1. 申请分配阶段:由需要使用总线的主模块(或主设备)提出申请,经总线仲裁机构决定将下一传输周期的总线使用权授予某一申请者。也可将此阶段细分为传输请求和总线仲裁两个阶段。
  2. 寻址阶段:获得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。
  3. 传输阶段:主模块和从模块进行数据交换,可单向或双向进行数据传送。
  4. 结束阶段:主模块的有关信息均从系统总线上撤除,让出总线使用权。

总线仲裁

由于计算机有多个设备,必然会存在多个设备同时竞争总线控制权的问题,这时候就需要**总线仲裁,**让某个设备优先获得总线控制权,获得了总线控制权的设备,才能开始传送数据。未获胜的设备只能等待获胜的设备处理完成后才能执行。

总线仲裁方式按其仲裁控制机构可分为集中总裁方式分布仲裁方式两种。

集中总裁方式

总线控制逻辑基本上集中于一个设备(如 CPU)中。将所有的总线请求集中起来,利用一个特定的裁决算法进行裁决,称为集中仲裁方式。集中仲裁方式有链式查询、计数器定时查询方式和独立请求方式

  1. 链式查询方式

总线上所有的部件共用一根总线,当有部件请求使用总线时,需经此线发总线请求信号到总线控制器。由总线控制器检查总线是否忙,若总线不忙,则立即发总线响应信号,经总线响应线 BG 串行地从一个部件传送到下一个部件,依次查询。若响应信号到达的部件无总线请求,则该信号立即传送到下一个部件;若响应信号到达的部件有总线请求,则信号被截住,不再传下去。也就是说 "总线忙"信号的建立者是获得总线控制权的设备

在链式查询中,部件离总线控制器越近,其优先级越高;部件离总线控制器越远,其优先级越低。优点:链式查询只需很少几根控制线就能按一定优先次序实现总线控制,结构简单,扩充容易。

缺点:对硬件电路的故障敏感,且优先级不能改变。当优先级高的部件频繁请求使用总线时,会使优先级较低的部件长期不能使用总线。

  1. 计时器定时查询方式

它采用一个计数器控制总线使用权,相对链式查询方式多了一组地址线,少了一根总线响应线 BG。它仍共用一根总线请求线,当总线控制器收到总线请求信号并判断总线空闲时,计数器开始计数,计数值通过设备地址线发向各个部件。当地址线上的计数值与请求使用总线设备的地址一致时,该设备获得总线控制权,同时终止计数器的计数及查询。

优点:计数可从“0”开始,此时一旦设备的优先级次序被固定,设备的优先级就按 0,1,…,n 的顺序降序排列,而且固定不变;计数也可从上一次的终点开始,即采用一种循环方法,此时设备使用总线的优先级相等;计数器的初值还可以由程序设置,故优先级可以改变,且这种电路的故障没有链式查询方式敏感。

缺点:增加了控制线数(若设备有 n 个,则大致需要 ⌈log2n⌉ + 2 条控制线),控制也相对比链式查询要复杂。

  1. 独立请求方式

每个设备均有一对总线请求线 BR_i_ 和总线允许线 BG_i_。当总线上的部件需要使用总线时,经各自的总线请求线发送总线请求信号,在总线控制器中排队,当总线控制器按一定的优先次序决定批准某个部件的请求时,给该部件发送总线响应信号,该部件接到此信号就获得了总线使用权,开始传送数据。

优点:响应速度快,总线允许信号 BG 直接从控制器发送到有关设备,而不必在设备间传递或查询,而且对优先次序的控制相当灵活。缺点:控制线数量多(设备有 n 个,需要 2n + 1 条控制线,其中加的那条控制线为 BS 线,作用是让设备向总线控制器部件反馈已使用完总线),总线控制逻辑更复杂。

分布仲裁方式

分布式仲裁方式不需要中央仲裁器,每个潜在的主模块都有自己的仲裁号和仲裁器。当它们有总线请求时,就会把它们各自唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较,若仲裁总线上的仲裁号优先级高,则它的总线请求不予响应,并撤销它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。

总线的性能指标

  1. 总线的传输周期。指一次总线操作所需的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段),简称总线周期。总线传输周期通常由若干总线时钟周期构成。
  2. 总线时钟周期。即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制。
  3. 总线的工作频率。总线上各种操作的频率,为总线周期的倒数。实际上指 1 秒内传送几次数据。
  4. 总线宽度。又称总线位宽,它是总线上同时能够传输的数据位数,通常指数据总线的根数,如 32 根称为 32 位总线。
  5. 总线带宽。可理解为总线的数据传输率,即单位时间内总线上同时能够传输的数据位数,通常用每秒传送的字节数来衡量,单位可用 B/s 表示。总线带宽 = 总线工作频率 * (总线宽度 / 8)。
  6. 总线复用。总线复用是指一种信号线在不同的时间传输不同的信息,因此可以使用较少的线传输更多的信息,从而节省空间和成本。
  7. 信号线数。地址总线、数据总线和控制总线 3 种总线书的总和称为信号线数。

其中,总线最主要的性能指标为总线宽度、总线工作频率、总线带宽,总线带宽是指总线本身所能达到的最高传输速率,它是衡量总线性能的重要指标。总线带宽 = 总线宽度 * 总线频率。例如总线工作频率为 22 MHz,总线宽度为 16 位,则总线带宽= 22 * (16 / 8)= 44 MB/s

尾语

感谢大家读到最后,想信大家都了解了总线是什么?计算机为什么使用总线?以及总线的设计理念,总线一些通用的特性,总线和内存的交互,接着又聊到了总线的结构,DMA等现代计算机的重要技术,最后又介绍总线仲裁和其性能指标,希望大家有所收获


参考资料:
《深入理解计算机系统 第三版》
《计算机组成原理》
《深入浅出计算机组成原理》


本篇文章到这里就结束啦,很感谢靓仔你能看到最后,如果觉得文章对你有帮助,别忘记关注我!

计算机内功、JAVA源码、职业成长、项目实战、面试相关资料等更多精彩文章在公众号「小牛呼噜噜」

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

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

相关文章

谷粒商城项目笔记之高级篇(二)

目录1.7 认证服务1.7.1 环境搭建1)、创建认证服务微服务2)、引入依赖3)、添加相应的域名4)、动静分离5)、nacos中注册6)、配置网关7)、测试访问登录页面8)、实现各个页面之间跳转1.7.2 验证码功能1)、验证码…

C++的类介绍(封装特性)

一、类的定义 1.1定义 类是c语言对编程思想的概括深化,其前期的C语言使能面向过程的语言,思想是注重对程序每一步的理解;而面向过程的是C语言之父把生活的类与对象的思想应用于程序设计之中,把程序抽象成一个个对象。 C面向对象…

将时间序列转换为指定的频率并指定填充方法来填充缺失值的DataFrame.asfreq()方法

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 时间序列的插值操作 提升序列中时间密度 DataFrame.asfreq() 选择题 关于以下python代码说法错误的一项是? import pandas as pd myIndexpd.date_range(1/12/2023,periods3,freqT) dfpd.D…

深入了解 LinkedBlockingQueue阻塞队列

1. 前言 今天来逐个方法解析下LinkedBlockingQueue. 其实跟上篇文件深入了解ArrayBlockingQueue 阻塞队列很类似。只不过底层实现不同。其实看名字就能看出来到底依据什么实现的。好了,废话不多说了,接下来让我们开始吧 至于API的使用情况跟ArrayBlockin…

JS垃圾回收

什么是GC GC就是Garbage Collection,程序工作过程中会产生很多垃圾,这些垃圾是程序不用的内存或者是之前用过了,以后不会再用的内存空间,而GC就是负责回收垃圾的。当然也不是所有的语言都会自带GC,比如Java、Python、Javascript等…

电脑修改用户(User)文件夹名称

情景:Windows 11 的用户名与 C 盘(系统盘)中的文件夹名称不对应(可能是由于重装系统导致的),例如我笔记本中系统用户名是 “fly”,但文件夹名称却是“16490”。 Step 1:打开Administ…

智能图像处理:基于边缘去除和迭代式内容矫正的复杂文档图像校正

本文简要介绍ACM MM 2022录用论文“Marior: Margin Removal and Iterative Content Rectification for Document Dewarping in the Wild”的主要工作。该论文针对现有的矫正方法只能在紧密裁剪的文档图像上获得较为理想的矫正效果这一不足,提出了一个新的矫正方法Ma…

基于webrtc多人音视频的研究(一)

众所周知,WebRTC非常适合点对点(即一对一)的音视频会话。然而,当我们的客户要求超越一对一,即一对多、多对一设置多对多的解决方案或者服务,那么问题就来了:“我们应该采用什么样的架构&#xf…

利用AirTest实现自动安装APK-跳过vivo手机安装验证

利用AirTest实现自动安装APK-跳过vivo手机安装验证 前言 最近在帮测试组看个问题,他们在自动化测试的时候,通过adb install 命令在vivo手机上安装apk的时候出现”外部来源应用,未经vivo安全性和兼容性检测,请谨慎安装“的提示页面…

仅需一行Python代码,为图片上版权!

哈啰,大家好,我是派森酱,一个Python技术爱好者。今天一个朋友跟我吐槽:前段时间,我辛辛苦苦整理的一份XX攻略,分享给自己的一些朋友,结果今天看到有人堂而皇之地拿着这份攻略图片去引流&#xf…

多项目同时进行时,做好进度管理很重要

进行多项目同时进行时,做好进度管理非常重要。最简单的方法是使用项目管理软件,可以帮助你组织和跟踪多项目的进度。 此外,需要定期审核每个项目的进度,并对项目进行必要的调整,以确保每个项目都能按时完成。 1、多项…

1579_AURIX_TC275_MTU中的ECC机理以及各种寄存器实现

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这一夜的信息全是寄存器地址信息,在了解功能的时候都是非关键信息。后续的内容整理中,这部分类似的信息我都会跳过。 在这个系列的MCU中,ECC实现了单bit…

Angular CLI命令详解

Angular CLI自身操作 显示版本 ng version 或 ng v 这条命令除了显示当前的cli的版本号&#xff0c;还显示LOGO&#xff0c;运行环境等内容&#xff1a; 显示帮助 ng --help 或 ng <sub cmd> --help 比如&#xff1a; ng build --help 如果记不住命令&#x…

数据库,计算机网络、操作系统刷题笔记32

数据库&#xff0c;计算机网络、操作系统刷题笔记32 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle…

BGP-路由反射器、联邦实验(1.11)

目标&#xff1a; 1、首先需要基于该与拓扑图对172.16.0.0/16进行子网划分&#xff1a; 题中一共需要八个网段的环回和一个骨干链路共8个网段&#xff1b; 172.16.0.0 20 骨干 再分为八个&#xff1a; 172.16.0.0 30 172.16.0.4 30 172.16.0.8 30 172.16.0.12 30 172.16.0.…

1、基本数据类型

目录 一、数值类型 1.整数类型 2.浮点数类型 3.复数 4.无穷量&#xff08;Inf&#xff09;和非数值量&#xff08;NaN&#xff09; 二、逻辑类型 一、数值类型 数值类型数据的分类&#xff1a; 注意&#xff1a;在未加说明与特殊定义时&#xff0c;MATLAB对所有数值按照…

如何myabtis使用注解对数据库进行操作呢?

引入&#xff1a; mybatis进行数据查询既可以通过配置xml文件&#xff0c;也可以通过注解&#xff0c;前几篇文章中&#xff0c;我们一直使用的都是通过配置xml文件&#xff0c;对于使用注解并没有详细的解释&#xff0c;只是简单的使用了以下&#xff0c;下面这篇文章&#x…

生命在于学习——信息收集的一些知识(一)

一、checklist 1、域名信息 &#xff08;1&#xff09;备案信息 在线查询&#xff1a; https://beian.miit.gov.cn/#/Integrated/index https://www.tianyancha.com/ http://cha.fute.com/index http://icp.chinaz.com/ 工具查询&#xff1a;无 &#xff08;2&#xff09;企…

事件总线 + 函数计算构建云上最佳事件驱动架构应用

作者 | 史明伟&#xff08;世如&#xff09; 距离阿里云事件总线&#xff08;EventBridge&#xff09;和 Serverless 函数计算&#xff08;Function Compute&#xff0c;FC&#xff09;宣布全面深度集成已经过去一年。站在系统元数据互通&#xff0c;产品深度集成的肩膀上&…

基于springboot+mybatis美术馆预约管理系统设计和实现以及文档报告

基于springbootmybatis美术馆预约管理系统设计和实现以及文档报告 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…