Git服务器、GitLab介绍及搭建、HIS代码托管、CI/CD概述、Jenkins部署、Jenkins插件、Jenkins工程构建

news2024/12/23 22:27:58
案例1:GitLab服务器搭建
使用rpm包本地部署GitLab服务器
#确认GitLab主机硬件配置

[root@GitLab ~]# free -m

              total        used        free      shared  buff/cache   available

Mem:           3896         113        3691           8          90        3615

Swap:             0           0           0

[root@GitLab ~]# 


#安装依赖包

[root@GitLab ~]# yum clean all; yum repolist -v

...

Total packages: 8,265

[root@GitLab ~]# yum -y install policycoreutils-python-utils.noarch     #安装依赖包

...

Complete!

[root@GitLab ~]#


#安装GitLab软件包

[root@GitLab ~]# ls

gitlab-ce-12.4.6-ce.0.el7.x86_64.rpm

[root@GitLab ~]# rpm -ivh --nodeps \

> --force gitlab-ce-12.4.6-ce.0.el7.x86_64.rpm                  #强制忽略依赖安装

...

[root@GitLab ~]# rpm -qa | grep gitlab

gitlab-ce-12.4.6-ce.0.el7.x86_64

[root@GitLab ~]# 


#重载GitLab配置

[root@GitLab ~]# gitlab-ctl reconfigure

...

Running handlers:

Running handlers complete

Chef Client finished, 527/1423 resources updated in 02 minutes 05 seconds

gitlab Reconfigured!

[root@GitLab ~]# 


#重启GitLab相关服务

[root@GitLab ~]# gitlab-ctl restart

ok: run: alertmanager: (pid 1975) 0s        //报警服务

ok: run: gitaly: (pid 1986) 1s              //Git后台服务

ok: run: gitlab-exporter: (pid 2014) 0s     //Prometheus数据采集器

ok: run: gitlab-workhorse: (pid 2020) 1s    //反向代理服务器

ok: run: grafana: (pid 2117) 0s             //数据可视化服务

ok: run: logrotate: (pid 2129) 0s           //日志文件管理服务

ok: run: nginx: (pid 2135) 1s               //静态WEB服务

ok: run: node-exporter: (pid 2142) 0s       //Prometheus数据采集器

ok: run: postgres-exporter: (pid 2148) 1s   //Prometheus数据采集器

ok: run: postgresql: (pid 2159) 0s          //数据库服务

ok: run: prometheus: (pid 2168) 0s          //Prometheus监控服务

ok: run: redis: (pid 2178) 1s               //缓存数据库服务

ok: run: redis-exporter: (pid 2183) 0s      //Prometheus数据采集器

ok: run: sidekiq: (pid 2192) 0s             //异步执行队列服务

ok: run: unicorn: (pid 2203) 0s             //Rails托管WEB服务

[root@GitLab ~]# 
案例2:GitLab使用
GitLab初始化
#GitLab主机确认80端口被监听

[root@GitLab ~]# ss -anptul | grep :80

tcp   LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=11166,fd=7),("nginx",pid=11165,fd=7),("nginx",pid=11164,fd=7))  

[root@GitLab ~]# 


#浏览器访问: http://192.168.88.20/

GitLab组管理

GitLab项目管理

案例3:代码托管
关联Programer主机myproject仓库与GitLab服务器上myproject项目
#参考提示命令"推送已有Git仓库部分"

[root@Programer ~]# cd myproject/

[root@Programer myproject]# git remote -v                   #查看远程仓库关联信息

[root@Programer myproject]# git remote add origin           http://192.168.88.20/devops/myproject.git                   #关联远程项目

[root@Programer myproject]# git remote -v                   #查看远程想看关联信息

origin  http://192.168.88.20/devops/myproject.git (fetch)

origin  http://192.168.88.20/devops/myproject.git (push)

[root@Programer myproject]# git push -u origin --all        #推送本地仓库所有分支

Username for 'http://192.168.88.20': mark       #用户名

