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

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

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.kler.cn/a/322208.html

相关文章:

  • 【C++笔试强训】如何成为算法糕手Day1
  • C++系列-STL容器中算法中的最大最小
  • Pymysql cursor.execute 批量执行插入语句踩坑
  • OpenAi_Moderation审核更新
  • stm32单片机个人学习笔记6(EXTI外部中断)
  • 【RabbitMQ 项目】客户端:消费者模块
  • WEB3.0是什么?
  • 「JavaScript深入」聊一聊 new操作符具体干了什么?
  • Springboot Mybatis操作数据库
  • 高精度图像尺寸测量仪(闪测仪)测量内径深度
  • CSS的弹性盒子模型(Flex box)
  • 【Hive】学习路线:架构、运维、Hsql实战、源码分析
  • 如何将Excel表格嵌入Web网页在线预览、编辑并保存到自己服务器上?
  • 大数据毕业设计选题推荐-安顺旅游景点数据分析系统-Hive-Hadoop-Spark
  • docker-compose up -d 和 docker run -d your_image_name 的区别
  • 原生app云打包,更换图标,和名称。PDA的安装正式包
  • web入门
  • Codeforces Round 972 (Div. 2) A~E
  • 事务 Atomicity Consistency Isolation Durability
  • 七大机器学习常用库一次讲清楚(TensorFlow|Scikit-Learn|NumPy|Keras|PyTorch|LightGBM||NLTK)