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

计算机组成原理|第一章(笔记)

目录

  • 第一章 计算机系统概论
    • 1.1 计算机系统简介
      • 1.1.1 计算机的软硬件概念
      • 1.1.2 计算机系统的层次结构
      • 1.1.3 计算机组成和计算机体系结构
    • 1.2 计算机的基本组成
      • 1.2.1 冯 · 诺伊曼计算机的特点
      • 1.2.2 计算机的硬件框图
      • 1.2.3 计算机的工作过程
    • 1.3 计算机硬件的主要技术指标
      • 1.3.1 机器字长
      • 1.3.2 运算速度
      • 1.3.3 存储容量


第一章 计算机系统概论


1.1 计算机系统简介


1.1.1 计算机的软硬件概念

计算机系统是由 软件硬件 两大部分组成的。

  • 硬件:指计算机的实体部分,它由看得见摸得着的各种电子元器件、各类光、电、机设备的实物组成,如主机、外设等等
  • 软件:它是看不见摸不着的,由人们事先编制成具有各类特殊功能的信息组成。通常把这些信息,诸如各类程序寄寓于各类媒体中,如 RAM、ROM、磁带、磁盘、光盘等

计算机的软件通常又可分为两大类:系统软件应用软件

  • 系统软件:又称为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,确保高效运行。它包括:表中程序库、语言处理程序、操作系统、服务性程序、数据库管理系统、网络软件等等
  • 应用软件:又称为应用程序,它是用户根据任务需要所编制的各种程序。如科学计算程序、数据处理程序、过程控制程序、事务管理程序等等

在这里插入图片描述

硬件是计算机的物理基础,它决定了计算机系统的瓶颈在哪,而软件又决定了可以将硬件的性能发挥到什么样的程度,所以,计算机性能的好坏取决于 “软”、“硬” 件功能的总和。


1.1.2 计算机系统的层次结构

计算机的解题过程:
在这里插入图片描述
现代计算机的解题过程通常是先由用户用高级语言编写程序(称作源程序),然后将它和数据一起送入计算机内,再由计算机将其翻译成机器能识别的机器语言程序(称作目标程序),机器自动运行该机器语言程序,并将计算结果输出。

早期只有机器语言,用户编写的机器语言程序,直接在机器上执行,我们把直接执行机器语言的实际机器称 M1

在这里插入图片描述
20 世纪 50 年代开始出现了符号式的程序设计语言,即汇编语言,它使程序员摆脱了繁杂而又易错的二进制代码编写程序,但是没有机器能直接识别这种汇编语言程序,必须先将汇编语言程序翻译成机器语言程序后,才能被机器接受并自动运行。我们把具有翻译功能的汇编程序的计算机看作一台 M2 机器。

两级层次结构的计算机系统:

在这里插入图片描述
20 世纪 60 年代开始出现了各种面向问题的高级语言,如 FORTRAN、BASIC、Pascal、C 等等。这类高级语言对问题的描述十分接近人们的习惯,给程序员带来了极大的方便,当然,M1 机器本身是不能识别高级语言的,因此,在进入 M1 机器运行前,必须先将高级语言程序翻译成汇编语言程序,然后再将其翻译成机器语言程序。我们把将高级语言程序直接翻译成汇编或者机器语言程序的机器称为 M3

三级层次结构的计算机系统:

在这里插入图片描述
由于软件的发展,使实际机器 M1 向上延伸构成了各级虚拟机器。同理 M1 机器内部也可向下延伸而形成下一级的微程序机器 M0 。M0 机器是直接将 M1 机器中的每一条机器指令翻译成一组微指令,即构成一个微程序。微程序机器 M0 可看作是对实际机器 M1 的分解,即用 M0 的微程序解释并执行 M1 的每一条机器指令。

四级层次结构的计算机系统:

在这里插入图片描述
实际上再实际机器 M1 与虚拟机器 M2 之间,还有一级虚拟机器,它是由操作系统软件构成的。操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制并管理系统硬件和软件全部资源的作用。

五级层次结构的计算机系统:

在这里插入图片描述


1.1.3 计算机组成和计算机体系结构

计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性,通常是指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技术、I/O 机理等等,大都属于抽象的属性。

计算机组成是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是不知道的硬件细节。


1.2 计算机的基本组成


1.2.1 冯 · 诺伊曼计算机的特点

