【学习笔记】计算机组成原理(八)

CPU 的结构和功能

文章目录

  • CPU 的结构和功能
    • 8.1 CPU的结构
      • 8.1.1 CPU的功能
      • 8.1.2 CPU结构框图
      • 8.1.3 CPU的寄存器
      • 8.1.4 控制单元CU和中断系统
    • 8.2 指令周期
      • 8.2.1 指令周期的基本概念
      • 8.2.2 指令周期的数据流
    • 8.3 指令流水
      • 8.3.1 指令流水原理
      • 8.3.2 影响流水线性能的因素
      • 8.3.3 流水线性能
      • 8.3.4 流水线中的多发技术
      • 8.3.5 流水线结构
    • 8.4 中断系统
      • 8.4.1 概述
        • 8.4.1.1 引发中断的因素
        • 8.4.1.2 中断系统需解决的问题(功能)
      • 8.4.2 中断请求标记和中断判优逻辑
        • 8.4.2.1 中断请求标记
        • 8.4.2.2 中断判优逻辑
      • 8.4.3 中断服务程序入口地址的寻找
      • 8.4.4 中断响应
        • 8.4.4.1 响应中断的条件
        • 8.4.4.2 响应中断的时间
        • 8.4.4.3 中断隐指令
      • 8.4.5 保护现场和恢复现场
      • 8.4.6 中断屏蔽技术 - 多重中断
        • 8.4.6.1 多重中断的概念
        • 8.4.6.2 实现多重中断的条件
        • 8.4.6.3 (中断)屏蔽技术
        • 8.4.6.4 多重中断的断点保护

8.1 CPU的结构

8.1.1 CPU的功能

  • 控制器的功能
    • 取指令:把指令从内存中取出
    • 分析指令:分析指令包括两部分内容:其一,分析此指令要完成什么操作,即控制器需发出什么操作命令;其二,分析参与这次操作的操作数地址,即操作数的有效地址。
    • 执行指令:根据分析指令产生的“操作命令"和“操作数地址”的要求,形成操作控制信号序列(不同的指令有不同的操作控制信号序列),通过对运算器、存储器以及I/O设备的操作,执行每条指令。
    • 控制程序的输入以及结果的输出
    • 总线的管理
    • 处理异常情况和特殊请求
  • 运算器的功能:实习算术运算和逻辑运算
  • CPU的功能需求:
    • 具有控制程序的顺序执行(称指令控制)
    • 产生完成每条指令所需的控制命令(称操作控制)
    • 对各种操作加以时间上的控制(称时间控制)
    • 对数据进行算术运算和逻辑运算(数据加工)
    • 处理中断

8.1.2 CPU结构框图

  • CPU与系统总线

在这里插入图片描述

8.1.3 CPU的寄存器

  • 用户可见寄存器

    • 通用寄存器

      存放操作数,如8086系统中的AX、BX…
      也可以做某种寻址方式所需要的专用寄存器。

    • 数据寄存器

      存放操作数,满足各种数据类型,如整型数据的寄存器、浮点数类型的寄存器…
      两个寄存器拼接存放双倍字长数据,例如在乘法操作时,就将ACC与MQ拼接在一起,保存相乘后的积。

    • 地址寄存器

      存放地址,其位数应满足最大的地址范围。如8086系统中的段寄存器,如段基址、栈指针。

    • 条件码寄存器

      存放条件码,可作程序分支依据。如正、负、零、溢出、进位等。

  • 用户不可见寄存器

    • 控制寄存器

      在这里插入图片描述

    • 状态寄存器

      反映指令执行结果的情况、计算机软件硬件状态。

      状态寄存器和条件码寄存器类似 —— 用于存放条件码

      PSW寄存器:程序状态字寄存器,用于存放程序状态字。

      程序状态字:在中断或者是子程序调用过程当中,为了能够使程序正确的返回断点,返回断点后能够继续执行给定的程序,在中断或者转子程序之前,就要保存主程序的运行现场和程序断点,这些运行现场和断点包括了程序运行的软件信息和硬件信息,这些信息保存在寄存器当中,有些表示程序运行状态的寄存器可以通过指令集当中的指令进行读/写,有一些不能通过指令集中的指令进行读,因为涉及到的状态比较多,如果为每一个状态都设计一条指令来进行读,则指令集会变得非常庞大。
      为了完成程序现场和程序断点的保存,就将这些软硬件状态相关的寄存器集合成一个大的寄存器,这个寄存器就是程序状态字,程序状态字比较长,有些程序状态字可以达到几千位。
      可以通过交换程序状态字的方式,来完成程序现场的切换,使得程序中断当中,保存程序断点以及恢复程序断点比较容易。

