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存储器 -> 输出设备)