1945 年数学家 冯·诺依曼 等人,在研究 EDVAC 机时,提出了 “存储程序” 的概念。以此概念为基础的各类计算机,统称为 冯·诺依曼机。它的特点可归结为:

  • 计算机由运算器存储器控制器输入设备输出设备五大部件组成
  • 指令和数据以同等地位存放于存储器内,并可按地址寻访
  • 指令和数据均以二进制码表示
  • 指令由操作码地址码组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置
  • 存储程序,指令在存储器内按顺序存放
  • 机器以运算器为中心,输入输出设备与存储器的数据传送通过运算器

1.2.2 计算机的硬件框图

冯 · 诺伊曼计算机结构框图:
在这里插入图片描述
典型的冯·诺依曼计算机是以运算器为中心的。其中,输入、输出设备与存储器之间的数据传送都需通过运算器。图中实线为数据线,虚线为控制线和反馈线。

各组件的功能:

  • 运算器:完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内
  • 存储器:用来存放数据和程序
  • 控制器:用来控制、指挥程序和数据的输入、运行以及处理运算结果
  • 输入设备:将信息转换成机器能识别的形式,比如键盘、鼠标等
  • 输出设备:将结果转换成人民熟悉的形式,比如打印机输出,显示器输出等

这个结构存在两个问题:

  1. 以运算器为中心,导致运算器成为系统的瓶颈
  2. 不具有层次化的特征

以存储器为中心的计算机硬件框图:

在这里插入图片描述
以存储器为中心,实现输入和输出设备与存储器之间直接的信息交换,图中实现为控制线,虚线为反馈线,双线为数据线。

现代计算机硬件框图:

在这里插入图片描述

由于运算器控制器在逻辑关系和电路结构土联系十分紧密,尤其在大规模集成电路制作工艺出现后,这两大部件往往制作在同一芯片上,因此,通常将它们合起来统称为中央处理器(Central Processing Unit),简称 CPU。把输入设备输出设备简称为 IO设备(Input/Output equipment)。

这样,现代计算机可认为由三大部分组成:CPUIO设备主存储器M.M(Main Memory)。CPUM.M 合起来又可称为主机IO设备 可叫作外部设备

主存储器 M.M 是存储器子系统中的一类,用来存放程序和数据,它可以直接与CPU 交换信息。另一类叫辅助存储器,简称辅存,又叫外存

ALU (Arithmetic Logic Unit)叫做算术逻辑运算单元(简称算逻部件),用来完成算术逻辑运算。CU(Control Unit)叫做控制单元,用来解释存储器中的指令,并发出各种操作命令来执行指令。ALUCUCPU 的核心部件。

I/O设备 也受 CU 控制,用来完成相应的输入、输出操作。

在这里插入图片描述

可见,计算机有条不紊地自动工作,都是在控制器统一指挥下完成的。

系统复杂性管理的方法(3Y):

  • 层次化(Hierachy):将被设计的系统划分为多个模块或子模块
  • 模块化(Modularity):有明确定义(well-defined)的功能和接口
  • 规则化(Regularity):模块更容易被重用

1.2.3 计算机的工作过程

用计算机解决一个实际问题,通常包含两大过程:上机前的各种准备上机运行

  • 上机前的准备
    • (1)建立数学模型
    • (2)确定计算方式
    • (3)编制解题程序
  • 计算机的解题过程
    在这里插入图片描述

存储器的基本组成:
在这里插入图片描述
主存储器(简称主存内存)包括存储体、各种逻辑部件控制电路等。存储体由许多存储单元组成,每个存储单元又包含若干个存储元件(或称存储基元、存储元),每个存储元件能寄存一位二进制代码 “0” 或者 “1”。一个存储单元可存储一串二进制代码,称这串二进制代码为一个存储字,这串二进制代码的个数叫做存储字长