Password for 'http://mark@192.168.88.20':       #密码

枚举对象中: 29, 完成.

对象计数中: 100% (29/29), 完成.

使用 2 个线程进行压缩

压缩对象中: 100% (19/19), 完成.

写入对象中: 100% (29/29), 2.21 KiB | 2.21 MiB/s, 完成.

总共 29(差异 5),复用 0(差异 0),包复用 0

remote: 

remote: To create a merge request for feature, visit:

remote:   http://gitlab.example.com/devops/myproject/merge_requests/new?merge_request%5Bsource_branch%5D=feature

remote: 

remote: To create a merge request for hotfix, visit:

remote:   http://gitlab.example.com/devops/myproject/merge_requests/new?merge_request%5Bsource_branch%5D=hotfix

remote: 

To http://192.168.88.20/devops/myproject.git

 * [new branch]      feature -> feature

 * [new branch]      hotfix -> hotfix

 * [new branch]      master -> master

分支 'feature' 设置为跟踪来自 'origin' 的远程分支 'feature'。

分支 'hotfix' 设置为跟踪来自 'origin' 的远程分支 'hotfix'。

分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。

[root@Programer myproject]# git push -u origin --tags       #推送本地仓库所有标签

Username for 'http://192.168.88.20': mark       #用户名

Password for 'http://mark@192.168.88.20':       #密码

总共 0(差异 0),复用 0(差异 0),包复用 0

To http://192.168.88.20/devops/myproject.git

 * [new tag]         v1 -> v1

[root@Programer myproject]# 


#登录GitLab项目管理页面查看推送情况

HTTP方式免密推送
#每次推送都需要认证,可以设置免密推送

    #store:永久存储

    #cache:默认缓存15分钟,期间无需认证,可通过cache --timeout=3600设置超时时间

    #git remote add origin http://name:pass@192.168.88.20/devops/myproject.git

[root@Programer myproject]# git config --global credential.helper store #持久保存

[root@Programer myproject]# git push                        #推送代码(本次需要认证)

Username for 'http://192.168.88.20': mark   #用户名

Password for 'http://mark@192.168.88.20':   #密码

Everything up-to-date

[root@Programer myproject]# git push                        #再次推送测试免密

Everything up-to-date

[root@Programer myproject]# git config --list

user.name=mark

user.email=mark@tedu.cn

init.defaultbranch=master

credential.helper=store

core.repositoryformatversion=0

core.filemode=true

core.bare=false

core.logallrefupdates=true

remote.origin.url=http://192.168.88.20/devops/myproject.git

remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

branch.feature.remote=origin

branch.feature.merge=refs/heads/feature

branch.hotfix.remote=origin

branch.hotfix.merge=refs/heads/hotfix

branch.master.remote=origin

branch.master.merge=refs/heads/master

[root@Programer myproject]# cat ~/.git-credentials 

http://mark:1234.com@192.168.88.20

[root@Programer myproject]# 
HIS项目代码托管
  • HIS项目代码准备
#Programer主机准备HIS代码

[root@Programer ~]# ls HIS.zip 

HIS.zip

[root@Programer ~]# unzip HIS.zip                           #解压项目代码压缩包

[root@Programer ~]# ls HIS

HIS-BACKEND                 #HIS项目后端代码,SpringBoot框架编写

HIS-CONFIG                  #HIS项目后端程序运行配置文件

HIS-FONTEND                 #HIS项目前端代码(已编译)

HIS-FONTEND-DEPENDENCY      #HIS项目前端代码编译依赖库(npm库)

HIS-FONTEND-SOURCECODE      #HIS项目前端代码(未编译,VUE框架编写)

HIS-SQL                     #HIS项目数据库SQL文件

[root@Programer ~]# 
  • HIS后端代码托管

 

 

#关联GitLab服务器HIS-BACKEND项目与Programer主机HIS-BACKEND代码

[root@Programer ~]# cd HIS/HIS-BACKEND/

[root@Programer HIS-BACKEND]# git init                          #初始化仓库

