《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记

news2024/12/24 4:04:04

写在前面的话:此系列文章为笔者学习计算机组成原理时的个人笔记,分享出来与大家学习交流。使用教材为唐朔飞第3版,笔记目录大体与教材相同。


网课

计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili


笔记

《计算机组成原理》唐朔飞 第5章 输入输出系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第7章 指令系统 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第8章 CPU的结构和功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第9章 控制单元的功能 - 学习笔记_友人帐_的博客-CSDN博客

《计算机组成原理》唐朔飞 第10章 控制单元的设计 - 学习笔记_友人帐_的博客-CSDN博客


课后习题答案

计算机组成原理(第三版)唐朔飞-课后习题(完整版)_计算机组成原理唐朔飞第三版答案_蓝净云的博客-CSDN博客


哈尔滨工业大学计组实验

计算机组成原理实验一 运算器 预习报告_基本运算器实验_旅僧的博客-CSDN博客

计算机组成原理实验二 存储系统 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验三 系统总线和具有基本输入输出功能的总线接口 预习报告_旅僧的博客-CSDN博客

计算机组成原理实验四 微程序控制器 实验报告_旅僧的博客-CSDN博客


第八章 CPU的结构和功能

8.1 CPU的结构

8.1.1 CPU的功能

  • 指令控制:控制程序的顺序执行
  • 操作控制:产生完成每条指令所需的控制命令
  • 时间控制:对各种操作加以时间上的控制
  • 数据加工:对数据进行算数运算和逻辑运算
  • 处理中断

8.1.2 CPU的结构框图

在这里插入图片描述

8.1.3 CPU的寄存器

  1. 用户可见寄存器

可对这类寄存器编程,以及通过优化使CPU因使用这类寄存器而减少对主存的访问次数。

(1)通用寄存器

可由程序设计者指定许多功能,可用于存放操作数,也可作为满足某种寻址方式所需的寄存器。

(2)数据寄存器

用于存放操作数,其位数应满足多数数据类型的数值范围,有些机器允许使用两个连读的寄存器存放双倍字长的值。还有些机器的数据寄存器只能用于保存数据,不能用于操作数地址的计算。

(3)地址寄存器

用于存放地址,其本身可以具有通用性,也可用于特殊的寻址方式。位数必须足够长,以满足最大的地址范围。

(4)条件码寄存器

存放条件码,对用户来说是部分透明的。条件码是CPU根据运算结果由硬件设置的位。将条件码放到一个或多个寄存器中,就构成了条件码寄存器。

  1. 控制寄存器

被控制部件使用,以控制CPU的操作,也可被带有特权的操作系统程序使用,从而控制程序的执行。

(1)MAR 存储器地址寄存器

用于存放将被访问的存储单元的地址。

(2)MDR 存储器数据寄存器

用于存放欲存入存储器中的数据或最近从存储器中读出的数据。

(3)PC 程序计数器

存放现行指令的地址,通常具有计数功能。当遇到转移类指令时,PC值可被修改。

(4)IR 指令寄存器

存放当前欲执行的指令。

  1. 状态寄存器

(1)状态寄存器

存放条件码。

(2)PSW寄存器

存放程序状态字(中断时保存的程序现场中的一些状态)。

8.1.4 控制单元和中断系统

控制单元(CU)是提供完成计算机全部指令操作的微操作命令序列部件。现代计算机中微操作命令序列的形成方法有两种:一种是组合逻辑设计方法,为硬连线逻辑;另一种是微程序设计方法,为存储逻辑。

中断系统主要用于处理计算机的各种中断。

8.2 指令周期

8.2.1 基本概念

CPU每取出并执行一条指令所需的全部时间称为指令周期,也即CPU完成一条指令的时间。

CPU的工作周期:

  • 取指周期:取指令、分析指令
  • 间址周期:取有效地址
  • 执行周期:执行指令
  • 中断周期:保存程序断点

注意:

  1. 各种指令的指令周期是不相同的:

在这里插入图片描述

  1. 遇到间接寻址的指令时,需先访问一次存储器,取出有效地址,然后再访问存储器,取出操作数,会增加一个间址周期:

