一、海量数据处理
所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就 是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导 致无法一次性装入内存。
那解决办法呢?
针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit- map/堆/trie树。 针对空间,无非就一个办法:大而化小,分而治之(hash映射)。
相关内容之后会在GitHub上更新,希望多多关注
(顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)
https://github.com/xiangjiana/Android-MS
更多完整项目下载。未完待续。源码。图文知识后续上传github。
可以点击关于我联系我获取
二、算法/数据结构基础
1.Bloom Filter
Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地 表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在 集合的快速的概率算法。Bloom Filter有可能会出现错误判断,但不会漏掉判断。也 就是Bloom Filter判断元素不再集合,那肯定不在。如果判断元素存在集合中,有一 定的概率判断错误。因此,Bloom Filter不适合那些“零错误”的应用场合。
而在能容忍低错误率的应用场合下,Bloom Filter比其他常见的算法(如hash,折 半查找)极大节省了空间。
适用范围: 可以用来实现数据字典,进行数据的判重,或者集合求交集
2.Hash
Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又 叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是 散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空 间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入 值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
3. Bit-map
所谓的Bit-map就是用一个bit位来标记某个元素对应的值。由于采用了Bit为单位来 存储数据,因此在存储空间方面,可以大大节省。 如果说了这么多还没明白什么是Bit-map,那么