-
分析levelDB源码的时候遇到的...发现是一个广泛应用的hash算法,而且是纯c写的,于是找来了源码看。 **MurmurHash** 是一种非[加密](https://zh.wikipedia.org/wiki/)型[哈希函数](https://zh.wikipedia.org/wiki/),适用于一般的哈希检索操 …
Read More -
起因是最近在看levelDB源码,其中port里的atomic_pointer.h文件用到了内存屏障。。 于是来学习一下。。 粗略得说下我自己的理解。 代码的顺序并不和执行的顺序完全对应,出于对效率的追求,cpu和编译器会对一些顺序指令重排,以期得到最大的执行效率。 比如下面这段代码: // example 2 // void *ptr, v, _store; v = ptr; _store = v; somefunc(); v = _store; v的值是没有改变的,那么编译器可能会认为_store = v; v = _store; 是多余的,就直接把这一段给“优化”掉了。这段代码在单线程中确实是多余的,但是在多线程环境下,可能 …
Read More -
参考资料: awk_维基百科 awk简明教程 awk是一门比较古老但是很好用的文本处理工具(语言?) 语法还是很好懂的。。。转载了一篇文章。。。算是简明手册? 不过台词有点糟糕orz 有一些网友看了前两天的《[Linux下应该知道的技巧](http://coolshell.cn/articles/8883.html)》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。**况且,AWK是贝尔实验室1977年搞出来的文本出现神器,今年是蛇年,是AWK的本命年,而且年纪和我相仿,所以非常有必要为他写篇文章**。 之所以叫AWK是因为 …
Read More -
基本全文照搬了:关于C++ const 的全面总结 总结全面还是要一点时间的orz..感谢原作者,暂时没发现有什么错误(? 其中对我而言比较陌生的是“const修饰成员函数”的用法。。已经加粗。 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。 Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 ** **如下表所示: **No.** **作用** **说明** **参考代码** 1 可以定义const …
Read More -
原始论文:一致性哈希 本来不打算放的。。被批评说太不严谨orz.. 说说自己的理解好了。。 大概就是。。。hash的时候。。一开始有n个桶。。你设计的函数是y=x%n...看起来美滋滋。。。 然后这时候突然一个桶不见了。。。如果按照之前设计的hash函数。。就变成了x%(n-1)... 这可能会造成大量的数据改变自己之前所在的桶。。。这是不可接受的。。。 或者是。。。当前的桶不够用了。。要增加一个桶。。。变成了x%(n+1)。。。也会出现类似情况。。。 我们的目的就是设计一种算法。。。使得当减少一个桶或者增加一个桶的时候。。。。变化尽可能小。。。 并且希望以后新放入的数据尽可能到新的桶中(? 桶是简化的模型。。。实际应用上。。。一致 …
Read More -
参考:[wiki_FHS](http://Filesystem Hierarchy Standard) 其实这东西。。。虽然有一个统一的标准。。。但是不同发行版。。。或者同一个发行版的不同版本。。。差异貌似都蛮大的。。。所以只是理论上各个目录的作用。。。可能和具体的发行版不符。。。 Linux 目录 在 Linux 下,我们看到的是文件夹(目录): 在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱。Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系 …
Read More -
参考链接 简要概述原理: 每个文件都由各种不同代码组成,比如01代码。这类文件只有数字0与1组合。 压缩原理就是 【通过寻找其中的规律,简化数字的排列】。 比如 00000110001111111111 可以简化成 5个0,2个1,3个0,10个1的排列 100000000000 可以简化成数学的 10^10 至于@yskin 说 没见过2G压缩到十几兆的。 实际上在极限压缩方式下其实28.1G压到25.8M都可以。 <img src="https://pic1.zhimg.com/893534a767ddb047cc04dd66e2a43900_b.jpg" …
Read More -
回想起大一的时候打cf...那个时候对C++还不怎么熟悉。。。用sort不会自定义排序方式。。 于是手写快排。。。直接取中间元素没加随机化。。。跪了。。。 后来知道sort怎么写以后。。发现sort是可以通过的。。。 于是我就一直以为sort是带随机化的快排。。。 然而实际上是: sort在数据量比较大的时候用quick_sort...当分段后的数据量小于某个门槛,为了避免对此递归带来的额外负担。。采取插入排序的策略。。 以及。。。快排在最快情况下还是会到达平方的复杂度。。。 于是有人发明了introsort...中文翻译叫内省排序。。。? 维基百科_introsort 这个算法其实就是。。对于数据量大的时候。。。一开始还是快 …
Read More -
起因是百度实习二面的时候被问了一道类似这样的题: 给我下面的代码,问有没有什么问题。 1 /* *********************************************** 2Author :111qqz 3Created Time :2017年02月28日 星期二 14时49分37秒 4File Name :vector.cpp 5************************************************ */ 6 #include <cstdio>7 #include <vector>8 #include <ctime>9 using namespace …
Read More