在这里插入图片描述

  1. CPU在每条指令执行阶段结束前,都要发中断查询信号,以检测是否有某I/O设备提出中断请求。如果有请求,CPU则要进入中断响应阶段,又称中断周期。

在这里插入图片描述

标志触发器

为了区别CPU的4个周期,在CPU内可设置4个标志触发器:

在这里插入图片描述

FE、IND、EX、INT分别对应取指、间址、执行和中断4个周期,并以“1”状态表示有效,它们分别由 1 → F E 、 1 → I N D 、 1 → E X 、 1 → I N T 1\rightarrow FE、1\rightarrow IND、1\rightarrow EX、1\rightarrow INT 1FE1IND1EX1INT个信号控制。

8.2.2 指令周期的数据流

假设CPU中有存储器地址寄存器MAR、存储器数据寄存器MDR、程序计数器PC、和指令寄存器IR

  1. 取指周期的数据流

在这里插入图片描述

  1. 间址周期的数据流

一旦取指周期结束,CU便检查IR中的内容,以确定其是否有间址操作,如果需要间址操作,则MDR中指示形式地址的右位(记作Ad(MDR))将被送到MAR,又送至地址总线,此后CU向存储器发读命令,以获取有效地址并存至MDR。

在这里插入图片描述

  1. 执行周期的数据流

不同的指令在执行周期的操作不同。

  1. 中断周期的数据流

在这里插入图片描述

8.3 指令流水

8.3.1 指令流水原理

(1)系统的并发性

并行:时间上互相重叠

  • 并发:两个或两个以上事件在同一时间段发生
  • 同时:两个或两个以上事件在同一时刻发生

并行的等级

  • 过程级(程序、进程),粗粒度,软件实现
  • 指令级(指令之间、指令内部),细粒度,硬件实现

(2)指令流水示例

(取指令和执行指令两阶段)

①串行执行

在这里插入图片描述

②二级流水

指令部件工作时,执行部件基本空闲,而执行部件工作时,指令部件基本空闲。如果指令执行阶段不访问主存,则完全可以利用这段时间取下一条指令,这样就使取下一条指令的操作和执行当前指令的操作同时进行。

由指令部件取出一条指令,并将它暂存起来,如果执行部件空闲,就将暂存的指令传给执行部件执行。与此同时,指令部件又可取出下一条指令并暂存起来,这称为指令预取。

在这里插入图片描述

影响二级流水效率加倍的因素

  • 执行时间 > 取指时间

    增加指令部件缓冲区,将取出的指令放入缓存。

在这里插入图片描述

  • 条件转移指令

    必须等上条指令执行结束,才能确定下条指令的地址,造成时间损失。可以采用分支预测等方法。

将指令的处理过程分解为更细的阶段:

  • 取指 (FI) :从存储器取出一条指令并暂时存入指令部件的缓冲区。
  • 指令译码 (DI) :确定操作性质和操作数地址的形成方式。
  • 计算操作数地址 (CO) :计算操作数的有效地址,涉及寄存器间接寻址、间接寻址、变址寻址、基址寻址、相对寻址等各种地址计算方式。
  • 取操作数 (FO) :从存储器中取操作数(若操作数在寄存器中,则无须此阶段)。
  • 执行指令( EI) :执行指令所需的操作,并将结果存于目的位置(寄存器中)。
  • 写操作数 (WO) :将结果存入存储器。

六级流水示例:

在这里插入图片描述

8.3.2 影响流水线性能的因素

(1)结构相关

结构相关是当指令在重叠执行过程中,不同指令争用同一功能部件产生资源冲突时产生的,

解决访存冲突:

  • 可以让后面的指令暂停一下(一个时钟周期),再继续运行。
  • 设置两个独立的存储器分别存放操作数和指令,以免取指令和取操作数同时进行时互相冲突。
  • 采用指令预取技术。

(2)数据相关

数据相关是指令在流水线中重叠执行时,当后继指令需要用到前面指令的执行结果时发生的。

例如,有i和j两条指令,i在前,j在后:

  1. 写后读相关 RAW

指令j试图在指令i写入寄存器前就读出该寄存器内容,这样,指令j就会错误地读出该寄存器旧的内容。

  1. 读后写相关 WAR