已初始化空的 Git 仓库于 /root/HIS/HIS-BACKEND/.git/

[root@Programer HIS-BACKEND]# git remote add origin http://192.168.88.20/devops/HIS-BACKEND.git                     #关联本地与远程

[root@Programer HIS-BACKEND]# git remote -v

origin  http://192.168.88.20/devops/HIS-BACKEND.git (fetch)

origin  http://192.168.88.20/devops/HIS-BACKEND.git (push)

[root@Programer HIS-BACKEND]# git add ./                        #添加代码到暂存区

[root@Programer HIS-BACKEND]# git commit -m "Init Backend Code" #提交本地版本库

[root@Programer HIS-BACKEND]# git tag v1                        #创建v1标签

[root@Programer HIS-BACKEND]# git push -u origin --all          #推送本地所有分支

枚举对象中: 518, 完成.

对象计数中: 100% (518/518), 完成.

使用 2 个线程进行压缩

压缩对象中: 100% (464/464), 完成.

写入对象中: 100% (518/518), 272.81 KiB | 5.57 MiB/s, 完成.

总共 518(差异 256),复用 0(差异 0),包复用 0

remote: Resolving deltas: 100% (256/256), done.

To http://192.168.88.20/devops/HIS-BACKEND.git

 * [new branch]      master -> master

分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。

[root@Programer HIS-BACKEND]# git push -u origin --tags         #推送本地所有标签

总共 0(差异 0),复用 0(差异 0),包复用 0

To http://192.168.88.20/devops/HIS-BACKEND.git

 * [new tag]         v1 -> v1

[root@Programer HIS-BACKEND]# 

  • HIS前端代码托管

#关联GitLab服务器HIS-FONTEND项目与Programer主机HIS-FONTEND代码

[root@Programer HIS-BACKEND]# cd

[root@Programer ~]# cd HIS/HIS-FONTEND

[root@Programer HIS-FONTEND]# git init                          #初始化仓库

已初始化空的 Git 仓库于 /root/HIS/HIS-FONTEND/.git/

[root@Programer HIS-FONTEND]# git remote add origin             http://192.168.88.20/devops/HIS-FONTEND.git                     #关联本地与远程

[root@Programer HIS-FONTEND]# git remote -v

origin  http://192.168.88.20/devops/HIS-FONTEND.git (fetch)

origin  http://192.168.88.20/devops/HIS-FONTEND.git (push)

[root@Programer HIS-FONTEND]# git add ./                        #添加文件到暂存区

[root@Programer HIS-FONTEND]# git commit -m "Init Fontend Code" #提交到本地版本库

[root@Programer HIS-FONTEND]# git push -u origin --all          #推送所有分支

枚举对象中: 81, 完成.

对象计数中: 100% (81/81), 完成.

使用 2 个线程进行压缩

压缩对象中: 100% (81/81), 完成.

写入对象中: 100% (81/81), 2.91 MiB | 8.10 MiB/s, 完成.

总共 81(差异 16),复用 0(差异 0),包复用 0

To http://192.168.88.20/devops/HIS-FONTEND.git

 * [new branch]      master -> master

分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。

[root@Programer HIS-FONTEND]# git push -u origin --tags         #推送所有标签 

总共 0(差异 0),复用 0(差异 0),包复用 0

To http://192.168.88.20/devops/HIS-FONTEND.git

 * [new tag]         v1 -> v1

[root@Programer HIS-FONTEND]# 

案例4:Jenkins部署
Jenkins安装部署
#Jenkins主机安装OpenJDK环境

[root@Jenkins ~]# yum clean all; yum repolist -v

...

Total packages: 8,265

[root@Jenkins ~]# yum -y install java-11-openjdk-devel.x86_64   #安装OpenJDK11

[root@Jenkins ~]# ln -s /usr/lib/jvm/java-11-openjdk-11.0.15.0.9-2.el8_5.x86_64/ /usr/lib/jvm/jdk                                                #创建JDK环境软链接

[root@Jenkins ~]# vim /etc/bashrc 

