中央处理器CPU(1)----指令周期和微程序

前言:由于期末复习计算机组成效率太慢所以抽时间写一下文章总结一下思路,理解不是很深,欢迎各位不吝赐教。

由于时间不是很充分,所以有些考点由于我们不考试,一笔带过了。

我这是期末复习总结,不是考研知识总结。内容难免有些不严谨,不要喷我!!!!

                                                                           -------计算机组成原理第6版(白中英)

🎵1.计算机心脏-CPU

中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

一般CPU包括运算器和控制器两部分组成。如今的CPU还有加上cache。

🌈1.1为何设计CPU?

  • 众所周知:计算机设置中央处理器(CPU)的目的是为了执行计算机程序的指令,处理数据,并协调和控制整个计算机系统的操作等等等等。。。。
  • 众所周知:CPU包括运算器和控制器。
  • 众所周知:CPU是计算机的大脑。

那是先有运算器和控制器还是先有CPU?

  1. 早期的计算机是基于物理电路实现的,它们使用硬连线方式来控制数据流和执行指令。控制器负责解码指令、控制数据的流动、协调各个部件的操作,并确保指令按照正确的顺序执行。控制器的设计是为了实现计算机的控制逻辑和指令执行流程。
  2. 随着计算机的发展,运算器(Arithmetic Logic Unit,ALU)的概念出现了。运算器是负责执行算术和逻辑运算的部件,它与控制器共同组成了现代计算机的中央处理器(CPU)。
  3. 因此,控制器的概念比运算器和CPU更早出现。在计算机的发展过程中,控制器和运算器逐渐结合和集成,形成了现代CPU的概念。现代CPU包括了控制器和运算器等多个功能单元,用于执行指令、处理数据和控制计算机的各个部件。

🌈1.2CPU的形成

  • 冯诺依曼体系下的计算机包括:运算器,存储器,控制器,适配器(输入,输出设备),里面可没有中央处理器,但是CPU已经逐步形成了。
  • 所以早期的计算机系统主要由运算器和存储器组成运算器负责执行算术和逻辑运算,而存储器用于存储数据和指令。这些早期的计算机系统通常是基于固定线路的硬布线计算机,没有像现代CPU那样的可编程特性。
  • 随着计算机技术的发展,人们开始意识到将运算器和存储器集成到一个单一的芯片中,形成了中央处理器(CPU)。CPU不仅包含运算器和存储器,还包括控制单元、寄存器和总线接口等组件。

1.21CPU的形成历史(了解) 

  1. 早期计算机: 在早期的计算机中,CPU的概念尚未成形。计算机系统由运算器(执行算术和逻辑运算)和控制器(解析和执行指令)组成,这些组件通常是硬布线的,缺乏可编程性和灵活性。

  2. 冯·诺依曼体系结构: 在冯·诺依曼体系结构的提出中,CPU的概念开始形成。冯·诺依曼体系结构将程序和数据存储在同一存储器中,并提出了按照顺序执行指令的概念。这为CPU的设计提供了框架,包括指令获取、解析和执行等功能。

  3. 单指令流水线(SISD): 20世纪60年代,出现了单指令流水线(Single Instruction Stream, Single Data Stream,SISD)的CPU设计。这种设计将指令的执行过程划分为多个阶段,并在不同的时钟周期中执行不同的指令阶段。这提高了指令的吞吐量和CPU的效率。

  4. 微处理器的出现: 1971年,英特尔公司推出了第一款微处理器Intel 4004,它集成了运算器、控制器和存储器等功能于一颗芯片中。微处理器的出现将整个CPU集成到一个芯片中,大大提高了计算机的集成度和性能。

  5. 复杂指令集计算机(CISC)和精简指令集计算机(RISC): 20世纪70年代和80年代,出现了两种不同的指令集架构,即复杂指令集计算机(Complex Instruction Set Computer,CISC)和精简指令集计算机(Reduced Instruction Set Computer,RISC)。CISC设计追求指令集的丰富性和复杂性,而RISC设计则倾向于简化指令集,提高指令执行的效率。这两种设计思想影响了CPU的架构和设计。

  6. 多核处理器: 进入21世纪,随着技术的进步,多核处理器开始兴起。多核处理器将多个CPU核心集成到同一个芯片上,可以同时执行多个线程和任务,提高计算机的并行处理能力。

 🌈1.3CPU的功能

  1. 指令控制:完成取指令、分析指令和执行指令的操作,即程序的顺序控制。
  2. 操作控制:一条指令的功能往往是由若干操作信号的组合来实现。CPU管理并产生由内存取出的每条指令的操作信号,把各种操作信号送往相应的部件,从而控制这些部件按指令的要求进行动作。
  3. 时间控制:对各种操作加以时间上的控制。时间控制要为每条指令按时间顺序提供应有的控制信号。
  4. 数据加工:对数据进行算术和逻辑运算。
  5. 中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理。 

