CRLF与LF的差异


大多数人应该对这两个并不陌生,但是你有深入了解过这两个概念吗?今天我们通过这篇来深入探讨一下,希望你读完这篇文章之后不会再感到困扰。

CRLF 与 LF:换行到底是什么?

要真正理解 CRLF 与 LF 换行的问题,我们需要复习一些排版历史。

人们使用字母、数字和符号来相互交流。但是计算机只能理解和处理数字。由于计算机上的文件由人类可读的字符串组成,因此我们需要一个允许我们在这两种格式之间来回转换的系统。 ASCII 标准就是这样的系统——它将 A 和 z 等字符映射到数字,弥合了人类语言和计算机语言之间的鸿沟。

有趣的是,ASCII 标准不仅仅适用于字母和数字等可见字符。某个子集是控制字符,

Read more

Git中的一个特殊hash


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

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

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

4b825dc642cb6eb9a060e54bf8d69288fbee4904

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

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

git中hash从哪里来?

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

Read more

Archlinux Install tutorial


Arch Linux Installation Guide on HP Pavilion

My computer details:

>Computer: HP Pavilion laptop

>CPU: Intel i5-8250U

>GPU: NVIDIA MX150

Pre-installation

Verify the boot mode

To verify if it is UEFI mode, use this command:

ls /sys/firmware/efi/efivars

If it show some details, the system is U

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

[译]费曼技巧:最好的学习方式


写在前面

最近读书的时候偶然发现了费曼技巧,所以查阅了一些资料,找到了这篇文章,写的还不错,就翻译了一下给大家看看,原文在这里

其实费曼技巧原理很简单,当时了解到的时候,就感觉有点像我给自己的父母去解释一些新的概念的时候的思路:用简单的语言去解释一些较为复杂的概念,在这个思路的转换期间,你也就学会了这个概念。


如果你正在寻找一种方法来增强你的学习并变得更聪明,那么费曼技术可能就是绝对学习任何东西的最佳方法。

费曼技巧(Feynman Technique)有四个步骤: 1. 选择想学习的概念 2. 假装正在将其教给小孩子 3. 找出解释中的空白(gaps,自己不理解的部分);回到原始资料,以

Read more

C++ Static关键字详解


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

面向过程:

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

Read more

C++ inline关键字详解


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

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

Read more