Acquire and Release Semantics

SEP 13, 2012 http://preshing.com/20120913/acquire-and-release-semantics/ 通常说来,在lock-free编程中,线程之间有两种方式可以操作共享内存:它们可以竞争同一个资源,或者相互协作的从一个向另一个传递信息。Acqui...

2016-11-21 15:34:56

阅读数 4162

评论数 0

The Happens-Before Relation

JUL 02, 2013 http://preshing.com/20130702/the-happens-before-relation/ Happens-before是一个现代计算机科学术语,对于描述C++11,Java,Go甚至LLVM之后的software memory model是有...

2016-11-21 15:33:45

阅读数 2773

评论数 0

This Is Why They Call It a Weakly-Ordered CPU

OCT 19, 2012 http://preshing.com/20121019/this-is-why-they-call-it-a-weakly-ordered-cpu/ 注:对于理解weak cpu下的reordering而言,这真是一篇相当好的文章。拿起你的xcode和4s,可以直接...

2016-11-14 15:31:06

阅读数 2713

评论数 0

Weak vs. Strong Memory Models

SEP 30, 2012 http://preshing.com/20120930/weak-vs-strong-memory-models/

2016-11-14 15:29:35

阅读数 3336

评论数 0

Memory Barriers Are Like Source Control Operations

前言:第三篇,老外想象力挺丰富,和代码版本控制联系起来,确实可以帮助人比较直观的理解Memory Barrier。 JUL 10, 2012 http://preshing.com/20120710/memory-barriers-are-like-source-control-operat...

2016-11-14 15:28:23

阅读数 2966

评论数 0

Memory Ordering at Compile Time

JUN 25, 2012 原文在这:http://preshing.com/20120625/memory-ordering-at-compile-time/ 前言:这是译自preshing博客的第二篇文章,本文讨论的是编译优化导致的重排序问题。从你写C/C++源代码到它在CPU里执行,这段代...

2016-10-19 20:25:20

阅读数 2960

评论数 0

Memory Ordering in Intel Family

前言:这篇文章是翻译自的Intel x86/64的规范文档,其中第8.2节中有关Memory Ordering的几段。整个文档是一本巨书,这里可以download:http://www.intel.com/content/dam/www/public/us/en/documents/manuals...

2016-10-19 16:42:30

阅读数 2841

评论数 0

Memory Reordering Caught in Act

前言: 首先是翻译的几篇文章,作者是一个老外,虽然文章是几年前的,但是很值得一读。 最近不知道写些什么东西,拿这个先凑几篇其次有关什么memory ordering,memory reordering,memory model这些名词,可能很多时候直接e文,没有翻译,个人习惯。Memory R...

2016-10-19 15:13:17

阅读数 2890

评论数 0

初见Raft

这几天研究了一下Raft协议,继Paxos之后出来的第二个可以理论证明自己正确性的分布式一致性协议(可以这么说吧,没仔细了解过其它协议)。 其实看过paxos,初看Raft,感觉还是有很多熟悉的面孔,仔细看作者的描述,确实两者也有不少差别。 我觉得basic paxos好像也没有Ongaro说...

2015-01-07 15:20:09

阅读数 5631

评论数 2

个人数据搜索

有时间再仔细讲讲。

2014-10-24 14:11:48

阅读数 4967

评论数 0

从MySQL Bug#67718浅谈B+树索引的分裂优化

原文链接:http://hedengcheng.com/?p=525

2014-06-11 10:41:00

阅读数 6871

评论数 1

Leveldb源码分析--22

14 DB的查询与遍历之214.4 DBIterLeveldb数据库的MemTable和sstable文件的存储格式都是(user key, seq, type) => uservalue。DBIter把同一个userkey在DB中的多条记录合并为一条,综合考虑了userkey的序号、删除标...

2013-11-26 18:01:53

阅读数 10858

评论数 7

Leveldb源码分析--21

最近工作上事情太多,更新的也比较慢了。14 DB的查询与遍历分析完如何打开和关闭db,本章就继续分析如何从db中根据key查询value,以及遍历整个db。14.1 Get()函数声明:StatusGet(const ReadOptions& options, const Slice&am...

2013-09-05 13:22:58

阅读数 9428

评论数 7

Leveldb源码分析--20

12 DB的打开先分析LevelDB是如何打开db的,万物始于创建。在打开流程中有几个辅助函数:DBImpl(),DBImpl::Recover, DBImpl::DeleteObsoleteFiles, DBImpl::RecoverLogFile, DBImpl::MaybeScheduleC...

2013-07-12 15:03:32

阅读数 10095

评论数 2

Leveldb源码分析--19

11 VersionSet分析之211.4 LogAndApply()函数声明:Status LogAndApply(VersionEdit*edit, port::Mutex* mu)前面接口小节中讲过其功能:在currentversion上应用指定的VersionEdit,生成新的MANIFE...

2013-06-03 11:11:09

阅读数 7724

评论数 0

Leveldb源码分析--18

11 VersionSet分析之1Version之后就是VersionSet,它并不是Version的简单集合,还肩负了不少的处理逻辑。这里的分析不涉及到compaction相关的部分,这部分会单独分析。包括log等各种编号计数器,compaction点的管理等等。11.1 VersionSet接...

2013-06-03 10:52:20

阅读数 8307

评论数 0

Leveldb源码分析--17

10 Version分析之210.5 Version::UpdateStats()当Get操作直接搜寻memtable没有命中时,就需要调用Version::Get()函数从磁盘load数据文件并查找。如果此次Get不止seek了一个文件,就记录第一个文件到stat并返回。其后leveldb就会调...

2013-05-11 20:27:41

阅读数 8400

评论数 6

Leveldb源码分析--16

10 Version分析之1先来分析leveldb对单版本的sstable文件管理,主要集中在Version类中。前面的10.4节已经说明了Version类的功能和成员,这里分析其函数接口和代码实现。Version不会修改其管理的sstable文件,只有读取操作。10.1 Version接口先来看...

2013-04-19 13:46:21

阅读数 8715

评论数 0

Leveldb源码分析--15

9 LevelDB框架之29.4 版本控制当执行一次compaction后,Leveldb将在当前版本基础上创建一个新版本,当前版本就变成了历史版本。还有,如果你创建了一个Iterator,那么该Iterator所依附的版本将不会被leveldb删除。在leveldb中,Version就代表了一个...

2013-04-15 09:29:38

阅读数 12794

评论数 0

Leveldb源码分析--14

9 LevelDB框架之1到此为止,基本上Leveldb的主要功能组件都已经分析完了,下面就是把它们组合在一起,形成一个高性能的k/v存储系统。这就是leveldb::DB类。这里先看一下LevelDB的导出接口和涉及的类,后面将依次以接口分析的方式展开。而实际上leveldb::DB只是一个接口...

2013-04-10 17:55:44

阅读数 10603

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