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

架构师知识梳理(一):计算机硬件

目录

计算机硬件组成

CPU

CPU的组成

CPU的功能

校验码

奇偶校验 

CRC

CRC计算案例

指令

指令指行过程

 指令系统

指令系统分类

指令流水线技术

流水线技术相关计算公式

存储

计算机存储系统设计

高速缓存Cache

缓存的局部性原理

地址映射

替换算法 

 关于命中率及平均时间的相关计算

磁盘 

磁盘结构与参数

磁盘调度算法

输入输出

 计算机与外设之间的数据交互

内存与接口地址编址 

总线


计算机硬件组成

计算机的基本硬件系统由运算器控制器存储器输入设备输出设备5 大部件组成。 

  • 运算器、控制器等部件被集成在一起统称为中央处理单元(Central ProcessingUnit,CPU)。CPU 是硬件系统的核心,用于数据的加工处理,能完成各种算术,逻辑运算及控制功能
  •  存储器是计算机系统中的记忆设备,分为内部存储器(内存)外部存储器(硬盘)前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。
  • 输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出计算机运行的结果。

CPU

CPU的组成

CPU的组成:CPU 主要由运算器、控制器、寄存器组和内部总线等部件组成。

  • 运算器:执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。组成部分如下:
    • 算术逻辑单元ALU实现对数据的算术和逻辑运算
    • 累加寄存器AC运算结果或源操作数的存放区
    • 数据缓冲寄存器DR暂时存放内存的指令或数据
    • 状态条件寄存器PSW保存指令运行结果的条件码内容,如溢出标志等
  • 控制器:控制整个CPU的工作,由以下部分组成:
    • 指令寄存器IR暂存CPU执行指令
    • 程序计数器PC存放指令执行地址
    • 地址寄存器AR保存当前CPU所访问的内存地址。
    • 指令译码器ID分析指令操作码

CPU依据指令周期的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。

CPU的功能

  1. 程序控制:CPU 通过执行指令来控制程序的执行顺序,这是CPU的重要功能。
  2. 操作控制:一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。
  3. 时间控制:CPU 对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制。
  4. 数据处理:CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理4)数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU 最根本的任务。
  5. 中断响应:CPU 还需要对系统内部和外部的中断(异常)做出响应,进行相应的处理。

校验码

校验码是一种附加在数据上的代码,用于检测和/或校正数据在传输、存储或处理过程中可能发生的错误。

当数据被写入CPU的寄存器、缓存或内存时,相应的校验码也会被计算并存储。校验码的生成依赖于数据本身,以及所使用的校验算法。

当数据被读取或传输时,CPU会重新计算校验码,并与存储的校验码进行比较。如果两者不匹配,说明数据可能发生了错误。

校验码对于确保CPU的可靠性和稳定性至关重要。它可以减少因数据错误导致的系统崩溃、性能下降或安全问题。

校验码在CPU中主要用于:

  • 寄存器和缓存中的数据保护
  • 指令和数据的传输校验
  • 内存管理单元(MMU)的数据校验
  • 硬件故障诊断和修复

校验码常见类型:

  • 奇偶校验:最简单的校验方法,只能检测奇数个错误。
  • CRC:一种常见的校验方法,可以检测并校正多种错误类型。

奇偶校验 

在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。

码距的概念:

就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另-个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,码距越大,越利于纠错和检错。

例如:

奇校验:编码中,含有奇数个1,发送给接收方,接收方收到后,会计算收到的编码有多少个1,如果是奇数个,则无误,是偶数个,则有误。
偶校验同理,只是编码中有偶数个1,奇偶校验只能检1位错,并且无法纠错。

CRC

使用CRC编码,需要先约定一个生成多项式G(x)。生成多项式的最高位和最低位必须是1。假设原始信息有m位,则对应多项式M(x)。生成校验码思想就是在原始信息位后追加若干校验位,使得追加的信息能被G(x)整除。接收方接收到带校验位的信息,然后用G(x)整除。余数为0,则没有错误;反之则发生错误。