🐠1.31运算器,控制器组成

控制器:程序计数器指令寄存器指令译码器时序产生器操作控制器组成,它是发布命令的决策机构。

运算器:算数逻辑运算单元ALU通用寄存器数据缓冲寄存器程序状态字寄存器组成,是数据加工处理部件。

👿为什么CPU也包括运算器? 

控制器才是CPU的精髓,那CPU只包括控制器不就行了,这样芯片就更小了,或者把运算器的地方给cache不是更合适?

当控制器从主存储器中获取指令后,它会解析指令的操作码和操作数字段,并生成相应的控制信号。这些控制信号会被发送给运算器和其他功能部件,以指示它们执行特定的操作。

一旦控制器解析指令并生成控制信号,它将控制信号发送给运算器。运算器根据接收到的控制信号执行指令中的算术和逻辑运算。

但是当运算器位于CPU外部时,控制器无法直接发送控制信号给运算器,因为它们不再共享内部总线。相反,控制器会将控制信号发送到外部总线上,然后通过外部总线传输到运算器。将运算器迁移到CPU外部可能会引入额外的延迟和性能损失,因为与内部总线相比,外部总线往往速度较慢。所以运算器也会在CPU上面

👿1.32运算器,控制器功能 

👿1.33CPU基本结构

 上图左面是运算器,右面是控制器。里面我就不再一一介绍了,看不懂的考试了也不会,看得懂的我介绍的还不一定有你们知道得多!!!

 👿1.34CPU主要寄存器

1. 数据寄存器(DR)
又称数据缓冲寄存器,用来暂时存放非ALU的运算结果,或由数据存储器读出来的一个数据字。

数据寄存器的作用是 :

(1)作为ALU运算结果和通用寄存器之间信息传送时间上的缓冲。

(2)弥补CPU和主存、外围设备之间在操作速度上的差别;

2. 指令寄存器(IR)
指令寄存器用来保存当前正在执行的一条指令。

当执行一条指令时,首先把该指令从主存读取到数据寄存器中,然后再传送至指令寄存器。

3. 程序计数器(Program Counter,PC)
程序计数器用来指出下一条指令在主存储器中的地址。

  1. 在程序执行之前,首先必须将程序的首地址,即程序第一条指令所在主存单元的地址送入PC,因此PC的内容即是从主存提取的第一条指令的地址。
  2. 程序计数器确定了指令的执行顺序。它存储了下一条要执行的指令的内存地址。当当前指令执行完毕后,程序计数器会自动递增,指向下一条要执行的指令的地址。这样,CPU能够按照指令的顺序依次执行程序。

4. 数据地址寄存器(Address Register,AR)
用来保存CPU当前所访问的主存单元的地址。

  1. 由于在主存和CPU之间存在操作速度上的差异,所以必须使用地址寄存器来暂时保存主存的地址信息,直到主存的存取操作完成为止。
  2. 当CPU和主存进行信息交换,即CPU向主存存入数据/指令或者从主存读出数据/指令时,都要使用地址寄存器和数据寄存器。

5. 通用寄存器

作用是当算术逻辑单元执行算数或逻辑运算是,为ALU提供提供一个工作区。

