Linux相关概念和重要知识点(7)(git、冯诺依曼体系结构)

news2024/9/24 13:40:38

1.git

(1)版本控制和版本控制器

当我们修改一个项目的时候,一般都会先留下一个备份再修改,并将修改的文件命名为第一次修改、第二次修改......当需要途中的任何版本,或是需要回退到之前的版本时,都能够找到备份的项目。因为所有的修改都被记录了下来了,所有版本都能找到,这就叫做版本控制。

如此一来,软件的每次修改都会被保存,v1、v2、v3...版本。如果某个版本出现了严重的问题,且短时间不能解决,开发人员可以快速回滚到上一个版本,将出现问题的新版本改好后再上线。回退是软件层面一个很严重的事故,但至少有退步的空间,能在出现问题时快速作出回应,而不会造成长时间软件不可用的状态

上述说到的先备份、再修改的版本控制在项目小、人员少时能手动控制,但人数一多就必须借助版本控制器(git、svn)。

(2)理解git是一个分布式的、去中心化的版本控制的版本控制器

git是一个版本控制器。我们需要建立一个仓库,git可以帮我们把数据提交到仓库里,也可以帮我们拉取。我们可以简单理解为,git是一个帮我们在仓库管理数据的软件。

借助git来进行版本管理有一个特点,就是每个人的电脑上都可以本地管理,在本地就有着完整的修改记录。我们可以只建立一个本地的仓库,然后用git管理,这样也省去我们自己手动管理的时间。但实际上,除了本地的仓库,远端仓库可以更好帮助我们保存数据,也有助于多人协同远端仓库和本地仓库本质上没有区别,在git看来都是仓库,以同样的方式提交或拉取数据。但远端仓库是保存在提供仓库的大型服务器上,本地仓库是在我们电脑上的。

Gitee和Gitub就有提供远端仓库的大型服务器(一般叫做代码托管平台),我们提交代码后可以到对应的网站去管理或查看它们,很方便,别人也可以直接从远端仓库将我们的代码pull下来,多人协同很方便。因为代码托管又是明显,很多大型企业也在用,也存在合作和资助的关系,这也体现出和开源一样的商业模式(其实git软件本身也是开源的)。

何为中心化?中心化是指所有数据的处理集中在大型服务器上,本地的数据强烈依赖大型服务器。在git这一套体系中,远端仓库确实聚集了很多数据,但本质上源数据都是在本地管理,本地包含所有版本信息,修改历史(本地才是数据的中心),只是最后上传保管,有的时候对协同工作有帮助而已(在服务器上新建一个目录)。换句话说,就算哪一天Gitee和Gitub突然出问题,远端仓库全部销毁了,git管理的本地仓库依然有全套数据和修改,我们换一个能提供远端仓库的服务器就好了。而如果是中心化、集中式管理,那么服务器一崩,所有数据都会丢失。

综上所述,git保证远端仓库和本地仓库同步,实现分布式、去中心化管理。

(3)git常用操作

①获取远端仓库:git clone (远端仓库路径),获取同时还会自动在本地新建一个仓库.git,用于本地和远端同步管理。

②提交流程:git add (文件路径)先将待提交文件添加到git暂存区index中。隐藏的目录.git中,可以找到这个index暂存区,index是一个特殊编码的文件,使用git自己的编码格式。add之后我们只能算是将文件临时添加到了git仓库中,但是可以选择放弃提交而不留痕迹。

git commit -m "(描述信息)"将暂存区数据提交到本地仓库,每次提交都有一个id值(版本链),这个时候仓库中修改数据、版本信息都会被保存。在.git的objects目录中我们可以看到版本管理,根据id可在里面找到信息,这个时候我们依然可以选择回退某些信息。

git push之后,本地仓库的数据就和远端仓库数据同步,此后想要回退就很复杂了。如果同步之前远端仓库的数据和本地相比有修改的话,那就先要先git pull先将云端数据同步下来才行。如果出现了冲突,即远端修改的那部分代码和本地编辑的代码在同一文件,则会都保存在一起,让我们自行处理(不会乱)。