注意: CRC只能检错,不能纠错。

CRC计算案例

题目:

假设原始信息串为10110,CRC的生成多项式为G(x)=x^4+x+1,求CRC 校验码。

  • 原始信息串:10110
  • 生成多项式:G(x)=x4+x+1G(x)=x4+x+1

计算步骤:

  1. 添加0:在原始信息位后面添加与生成多项式阶数相同的0。因为 G(x)G(x) 的阶为4,所以在原始信息串10110后面添加4个0,得到新串101100000

  2. 得到除数:根据生成多项式,将多项式中的x的幂指数存在的位置设为1,不存在的位置设为0。对于 G(x)=x4+x+1G(x)=x4+x+1,x的幂指数为0, 1, 4的位置存在,所以得到除数串10011。

  3. 模2除法:将新串101100000作为被除数,除数为10011,进行模2除法运算(不进位也不借位的除法)。除法过程如下:

                 1 0 0 1___________________|               
    1 0 1 1 |  1 0 1 1 0 0 0 0 0/  1 0 1 1      ——————————————————1 0 1 0 01 0 0 1 1——————————————————1 1 1 0 01 0 0 1 1——————————————————1 1 1 1
    

  4. 补齐余数:如果余数的位数小于生成多项式的阶数,需要在余数的左边补齐0。在这个例子中,余数1111是4位,与生成多项式的阶数相同,所以不需要补齐。

  5. 生成最终发送信息串:将余数1111添加到原始信息串10110的后面,得到最终发送的信息串101101111。

  6. 接收方校验:接收方使用相同的生成多项式 G(x)G(x) 对收到的信息进行除法运算。如果余数为0,则信息无误;如果余数不为0,则要求发送方重传。

指令

一条指令由操作码操作数两部分组成,操作码决定要完成的操作操作数指参加运算的数据其所在的单元地址在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。

指令指行过程

计算机指令执行过程包括取指令--分析指令--执行指令三个步骤。

  • 取指令
    • 首先将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR,对应图上1-4步骤
  • 分析指令
    • 由指令译码器进行分析,分析指令操作码,对应图中5、6步骤
  • 执行指令
    • 取出指令执行所需的源操作数,执行指令内容,对应图中第7步

寻址方法:

  • 指令寻址方式:
    • 顺序寻址方式:当执行一段程序时,是一条指令接着一条指令地顺序执行。
    • 跳跃寻址方式:指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出。程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
  • 指令操作数的寻址方式:
    • 立即寻址方式:指令的地址码字段指出的不是地址,而是操作数本身。
    • 直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址。
    • 间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址。
    • 寄存器寻址方式:指令中的地址码是寄存器的编号。
    • 基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有效地址,其优点是可以扩大寻址能力。
    • 变址寻址方式:变址寻址方式计算有效地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的形式地址而形成操作数的有效地址。

 指令系统

指令系统分类

指令系统分为复杂指令系统(CISC)精简指令系统(RISC)

  • CISC复杂指令系统:兼容性强,指令繁多、长度可变,由微程序实现;
  • RISC精简指令系统:指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)

两者间对比

类型指令寻址方式实现方式备注
CISC(复杂指令系统)数量多,使用频率差别大可变长格式支持多种微程序控制技术(微码)研制周期长
RISC(精简指令系统)数量少,使用频率接近,定长格式,大部分为单周期指令,操作寄存器,只有Load/Store操作内存支持方式少增加了通用寄存器;硬布线逻辑控制为主;适合采用流水线优化编译,有效支持高级语言
指令流水线技术

将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段