6. 程序状态字寄存器(Program Status Word,PSW)
又叫状态条件寄存器,用来表征当前运算的状态及程序的工作方式。

程序状态字寄存器用来保存由算术/逻辑指令运行或测试的结果所建立起来的各种条件码内容,如运算结果进/借位标志(C)、运算结果溢出标志(O)、运算结果为零标志(Z)、运算结果为负标志(N)、运算结果符号标志(S)等,这些标志位通常用1位触发器来保存。
 

🌈1.4内容总结 

🎵2.指令周期

当小伙伴看到指令周期不免有些懵逼,指令周期不在指令哪一章讲,你搁CPU这里讲,你小子学过计算机组成没?其实两者的关联挺大。

🌈2.1指令周期

 指令周期:CPU从主存中每取出并执行一条指令所需的全部时间。

 所以他和CPU的关联不就出来了。

  1. 指令周期(Instruction Cycle)是CPU执行一条指令的基本单位,它包括了指令的获取、解码、执行和写回等阶段。CPU的设计和性能与指令周期密切相关。
  2. CPU的工作频率(Clock Frequency)决定了每秒钟CPU时钟信号的振荡次数。每个时钟周期对应一个指令周期。因此,CPU的时钟频率越高,每秒钟CPU可以执行的指令周期就越多,从而提高了CPU的性能。
  3. 指令周期与CPU的性能和执行速度密切相关,因为它决定了CPU能够在多大的频率下执行指令。较短的指令周期意味着CPU可以更快地执行指令,从而提高了计算机的整体性能。为了提高指令执行的效率,CPU设计中通常采用了流水线(Pipeline)技术,将指令的执行过程分为多个阶段,使得多条指令可以同时在不同的阶段进行处理,从而提高了指令的吞吐量。

🌈2.2单周期,多周期 

👿2.2.1概念讲述

  • 单周期CPU :在一个时钟周期内完成从指令取出到得到结果的所有工作。指令系统中所有指令执行时间都以最长时间的指令为准,所以效率极低。极少采用。
  • 多周期CPU:多周期CPU把指令的的执行分为多个阶段,每一个阶段在一个时钟周期完成,因而时钟周期短,不同指令所用周期数可以不同。

👿2.2.2分析理解

  1. 单周期CPU 在一个时钟周期内完成一条指令的执行,包括指令的取指、解码、执行和写回等阶段。每个时钟周期的长度固定因此所有指令的执行时间都以最长时间的指令为准。这种设计简单直观,易于理解和实现,但效率相对较低。由于每个指令都需要花费相同的时钟周期数,可能会浪费大量时钟周期在一些简单指令上,而较复杂的指令则无法充分利用时钟周期。
  2. 多周期CPU 将指令的执行过程划分为多个阶段,每个阶段在一个时钟周期内完成。不同指令的执行时间可以根据其复杂度和需要的阶段数来确定,因此不同指令的执行时间可以不同。这种设计可以更好地利用时钟周期,提高CPU的效率。多周期CPU的每个阶段通常包括指令取指、指令解码、执行操作、访问存储器和写回结果等。每个阶段都在一个时钟周期内完成,而不同指令可能需要多个时钟周期来完成整个执行过程。
  3. 多周期CPU相对于单周期CPU来说更加灵活,可以根据不同指令的需求来分配适当的时钟周期数,提高指令的吞吐量和CPU的效率。然而,多周期CPU的设计相对复杂一些,需要更多的控制逻辑和状态保存。因此,在实际应用中,多周期CPU更常见,而单周期CPU较少采用。

两者区别:

  • 指令执行时间: 单周期CPU中,每个指令的执行时间是固定的,由一个时钟周期决定。而多周期CPU中,不同指令的执行时间可以不同,根据指令的复杂度和需要的阶段数进行划分。

  • 时钟周期长度: 单周期CPU中,每个时钟周期的长度是固定的,用于完成一条指令的执行。而多周期CPU中,每个阶段在一个时钟周期内完成,因此时钟周期可以根据不同阶段的需求来确定,可以更好地利用时钟周期。

  • 效率和吞吐量: 单周期CPU由于每个指令都需要花费相同的时钟周期数,可能会浪费大量时钟周期在一些简单指令上,而较复杂的指令则无法充分利用时钟周期,因此效率相对较低。而多周期CPU可以根据指令的需求来分配适当的时钟周期数,提高指令的吞吐量和CPU的效率。

 