③其余操作和文件

git status查看git仓库状态,也可以查看暂存区的文件信息

git log查看提交记录的日志

.gitignore里面存的是忽略上传的文件后缀,本地托管和远端仓库都不会被提交,可以节省一定资源

(4)git开源的意义

git整个软件开源(没有分客户端和服务器端),人们可以研究git源代码来实现一个能使用git来提交的服务器。这也是git通用于Gitee和Gitub的原因,它们是在git开源下做出的二次开发。并且git并没有分客户端和服务器端(server 和 client),维护起来也比较容易

2.冯诺依曼体系结构

冯诺依曼体系结构中计算机的基本原理是存储程序和程序控制。计算机为了完成指定数据处理,要按照指定流程完成指定功能,指令的合计就是一段程序。

SRAM、DRAM、Cache:SRAM是静态随机存取存储器,它不需要刷新就可以维持数据,并且和DRAM一样都凸显“随机”二字,和随机迭代器一样可以直接访问对应地址,存储位置几乎不影响存取时间。其中DRAM用于内存,SRAM用于Cache(高速缓存)。Cache集成在CPU中,不属于存储器。

CPU在数据层面上都是和DRAM打交道,而不会和硬盘打交道。因为硬盘和CPU比起来太慢了,会受到木桶效应限制,而内存是读取速度稍快,价格稍低的硬件,可以说DRAM极大降低了计算机的价格,是冯诺依曼体系结构中很重要的一环。任何程序运行的时候都必须从硬盘加载到内存,CPU不会直接访问外设,冯诺依曼体系结构决定程序必须先加载到内存中

数据在计算机内部流转时,本质是在不同设备间进行拷贝。如IO流(Inuput输入设备 -> 存储器,Output存储器 -> 输出设备)

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

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

相关文章

远程连接服务器时出现“这可能是由于CredSSP加密数据库修正”的错误提示的解决办法

现象: 当远程连接服务器时,有时候会出现以下提示,从而导致无法成功连接服务,如下所述: 原因: 远程桌面使用的是“凭据安全支持提供程序协议 (CredSSP) ”,这个协议在未修补的版本中是存在漏…

焊接缺陷检测系统源码分享

焊接缺陷检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

实现高效物联网通信:MQTT协议深入解析

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,最初由IBM于1999年开发,目的是为了监控远程设备的传感器和嵌入式系统之间的通信。它的目标是提供一种简单、高效、可靠的消息传递机制,以满足低…

1.5 计算机网络的性能指标

参考:📕深入浅出计算机网络 目录 速率 带宽 吞吐量 时延 时延带宽积 往返时间 利用率 丢包率 速率 速率是指数据的传送速率(即每秒传送多少个比特),也称为数据率(Data Rate)或比特率&am…

【React与Vue】如何在页签中监听 LocalStorage 变化?这些方法你都试过吗?

在开发中,你是否会碰到过这样的需求:需要监听 LocalStorage 的变化。这在不同浏览器页签间是相对简单的,因为浏览器提供了内置的 storage 事件。但在同一个浏览器页签下,却没有直接的方式实现。今天,我们探讨下有几种高…

中电金信多模态鉴伪技术抵御AI造假威胁

AI换脸技术,属于深度伪造最常见方式之一,是一种利用人工智能生成逼真的虚假人脸图片或视频的技术。基于深度学习算法,可以将一个人的面部特征映射到另一个人的面部,创造出看似真实的伪造内容。近年来,以AI换脸为代表的…

关于Cursor使用的小白第一视角

最近看破局感觉洋哥总是提到cursor,感觉好火,所以打算学习一下怎么用Cursor,如果可以希望能做一个我自己的网站。 之前从来没用过Cursor。所以,这是一篇小白视角的Cursor使用教程。 如果你也是一个小白,并且对Cursor…

【Python】Spyder:科学 Python 开发环境

