分类目录归档:AlLis比特

Git中的一个特殊hash


最近了解了一点Git的内部原理,看到了一个特殊的hash,所以写了这一篇文章来分享自己的看法。

==============

既然你读这篇文章,那就意味着你应该比较熟悉Git的一系列操作,不过,在你使用 Git 的时候,你有没有遇到以下hash:

4b825dc642cb6eb9a060e54bf8d69288fbee4904

可能你会觉得git中的每个对象都有一个hash值,谁会注意hash的数值。确实,没有人会注意。

但是上面的这个hash确实是一个很特别的hash,接下来就来说明为什么这个hash是一个特殊的存在。

git中hash从哪里来?

每个 git 存储库,即使是空存储库也将

Read more

如何快速查看github代码库中某次commit的记录


如果你想要学习一个开源库,最好的方法就是从头开始看源码,所以你可能想要从第一次commit开始看。有的人可能觉得很简单啊,进入commit页面直接翻到最后一页就好了啊。的确,如果是你看的是一个小的项目,提交次数不会太多,你可能翻几页就到最后了,可是,如果是像Linux这种项目,将近100k次提交,手动翻页翻到明年了。。。

linux commit

这时候就需要一个简单的方法能够定位到第一次commit。

所以第一个想法就是在URL上操作,仔细观察对比之后可以发现,GitHub的翻页是根据commit的SHA值来定位的,

第二页的url是

https://github.com/torvalds/linux/commi

Read more

Hugo+Github搭建个人博客


安装Git

  1. 这个页面下载最新版的Git。
  2. 然后按照wizard指引安装Git。
  3. 配置环境变量
graph LR
a[control panel] --> b[System and Security]
b[System and Security] --> c[System]
c[System] --> d[Advanced system settings]
d[Advanced system settings] --> e[ENvirment Variables..]
e[ENvirment Variables..] --&g

Read more

C++ Static关键字详解


C++的static有两种用法:面向过程程序设计中的static(延续C语言)和面向对象程序设计中的static。

面向过程:

  1. 静态全局变量:
    • 该变量在全局数据区分配内存;
    • 未经初始化的静态全局变量会被程序自动初始化为0(自动变量的值是随机的,除非它被显式初始化);
    • 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
    • 静态全局变量不能被其它文件所用;
    • 其它文件中可以定义相同名字的变量,不会发生冲突;
  2. 静态局部变量:
    • 该变量在全局数据区分配内存;
    • 静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
    • 静态局部变量一般在声明处初始化,如果没有

Read more

C++ inline关键字详解


当程序执行函数调用指令时,CPU将存储该函数调用后指令的内存地址,将函数的参数复制到堆栈上,最后将控制权转移到指定的函数。然后,CPU执行函数代码,将函数返回值存储在预定义的内存位置/寄存器中,并将控制权返回给调用函数。如果函数的执行时间少于从调用者函数到被调用函数(被调用者)的切换时间,则这可能会成为开销。对于大型函数和/或执行复杂任务的函数,与函数运行所花费的时间相比,函数调用的开销通常微不足道。但是,对于小型的常用功能,进行函数调用所需的时间通常比实际执行函数代码所需的时间多得多。对于小功能,由于小功能的执行时间少于切换时间,因此会产生开销。

C ++提供了inline函数,以减少函数调

Read more

C++继承/多态/虚函数


继承

访问控制和继承

访问 public protected private
同一个类 yes yes yes
派生类 yes yes no
外部的类 yes no no

一个派生类继承了所有的基类方法,但下列情况除外:

  • 基类的构造函数、析构函数和拷贝构造函数。
  • 基类的重载运算符。
  • 基类的友元函数。

一个问题

    #include <iostream>
    class A{
    private:
    int a;
    char b;
    };

    class B: public A{
    public

Read more