(指令周期的数据量我就一笔带过了,我不考这个,所以没复习。) 

🌈2.3完整指令周期

(这个一般期末考试考不到,但是写到这块就写下来了)

一个完整的指令周期通常包括指令的获取、解码、执行和写回等阶段。

  1. 指令获取(Instruction Fetch): 在指令获取阶段,CPU从主存中读取下一条指令。这通常涉及将程序计数器(PC)中存储的指令地址发送到主存的地址寄存器(MAR),并通过控制信号将读控制信号发送到主存。主存将对应地址的指令通过数据总线传输到指令寄存器(IR)中。

  2. 指令解码(Instruction Decode): 在指令解码阶段,CPU解析指令并确定需要执行的操作。指令寄存器中的指令被解码为相应的操作码和操作数,以便后续的执行阶段使用。

  3. 执行操作(Execute): 在执行阶段,CPU执行指令指定的操作。这可能涉及对寄存器和内存中的数据进行算术或逻辑运算,或者执行其他特定的指令操作,如跳转或分支。

  4. 访问存储器(Memory Access): 在访问存储器阶段,CPU根据需要访问主存储器来读取或写入数据。这包括将内存地址发送到主存的地址寄存器(MAR),通过控制信号发送读或写控制信号,并将数据通过数据总线传输到或从内存数据寄存器(MDR)中。

  5. 写回结果(Write Back): 在写回阶段,执行阶段的结果被写回到寄存器文件或主存中。这可能涉及将结果从执行阶段传输到寄存器文件中的特定寄存器位置,或者将结果写入主存中的指定地址。

🎵3.微程序控制器

🌈3.1微程序控制器概念

 微程序控制器是一种控制器,同组合逻辑控制器相比较,具有规整性、灵活性、可维护性等一系列优点,因而在计算机设计中逐渐取代了早期采用的组合逻辑控制器,并已被广泛地应用。在计算机系统中,微程序设计技术是利用软件方法来设计硬件的一门技术 。

  • 采用微程序控制方式的控制器称为微程序控制器。所谓微程序控制方式是指微命令不是由组合逻辑电路产生的,而是由微指令译码产生。
  • 一条机器指令往往分成几步执行,将每一步操作所需的若干位命令以代码形式编写在一条微指令中,若干条微指令组成一段微程序,对应一条机器指令。
  • 在设计CPU时,根据指令系统的需要,事先编制好各段微程序 ,且将它们存入一个专用存储器(称为控制存储器)中。
  • 微程序控制器由指令寄存器IR、程序计数器PC、程序状态字寄存器PSW、时序系统、控制存储器CM、微指令寄存器以及微地址形成电路、微地址寄存器等部件组成。
  • 执行指令时,从控制存储器中找到相应的微程序段,逐次取出微指令,送入微指令寄存器,译码后产生所需微命令,控制各步操作完成。

 🌈3.2微程序

 👿3.2.1硬布线和微程序的联系

早期的计算机通常使用硬布线控制器(Hardwired Control)来实现指令的执行控制。硬布线控制器是一种基于硬件电路的控制方式,使用逻辑门和触发器等组合逻辑电路来实现指令的解码和执行控制。

硬布线控制器缺点:

  1. 缺乏灵活性: 硬布线控制器的控制逻辑是通过硬连线实现的,每个指令的控制路径都是固定的。这意味着硬布线控制器无法动态地改变指令的执行顺序或增加新的指令。如果需要支持新的指令或功能,就需要重新设计和构建硬件电路,这带来了较高的成本和时间消耗。

  2. 复杂性和可扩展性有限: 硬布线控制器的设计复杂度随着指令集和功能的增加而增加。特别是在大型计算机或处理器中,硬布线控制器的电路规模会急剧增加,难以维护和扩展。当需要增加新的指令或功能时,必须重新设计和调整大量的硬件电路。