每个存储单元会被赋予一个编号,叫做存储单元的地址号。主存的工作方式就是按存储单元的地址号来实现对存储字各位的存、取。这种存取方式叫做按地址存取,也即按地址访问存储器(简称访存

为了能实现按地址访问的方式,主存中还必须配置两个寄存器 MARMDR

  • MAR(Memory Address Register):存储器地址寄存器,用来存放欲访问的存储单元的地址,其位数对应存储单元的个数(如 MAR 为 10 位,则有 210=1024 个存储单元,记为 1K)。
  • MDR(Memory Data Register):存储器数据寄存器,用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。

运算器的基本组成及操作过程:
在这里插入图片描述
运算器包括三个寄存器和一个算逻电路 ALU。其中 ACC (Accumulator)累加器MQ (Multiplier-QuotientRegister)乘商寄存器X操作数寄存器。这三个寄存器在完成不同运算时,所存放的操作数类别也各不相同。

在这里插入图片描述
不同机器的运算器结构可能不同。

以下简要分析这种结构的运算器其加、减、乘、除四则运算的操作:

设:M 表示存储器的任意地址号
[M] 表示对应 M 地址号单元中的内容
X 表示 X 寄存器
[X] 表示 X 寄存器中的内容
ACC 表示累加器
[ACC] 表示累加器中的内容
MQ 表示乘商寄存器
[MQ] 表示乘商寄存器中的内容
假设 ACC 中已存有前一时刻的运算结果,并作为下述运算中的一个操作数。则:

  • 加法操作过程:
    • [M] -> X
    • [ACC] + [X] -> ACC

即将 [ACC] 看作被加数,先从内存中取一个存放在 M 地址号内的加数 [M],送至运算器的 X 寄存器中,然后将被加数 [ACC] 与加数 [X] 相加,其结果和保留在累加器 ACC 中。

  • 减法操作过程:
    • [M] -> X
    • [ACC] - [X] -> ACC

即将 [ACC] 看作被减数,先取出减数 [M] 送入 X,再作 [ACC] - [X],其结果差保留在 ACC 中。

  • 乘法操作过程:
    • [M] -> MQ
    • [ACC] -> X
    • 0 -> ACC
    • [X] ×[MQ] -> ACC//MQ (ps:// 表示两个寄存器串联)

即把 [ACC] 看作被乘数,先把在 M 号单元中的乘数 [M] 送入乘商寄存器 MQ,再把被乘数送入 X 寄存器,并将寄存器 A 清 “0”,然后 [X] 和 [MQ] 相乘,其结果积的高位保留在 ACC 中,积的低位保留在 MQ 中。

  • 除法操作过程:
    • [M] -> X
    • [ACC] ÷ [X] -> MQ
    • 余数 R 在 ACC 中

即将 [ACC] 看作被除数,先将在 M 号单元内的除数 [M] 送至寄存器,然后 [ACC] 除以 [X],其结果商暂留于MQ,[ACC] 为余数 R。若需要将商保留在 ACC 中,只需做一步 [MQ] - ACC 即可。

控制器的基本结构:

控制器是计算机组成的神经中枢,它指挥全机各部件自动、协调地工作,它的主要功能是解释指令保证指令的按序执行

完成一条指令操作由取指分析执行三阶段组成。

  • 取指阶段:命令存储器读出一条指令,这叫取指过程(也称取指阶段)
  • 分析阶段:对取出来的指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,这叫做分析过程(也称分析阶段)
  • 执行阶段:根据操作数所在的地址,取出操作数并完成某种操作,这叫作执行过程(也称执行阶段)

控制器由程序计数器 PC(Program Counter)指令寄存器 IR(Instruction Register)以及控制单元 CU 几部分组成。
在这里插入图片描述

  • PC:用来存放当前欲执行指令的地址,它与主存的 MAR 之间有一条直接通路,且具有计数功能,即可自动形成下一条指令的地址。
  • IR:用来存放当前的指令,内容来自主存的 MDR,用来分析指令
  • CU:用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象

在这里插入图片描述

主机完成一条指令的过程:

  • 以取数指令为例

在这里插入图片描述

  1. PC 将指令的地址送给 MAR
  2. 再由 MAR 送给存储体
  3. 在控制器的控制下,存储体把指令存储单元当中保存的那条取数指令取出来,送入 MDR 当中
  4. MDR 再将指令送到 IR ,IR 保存当前正在执行的这条指令,完成取指的操作
  5. 将指令寄存器 IR 当中的操作码部分送给 CU,CU 内部分析指令、译码
  6. 在控制器的控制之下,需要把指令当中的地址部分送给存储器,以便将数据从存储体当中取出来,因为 IR 保存了当前指令和当前指令操作数的地址,所以从 IR 的地址码部分,把地址取出,送入 MAR
  7. 然后由 MAR 将该地址送往存储体
  8. 在控制器的控制下,从存储体中将取数指令要取的数取出来存入到 MDR
  9. 最后送到 ACC ,完成取数的操作
  • 以存数指令为例

在这里插入图片描述

  1. PC 将指令的地址送给 MAR
  2. 再由 MAR 送给存储体
  3. 在控制单元 CU 的控制下,从存储体指定的存储单元当中将指令取出来放入到 MDR 当中
  4. MDR 再将指令送到 IR,IR 保存当前正在执行的这条指令,完成取指的操作
  5. 将指令寄存器 IR 当中的操作码部分送给 CU,CU 内部分析指令、译码
  6. CU 控制,将 IR 当中地址码部分送到 MAR
  7. MAR 再送入到存储体
  8. 将 ACC 中的内容送到 MDR
  9. 将 MDR 中的数据保存到存储体中

I/O 的基本结构:
I/O 子系统包括各种外部设备及相应的接口。每一种设备都是由 I/O 接口与主机联系的,他接受 CU 发出的各种控制命令完成相应的操作。如键盘由键盘接口电路与主机联系;打印机由打印机接口电路与主机联系


1.3 计算机硬件的主要技术指标


1.3.1 机器字长

机器字长是指 CPU 一次能处理数据的位数,通常与 CPU 的寄存器位数有关。机器的字长会影响机器的运算速度,倘如 CPU 字长较短,又要运算位较多的数据,那么需要经过两次或多次的运算才能完成,这样势必会影响整机的运行速度。


1.3.2 运算速度

计算机的运算速度与许多因素有关,如:

  • 主频
  • 核数:每个核支持的线程数
  • 吉普森法:综合考虑每条指令的执行时间以及它们在全部操作中所占的百分比
  • CPI:执行一条指令所需时钟周期数
  • MIPS:每秒执行百万条指令
  • FLOPS:每秒浮点运算次数

1.3.3 存储容量

存储容量的大小可以用存放二进制信息的总位数进行衡量。

存储器的容量包括主存容量赋存容量

  • 主存容量:是指主存中存放二进制代码的总数
    • 衡量方法
      • 存储单元个数 × 存储字长
      • 字节数
  • 辅存容量
    • 衡量方法
      • 字节数

相关文章:

计算机组成原理|第一章(笔记)

目录第一章 计算机系统概论1.1 计算机系统简介1.1.1 计算机的软硬件概念1.1.2 计算机系统的层次结构1.1.3 计算机组成和计算机体系结构1.2 计算机的基本组成1.2.1 冯 诺伊曼计算机的特点1.2.2 计算机的硬件框图1.2.3 计算机的工作过程1.3 计算机硬件的主要技术指标1.3.1 机器字…...

[ vulnhub靶机通关篇 ] Empire Breakout 通关详解

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...

IP定位离线库有什么作用?

IP离线是什么意思?我们以丢失手机为例来寻找它,现在手机都有IP定位功能,只要手机开通了IP定位,就能找到手机。iPhone定位显示离线一般是iPhone手机关机了或者iPhone手机中“查找我的iPhone”功能关闭了。如果手机在手中的话可以打…...

[C++]vector模拟实现

目录 前言: 1. vector结构 2. 默认成员函数 2.1 构造函数 无参构造: 有参构造: 有参构造重载: 2.2 赋值运算符重载、拷贝构造(难点) 2.3 析构函数: 3. 扩容 3.1 reserve 3.2 resize…...

DevOps实战50讲-(2)Jenkins配置

1. Docker镜像方式安装拉取Jenkins镜像docker pull jenkins/jenkins编写docker-compose.ymlversion: "3.1" services:jenkins:image: jenkins/jenkinscontainer_name: jenkinsports:- 8080:8080- 50000:50000volumes:- ./data/:/var/jenkins_home/首次启动会因为数据…...

LC-1599. 经营摩天轮的最大利润(贪心)

1599. 经营摩天轮的最大利润 难度中等39 你正在经营一座摩天轮,该摩天轮共有 4 个座舱 ,每个座舱 最多可以容纳 4 位游客 。你可以 逆时针 轮转座舱,但每次轮转都需要支付一定的运行成本 runningCost 。摩天轮每次轮转都恰好转动 1 / 4 周。…...

Umi使用百度地图服务

需求描述 需要在前端页面中使用地图定位功能,所以在前端umi项目中使用百度地图服务,由于umi项目默认没有入口的html文件,所以无法通过常规的在head中加入外链js的方式使用 百度ak zyqeLCzvQPCCNImRu9yRGOqWlEUicxxGreact使用百度api 链接:…...

js中getBoundingClientRect()方法

getBoundingClientRect()返回值是一个 DOMRect 对象,是包含整个元素的最小矩形(包括 padding 和 border-width)。该对象使用 left、top、right、bottom、x、y、width 和 height 这几个以像素为单位的只读属性描述整个矩形的位置和大小。除了 …...

Unity记录2.2-动作-动画、相机、Debug与总结

文章首发及后续更新:https://mwhls.top/4453.html,无图/无目录/格式错误/更多相关请至首发页查看。 新的更新内容请到mwhls.top查看。 欢迎提出任何疑问及批评,非常感谢! 汇总:Unity 记录 摘要:重写了动画触…...

分享十个前端Web3D可视化框架附地址

Three.js:Three.js是一个流行的3D库,提供了大量的3D功能,包括基本几何形状、材质、灯光、动画、特效等。它是一个功能强大、易于使用的框架,广泛用于Web3D可视化应用程序的开发。Three.js:https://threejs.org/Babylon…...

基于WSL2和Clion搭建Win下C开发环境

系列文章目录 一、基于WSL2和Clion搭建Win下C开发环境 二、make、makeFile、CMake、CMakeLists的使用 三、全面、详细、通俗易懂的C语言语法和标准库 文章目录系列文章目录前言WSL2安装WSL常用命令VSCode连接WSLroot密码以systemd启动配置sshClion结语前言 Win下C语言开发环境…...

考研第一天,汤家凤基础班,连续与极限复习笔记

函数连续极限性质保号性证明极值点:夹逼准则二项式展开根号下,大于一,小于一的讨论直接放缩求和分子分母齐次,且分母大一次,用积分单调有界存在极限几个重要的切线放缩证明有界,然后放缩求单调证明有界&…...

聊一聊代码重构——关于变量的代码实践

提炼变量 其目标是将一个复杂表达式或语句分解成更小的部分,并将其存储在变量中。提高代码可读性和复用性 复杂的表达式 有些时候为了方便我们会把业务处理的逻辑写在一起,如果参与处理的内容较多时我们就会创造出一个非常长且难以理解的表达式。当其他…...

Spring之基于注解方式实例化BeanDefinition(1)

最近开始读Spring源码,读着读着发现里面还是有很多很好玩的东西在里面的,里面涉及到了大量的设计模式以及各种PostProcessor注入的过程,很好玩,也很复杂,本文就是记录一下我学习过程中的主干流程。 在开始我们源码解读…...

【STM32】入门(十四):FreeRTOS-任务

1、简述 FreeRTOS应用程序由一组独立的任务构成。 在任何时间点,应用程序中只能执行一个任务,FreeRTOS调度器负责决定所要执行的任务。 每个任务在自己的上下文中执行,不依赖于系统内的其他任务或 FreeRTOS的调度器本身。 FreeRTOS调度器负责…...

apscheduler 的基本介绍和使用

APScheduler有四大组件: 1、触发器 triggers : 触发器包含调度逻辑。每个作业都有自己的触发器,用于确定下一个任务何时运行。除了初始配置之外,触发器是完全无状态的。 有三种内建的trigger: (1)date: 特定…...

Oracle中merge Into的用法

Oracle中merge Into的用法 使用场景 在操作数据库时,数据存在的情况下,进行update操作;不存在的情况下,进行insert操作;在Oracle数据库中,能够使用merge into来实现。 基本语法 merge into table_name …...

JDK19下载、安装与测试的完整图文教程

一、下载JDK 1、官网获取:https://www.oracle.com/ 1.1 点击“Products”; 1.2 选择“Java”; 1.3 选择“Download Java”; 1.4 选择“Java downloads”,这里以最新版(JDK19)为例&#xff…...

Vector - CAPL - 获取相对时间函数

在自动化开发中,无论是CAN通信测试,还是网络管理测试,亦或是休眠唤醒等等存在时间相关的,都可能会使用相关的时间函数;今天主要介绍的就是获取当前时间,我们知道vector工具的最大优势就是稳定和精确度高&am…...

C++编程语言STL之unordered_map介绍

本文主要介绍 C 编程语言的 STL(Standard Template Library) 中 unordered_map 的相关知识,同时通过示例代码介绍 unordered_map 的常见用法。1 概述C标准库提供了四个无序关联容器(unordered associated container)&a…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...

WPF八大法则:告别模态窗口卡顿

⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题&#xff1a…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...