RISC中的指令流水线技术

  1. 超流水线(Super Pipe Line)技术。它通过细化流水、增加级数和提高主频,使得在每个机器周期内能完成一个甚至两个浮点操作。其实质是以时间换取空间。
  2. 超标量(Super Scalar)技术。它通过内装多条流水线来同时执行多个处理,其时钟频率虽然与一般流水接近,却有更小的CPI。其实质是以空间换取时间。
  3. 超长指令字(Very Long Instruction Word,VLIW)技术。VLIW和超标量都是20世纪80年代出现的概念,其共同点是要同时执行多条指令,其不同在于超标量依靠硬件来实现并行处理的调度,VLIW则充分发挥软件的作用,而使硬件简化,性能提高。
流水线技术相关计算公式

流水线周期概念:指令分成不同执行段,其中执行时间最长的段为流水线周期。

计算内容公式
流水线执行时间1条指令总执行时间 + (总指令条数 - 1) * 流水线周期
流水线吞吐率计算吞吐率即单位时间内执行的指令条数。公式:指令条数 / 流水线执行时间。
流水线的加速比计算不使用流水线执行时间 / 使用流水线执行时间。

存储

计算机存储系统设计

为了解决存储容量、成本、速度之间的矛盾问题,计算机的存储系统采用的分级存储体系。由上到下以此为:

  • 寄存器:CPU内部,成本最高,读取速度最快
  • Cache : 高速缓存,位于CPU与内存之间,之间与CPU交互,容量大于寄存器小于内存,速度大于内存小于寄存器
  • 主存储器:一般指RAM,也就是常说的运行内存,容量大于Cache,速度小于Cache,但大于辅助存储器(磁盘、光盘)
  • 辅助存储器:需要进行IO读取的,一般指磁盘、外置光盘等,成本最低,读写速度最慢,但容量最大

高速缓存Cache

高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的。

Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。 

缓存的局部性原理

总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:

  • 时间局部性:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。
  • 空间局部性:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。

地址映射

在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射,分为下列三种方法:

  • 直接映射

将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。地址变换简单但不灵活,容易造成资源浪费。

  • 全相连映射

同样都等分成块并编号。主存中任意一块都与Cache中任意一块对应。因此可以随意调入Cache任意位置,但地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最小可能发生块冲突的映像方式。

  • 组组相连映射

前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。 

替换算法 

替换算法的目标是让高速缓存Cache获得尽可能高的命中率

  1. 随机替换算法。就是用随机数发生器产生一个要替换的块号,将该块替换出去。
  2. 先进先出算法。就是将最先进入Cache的信息块替换出去。
  3. 近期最少使用算法。这种方法是将近期最少使用的Cache中的信息块替换出去。
  4. 优化替换算法。这种方法必须先执行一次程序,统计Cache的替换情况。有了这样的先验信息,在第二次执行该程序时便可以用最有效的方式来替换。

 关于命中率及平均时间的相关计算

命中率:即当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据。

设读取一次Cache时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns。若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%*1+10%*1000)ns。 

磁盘 

磁盘结构与参数

磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。

 磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。(注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间

磁盘调度算法

磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度,有如下调度算法:

  • 先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
  • 最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
  • 扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
  • 单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。

输入输出

 计算机与外设之间的数据交互

  • 程序控制(查询)方式CPU主动查询外设是否完成数据传输,效率极低。

  • 程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。中断响应时间指的是从发出中断请求到开始进入中断处理程序;中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。

  • DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路效率很高。在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时。

内存与接口地址编址 

内存与接口地址编址主要是指在计算机系统的硬件设计和编程阶段,用来定义和区分内存单元和输入/输出接口的地址空间。

  • 内存与接口地址独立编址方法

内存地址和接口地址是完全独立的两个地址空间访问数据时所使用的指令也完全不同,用于接口的指令只用于接口的读/写,其余的指令全都是用于内存的。因此,在编程序或读程序时很易使用和辨认。这种编址方法的缺点是用于接口的指令太少、功能太弱

  • 内存与接口地址统一编址方法

内存地址和接口地址统一在一个公共的地址空间里,即内存单元和接口共用地址空间优点是原则上用于内存的指令全都可以用于接口,这就大大地增强了对接口的操作功能,而且在指令上也不再区分内存或接口指令。该编址方法的缺点就在于整个地址空间被分成两部分,其中一部分分配给接口使用,剩余的为内存所用,这经常会导致内存地址不连续

总线

总线(Bus),是指计算机设备和设备之间传输信息的公共数据通道。总线是连接计算机硬件系统内多种设备的通信线路,它的一个重要特征是由总线上的所有设备共享,因此可以将计算机系统内的多种设备连接到总线上。

从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:

  • 内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
  • 系统总线:是板级总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCI总线。
  • 外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拨)。