微程序之所以能取代硬布线控制器,得益于它的几个较为突出的功能:

  1. 灵活性和可编程性: 微程序控制器使用存储器来存储一系列微指令,这些微指令可以通过修改存储器中的内容进行编程。这种可编程性使得微程序控制器更加灵活,能够适应不同的指令集和功能。新的指令可以通过添加新的微指令来实现,而不需要重新设计硬件电路。

  2. 简化设计和开发: 硬布线控制器的设计需要大量的硬连线,特别是在指令集和功能复杂时,电路复杂度会显著增加。而微程序控制器使用存储器来存储控制逻辑,通过编程方式定义控制信号的生成,大大简化了硬件设计和制造的复杂性。这使得设计和开发时间更短,成本更低。

  3. 易于维护和调试: 微程序控制器的控制逻辑以微指令的形式存储在存储器中,这使得调试和修改控制逻辑变得更加容易。通过修改微指令存储器中的内容,可以快速调整和修复控制逻辑的错误。此外,微程序控制器还可以提供更好的调试功能,例如单步执行微指令,有助于故障排除和性能优化。

  4. 可扩展性和可升级性: 微程序控制器的存储器可以容易地扩展和升级。通过增加存储器的容量,可以增加更多的微指令,从而支持更复杂的指令集和功能。这种可扩展性使得微程序控制器能够适应不断变化和提升的计算需求。

👿3.2.2 微程序控制相关操作

一台计算机可分为两大部分:控制部件执行部件控制器是控制部件运算器,存储器,外围设备相对于控制器来说就是执行部件。

控制部件通过控制线来和执行部件联系。

  • 微命令:控制部件通过控制线向执行部件发出各种控制命令,通常把这种控制命令叫做微命令。
  • 微操作:执行部件接收微命令后所进行的操作叫做微操作。
  • 微指令:在一个机器CPU周期,一组实现一定操作功能的微命令的组合叫微指令。
  • 微程序:一条机器指令的功能是用许多微指令组成的序列来实现的,这个微指令序列叫做微程序。

到这里不感觉程序和微程序有很多相似之处吗?山寨版吗不就是(先有的程序,又出来山寨机微程序)

  1. 程序是计算机系统的基本组成部分,它是一系列指令的集合(对比微程序概念),用于描述计算机应该执行的任务和操作。在早期计算机系统中,程序是通过硬连线方式实现的,即由物理电路直接执行特定的指令序列。这种方式在设计和修改中非常困难,限制了计算机系统的灵活性和可扩展性。
  2. 为了解决硬连线方式的限制,微程序的概念被引入到计算机系统中。微程序是一种较低层次的指令执行和控制方式,以存储器中的微指令形式存在,通过微程序控制器读取执行,生成相应的控制信号以驱动计算机系统的各个部件。微程序的引入使得控制逻辑可以通过修改微程序的方式来实现,而不再需要对硬件进行重大改动。

对比记忆一下:

3.3微程序控制器基本结构 

微程序控制器是一种控制器结构,用于实现微程序控制。它通常由控制存储器微指令寄存器地址转移逻辑构成:

  1. 控制存储器:用来存放实现全部指令系统的微程序,它是一种只读存储器,一旦微程序固化,机器运行时则只读不写。控制存储器的字长就是微指令字的长度,其存储容量视系统而定,即取决于微程序的数量,对控制存储器的要求是速度快,读出周期要短。
  2. 微指令寄存器(Microinstruction Memory): 包括微地址寄存器微命令寄存器微指令存储器用于存储由控制存储器读出的一条微指令信息。微地址寄存器决定将要访问的下一条微指令的地址微命令寄存器保存下一条微指令的操作控制字段和判别测试字段的信息。

  3. 地址转移逻辑:是计算机系统中用于控制程序流程和跳转的一种逻辑电路或电子组件。它的主要功能是根据特定的条件或控制信号,决定下一个要执行的指令的地址。

🌈3.4微程序设计技术 

