Stack vs Heap [栈和堆的区别]
Published: Apr. 29, 2018
栈[stack]和堆[heap]是两个编程时经常需要操作的内存空间。虽然接触两个概念很早,但只了解他们内存申请方式不同,其实它们的具体区别由很多,最重要的是申请方式,申请效率,和申请大小
栈[stack]和堆[heap]是两个编程时经常需要操作的内存空间。虽然接触两个概念很早,但只了解他们内存申请方式不同,其实它们的具体区别由很多,最重要的是申请方式,申请效率,和申请大小
这里总结了关于计算机编程的一些有用的提示和计算机程序的一些原理。笔者认为非常有用。
Log-Structured Merge Trees[以下简称LSM Tree]是一种能够支持海量数据的索引结构,但是,千万不要被它的名字迷惑,LSM Tree虽然可以算是索引,但跟B-Tree这种树状结构的索引算法没有半毛钱关系。
Snowflake算法是Twitter提出,为了快速生成全局唯一且总体有序的ID,且ID生成过程不依赖任何中间件,无网络通信[其性能每秒生成300w+]。
Write Amplification 写入放大,Write Amplification Factor写入放大系数。写放大系数的含义:当我们的host要求向ssd写入A大小的有效资料,而实际上由于flash的特性,我们真正写入flash的资料大小是B,那么B/A就是写放大系数。
数据库中的锁[lock]是用于并发控制[concurrency control]的重要机制,其本质是对特定数据的控制。一般来说,在应用了锁机制的数据库系统中,如果想要访问/修改任何一个数据,则一定是要先对该数据加锁,访问之后再释放锁。锁主要有两种形式,共享锁[shared lock]和排它锁[exclusive lock]。
数据库并发控制的一个重要概念就是Serializability[可串行化],先上两个教科书的解释