- 博客(11)
- 收藏
- 关注
原创 CMake关于lib查找路径的问题
在使用运行某个软件的时候,使用到了leveldb的库,但是我希望能链接到自己编译生成的那个leveldb库,于是就涉及到cmake的修改。这里我把所有需要的更换库都统一放在/home/myusername/Documents/mylibleveldb 目录下,在CMakeList.txt中将涉及到这些库调用的路径全部改为该目录。这里使用CMAKE_PREFIX_PATH参数,会默认先从该路径查找...
2018-11-02 15:41:08 9671 1
原创 ubuntu16.04下git的教程
ubuntu16.04下安装配置git用户目录下ls -a ,进入.ssh文件,检查里面是否包含有id_rsa(私钥)和id_rsa.pub(公钥)这两个文件,若有,可删除进入下一步(也可不删除直接到第3步),若没有,则执行2、3步;在ssh目录下输入命令行:ssh-keygen -t rsa -C “自己的github邮箱地址”,此时,id_rsa(私钥)和id_rsa.pub(公钥)这两...
2018-10-25 22:41:21 399
原创 内联函数与宏
内联函数与宏内联函数:是一种特别的用于消除调用函数时所造成的固有的时间消耗方法。对于一些函数体代码不是很大,但又频繁调用的函数来讲,附加的时间开销大的不容忽视。为了解决这一矛盾,c++提供了“内联函数机制”。编译器会在编译期将指定的内联函数体插入并取代每一处调用该函数的地方,从而节省了每次调用函数带来的额外时间开支。但在选择使用内联函数时,必须在程序占用空间和程序执行效率之间进行权衡,因为过多...
2018-08-21 10:36:11 241
原创 大小端与网络通讯
大小端与网络通讯运行在同一台计算机上的进程相互通信时,一般不用考虑字节的顺序(字节序),字节序是一个处理器架构特性。大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中优缺点大端模式优点:符号位在所表示的数据的内存的第一个字节中,便于快速判断数据的正负和...
2018-04-25 15:47:24 1962
原创 Gossip算法
Gossip算法Gossip算法又被称为反熵(Anti-Entropy),熵是物理学上的一个概念,代表杂乱无章,而反熵就是在杂乱无章中寻求一致,这充分说明了Gossip的特点:在一个有界网络中,每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一致。每个节点可能知道所有其他节点,也可能仅知道几个邻居节点,只要这些节可以通过网络连通,最终他们的状态都是一致的,当然...
2018-03-24 17:55:35 610
原创 String、StringBuffer、StringBuilder的不变性理解
String、StringBuffer、StringBuilder的不变性理解都是final类,都不允许被继承String长度不可变,而StringBuffer、StringBuild是可变的。主要原因如下:String类中包含一个不可变的char数组value用来存放字符串存储数据的变量: /** The value is used for character storage...
2018-03-12 14:54:33 269
原创 为什么ConcurrentMap不允许null
ConcurrentMaps不允许key、value为null阅读源码可以发现,HashMap允许插入key和value是null的数据的,而ConcurrentHashMap是不允许key和value是null的。这个是为什么呢?ConcurrentHashMap的作者是这么说的: The main reason that nulls aren’t allowed in Concurre...
2018-03-12 10:13:34 5069 2
原创 存储引擎中索引使用b+树,b树,skiplist结构的对比
存储引擎中索引使用b+树,b树,skiplist结构的对比b+树:1.b+树的内部节点没有存储指向关键字具体内容的指针,因此其内部节点相对于b树更小。这就意味着在磁盘存储中,一个块可以容纳更多索引项,查询数据时可有效减少磁盘IO2.查询效率更加稳定,所有数据的查找均是从根节点到叶子节点3.叶子节点之间通过指针来连接,范围扫描将十分简单b树:1.对于在内部节点的数据,可直接得到,不需要根据叶子节点来...
2018-02-27 16:55:51 3565
原创 一致性哈希(consistent hash)
一致性哈希(consistent hash)本文将围绕以下几个问题展开:一致性哈希的出现为了解决什么问题?为什么叫一致性哈希,是否实现了分布式一致性?它是怎么做的(基本原理)优缺点一致性哈希的诞生一致性哈希算法是由1997年由麻省理工学院提出一种分布式哈希(DHT)实现算法。 论文链接:Consistent hashing and random trees: d...
2017-10-10 16:11:32 793
原创 布隆过滤器(Bloom Filter)
leveldb在做查询时使用了布隆过滤器,当发现目标key在某个SSTable的键值范围内时,利用布隆过滤器快速判断该key是否存在于此SSTable内,以此减少未命中时情况下的IO消耗。布隆过滤器的基本原理:一个空的布隆过滤器是一个m位的位数组,所有位的值都为0。定义了k个不同的符合均匀随机分布的哈希函数,每个函数把集合元素映射到位数组的m位中的某一位,并将该位置1.当查询一个元素时,通
2017-10-08 20:56:39 800
原创 跳表(Skiplist)
学习levelDB时,其Memtable使用到了Skiplist数据结构,在mongodb的存储引擎WiredTiger中的内存存储结构中也有使用。跳表(skip List)是一种随机化的数据结构,基于并联的链表,实现简单,插入、删除、查找的复杂度均为O(logn),高度为O(logn)的概率较高,所需存储空间为O(n)。复杂度分析如下:
2017-10-02 21:23:46 674 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人