相关文章:

架构师知识梳理(一):计算机硬件

目录 计算机硬件组成 CPU CPU的组成 CPU的功能 校验码 奇偶校验 CRC CRC计算案例 指令 指令指行过程 指令系统 指令系统分类 指令流水线技术 流水线技术相关计算公式 存储 计算机存储系统设计 高速缓存Cache 缓存的局部性原理 地址映射 替换算法 关于命中…...

从根儿上学习spring 四 之run方法启动第一段

图1 由上图我们可以看到,我把run方法分成了5个小段,每小段使用红框圈了起来,这一篇我们先开始讲第一段。大家需要关注下行号,我讲的时候可能会使用行号对应具体某行代码。 图1-289-290行: 没啥好说的定义了两个变量&…...

智能闹钟如何判断用户已经醒了?

智能闹钟判断用户是否已经醒来的方式主要依赖于其内置的传感器和算法系统。以下是一些常见的判断方法: 一、传感器监测 体动传感器:智能闹钟通常配备有体动传感器,用于监测用户的身体运动。当用户从睡眠状态转变为清醒状态,并开始…...

【算法】动态规划解决背包问题

应用场景——01背包问题 有一个背包,背包的容量为 4,现有如下物品 要求 1.目标为装入背包的总价值最大,并且重量不超出 2.要求装入的物品不能重复 动态规划算法介绍 1.动态规划算法的核心是:将大问题划分为小问题进行解决&…...

day09 工作日报表

日期 30日07月2024年 任务安排 今天主要就是讲了security类工作的原理,然后就是让我们自己做项目 工作中的问题 今天做项目的时候发现有时候用postman测试返回20001,说错误见控制台,但是控制台一片祥和,于是就尝试用tr…...

C++学习之路(1)— 第一个HelloWorld程序

C学习之路(1)— 第一个HelloWorld程序 一、前言 C在C语言的基础上添加了对面向对象编程和泛型编程的支持,在 20世纪90年代便是最重要的编程语言之一,并在21世纪仍保持强劲势头。C继承了C语言高效、简洁、快速和可移植性的传统。 …...

python3 pyside6图形库学习笔记及实践(三)

目录 前言菜单栏相关控件使用QtDesigner快速构建菜单栏结构语法 上下文菜单概念为窗体添加上下文菜单为控件添加上下文菜单 折叠菜单资源的加载内置图标Rcc的使用创建资源文件加载资源文件 前言 本系列文章为b站PySide6教程以及官方文档的学习笔记 原视频传送门:【…...

03 库的操作

目录 创建查看修改删除备份和恢复查看连接情况 1. 创建 语法 CRATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] …] create_specification:  CHARACTER SET charset_name  CPLLATE collation_name 说明: 大写的标识关键…...

嵌入式人工智能(44-基于树莓派4B的扩展板-LED按键数码管TM1638)

树莓派性能非常强悍,但是对于某些复杂的项目来说,会出现心有余而口不足的情况,为了解决这类问题,可以在树莓派上使用扩展板,我们介绍几款常见的扩展板,不仅可以扩展到树莓派,其他单片机或嵌入式…...

linux通过抓包工具tcpdump查看80端口访问量情况

方法: tcpdump -i ens32 -tn dst port 80 -c 10 | awk -F"." {print $1"."$2"."$3"."$4} | sort | uniq -c | sort -nr |head -n 10 #-i:指定端口 #-t:在输出的每一行不打印时间戳 #-n&#xff…...