指令j试图在指令i读出寄存器之前就写入该寄存器,这样,指令i就错误地读出该寄存器新的内容。

  1. 写后写相关 WAW

指令j试图在指令i写入寄存器之前就写入该寄存器,这样,两次写的先后次序被颠倒,就会错误地使由指令i写入的值成为该寄存器的内容。

解决冲突:

  • 后推法,即遇到数据相关时,就停顿后继指令的运行,直至前面指令的结果生成。

  • 定向技术,又称为旁路技术或相关专用通路技术。不将运行结果放置在某个位置,而是直接将其送到其他指令所需要的地方。

(3)控制相关

控制相关是当流水线遇到分支指令和其他改变PC值的指令时引起的。

解决方案:

  • 尽早判别转移是否发生,尽早生成转移目标地址;
  • 预取转移成功或不成功两个控制流方向上的目标指令;
  • 加快和提前形成条件码;
  • 提高转移方向的猜准率等。

8.3.3 流水线性能

(1)吞吐率 Throughput Rate

指单位时间内流水线所完成指令或输出结果的数量。分为最大吞吐率和实际吞吐率。

假设指令流水线分为 m m m段,每段的时间均为 Δ t \Delta t Δt

  1. 最大吞吐率

流水线满负荷运行,无冲突的情况下的吞吐率。
T p m a x = 1 Δ t T_{pmax}=\frac{1}{\Delta t} Tpmax=Δt1

  1. 实际吞吐率

流水线完成n条指令的实际吞吐率。

连续处理n条指令,第一条指令需要 m Δ t m\Delta t mΔt时间,其余(n-1)条指令,每隔 Δ t \Delta t Δt就会有一个结果输出,共需要 m Δ t + ( n − 1 ) Δ t m\Delta t+(n-1)\Delta t mΔt+(n1)Δt的时间。
T p = n m Δ t + ( n − 1 ) Δ t = 1 Δ t [ 1 + m − 1 n ] = T p m a x 1 + m − 1 n T_p=\frac{n}{m\Delta t+(n-1)\Delta t}=\frac{1}{\Delta t[1+\frac{m-1}{n}]}=\frac{T_{pmax}}{1+\frac{m-1}{n}} Tp=mΔt+(n1)Δtn=Δt[1+nm1]1=1+nm1Tpmax

**(2)加速比 Speedup Ratio **

指m段流水线的速度与等功能的非流水线的速度之比(使用流水线提高的效率)。

对于m条指令,理想流水线需要 T = m Δ t + ( n − 1 ) Δ t T=m\Delta t + (n-1)\Delta t T=mΔt+(n1)Δt时间,非流水线需要 T ′ = n m Δ t T'=nm\Delta t T=nmΔt时间。
S p = n m Δ t m Δ t + ( n − 1 ) Δ t = n m m + n − 1 = m 1 + m − 1 n S_p=\frac{nm\Delta t}{m\Delta t + (n-1)\Delta t}=\frac{nm}{m+n-1}=\frac{m}{1+\frac{m-1}{n}} Sp=mΔt+(n1)ΔtnmΔt=m+n1nm=1+nm1m

(3)效率 Efficiency

指流水线中各功能段的利用率。由于流水线有建立时间和排空时间,因此各功能段的设备不可能一直处于工作状态,总有一段空闲时间。
效率 = 流水线各段处于工作时间的时空区 流水线中各段总的时空区 效率=\frac{流水线各段处于工作时间的时空区}{流水线中各段总的时空区} 效率=流水线中各段总的时空区流水线各段处于工作时间的时空区

E = m n Δ t m ( m + n − 1 ) Δ t = n m + n − 1 = S p m = T p Δ t E=\frac{mn\Delta t}{m(m+n-1)\Delta t}=\frac{n}{m+n-1}=\frac{S_p}{m}=T_p\Delta t E=m(m+n1)ΔtmnΔt=m+n1n=mSp=TpΔt

在这里插入图片描述

8.3.4 流水线中的多发技术

在这里插入图片描述

(1)超标量技术 Superscalar

在每个时钟周期内可同时并发多条独立指令,进入到多条流水线执行。(图示为3条流水线)