如何设计微程序的结构是设计微程序控制器的关键,例如微程序的控制信号如何表示(通过定义不同的位或字段,可以准确地表示各种控制信号)

所以不得不设计一下微程序的结构。但是应当追求一下目标:

  1. 有利于缩短微指令字长度。
  2. 有利于减小控制存储器的容量。
  3. 有利于提高微程序的执行速度。
  4. 有利于对微程序的修改。
  5. 有利于提高微程序设计的灵活性。

👿3.4.1微命令编码

微命令编码就是对微指令中的操作控制字段采用的表示方法(是指对微指令中的各个字段或位进行编码的过程。微命令编码确定了如何用二进制位来表示微指令中的不同控制信号和操作控制。)包括直接表示法编码表示法混合表示法。

1.直接表示法

特点是操作控制字段中的每一位代表一个微命令。优点是简单直观输出直接用于控制,缺点是微指令字较长,因而使控制存储器容量较大。

2.编码表示法

把每一组相斥性的微命令信号组成一个小组,然后通过小组译码器对每一个微命令信号进行译码,译码输出作为操作控制信号。

与上面方法相比,字段译码控制可使微指令字大大缩短,当由于增加译码电路,是微程序的执行速度减慢。

3.混合表示法

直接把上面两种方法混合使用,以便综合考虑课方面是否满足情况。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

👿3.4.2微指令格式

微指令格式是指微程序中单个微指令的组织结构和布局。微指令格式通常由多个字段组成,每个字段对应于微指令中的一个功能或操作。

微指令的格式大致分为两类:水平型微指令垂直型微指令

1.水平型微指令

一次能定义并执行多个并行操作微命令的微指令叫做水平型微指令。

2.垂直型微指令

微指令中设置微操作码字段,采用微操作码编译法,由微操作码规定微指令的功能称为垂直型微指令。

🌈3.5微程序控制器和硬布线控制器

🌈3.6小结

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

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

相关文章

Camunda Sub Process

一:内嵌子流程 repositoryService.createDeployment().name("内嵌子流程").addClasspathResource("bpmn/embed_sub_process.bpmn").deploy(); identityService.setAuthenticatedUserId("huihui"); ProcessInstance processInstance …

支持 input 函数的在线 python 运行环境 - 基于队列

支持 input 函数的在线 python 运行环境 - 基于队列 思路两次用户输入三次用户输入 实现前端使用 vue element uiWindows 环境的执行器子进程需要执行的代码 代码仓库参考 本文提供了一种方式来实现支持 input 函数,即支持用户输的在线 python 运行环境。效果如下图…

基于uniapp封装的table组件