[root@Jenkins ~]# tail -2 /etc/bashrc                           #声明JAVA_HOME环境变量

export JAVA_HOME="/usr/lib/jvm/jdk/"

export PATH=${JAVA_HOME}/bin/:$PATH

[root@Jenkins ~]# source /etc/bashrc                            #刷新当前bash环境

[root@Jenkins ~]# echo ${JAVA_HOME}                             #查看JAVA_HOME变量

/usr/lib/jvm/jdk/

[root@Jenkins ~]# which java

/usr/lib/jvm/jdk/bin/java

[root@Jenkins ~]# java -version

openjdk version "11.0.15" 2022-04-19 LTS

OpenJDK Runtime Environment 18.9 (build 11.0.15+9-LTS)

OpenJDK 64-Bit Server VM 18.9 (build 11.0.15+9-LTS, mixed mode, sharing)

[root@Jenkins ~]# 


#安装工具相关软件

[root@Jenkins ~]# yum -y install git postfix    #Git用于拉取代码、postfix用于发邮件


#安装Jenkins

[root@Jenkins ~]# ls jenkins-2.361.4-1.1.noarch.rpm 

jenkins-2.361.4-1.1.noarch.rpm

[root@Jenkins ~]# yum -y localinstall ./jenkins-2.361.4-1.1.noarch.rpm  #安装Jenkins


#启动Jenkins服务

[root@Jenkins ~]# systemctl enable jenkins.service              #设置Jenkins开机自启动

[root@Jenkins ~]# systemctl start jenkins.service               #启动Jenkins服务器

[root@Jenkins ~]# ss -antpul | grep java                        #确认8080端口被监听

tcp   LISTEN 0      50     *:8080     *:*    users:(("java",pid=13602,fd=8))

[root@Jenkins ~]#
Jenkins初始化
#获取Jenkins初始密码