在这里插入图片描述

不存在数据相关的指令可实现指令级并行。

超标量计算机不能重新安排指令的执行顺序,但可以通过编译优化技术,在高级语言翻译成机器语言时精心安排,把能并行执行的指令搭配起来,挖掘更多的指令并行性。

(2)超流水线技术 Superpipeline

将一些流水线寄存器插入流水线段中,在一个时钟周期内再分段,在一个时钟周期内一个功能部件使用多次。
在这里插入图片描述

与超标量计算机一样,硬件不能调整指令的执行顺序,靠编译程序解决优化问题。

(3)超长指令字技术 VLIW

由编译程序在编译时挖掘出指令间潜在的并行性后,把多条能并行操作的指令组合成一条具有多个操作码字段的超长指令(指令字长可达几百位),由这条超长指令控制VLIW机中多个独立工作的功能部件,由每一个操作码字段控制一个功能部件,相当于同时执行多条指令。

(多个处理部件)

在这里插入图片描述

8.3.5 流水线结构

  1. 指令流水线结构

将指令的整个执行过程用流水线进行分段处理。(上述所讲)

  1. 运算流水线

流水技术还可用于部件级。

例如,浮点加法运算,可以分成对阶、尾数加、结果规格化3段,每一段都有一个专门的逻辑电路完成操作,并将其结果保存在锁存器中,作为下一段的输入。

在这里插入图片描述

分段原则:每段操作时间尽量一致

8.4 中断系统

8.4.1 概述

(1)引起中断的各种因素

  1. 人为设置的中断:例如转管指令
  2. 程序性事故:如定点溢出、浮点溢出、操作码不能识别、除法中出现非法等
  3. 硬件故障
  4. I/O设备
  5. 外部事件:用户通过键盘来中断现行程序等

(2)中断源的分类

通常将能引起中断的各个因素称为中断源

  • 不可屏蔽中断:这类中断CPU不能禁止响应,如电源掉电;
  • 可屏蔽中断,CPU可根据该中断源是否被屏蔽来确定是否给予响应。若未屏蔽则能响应;若已被屏蔽,则CPU不能响应。

(3)中断系统需要解决的问题

①各中断源如何向CPU提出中断请求。

②当多个中断源同时提出中断请求时,中断系统如何确定优先响应哪个中断源的请求。

③CPU在什么条件、什么时候、以什么方式来响应中断。

④CPU响应中断后如何保护现场。

⑤CPU响应中断后,如何停止原程序的执行而转入中断服务程序的入口地址。

⑥中断处理结束后,CPU如何恢复现场,如何返回到原程序的间断处。

⑦在中断处理过程中又出现了新的中断请求,CPU该如何处理。

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

(1)中断请求标记

为了判断是哪个中断源提出请求,在中断系统中必须设置中断请求标记触发器,简称中断请求触发器,记作INTR。当其状态为“1”时,表示中断源有请求。这种触发器可集中设在CPU内,组成一个中断请求标记寄存器。

在这里插入图片描述

其中任意一个触发器为1,即表明对应的中断源提出了中断请求。

INTR可以集中在CPU的中断系统内,也可以分散到各个中断源中。

(2)中断判优逻辑

  1. 硬件排队

①链式排队器:分散在各个中断源的接口电路中

②集中在CPU内

在这里插入图片描述

  1. 软件排队

通过编写查询程序实现

在这里插入图片描述

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

(1)硬件向量法

利用硬件产生向量地址,再由向量地址找到中断服务程序的入口地址。向量地址由中断向量地址形成部件产生,这个电路可分散设置在各个接口电路中,也可设置在CPU内。

由向量地址寻找中断服务程序的入口地址通常采用两种办法:

  • 在向量地址内存放一条无条件转移指令,CPU响应中断时,只要将向量地址送至PC,执行这条指令,便可无条件转向服务程序的入口地址。
  • 设置向量地址表:该表设在存储器内,存储单元的地址为向量地址,存储单元的内容为入口地址,只要访问向量地址所指示的存储单元,便可获得入口地址。
    在这里插入图片描述

硬件向量法寻找入口地址速度快,在现代计算机中被普遍采用。