8.1.4 控制单元CU和中断系统

  • 控制单元CU

    • 产生全部指令的微操作命令序列。任何一条指令,要在CPU上执行,CPU要对指令进行译码,根据这是什么样的指令,完成对应的功能,要产生完成这些功能需要的微操作命令,并且保证这些命令的顺序。
    • CU有两种设计方式
      • 组合逻辑设计,完全由组合逻辑硬件(硬连线逻辑)来实现,这种方式速度快,如RISC计算机控制器的实现都是采用硬连线逻辑。
      • 微程序设计,采用存储逻辑进行设计,设计简单,适用于复杂功能的指令的设计。
  • 中断系统

    详细内容在8.4节

8.2 指令周期

8.2.1 指令周期的基本概念

  • 指令周期

    取出并执行一条指令所需的全部时间(解释一条指令需要的全部时间)

    在这里插入图片描述

    在这里插入图片描述

8.2.2 指令周期的数据流

  • 取值周期的数据流

    在这里插入图片描述

  • 间址周期的数据流

    在这里插入图片描述

  • 执行周期的数据流

    不同指令的执行周期的执行数据流不同。详细见第九章。

  • 中断周期的数据流

    在这里插入图片描述

8.3 指令流水

  • 提高机器速度

    • 提高访存速度

      • 使用高性能/高速度芯片
      • 使用Cache
      • 使用多体并行:对多个存储体进行交叉访问,在一个存储周期当中,有多个存储体可以向CPU提供数据(CPU可以向同时取得多个存储体数据)。
    • 提高I/O与主机之间的传送速度

      • 程序查询方式(CPU 和 I/O 串行工作 )→ 程序中断方式 → DMA → 通道 → I/O处理机
      • 使用多总线方式进行传送
    • 提高运算器的速度

      • 使用高性能芯片
      • 改进算法
      • 快速进位链
    • 为了提高整机处理能力,除了使用高速部件之外,还可以改进系统结构(处理器的体系结构),开发系统的并行性。

  • 系统的并行性

    • 并行 - 时间上互相重叠

      • 并发 两个或两个以上事件在同一时间段发生
      • 同时两个或两个以上事件在同一时刻发生
    • 并行性的等级

      • 过程级(程序、进程) 粗粒度 软件实现
      • 指令级ILP 细粒度 硬件实现
        • (指令之间) 两条或多条指令之间,在同一时刻都处于被解释的状态
        • (指令内部) 指令内部的操作、微操作之间并行的操作。

8.3.1 指令流水原理

在这里插入图片描述

8.3.2 影响流水线性能的因素

  • 结构相关 —— 不同指令争用同一功能部件产生资源冲突。

    在这里插入图片描述

  • 数据相关 —— 不同指令因重叠操作,可能改变操作数的读/写访问顺序。

    在这里插入图片描述

  • 控制相关 —— 由转移指令引起

    在这里插入图片描述

8.3.3 流水线性能

单位时间内流水线所完成的指令或者输出结果的数量。

​ 设 m 段流水线各段时间为 Δt

  • 最大吞吐率

    流水线满负荷运转,没有各种阻碍流水线性能因素的影响(结构相关、数据相关、转移等)所能达到的最大的吞吐率是多少,即流水线在连续流动达到稳定状态后所获得的吞吐率。