[root@Jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword 

1aaf609acf3843a8aaf17e8b1f22e8ea

[root@Jenkins ~]# 


#浏览器访问: http://192.168.88.30:8080/

 

 

 案例5:离线部署Jenkins插件
#离线部署Jenkins插件

[root@Jenkins ~]# ls /var/lib/jenkins/plugins/              #空目录,没有任何插件

[root@Jenkins ~]# ls jenkins_plugins.tar.gz 

jenkins_plugins.tar.gz

[root@Jenkins ~]# tar -xPpf jenkins_plugins.tar.gz -C /     #解压Jenkins插件,保留文件归属

[root@Jenkins ~]# ls -l /var/lib/jenkins/plugins/               #确认该目录下文件归属


[root@Jenkins ~]# systemctl restart jenkins.service         #重启Jenkins加载插件

[root@Jenkins ~]# ss -antpul | grep java

tcp   LISTEN 0      50       *:8080    *:*    users:(("java",pid=13917,fd=8))

[root@Jenkins ~]# 

1677121682106

 案例6:Jenkins工程构建

#确认代码拉取情况

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/                #Jenkins工作目录

HIS-FONTEND

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/HIS-FONTEND/    #确认HIS-FONTEND代码拉取

favicon.ico  index.html  static

[root@Jenkins ~]# rm -rf /var/lib/jenkins/workspace/*           #清理Jenkins工作目录

[root@Jenkins ~]#

#确认代码拉取情况

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/                #Jenkins工作目录

HIS-FONTEND

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/HIS-FONTEND/    #确认拉取到子目录

HIS-FONTEND-v1

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/HIS-FONTEND/HIS-FONTEND-v1/

favicon.ico  index.html  static

[root@Jenkins ~]# rm -rf /var/lib/jenkins/workspace/*           #清理Jenkins工作目录

[root@Jenkins ~]# 

#填写到Jenkins中HIS-FONTEND工程的构建过程shell语句

rm -rf .git                 #删除拉取到Jenkins本地目录中的版本库

tar -zcf fontend.tar.gz *   #对代码进行打包操作

#确认HIS-FONTEND构建结果

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/

HIS-FONTEND

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/HIS-FONTEND/    #目录下有代码tar包

favicon.ico  fontend.tar.gz  index.html  static

[root@Jenkins ~]# rm -rf /var/lib/jenkins/workspace/*           #清理Jenkins工作目录

[root@Jenkins ~]# 

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

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

相关文章

day31WEB攻防-通用漏洞文件上传js验证mimeuser.ini语言特性

目录 1.JS验证 2.JS验证MIME 3.JS验证.user.ini 4.JS验证.user.ini短标签 (ctfshow154,155关) 5.JS验证.user.ini短标签过滤 [ ] 6.JS验证.user.ini短标签加过滤文件头 有关文件上传的知识 1.为什么文件上传存在漏洞 上传文件…

视频汇聚/云存储平台EasyCVR级联上级播放后一直发流是什么原因?

可视化云监控平台/安防视频监控系统EasyCVR视频综合管理平台,采用了开放式的网络结构,可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云存储等丰富的视频能力,同时…

大创项目推荐 题目: 基于深度学习的疲劳驾驶检测 深度学习

文章目录 0 前言1 课题背景2 实现目标3 当前市面上疲劳驾驶检测的方法4 相关数据集5 基于头部姿态的驾驶疲劳检测5.1 如何确定疲劳状态5.2 算法步骤5.3 打瞌睡判断 6 基于CNN与SVM的疲劳检测方法6.1 网络结构6.2 疲劳图像分类训练6.3 训练结果 7 最后 0 前言 🔥 优…

spire.doc合并word文档

文章目录 spire.doc合并word文档1. 引入maven依赖2. 需要合并的word3. 合并文档代码4. 合并结果 spire.doc合并word文档 1. 引入maven依赖 <repositories><repository><id>com.e-iceblue</id><name>e-iceblue</name><url>https://r…

JVM篇----第五篇

系列文章目录 文章目录 系列文章目录前言一、Java 中堆和栈有什么区别?二、描述一下 JVM 加载 class 文件的原理机制三、GC 是什么?为什么要有 GC?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通…

LIMS源码,实验室信息系统源码,后端框架:asp.net

LIMS(laboratory information management system)即实验室信息管理系统是实验室管理科学发展的成果&#xff0c;是实验室管理科学与现代信息技术结合的产物&#xff0c;是利用计算机网络技术、数据存储技术、快速数据处理技术等&#xff0c;对实验室进行全方位管理的计算机软件…

利用tpu-mlir工具将深度学习算法模型转成算能科技平台.bmodel模型的方法步骤

目录 1 TPU-MLIR简介 2 开发环境搭建 2.1 下载镜像 2.2 下载SDK 2.3 创建容器 2.4 加载tpu-mlir 3 准备工作目录 4 onnx转mlir文件 5 mlir转INT8 模型 5.1 生成校准表 5.2 便以为INT8对称量化模型 参考文献&#xff1a; 之前是用nntc转算能科技的模型的&#xff0c…

ExperimentalWarning: The http2 module is an experimental API.

错误提示 Node.js:ExperimentalWarning: The fs.promises API is experimental原因是node的版本不是最新的&#xff0c;而在项目引入的模块是最新的&#xff0c;node.js的版本低于模块的版本&#xff1a; 解决方法: 1、升级版本 npm install -g npm 更新npm到最新版 npm ins…

【C++干货铺】 RAII实现智能指针

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 为什么需要智能指针&#xff1f; 内存泄漏 什么是内存泄漏&#xff0c;内存泄露的危害 内存泄漏的分类 堆内存泄漏&#xff08;Heap leak&#xff09; 系统资…

内衣洗衣机有必要买吗?五款好用的迷你洗衣机推荐

冬天正在临近&#xff0c;普通的衣服有日常的洗衣机洗&#xff0c;但内衣裤就成了很多小伙伴的困扰&#xff0c;在我们的观念中&#xff0c;内衣裤是绝对不可以和普通的衣服一起清洗&#xff0c;在冰冷的冬季还要手洗这些贴身衣物&#xff0c;真的很难受&#xff0c;所以拥有一…

fpga外置flash程序烧录流程

Fpga外置FLASH程序烧录流程&#xff1a; step1&#xff1a; 打开vivado2019.2软件&#xff0c;找到hardware manager选项&#xff0c;进入该功能界面&#xff1b; Step2&#xff1a; 确定连接状态&#xff0c;当JTAG正确连接到板卡的调试插针后&#xff0c;会在状态窗口显示…

RNN与NLP

目录 数据处理基础&#xff1a; 处理文本信息&#xff08;text -> sequence&#xff09;&#xff1a; simple RNN模型&#xff1a; 这个教程的笔记&#xff1a; RNN模型与NLP应用(1/9)&#xff1a;数据处理基础_哔哩哔哩_bilibili 数据处理基础&#xff1a; 不能用标量…

eBay在人工智能道路上的成败得失:衡量标准是关键

我是2006年加入eBay的。2009年&#xff0c;这家公司的运营状况非常糟糕&#xff0c;其股价创历史新低&#xff08;远低于近24美元的历史高位&#xff09;&#xff0c;还出现削减各项成本、负增长、市场占有率降低、技术团队缺乏创新能力等情况。 简而言之&#xff0c;eBay公司…

[极客大挑战 2019]LoveSQL1

万能密码测试&#xff0c;发现注入点 注意这里#要使用url编码才能正常注入 测试列数&#xff0c;得三列 查看table&#xff0c;一个是geekuser另一个是l0ve1ysq1 查看column&#xff0c;有id&#xff0c;username&#xff0c;password&#xff0c;全部打印出来&#xff0c;…

未来已来:AI引领智能时代的多领域巨变

大家好&#xff0c;今天我们将深入探讨人工智能如何彻底改变我们的生活方式&#xff0c;领略未来的无限可能性。 1. 医疗革新&#xff1a;AI担任超级医生 医疗领域是AI最引人注目的战场之一。智能医学影像诊断系统&#xff0c;不仅能够精准识别病变&#xff0c;还能辅助医生提…

excel统计分析——Tukey‘s-b法多重比较

参考资料&#xff1a;生物统计学 Tukeys-b多重比较法是对Tukey法和S-N-K法的综合&#xff0c;取两种方法临界值的各1/2合成。临界值表达式为&#xff1a; 其中&#xff0c;m为秩次距&#xff0c;k为样本平均数的个数&#xff0c;df为误差项自由度&#xff0c; Tukey多重比较具…

计算机网络 第4章(网络层)

系列文章目录 计算机网络 第1章&#xff08;概述&#xff09; 计算机网络 第2章&#xff08;物理层&#xff09; 计算机网络 第3章&#xff08;数据链路层&#xff09; 计算机网络 第4章&#xff08;网络层&#xff09; 文章目录 系列文章目录1. 概述1.1 简介1.2 总结 2. 网络…

MATLAB知识点:var :计算方差(variance)

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章 3.4.1节 var &#xff1a;计算方差&#xff08;…

2024水果软件FL Studio21.2.3中文版破解注册机

FL Studio即“Fruity Loops Studio”&#xff0c;也就是众所周知的水果软件&#xff0c;一个全能音乐制作环境、数字音频工作站(DAW)。FL Studio可以用来进行编曲、剪辑、录音、混音&#xff0c;让你的计算机成为一个全功能录音室。 FL Studio 21 Win-安装包下载如下: https:…

【操作系统基础】【CPU访存原理】:寄存 缓存 内存 外存、内存空间分区、虚拟地址转换、虚拟地址的映射

存储器怎么存储数据、内存空间分区、虚拟地址转换 计算机的存储器&#xff1a;寄存 缓存 内存 外存&#xff08;按功能划分&#xff09; 计算机的处理器需要一个存储器来存储大量的指令和数据以便自己不断取指执行和访问数据。 内存&#xff08;内存就是运行内存&#xff0c…