(2)软件查询法

在这里插入图片描述

当查到某一中断源有中断请求时,接着安排一条转移指令,直接指向此中断源的中断服务程序入口地址,机器便能自动进入中断处理。至于各中断源对应的入口地址,则由程序员(或系统)事先确定。

不涉及硬件设备,但查询时间较长。

8.4.4 中断响应

(1)响应中断的条件

在中断系统中有一个允许中断触发器EINT,当为“1”时,CPU允许响应中断源的请求。

(2)响应中断的时间

CPU在执行周期的结束时刻统一向所有中断源发中断查询信号,响应任何中断源的请求。

也有些计算机,可在指令执行过程中设置若干个查询断点,CPU在每个“查询断点”时刻均发中断查询信号,以便发现有中断请求便可及时响应。

(3)中断隐指令

隐指令是中断周期内,CPU要自动完成的一系列操作,不是某一条指令。

  1. 保护程序断点

​ 将PC内容保存在存储器中

  • 保存在存储器的特定单元
  • 存入堆栈
  1. 寻找中断服务程序的入口地址
  • 硬件向量法:将向量地址送至PC
  • 软件查询法:将中断识别程序首地址送至PC,执行中断识别程序,使用软件查询发找到入口地址。
  1. 关中断

为了确保CPU响应中断请求后所需做的一系列操作不至千又受到新的中断请求的干扰,在中断周期内必须自动关中断,以禁止CPU再次响应新的中断请求。

在这里插入图片描述
在这里插入图片描述

8.4.5 保护现场和恢复现场

该包括保护程序断点和保护CPU内部各寄存器内容的现场两个方面。

保护现场由中断隐指令完成,各寄存器内的现场可在中断服务程序中由用户(或系统)用机器指令编程实现;

恢复现场是指在中断返回前,必须将寄存器的内容恢复到中断处理前的状态,这部分工作也由中断服务程序完成。

8.4.6 中断屏蔽技术

中断屏蔽技术主要用于多重中断。

(1)多重中断的概念
在这里插入图片描述

(2)实现多重中断的条件

①提前设置“开中断”指令。

②优先级别高的中断源有权中断优先级别低的中断源。

(3)屏蔽技术

  1. 屏蔽触发器与屏蔽字

屏蔽触发器MASK,置1表示设备被屏蔽。

在这里插入图片描述

(完成触发器D,中断请求触发器INTR,屏蔽触发器MASK)

将排队器集中设置在CPU内,加上屏蔽条件,就组成了具有屏蔽功能的排队器。

在这里插入图片描述

对应每个中断请求触发器INTR就有一个屏蔽触发器MASK,将所有屏蔽触发器组合在一起,就构成了一个屏蔽寄存器,其内容称为屏蔽字。

屏蔽字与中断源的优先级别是一一对应的。

在这里插入图片描述

在中断服务程序中设置适当的屏蔽字,能起到对优先级别不同的中断源的屏蔽作用。如果在4级中断源的服务程序中设置一个屏蔽字0001111111111111,由于第 1~3 位为0,意味着第1~3级的中断源未被屏蔽,因此在开中断指令后,比第4级中断源级别更高的1、2、3级中断源可以中断4级中断源的中断服务程序,实现多重中断。

  1. 屏蔽技术可改变优先等级

优先级包含响应优先级和处理优先级。响应优先级是指CPU响应各中断源请求的优先次序,这种次序往往是硬件线路已设置好的,不便于改动。处理优先级是指CPU实际对各中断源请求的处理优先次序。如果不采用屏蔽技术,响应的优先次序就是处理的优先次序。采用了屏蔽技术后,可以改变CPU处理各中断源的优先等级。

如下图:在B的服务程序中,由于设置了新的屏蔽字0100,即A、C、D可打断B,而A已经执行完毕,C的响应优先级高于D,故CPU响应C,进入C的服务程序。同理……

在这里插入图片描述

在这里插入图片描述

采用了屏蔽技术后,在中断服务程序中需设置新的屏蔽字,流程如下:

在这里插入图片描述

  1. 屏蔽技术的其他作用

能给程序控制带来更大的灵活性。