在数据科学和科学计算领域,Python 已经成为了一个不可或缺的工具。为了提高开发效率和改善编程体验,一个功能强大且用户友好的开发环境是必需的。Spyder(Scientific Python Development Environment)正是这样一个为科学计算和数据…

Redhat 7,8,9系(复刻系列) 一键部署Oracle19c rpm

Oracle19c前言 Oracle 19c 是甲骨文公司推出的一款企业级关系数据库管理系统,它带来了许多新的功能和改进,使得数据库管理更加高效、安全和可靠。以下是关于 Oracle 19c 的详细介绍: 主要新特性 多租户架构:支持多租户架构,允许多个独立的数据库实例在同一个物理服务器上…

网络PPP协议802.11协议以太网协议IPV4协议在思科模拟器的实现

1)PPP协议 1. 选择2620系列交换机,添加WIC-2t模块,具有两个serial串行接口; 2.Router>enable:进入特权模式 Router#configure terminal:全局配置模式 Enter configuration commands, one per line. End with CNTL…

配置win10开电脑时显示可登录账号策略

有1台公用的windows10电脑,电脑上有N多用户,使用人员登录时选择相应的账号登录即可。但在某次使用脚本加固后,发现之前显示的用户都不能显示了。检查加固脚本,是脚本启用了“交互式登录:不显示上次登录”策略。因此&am…

基于SpringBoot+Vue的垃圾分类回收管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

RHCSA认证-Linux(RHel9)-Linux入门

文章目录 概要一、创建、查看和编辑⽂本1.1 输出重定向1.2 vim编辑器1.3 shell 变量1.5 获取帮助 二、管理本地用户和组2.1 描述用户2.2 切换用户和赋权2.3 用户管理2.4 用户组管理2.5 密码策略 三、控制文件访问3.1 列出文件和文件权限3.2 更改文件权限和拥有者3.3 控制默认权…

【中级通信工程师】终端与业务(二):终端产品

【零基础3天通关中级通信工程师】 终端与业务(二):终端产品 本文是中级通信工程师考试《终端与业务》科目第二章《终端产品》的复习资料和真题汇总。终端与业务是通信考试里最简单的科目,有效复习通过率可达90%以上,本文结合了高频考点和近几…

JUC并发编程_阻塞队列 BlockingQueue

JUC并发编程_阻塞队列 BlockingQueue 一、基本概念二、主要特性三、常用方法四、实现类ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueSynchronousQueue 五、使用场景六、注意事项 一、基本概念 阻塞队列是一种特殊的队列,它除了支持普通队列的插入&…

电动车车牌识别系统源码分享

电动车车牌识别检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer V…

VUE-CLI配置全局SCSS变量

一.引入node-sass和sass-loader依赖 npm install --save-dev sass-loader node-sass 二. 在项目根目录中创建一个scss变量文件,比如constant.scss: 三.在vue.config.js文件中引入这个变量文件: // vue.config.js module.exports {css: {l…

艾体宝产品丨无需代码开发!Redis数据集成助你轻松优化数据库

我们不仅致力于加速应用程序的构建过程,更专注于助力您达成最终目标——实现应用的高效运行。因此,我们欣然宣布,Redis 数据集成(Redis Data Integration,RDI)(https://redis.io/data-integration/) 已经正…

自动化学习1:pytest自动化框架的基本用法:注意事项/断言assert/测试结果分析

一.注意事项: ①创建test开头的文件(test_)/类/函数或方法 ②pytest中以每一个函数或方法,作为用例 ③pytest启动方式:pytest def test01(): # 函数(写在类外边是函数)passclass Test:def t…

【机器学习】决策树算法

目录 算法引入 基尼系数: 决策树算法概述 决策树的关键概念 决策树的构建 代码实现 1. 定义决策树节点 2. 计算信息增益 3. 选择最佳分割特征 4. 构建决策树 5. 决策树预测 决策树的评估指标: 决策树的优缺点 优点: 缺点&…