一致性哈希算法的实现
上一篇介绍了 哈希算法和一致性哈希算法的原理,我们知道哈希算法在分布式场景应用中存在着定位问题。所有有一致性哈希算法。
今天我们就动手实现以下哈希算法。
可选性 回顾一下 哈希算法和一致性哈希算法
# 说明
以下多次出现服务端节点,客户端节点这两个名字,含义如下:
服务端节点: 在实际场景中,比如分布式缓存,上一篇文章中的例子,服务端节点就是多个 Redis 机器。
客户端节点: 就是要缓存的数据,这里使用这两个名词来代表不同的两个部分。
#...
more...
归并排序
将数组从中间分成前后两部分,然后对前后两部分分别进行排序,再将排好序的两部分合并在一起,这样整个数组就是有序的了。
归并体现的思想就是 分治思想 分而治之,将一个大问题分解成小的问题来解决。小问题解决了,大问题也就解决了.
这种分治的算法,一般都是递归的方式来求解。我们也尝试着写一个递归方式的归并排序。
写递归的程序,最重要的就是写 递推表达式和查找临界条件
根据归并排序的思想我们可写出这样的递推公式:
假设: low 为待排序数组的最小的索引. high 为待排序数组的最大索引. mid 为 (high+low)/2
那么: merge_sort(low,high) =...
more...
排序算法
# 排序算法开篇
排序算法有很多,比如常见的 冒泡排序,插入排序,选择排序,归并排序,快速排序,计数排序,基数排序,桶排序,还有不常见的猴子排序,睡眠排序,面条排序等。
其中,冒泡排序,插入排序,选择排序 的时间复杂度都是O(n2)O(n^2)O(n2)
快排,归并排序 的时间复杂度是 O(nlogn)O(nlogn)O(nlogn)
桶排序,计数排序,基数排序的时间复杂度是 O(n)O(n)O(n)
# 排序算法好坏的评估
最好情况,最坏情况,平均情况的时间复杂度
我们要知道排序算法在不同数据下的性能表现。
时间复杂度的系数,常数,低阶
时间复杂度反应的是数据规模 n...
more...
Elastic Search基本概念
# 文档
es 是面向文档的,文档是 es 中可搜索的最小单位, es 的文档由一个或多个字段组成,类似于关系型数据库中的一行记录,但 es 的文档是以 JSON 进行序列化并保存的,每个 JSON 对象由一个或多个字段组成,字段类型可以是布尔,数值,字符串、二进制、日期等数据类型。
es 每个文档都有唯一的 id , 这个 id 可以由我们自己指定,也可以由 es 自动生成。
es 每一个文档,除了保存我们写入进行的文档原始数据外,也有文档自己的元数据,这些元数据,用于标识文档的相关信息。
123456789101112{...
more...
Elastic Search配置
# Elastic Search 配置
ES 提供了很多默认的参数设置,使我们不用添加任何参数就可以成功的启动 ES 。 作为一个认真的学习者。我们还是来一起看看 如何更好的自定义 ES 配置。 详细的配置内容,可以参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html.
ES 的属性,分为 静态属性 和 动态属性。
所有的静态属性,都必须重启后才能生效。
对于动态属性可以通过调用
1234POST _nodes/reload_secure_settings{...
more...