Mac 上安装和卸载 SDKMAN 及管理多个 JDK

前言 当电脑上有多个 JDK 环境的时候,切换管理比较麻烦,这时候可以使用 SDKMAN 来安装、管理 JDK。 一、安装 SDKMAN! 1. 安装前置条件 首先,确保已经安装了 curl 。如果没有,可以通过 Homebrew 来安装: brew inst…...

字节测开一面面经

1 . 自我介绍 2 . 讲一下常见的数据结构 : 讲了数组,set,list,map,树,图,队列 , 栈等 ; 3 . 讲一下java反射场景和作用 ; 4 . 讲一下你了解的机器学习算法 ; 5 . 我讲完ML之后 , 问了knn和贝叶斯的使用的场景区别(没答上来) ; 6 .…...

HTML 段落

HTML 段落 概述 HTML&#xff08;超文本标记语言&#xff09;是构建网页的标准语言&#xff0c;而段落是构成网页内容的基本单元。在HTML中&#xff0c;段落是通过<p>标签来定义的。本文将详细介绍HTML段落的相关知识&#xff0c;包括段落的基本结构、样式设置、以及在…...

【Mind+】掌控板入门教程04 迷你动画片

还记得小时候每天放学必看的动画片吗&#xff1f;还记得那些年陪伴我一起长大的卡通人物吗&#xff1f;勇救爷爷的葫芦娃&#xff0c;我们的朋友小哪吒&#xff0c;相信这些经典的动画形象已经成为了一代人童年的美好回忆。今天就让我们用掌控板来制作一部迷你动画片吧。 项目示…...

文件上传漏洞-HackBar使用

介绍 HackBar 是一个用于浏览器的扩展插件&#xff0c;主要用于进行网络渗透测试和安全评估。它提供了一系列方便的工具和功能&#xff0c;可以帮助用户执行各种网络攻击和测试&#xff0c;包括 XSS、SQL 注入、CSRF、路径穿越等 下载地址 可以到github上面去下载&#xff0…...

鸿蒙媒体开发【相机数据采集保存】音频和视频

相机数据采集保存 介绍 本示例主要展示了相机的相关功能&#xff0c;使用libohcamera.so 接口实现相机的预览、拍照、录像、前后置摄像头切换进行拍照、录像&#xff0c;以及对焦、曝光等控制类功能。 效果预览 使用说明 弹出是否允许“CameraSample”使用相机&#xff1f;…...

【java基础】徒手写Hello, World!程序

文章目录 前提&#xff1a;java环境变量配置使用vscode编写helloworld解析 前提&#xff1a;java环境变量配置 https://blog.csdn.net/xzzteach/article/details/140869188 使用vscode编写helloworld code .为什么用code看下图 报错了&#xff01;&#xff01;&#xff01;&…...

对 vllm 与 ollama 的一些研究

今天咱们来聊聊 vllm 和 ollama 这两个听起来就挺酷的玩意儿。这俩都是现在 AI 圈子里的大明星&#xff0c;专门用来让那些超大型的 AI 模型跑得更顺溜。 先说说 vllm 吧&#xff0c;这家伙的绝活儿是剪枝。啥叫剪枝呢&#xff1f;想象一下&#xff0c;你有个花园&#xff0c;…...

浅谈基础的图算法——强联通分量算法(c++)

文章目录 强联通分量SCC概念例子有向图的DFS树代码例题讲解[POI2008] BLO-Blockade题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 思路AC代码 【模板】割点&#xff08;割顶&#xff09;题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示…...

C#:通用方法总结—第13集

大家好&#xff0c;今天继续讲解我们的通用方法系列。 下面是今天要介绍的通用方法&#xff1a; &#xff08;1&#xff09;这个通用方法为ug获取选择圆边的圆心 /// <summary> /// ug获取选择圆边的圆心 /// </summary> /// <param name"a">&l…...