例如,在浮点运算中,当程序员估计到执行某段程序时可能出现“阶上溢”,但又不希望因“阶上溢”而使机器停机,为此可设一屏蔽字,使对应“阶上溢”的屏蔽位为“1”。这样,即使出现“阶上溢",机器也不停机。

(4)多重断点的断点保护

中断系统对断点的保存都是在中断周期内由中断隐指令实现的,对用户是透明的。

断点可以保存在堆栈中,也可保存在约定好的特定的存储单元内。

**程序断点存入“0”地址的断点保护:**0地址内容转存。

在这里插入图片描述

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

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

相关文章

实现分布式实体追踪:提升系统可见性和故障排查能力

引言: 在当今复杂的分布式系统中,追踪用户请求的执行过程变得越来越重要。为了获得全面的系统可见性和更高效的故障排查能力,我们在Flipkart采用了分布式实体追踪的解决方案。本文将介绍我们的实施策略,以及如何使用结构化日志和集…

IMG CXM GPU:面向复杂消费级设备的无缝视觉体验

上周我们推出了一款新的GPU,即IMG CXM。它的三种配置可扩展,为可穿戴设备和高级数字电视等多种消费设备提供无缝用户界面。 消费级设备需要GPU提供什么? 涵盖智能手表和智能眼镜的可穿戴市场为移动中的消费者提供了易于访问的信息。鉴于屏幕尺…

一文解读 AIGC 驱动高绩效商业的落地与思考

本文根据神策数据智能业务负责人郭荣锋《AIGC 驱动高绩效商业的实践》的主题演讲整理所得,主要围绕神策对 AIGC (即 AI-Generated Content,人工智能生成内容)业务应用的理解、AIGC 的落地实践及心得体会等方面展开。 以下为本文的…

运行 100 万个并发任务究竟需要多少内存?

Laf 公众号已接入了 AI 绘画工具 Midjourney&#xff0c;可以让你轻松画出很多“大师”级的作品。同时还接入了 AI 聊天机器人&#xff0c;支持 GPT、Claude 以及 Laf 专有模型&#xff0c;可通过指令来随意切换模型。欢迎前来调戏&#x1f447; <<< 左右滑动见更多 &…

Tomcat文件夹属性

Tomcat安装完成后&#xff0c;其安装目录下包含bin、conf、lib、logs、temp、webapps、work等子目录&#xff0c;各个子目录简介如下&#xff1a; &#xff08;1&#xff09;bin目录。主要存放Tomcat的命令文件。&#xff08;解压缩版点击bin下的startup.bat&#xff0c;即可运…

4.2 字节流与字符流

在Java中&#xff0c;有两种基本的数据流类型&#xff1a;字节流和字符流。字节流处理原始二进制数据&#xff0c;而字符流处理Unicode字符。本章节我们将学习字节流与字符流的基本概念以及如何使用它们进行文件的输入输出操作。 4.2.1 字节流 字节流处理原始二进制数据&…

打造音视频极致消费体验

在观看视频时&#xff0c;用户最看重的是什么呢&#xff1f;清晰度&#xff1f;流畅度&#xff1f;还是播放时的稳定性&#xff1f;作为视频厂商&#xff0c;不仅要考虑到常见的指标&#xff0c;一些关乎用户体验的隐藏性指标也需要重点关注。如何持续升级优化代码并在成本和用…

JointJS+ v3.7 Crack

JointJS v3.7 改进了对 SVG 上下文中的外部对象的支持。 2023 年 5 月 30 日 - 16:00 新版本 特征 改进了对外部对象 (HTML) 的支持- 外部对象已成为 Web 开发的标准&#xff0c;JointJS 现在已经在 SVG 上下文中引入了对外部对象的全面且功能齐全的支持。这意味着您现在可以在…

工作积极主动分享,善于业务沟通

工作积极主动分享&#xff0c;善于业务沟通 目录概述需求&#xff1a; 设计思路实现思路分析1.工作积极主动承担责任2.善于沟通3.一起常常lauch 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;…

【JavaSE】Java基础语法(三十九):网络编程入门

文章目录 1. 网络编程概述2. 网络编程三要素3. IP地址4. InetAddress5. 端口和协议 1. 网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络 操作系统&#xff0c;网络管理软件及网络通信协…