数据格式 tableData: [{elcInfo: [{tableData:[1,293021.1,293021.1,293021.1,293021.1,]}]},{elcInfo: [{tableData:[1,293021.1,293021.1,293021.1,293021.1,]}]},{elcInfo: [{tableData:[1,293021.1,293021.1,293021.1,293021.1,]}]},/* {title: "2",elcInfo: [{…

Rust类型之字符串

字符串 Rust 中的字符串类型是String。虽然字符串只是比字符多了一个“串”字,但是在Rust中这两者的存储方式完全不一样,字符串不是字符的数组,String内部存储的是Unicode字符串的UTF8编码,而char直接存的是Unicode Scalar Value…

【AI视野·今日Robot 机器人论文速览 第七十期】Thu, 4 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Thu, 4 Jan 2024 Totally 17 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Many-Objective-Optimized Semi-Automated Robotic Disassembly Sequences Authors Takuya Kiyokawa, Kensuke Harada, Weiwei …

C++day3作业

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&#xf…

Hadoop集群环境下HDFS实践编程过滤出所有后缀名不为“.abc”的文件时运行报错:java.net.ConnectException: 拒绝连接;

一、问题描述 搭建完Hadoop集群后,在Hadoop集群环境下运行HDFS实践编程使用Eclipse开发调试HDFS Java程序(文末有源码): 假设在目录“hdfs://localhost:9000/user/hadoop”下面有几个文件,分别是file1.txt、file2.tx…

硬盘检测软件 SMART Utility mac功能特色

SMART Utility for mac是一款苹果电脑上磁盘诊断工具,能够自动检测磁盘的状态和错误情况,分析并提供错误报告,以直观的界面让用户可明确地知道自己的磁盘状况。SMART Utility 支持普通硬盘HDD和固态硬盘SSD,能够显示出详细的磁盘信息&#xf…

C+语言的新特性

总是期待学习别人做好了的东西,是否也是一种懒惰呢? C语言是一门想象中的语言,它介于C和C之间。新的研究表明,C语言不支持某些特性,而C过于复杂。于是,便有了C语言,它的新特性如下: …

使用 Process Explorer 和 Windbg 排查软件线程堵塞问题

目录 1、问题说明 2、线程堵塞的可能原因分析 3、使用Windbg和Process Explorer确定线程中发生了死循环 4、根据Windbg中显示的函数调用堆栈去查看源码,找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…

Qt 窗口阴影边框

环境:Qt 5.15 VS2019 方法一:QGraphicsDropShadowEffect 实现方法参考链接:https://blog.csdn.net/goforwardtostep/article/details/99549750 使用此方法添加窗口阴影,会出现警告信息: 且窗口最大化与还原切换时会…

HCIA-Datacom题库(自己整理分类的)_09_Telent协议【13道题】

一、单选 1.某公司网络管理员希望能够远程管理分支机构的网络设备,则下面哪个协议会被用到? RSTP CIDR Telnet VLSM 2.以下哪种远程登录方式最安全? Telnet Stelnet v100 Stelnet v2 Stelnet v1 解析: Telnet 明文传输…

spring Security源码讲解-Sevlet过滤器调用springSecurty过滤器的流程

承接上文 上一节 http://t.csdnimg.cn/ueSAl 最后讲到了过滤器收集完成注入容器,这节我们来讲Security的Filter是怎么被Spring调用的。 我们先看webSecurity的performBuild方法(), 也就是说,最终返回的过滤器对象实例有两种情况当我们配置debugEnabl…

NIO通信代码示例

NIO通信架构图 1.Client NioClient package nio;import constant.Constant;import java.io.IOException; import java.util.Scanner;public class NioClient {private static NioClientHandle nioClientHandle;public static void start() {nioClientHandle new NioClientHa…

MongoDB快速实战与基本原理

MongoDB 介绍 什么是 MongoDB MongoDB 是一个文档数据库(以 JSON 为数据模型),由 C 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。文档来自于“JSON Document”,并非我们一般理解的 PDF、WORD 文档…

【数据采集与预处理】流数据采集工具Flume

目录 一、Flume简介 (一)Flume定义 (二)Flume作用 二、Flume组成架构 三、Flume安装配置 (一)下载Flume (二)解压安装包 (三)配置环境变量 &#xf…

python高校舆情分析系统+可视化+情感分析 舆情分析+Flask框架(源码+文档)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

适用于 Windows 的 12 个最佳免费磁盘分区管理器软件

分区是与其他部分分开的硬盘驱动器部分。它使您能够将硬盘划分为不同的逻辑部分。分区软件是一种工具,可帮助您执行基本选项,例如创建、调整大小和删除物理磁盘的分区。许多此类程序允许您更改磁盘片的标签以便于识别数据。 适用于 Windows 的 12 个最佳…

【PaperReading】3. PTP

Category Content 论文题目 Position-guided Text Prompt for Vision-Language Pre-training Code: ptp 作者 Alex Jinpeng Wang (Sea AI Lab), Pan Zhou (Sea AI Lab), Mike Zheng Shou (Show Lab, National University of Singapore), Shuicheng Yan (Sea AI Lab) 另一篇…

爬虫01-爬虫原理以及爬虫前期准备工作

文章目录 1 爬虫基本原理什么是爬虫爬虫功能详解爬虫基本流程两个概念:request和response 2 一些问题爬虫能抓取什么样的数据?抓取的数据怎么提取部分内容?数据解析方式。为什么我爬虫抓取的数据和浏览器看到的不一样怎样解决JavaScript渲染的…