CRLF和LF
重视由于历史的原因,各种不同的操作系统在处理行尾结束符采取了不同的处理方法:
- CRLF(carriage return line feed),即“回车换行”,是Windows下的文件换行符
\r\n
- LF(line feed),即“换行”,是类Unix下的文件换行符
\n
- CR(carriage return),即“回车”,是Mac OS下的文件换行符
\r
(现在Mac OS X下已经改回LF)
关于产生CRLF和LF的历史原因可以看这篇文章:CRLF和LF的差异
重视由于历史的原因,各种不同的操作系统在处理行尾结束符采取了不同的处理方法:
\r\n
\n
\r
(现在Mac OS X下已经改回LF)关于产生CRLF和LF的历史原因可以看这篇文章:CRLF和LF的差异
研究大牛的作品是接近大牛的必要步骤——膜Linus Torvalds
创建一个README.md
文件,写入两行文字:Git is a distributed, open source version control system.
You can install git on Linux using binary release.
我们将它作为这个文件的第一个版本,之后有一天,我想再对它做一点修改:Git is a distributed, open source version control system.
You can install git on Linux, Windows using binary release.
Or you can compile from source code.
在版本控制系统还没有出现之前,人们总是用不同的文件名来区分不同的文件版本。如果想未来能回滚到之前的版本,此时只能用README_2.md
来去分它。随着版本越来越多,文件名越来越长,管理大量版本的文件成为了噩梦。
请求堆上分配内存需要操作系统的参与,频繁的向请求内存开销很大。为了优化这个问题,可以把预先分配一部分内存放在池子里。
C++在堆上创建对象一般是用new
,new
的执行包含了两个过程:
而delete
的执行也包含了两个过程:
当创建单个对象的时候,我们拥有构造对象所需的值,我们通常希望内存分配和对象初始化组合在一起;但是连续分配一堆对象的时候,我们往往希望分配内存和对象初始化分离,先分配一大快内存,在需要时再按需执行对象的初始化,此时如果将内存分配和对象初始化放在一起则会导致不必要的性能开销。例如new std::vector<T>(10)
,我们希望只分配10个T
类型的空间,而不执行T
的默认构造方法,只有在emplace_back
的时候才对内存初始化。
由于平时一直使用Arch Linux环境写代码,但是公司只给用Windows,对Windows MinGW开发环境的场景觉得很不顺手。由于业务是Linux业务,在本地开发无法编译,需要使用远程编译机编译。这种模式使得调试程序只能远端编译后,在远端不使用GDB,而GDB命令行不仅难用还有高昂的学习成本。最近新发现一写远程开发/调试的方案,再次整理出来以应付C++跨平台开发的场景。
. |