算法
自在独行-
记录生活
展开
-
唯一ID生成器snowflake
唯一ID生成器snowflake /ˈsnəʊfleɪk/ 1、应用场景 很多场景需要使用全局唯一ID,用来标识唯一一条消息,唯一一笔交易,唯一一个用户,唯一一张图片等等。 传统数据库表的自增主键是很简单的一种实现方式,前提是你没有分库,也没有分表,如果你分表了,id就会重复,失去唯一性: 2、之前了解 2.1、时间戳 用时间做唯一id,这个在并发比较高或者分布式环境中基本不可行,统一时间...原创 2020-03-17 10:10:17 · 194 阅读 · 0 评论 -
快速排序 思路及详解
快速排序 思路及详解 思路: 1. 确定一个基准数,一般确定为一个序列最左边的数。 2. 两个指针left和right一个指向序列的基准数的下一个,一个指向序列的最后一个 3. 如果基准数在左边,先从右边开始遍历,left找比基准数大的数,right找比基准数小的数,left和right找到后开始替换所指的这两个数。 为什么必须首先开始从基准数的另一边开始遍历? 原因...原创 2019-07-28 19:39:23 · 972 阅读 · 0 评论 -
哈希函数
哈希函数 定义:Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 特点: 1、input:是...原创 2019-09-23 10:53:07 · 1647 阅读 · 0 评论 -
Bloom Filter:布隆过滤器
详解Bloom Filter :布隆过滤器 **应用场景:**现在有大量的数据,而这些数据的大小已经远远超出了服务器的内存,现在再给你一个数据,如何判断给你的数据在不在其中。如果服务器的内存足够大,那么用HashMap是一个不错的解决方案,理论上的时间复杂度可以达到O(1),但是现在数据的大小已经远远超出了服务器的内存,所以无法使用HashMap,这个时候就可以使用“布隆过滤器”来解决这个问题。...原创 2019-10-07 18:03:59 · 237 阅读 · 0 评论 -
一致性哈希
一致性哈希 1、产生由来: 随着时代的发展,数据量与日俱增,相比纵向扩展单机的性能,人们更倾向于横向扩展,将多台一般的廉价机器组成集群来充当超级计算机,节省了大量的成本,代价是极大地增加了系统的复杂性。为了应对这些复杂性,一批又一批分布式领域的技术相继诞生,其中不乏一些看过之后令人拍案叫绝的精彩的想法。 从存储来说,数据量大的时候,一台机器不能胜任时,那么通常的做法是将数据分片,存储到多台机器上...原创 2019-10-07 20:10:07 · 195 阅读 · 0 评论