T p m a x = 1 Δ t \mathrm{T}_{pmax} = \frac{1}{\Delta{t}} Tpmax=Δt1

  • 实际吞吐率

    实际上由于流水线在开始时有一段建立时间、结束时有一段排空时间以及各种相关因素使流水线无法连续流动,所以实际吞吐率总是小于最大吞吐率。

    流水线满负荷运转,一段时间内,完成的指令条数n除以完成这些指令花费的时间。
    T p = n m ⋅ Δ t + ( n − 1 ) ⋅ Δ t = 1 Δ t ⋅ [ 1 + m − 1 n ] = T p m a x 1 + m − 1 n \mathrm{T}_{p} = \frac{n}{{m}\cdot\Delta{t} + (n-1)\cdot\Delta{t}} = \frac{1}{\Delta{t}\cdot\left[ 1 + \frac{m-1}{n}\right]} = \frac{\mathrm{T}_{pmax}}{1 + \frac{m-1}{n}} Tp=mΔt+(n1)Δtn=Δt[1+nm1]1=1+nm1Tpmax

    例如 一条指令分为 m = 6 段,总共 n = 9 条指令 第一条指令花费时间是 6Δt,总共是 6 Δ t + ( 9 − 1 ) Δ t = 14 Δ t 6\Delta{t} + (9-1)\Delta{t} = 14\Delta{t} t+(91)Δt=14Δt 那么实际吞吐率为 9 14 Δ t \frac{9}{14 \Delta{t}} 14Δt9

    仅当 n ≫ m n \gg m nm (n 远大于m)时,才会有 T p ≈ T p m a x \mathrm{T}_{p} \approx \mathrm{T}_{pmax} TpTpmax
    lim ⁡ n − m → + ∞ T p = lim ⁡ n − m → + ∞ n m ⋅ Δ t + ( n − 1 ) ⋅ Δ t = T p m a x \lim_{n-m \to +\infty}\mathrm{T}_{p} = \lim_{n-m \to +\infty} \frac{n}{m\cdot\Delta{t} + (n-1)\cdot\Delta{t}} = \mathrm{T}_{pmax} nm+limTp=nm+limmΔt+(n1)Δtn=Tpmax

  • 加速比 Sp

    m段流水线采用流水线技术和不采用流水线技术两种方法速度的比值,用来衡量流水线的效果。

    完成n条指令在m段流水线上共需
    T = m ⋅ Δ t + ( n − 1 ) ⋅ Δ t T = {m}\cdot\Delta{t} + (n-1)\cdot\Delta{t} T=mΔt+(n1)Δt
    完成n条指令在等效的非流水线上共需
    T ′ = n ⋅ m ⋅ Δ t T' = {n}\cdot{m}\cdot\Delta{t} T=nmΔt
    则加速比
    S p = T ′ T = n ⋅ m ⋅ Δ t m ⋅ Δ t + ( n − 1 ) ⋅ Δ t = n ⋅ m m + ( n − 1 ) = m 1 + m − 1 n S_p = \frac{T'}{T} = \frac{{n}\cdot{m}\cdot\Delta{t}}{{m}\cdot\Delta{t} + (n-1)\cdot\Delta{t}} = \frac{{n}\cdot{m}}{m + (n-1)} = \frac{m}{1 + \frac{m-1}{n}} Sp=TT=mΔt+(n1)ΔtnmΔt=m+(n1)nm=1+nm1m
    可以看出, 在 n ≫ m n \gg m nm (n 远大于m)时, Sp 接近于m, 即当流水线各段时间相等时,其最大加速比等于流水线的段数。
    lim ⁡ n − m → + ∞ S p = lim ⁡ n − m → + ∞ n ⋅ m ⋅ Δ t m ⋅ Δ t + ( n − 1 ) ⋅ Δ t = m \lim_{n-m \to +\infty}\mathrm{S}_{p} = \lim_{n-m \to +\infty} \frac{{n}\cdot{m}\cdot\Delta{t}}{m\cdot\Delta{t} + (n-1)\cdot\Delta{t}} = m nm+limSp=nm+limmΔt+(n1)ΔtnmΔt=m

  • 效率 E
    E = n ⋅ m ⋅ Δ t m ⋅ ( m + n − 1 ) = n m + n − 1 = S p m = T p ⋅ Δ t E = \frac{{n} \cdot {m} \cdot \Delta {t}}{{m} \cdot {(m+n-1)}} = \frac{n}{m+n-1} = \frac{S_p}{m} = T_p \cdot \Delta{t} E=m(m+n1)nmΔt=m+n1n=mSp=TpΔt

    在这里插入图片描述

8.3.4 流水线中的多发技术

  • 超标量技术

    在这里插入图片描述

  • 超流水线技术

    在这里插入图片描述

  • 超长指令字技术

    在数字信号处理,多媒体信号处理中,用的非常广泛,由编译程序挖掘出指令间潜在的并行性(根据计算机当中执行部件的种类和数量来决定), 另外指令之间不能有相关性,编译器找到了这些可以并行执行的指令,然后将这些指令组合成 一条具有多个操作码字段的超长指令字(可达几百位,包括多个操作码字段,多个操作数字段),这条指令被从计算机的内存中取出,多个操作码字段进行译码,多个并行的部件分别执行相应的操作。
    这种方式减少了取指时间,因为每次取出多条指令

    在这里插入图片描述

  • 对比

    在这里插入图片描述

8.3.5 流水线结构

  • 指令流水线

    在这里插入图片描述

  • 运算流水线

    在这里插入图片描述

8.4 中断系统

8.4.1 概述

8.4.1.1 引发中断的因素

在这里插入图片描述

8.4.1.2 中断系统需解决的问题(功能)
  • 各中断源如何向CPU提出中断请求
  • 有多个中断源同时提出请求怎么办
  • 有中断源提出中断请求,CPU什么条件、什么时间、以什么方式响应中断
  • 如何保护断点、现场
  • 如何寻找中断服务程序入口地址
  • 如何恢复现场、断点
  • 如果在处理中断的过程当中又出现了新的中断怎么办

用软件+硬件的方式来实现中断系统需要的功能

​ 不同的计算机对中断系统的软硬件功能的划分是不一样的主要依据于要设计的中断系统的速度、设计的复杂度和设计的灵活性这三个方面考量折中。

8.4.2 中断请求标记和中断判优逻辑

8.4.2.1 中断请求标记

每一个中断源设计一个触发器INTR,用这个触发器来标记这个中断源是否提出了中断请求,每一个中断源对应都一个中断请求标志触发器,多个中断源对应的多个中断请求标志触发器从逻辑上组成中断请求标志寄存器。

在这里插入图片描述

8.4.2.2 中断判优逻辑

如果有多个中断源同时提出中断请求,需要响应最重要的那个,所以要把中断源根据重要性进行分级,即中断源的优先级。用中断判优逻辑来确定在现有的的中断请求源当中哪个优先级最高,就响应哪个中断。

  • 硬件实现(排队器)

    在现代计算机当中,大部分CPU都是用硬件来实现中断判优逻辑

在这里插入图片描述

  • 软件实现(程序查询)

    在这里插入图片描述

8.4.3 中断服务程序入口地址的寻找

  • 硬件向量法

    在这里插入图片描述

    硬件实现速度快,但是设计的灵活性比较低。

  • 软件查询法

    在这里插入图片描述

    软件的方法显然更加灵活,如果想改变中断服务的优先级,就改变中断识别程序的顺序即可

8.4.4 中断响应

8.4.4.1 响应中断的条件

并不是中断源提出中断服务请求CPU就要立即响应,为了表示CPU是否允许响应中断请求,CPU内部有一个EINT允许中断触发器,只有EINT = 1的时候,才会响应中断请求。

CPU只能支持单重中断

单重中断在CPU执行中断服务程序的过程中不能被打断。当有新的更高优先级的中断发生时,正在执行的中断服务程序不会被暂停,转而执行新的中断服务程序。

8.4.4.2 响应中断的时间

不是任何时间

  • 一般的机器CPU只有在指令执行阶段结束以后才能响应中断请求。
  • 有些计算机某些指令比较复杂,执行时间可能比较长,为了能够及时处理异常事件,允许CPU在执行指令的过程中进行中断响应。通常情况下在指令执行结束之后

在指令执行时中断,破坏执行状态,需要保存的现场数据更多,而且恢复现场后还需要重新执行指令,浪费之前指令的执行时间。

在这里插入图片描述

8.4.4.3 中断隐指令

隐指令是指以下面的三个步骤是由硬件完成的的,并不是在某一条具体指令的驱动下完成的

隐指令并不是计算机指令集中的一条,但是在执行响应中断的时候,这些硬件操作都要进行。

CPU响应中断后,即进入中断周期。在中断周期内,CPU要自动完成一系列操作,具体如下:

  • 保护程序断点

    程序断点就是中断服务程序结束之后,返回的源程序要执行指令的地址,就是一个地址。

    有两种办法保护断点:

    • 断点存于特定地址(比如0号地址)内,这个地址是内存的一块存储单元
    • 断点进栈,返回的时候出栈即可
  • 寻找服务程序入口地址

    有两种办法形成服务程序入口地址:

    • 向量地址 → PC(硬件向量法),向量地址包含了中断服务程序的入口地址,或者跳转指令
    • 中断识别程序 入口地址 M → PC(软件查询法)
  • 硬件关中断

    为了避免在单重中断的计算机中,在执行中断服务程序的过程中,有新的中断源发出中断请求,打断当前中断服务程序的执行。
    即使在多重中断中 也要在 保护程序断点和现场的时候关中断。

    关中断就是将 EINT(中断允许触发器) 置为0

    在这里插入图片描述

8.4.5 保护现场和恢复现场

  • 保护现场

    • 保存断点 —— 中断隐指令完成
    • 保存寄存器内容 —— 中断服务程序完成 (CPU中的寄存器在执行中断服务程序的时候也会用到,这些内容在将来进行中断返回的时候主程序还要用到)
  • 恢复现场 —— 中断服务程序完成

    在这里插入图片描述

8.4.6 中断屏蔽技术 - 多重中断

8.4.6.1 多重中断的概念

CPU在执行中断服务程序的过程中,有新的中断源提出请求并且新的中断请求的优先级大于当前请求,就要进行响应

在这里插入图片描述

8.4.6.2 实现多重中断的条件

在这里插入图片描述

8.4.6.3 (中断)屏蔽技术
  • 屏蔽

使用屏蔽技术,通过设置中断屏蔽字,来改变优先级,从而提高系统设计和响应的灵活性。中断屏蔽字就分散保存在中断屏蔽触发器中(硬件保存)。所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容即中断屏蔽字。屏蔽字与中断源的优先级别是一一对应的。

在这里插入图片描述

  • 屏蔽字

    在这里插入图片描述

  • 屏蔽技术可改变处理优先等级

    中断的优先级分为响应优先级和处理优先级:

    • 响应优先级:中断响应优先级是针对同时到达的中断请求先处理谁的规定。比如A、B同时向CPU发出中断请求,而中断响应优先级是A>B,那么CPU就会先处理A,再处理B。不能改变,这是由硬件电路决定的。

    • 处理优先级:处理优先级是指CPU 实际对各中断源请求的处理优先次序。如果不采用屏蔽技术,响应的优先次序就是处理的优先次序。比如A、B两个中断的中断处理优先级是B>A,如果当CPU正在处理中断请求A时,B向CPU发送了中断请求,那么CPU会先暂停处理A,转而处理B,B结束后再继续处理A。可改变,通过设置中断屏蔽字,让一些响应高优先级的中断源的请求不能参与排队来重新设置处理优先级。

      在这里插入图片描述

  • 新屏蔽字的设置

    在这里插入图片描述

8.4.6.4 多重中断的断点保护
  • 断点可以保存到两种地方

    • 断点进栈。
    • 断点存入“0”地址,此处的0打引号,并不是真正的物理地址的0地址,而是指定的一个地址

    这两个都是由中断隐指令完成

  • 在中断周期(也就是解释指令周期的最后一个阶段),要做以下工作

    • 保存断点 0 → MAR(假设保存到到0地址,将0送到MAR)
    • 命令存储器写
    • PC → MDR;PC中保存着断点,将断点给MDR
    • (MDR) → 存入存储器
  • 在多重中断中,存在问题:后面的断点会把前面保存的断点覆盖掉

    在这里插入图片描述

参考:
教材:计算机组成原理 (唐朔飞).pdf

博客:https://blog.csdn.net/weixin_51825055/article/details/133531876

视频:https://www.bilibili.com/video/BV1t4411e7LH?p=116&vd_source=a89593e8d33b31a56b894ca9cad33d33

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【错误记录】HarmonyOS 运行报错 ( Failure INSTALL _PARSE _FAILED _USESDK _ERROR )

文章目录 一、报错信息二、问题分析三、解决方案 一、报错信息 在 DevEco Studio 中 , 使用 远程设备 , 向 P40 Failure[INSTALL_PARSE_FAILED_USESDK_ERROR] compileSdkVersion and releaseType of the app do not match the apiVersion and releaseType on the device. 二、…

Filebeat进阶指南:核心架构与功能组件的深度剖析

🐇明明跟你说过:个人主页 🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是ELK 2、FileBeat在ELK中的角色 二、Fil…

前端渲染页面的原理

之前一直不愿意写一篇关于原理的,因为说起来实在是太繁杂,要写得细,码字梳理,计算下来起码都要差不多三周。以前一直躲避这个事情,现在反正有时间,为了不荒废自己,那就从头捋一遍。也方便自己后…

刷代码随想录有感(81):贪心算法——分发饼干

题干&#xff1a; class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(), g.end());sort(s.begin(), s.end());int index s.size() - 1;int res 0;for(int i g.size() - 1; i > 0; i--){if(index >…

MyBatis学习笔记(周五前学完)

MyBatis-Plus是一个MyBatis的增强工具。在MyBatis的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。 通过MyBatis-Plus来进行数据插入时&#xff0c;它默认会 使用雪花算法来生成id&#xff0c;长度比较长 增删改的返回值都是统一的&#xff0c;影响的只有行数。…

react ant 表格实现 拖拽排序和多选

项目背景 : react ant 要实现 : 有多选功能(实现批量删除 , 也可以全选) 可以拖拽(可以复制 , 方便顶部的搜索功能) 要实现效果如下 1 这是最初的拖拽功能实现 , 不能复制表格里的内容 , 不符合要求 2 更改了ROW的内容 , 实现了可以复制表格内容 代码 //控制是否可以选中表格…

Petalinux 制作ZYNQ镜像文件流程

1概述 在Zynq-7000 SoC中搭建运行Linux&#xff0c;嵌入式软件栈。 处理器系统引导是一个分两个阶段的过程。第一个阶段是一个内部 BootROM&#xff0c;它存储 stage-0 的引导代码。BootROM 在 CPU 0 上执行&#xff0c;CPU 1 执行等待事件&#xff08;WFE&#xff09;指令。…

english语法

从句&#xff1a;简单句连词 介词

PaddleSeg训练推理及模型转换全流程

文章目录 1、数据准备1.1 数据标注1.2 数据导出1.3 标签较验1.4 数据集整理1.5 标签可视化 2、 模型训练3、模型验证4、模型推理5、模型导出6、导出文件的推理7、将模型转换成onnx8、使用onnx进行推理 本文记录一下使用paddleseg进行语议分割模型对人体进行分割的使用流程。事实…

基础8 探索JAVA图形编程桌面:邮件操作组件详解

在一个静谧的午后&#xff0c;卧龙和凤雏相邀来到一家古朴典雅的茶馆。茶馆内环境清幽&#xff0c;袅袅的茶香与悠扬的古筝声交织在一起&#xff0c;营造出一种宁静而祥和的氛围。 卧龙和凤雏坐在茶馆的一角&#xff0c;面前的桌子上摆放着一套精致的茶具。茶香四溢&#xff0c…

科技查新是什么?一文了解!

本文主要解答 1、什么是科技查新&#xff1f; 2、科技查新有哪些作用&#xff1f; 3、科技查新一般应用于什么地方&#xff1f; 4、在哪能出具正规查新报告&#xff1f; 5、科技查新流程是怎样的&#xff1f; 带着这些问题阅读这篇文章相信一定会有收获&#xff01;干活内…

第十三届蓝桥杯国赛大学B组填空题(c++)

A.2022 动态规划 AC; #include<iostream> #define int long long using namespace std; int dp[2050][15]; //dp[i][j]:把数字i分解为j个不同的数的方法数 signed main(){dp[0][0]1;for(int i1;i<2022;i){for(int j1;j<10;j){//一种是已经分成j个数,这时只需每一个…

服务器上创建搭建gitlab

一、下载与安装 在主目录操作~ 1.使用wget下载 wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.0.1-ce.0.el7.x86_64.rpm 可以在开源软件镜像站选择合适的版本&#xff0c;版本不同页面菜单会稍有差异&#xff0c;此次选…

【云原生 | 59】Docker中通过docker-compose部署ELK

目录 1、组件介绍 2 、项目环境 2.1 各个环境版本 2.2 Docker-Compose变量配置 2.3 Docker-Compose服务配置 3、在Services中声明了四个服务 3.1 ElasticSearch服务 3.2 Logstash服务 3.3 Kibana服务 3.4 Filebeat服务 4、使用方法 4.1 方法一 4.2 方法二 5、启动…

想让企业“火力全开”?找六西格玛培训公司就对了!

在如今的市场环境中&#xff0c;企业面临着不断变化的挑战和无限的可能。要在这场竞争中独领风骚&#xff0c;实现稳健的增长&#xff0c;六西格玛作为一种以数据驱动的管理理论&#xff0c;提供了实际可行的解决方案。六西格玛培训公司&#xff0c;作为这一领域的专家&#xf…

element ui 的密码输入框点击显示隐藏密码时,图标随之改变

场景图&#xff1a; 原理&#xff1a; 通过修改el-input框的type属性&#xff0c;来设置显示或者隐藏。从而改变图标地址。 <el-input class"passwordinput" :type"pwdObj.pwdType" ref"pwdInput" placeholder"密码"v-model"…

VirtualBox虚拟机与bhyve虚拟机冲突问题解决@FreeBSD

问题 在安装完bhyve虚拟系统的主机上启动VirtualBox虚拟机的时候&#xff0c;报错&#xff1a;不能为虚拟电脑 debian 打开一个新任务. VirtualBox cant operate in VMX root mode. Please close all other virtualization programs. (VERR_VMX_IN_VMX_ROOT_MODE). 返回 代码…

【源码】【海外客服】简洁版海外客服系统/在线客服系统/即时聊天通讯源码

1&#xff0c;此版本采用前台一人或多人与后台一人&#xff08;管理员&#xff09;进行会话模式 2&#xff0c;此版本前后台只能发送文字和图片&#xff08;图片是选择后自动发送&#xff09; 3&#xff0c;前后台根据IP来识别不同的会话者 4&#xff0c;前台发起会话后&…

CSS(七)

文章目录 CSS&#xff08;七&#xff09;1. 精灵图&#xff08;重点&#xff09;1.1 为什么需要精灵图1.2 精灵图&#xff08;sprites&#xff09;的使用1.3 案例&#xff1a;拼出自己名字1.3.1 案例效果1.3.2 代码参考 2. 字体图标2.1 字体图标的产生2.2 字体图标的优点**2.3*…

57. UE5 RPG 处理AI敌人转向以及拾取物品的问题

在上一篇文章中&#xff0c;我们实现了使用AI行为树控制敌人进行移动&#xff0c;它们可以一直跟随玩家&#xff0c;虽然现在还未实现攻击。但在移动过程中&#xff0c;我发现了有两个问题&#xff0c;第一个是敌人转向的时候很僵硬&#xff0c;可以说是瞬间转向的&#xff0c;…