传统版本控制与git比较,以及安装

传统版本控制器SVN,CVS属于典型的集中式版本控制系统,类似于C/S 构架服务器,修改代码的时候,要先从中央服务器取出文件,进行编辑,修改,然后推送给中央服务器,其特点就是需要联网才可以工作(不管是局域网,还是互联网中,局域网中带宽大,速度快),如果在互联网中进行数据传输,一个比较大的文件就需要很长时间。如果服务器挂了 ,那么客户端就只能干瞪眼了。

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。类似于p2p服务器模型,每个既是客户端,还有服务器端的完整数据。

二:安装

在Linux上安装Git

首先,你可以试着输入git,看看系统有没有安装Git:

$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git

像上面的命令,有很多Linux会友好地告诉你Git没有安装,然后按照提示sudo apt-get install git 即可。

在Mac上安装Git

如果你正在使用Mac做开发,有两种安装Git的方法。

一是安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/

第二种方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

参照廖雪峰博客记录

git历史

Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码。期初世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

开发Samba的Andrew试图破解BitKeeper的协议,被BitMover公司发现了,于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!(太牛逼了)

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

编写高效服务器程序,需考虑的因素?

简单的搜索查询了下资料,copy了一些idea:

服务器带宽 内存 硬盘大小
建立连接池
肯定要分布式 连接请求如何分配
进程、线程如何访问临界资源
如何判断客户端已经挂了
如何避免DNS攻击
地址映射

降低每个连接的内存占用量。
降低每个连接的CPU资源占用率。
主要用iocp epoll kqueue以及sendfile这些api。研究学习nginx源码。

20151112

下班回家,异常的感觉疲惫,倒头睡了一会,起来洗澡,逛了一圈coolshell,发现了一个好的博客:

Linus:为何对象引用计数必须是原子的

Linus大神又在rant了!这次的吐槽对象是时下很火热的并行技术(parellism),并直截了当地表示并行计算是浪费所有人时间(“The whole “let’s parallelize” thing is a huge waste of everybody’s time.”)。大致意思是说乱序性能快、提高缓存容量、降功耗

进而发现 冠诚关于并行技术的研究,很多当代技术。有干货看了。