MyBatis 环境搭建+基本使用

目录 MyBatis创建MyBatis环境搭建MyBatis模式开发MyBatis 获取动态参数&#xff08;查询操作&#xff09;${} 直接替换#{} 占位符模式替换like查询&#xff08;模糊查询&#xff09;多表查询一对一的表映射一对多的表映射 增、删、改操作改操作删除操作增加操作添加用户添加用户…

chatgpt赋能python:Python中的英文单词

Python中的英文单词 Python是一种流行的编程语言&#xff0c;它具有人类易读性、功能强大、支持多种编程范例等特点。Python中包含着大量的英文单词&#xff0c;这些单词在Python编程中极为重要&#xff0c;因为它们直接影响代码的可读性和理解难度。本文将介绍一些最常用的Py…

Go开发学习 | 如何使用Gomail.v2模块包发送邮箱验证码消息及附件学习记录

欢迎关注「全栈工程师修炼指南」公众号 点击 &#x1f447; 下方卡片 即可关注我哟! 设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习&#xff01; “ 花开堪折直须折&#xff0c;莫待无花空折枝。 ” 作者主页&#xff1a;[ https://www.weiyigeek.top ] 博客&…

vulhub-Jarbas(易)

打靶练习Jarbas 0x00 部署0x01 信息收集&#xff1a;端口扫描、服务发现0x02 路径爬取0x03 反弹shell0x04 内网信息收集0x05 crontab定时任务提权0x06 总结 0x00 部署 靶机&#xff1a;下载地址 宿主机&#xff1a;kali2021版本 0x01 信息收集&#xff1a;端口扫描、服务发现…

《计算机组成原理》唐朔飞 第9章 控制单元的功能 - 学习笔记

写在前面的话&#xff1a;此系列文章为笔者学习计算机组成原理时的个人笔记&#xff0c;分享出来与大家学习交流。使用教材为唐朔飞第3版&#xff0c;笔记目录大体与教材相同。 网课 计算机组成原理&#xff08;哈工大刘宏伟&#xff09;135讲&#xff08;全&#xff09;高清_…

git (本地仓库)和(远程仓库)之间的代码推送:013

这里先说明一下循序&#xff1a; 1. 创建(远程仓库)和(本地仓库) 2. 创建(远程仓库)和(本地仓库)之间的链接 3. 将(本地仓库)的代码推通过命令送到(远程仓库)&#xff1b;将(本地仓库)的代码通过(TortoiseGit小乌龟)推送到(远程仓库) 1. 创建(远程仓库)和(本地仓库)&#xff0c…

PHP异步:在PHP中使用 fsockopen curl 实现类似异步处理的功能

PHP从主流来看&#xff0c;是一门面向过程的语言&#xff0c;它的最大缺点就是无法实现多线程管理&#xff0c;其程序的执行都是从头到尾&#xff0c;按照逻辑一路执行下来&#xff0c;不可能出现分支&#xff0c;这一点是限制php在主流程序语言中往更高级的语言发展的原因之一…

C++实现sqlite单表增删改查的详细步骤

1.环境准备 coding之前需要先安装好C的集成开发环境&#xff0c; 我这里选择的是Visual Studio 2022&#xff0c;本来想使用CLion的&#xff0c; 但是破解太麻烦&#xff0c;懒得整了。 Visual Studio 2022 2.项目创建及编码 启动visual studio, 点击创建项目&#xff0c;选…

《MYSQL必知必会》读书笔记1

目录 行 主键 MYSQL工具 使用MYSQL 连接 检索数据 检索&#xff08;SELECT&#xff09; 限制结果&#xff08;LIMIT&#xff09; 排序检索&#xff08;ORDER BY&#xff09; 过滤数据&#xff08;WHERE&#xff09; 过滤数据&#xff08;AND、OR&#xff09; 通配符…

软件测试总结

软件生命周期(SDLC)的六个阶段 1、问题的定义及规划 此阶段是软件开发方与需求方共同讨论&#xff0c;主要确定软件的开发目标及其可行性。 2、需求分析 在确定软件开发可行的情况下&#xff0c;对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要…