-
在git的源码中有这样一句
#define cache_entry_size(len) ((offsetof(struct cache_entry,name)+(len)+8)\
&~7)
开始我死活看不懂这什么意思,8这样的幻数已经够吓人的了,再来个对7取反码,实在看不懂。但是经过几天的研究终于明白这是什么意思了。
背景
前面的代码是描述cache的,cache在git中可以类比于CPU的高速缓存——为了加快访问速度,cache主要考虑的是工作目录和暂存对象(已经加到cache中但是并没有提交的对象)的差别,因此它只要将工作目录中的文件的stat信息保存即可。在新版的g...
-
git其实就是一个CAS(Content-addressable storage)系统,要想取得一个对象就必须提供该对象的哈希值而非对象的路径,这样特性的实现方法就是使用对象的哈希值作为对象的路径。git使用的哈希算法是sha1算法。git的对象数据库还有一个属性就是所有的对象只能添加、读取,不能删除、修改,这样保证了整个代码历史的完整性。
git对象文件
所有git对象都保存在.git/objects中,例如
.git/objects/03/7dc5e0f2cd4e0f4ff2385843beab28170c31f5
表示一个对象,.git/objects目录下的目录名03是对...
-
我们都知道1861年美国打了一场著名的解放奴隶的南北战争,但是对于这个战争的原因却有不同的观点:
按照中国教科书上的观点,北方和南方的经济基础是不一样的,北方主要是工业生产,而这些生产很多都是半自动化的,这样的产业对于劳动力的需求很低,但是对于自由消费者的需求却很旺盛,因此北方人民一直反对奴隶制度。与北方相反,南方主要是农业,而农业的自动化程度很低,所以整个南方对于劳动力需求旺盛,而廉价的黑奴则是最好的选择。
教科书上让我们相信了,美国人民南北战争的原因一开始就是经济原因,与道德无关。
但是林达的《我也有一个梦想》观点却更加令人信服,他是从移民成分的角度来分析的:北方的移民大部分都...
-
我们总是说美国人民非常自由,其中我觉得最为重要的自由就是言论自由了。这样的自由甚至被写入宪法修正案,也就是美国宪法非常著名的第一修正案。
条文的内容如下:
Congress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, a...