AI答题应用平台相关面试题

目录 1、请介绍整个系统后端的架构设计&#xff0c;有哪些模块以及各模块之间的关系&#xff1f; 2、你在项目中是如何设计库表的&#xff1f;可以从字段、索引、关联等方面回答。 3、为什么使用策略模式来封装不同的应用评分算法&#xff1f;它有哪些好处&#xff1f;具体如…...

树莓派NAS系统搭建教程:使用Flask和SQLite实现HTTP/HTTPS文件管理(代码示例)

一、项目概述 随着物联网&#xff08;IoT&#xff09;技术的发展&#xff0c;数据存储和共享需求日益增长。本文将介绍如何利用树莓派&#xff08;Raspberry Pi&#xff09;搭建一个网络附加存储&#xff08;NAS&#xff09;系统&#xff0c;以实现数据的集中管理、共享和访问…...

mysql如何储存大量数据,分库存分表的建议和看法

MySQL 在处理大量数据时&#xff0c;分库分表是常见的策略&#xff0c;可以有效提升数据库的性能和扩展性。下面是关于 MySQL 分库分表的建议和看法&#xff1a; 1. 何时考虑分库分表 数据量大&#xff1a;当单一数据库实例无法处理大规模数据或达到性能瓶颈时&#xff0c;可以…...

Golang | Leetcode Golang题解之第310题最小高度树

题目&#xff1a; 题解&#xff1a; func findMinHeightTrees(n int, edges [][]int) []int {if n 1 {return []int{0}}g : make([][]int, n)deg : make([]int, n)for _, e : range edges {x, y : e[0], e[1]g[x] append(g[x], y)g[y] append(g[y], x)deg[x]deg[y]}q : []i…...

【面试系列】软件架构师 高频面试题及详细解答

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...

二百五十四、OceanBase——Linux上安装OceanBase数据库(四):登录ocp-express,配置租户管理等信息

一、目的 在部署OceanBase成功后&#xff0c;接下来就是登录ocp-express&#xff0c;配置租户管理等信息&#xff01; 二、ocp-express网址以及账密信息 三、实施步骤 1 登录ocp-express 2 集群总览 3 租户管理 3.1 新建租户 3.2 配置新租户信息 剩下的几个模块了解即可&am…...

HCIP学习作业一 | HCIA复习

要求&#xff1a; R1-R2-R3-R4-R5 RIP 100 运行版本2 R6-R7 RIP 200 运行版本1 1.使用合理IP地址规划网络&#xff0c;各自创建环回接口 2.R1创建环回 172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3.要求R3使用R2访问R1环回 4.减少路由条目数量&#xff0c;R1-R2之间…...

OCR图片矫正、表格检测及裁剪综合实践

问题描述 实际工程中&#xff0c;我们经常需要对图片进行预处理&#xff0c;比如&#xff1a; 1、图片是倾斜的 2、图片背景需要处理掉 3、图片的公章需要剔除 4、图片过暗&#xff0c;过亮 5、图片表格检测 6、图片表格版面分析 。。。。。。等等各种情况。 结果展示…...

c++ 容器 vector

vector的意思就是向量&#xff0c;就是一个顺序表的意思&#xff0c;这个顺序表可以存任意的类型&#xff0c;因为其线性的内存特点&#xff0c;所以在stl里是经常被使用的存在。 vector vector既然要能储存任意的变量&#xff0c;那么就必须使用模板: 这里的T就是变量类型&a…...

零基础部署Minecraft到云服务器上教程

零基础部署Minecraft到云服务器上教程 温馨提示 温馨提示 本教程是由博主个人飞书上直接复制下来&#xff0c;观感较差&#xff0c;请下载本教程对应的pdf资源文件进行查看&#xff08;在最顶端&#xff0c;不过恳请各位留下一个赞再走吧&#xff09;。本教程不包含云服务的购…...