代码驿站移动版
频道导航
HTML/Xhtml
CSS
JavaScript
HTML5
PHP教程
ASP.NET
正则表达式
AJAX
ThinkPHP
Yii
MySQL
MariaDB
Oracle
MongoDB
Redis
DedeCMS
PHPCMS
帝国CMS
WordPress
Discuz
其它CMS
Zend Studio
Sublime
Notepad
Dreamweaver
Windows
Linux
Nginx
Apache
IIS
CentOS
Ubuntu
Debian
网站优化
工具资源
PHP源码
ASP.NET源码
其它源码
图标素材
按钮素材
字体素材
DedeCMS模板
帝国CMS模板
PHPCMS模板
WordPress模板
Discuz!模板
单页模板
开发软件下载
服务器软件下载
广告投放
联系我们
版权申明
软件编程
网页前端
移动开发
数据库
服务器
脚本语言
PHP代码
JAVA代码
Python代码
Android代码
当前位置:
主页
>
软件编程
>
C代码
>
C++算法之海量数据处理方法的总结分析
时间:2021-01-01 13:38:42 | 栏目:
C代码
| 点击:次
海量数据处理中常用到的技术
1. Bloom Filtering
基本的Bloom Filtering支持快速的插入和查找操作,是一种hash表技术。基本的数据结构非常简单,容量为m的位数组,k个hash函数,将输入的n个元素存储在位数组里面。
每次插入一个新的元素,先计算该元素的k个hash指,将位数组对应hash值位置为1. 查找某个元素时,同样的先计算k个hash值,然后查询看是否对应位数组中得k位是否都是1,是则断定元素存在。
基本的Bloom Filtering算法可以用于允许误差的快速判重操作。集合的交集、并集的计算。
Bloom Filtering有个改进的版本counting bloom filtering可以支持数据的删除操作,countering bloom filtering和基本的bloom filtering相比,位数组中每一位的取值扩展成多位,基本的bloom filtering用1bit表示一位。插入一个元素时,所有的k位都加1,删除时都减1,查找时如果k个值都大于0则判定为存在。CBF中有个很重要的参数,即每一位的位数为多少。可以通过理论证明,位数一般取4就足够了,可以支持同一个数据插入16次。
bitmap可以看做bloom filtering的特例
2. Hash表技术
d-left hash hash表负载均衡技术。将hash表分成d段,设计d个hash函数,更具负载选择一个合适的段存放数据。查找时要计算d个hash值,分别在d段中找。
常用于统计次数。
3. 堆技术
堆有两个典型的应用:
多路归并排序
求TopK
多路归并排序时,降序排序时用最大堆,升序排序用最小堆。
TopK时,求TopK最大时,用最小堆,求TopK最小时用最大堆。求topK最大时,利用最小堆堆维护K个值,当新扫描的值大于堆顶元素时,堆顶元素删除,插入新的值。这样扫描完一遍数据,既可以求得topK最大。
4. 双层桶(多层桶)设计
hash表技术是一种direct addr 技术,但是当数据范围分布过广、且数据量非常大的时候,采用hash表直接direct addr技术就不行了,这是可以使用多层hash技术。将原始数据范围分成小段,每一段内存可以装载,段内可以使用direct addr table技术。可以用多层分级快速定位到小段。
您可能感兴趣的文章:
C++实现屏幕截图功能
C++中简单读写文本文件的实现方法
QString的常用方法(小结)
关于数组做函数参数的问题集合汇总
c++中深浅拷贝以及写时拷贝的实现示例代码
相关文章
10-30
C++中的模板template小结
11-28
基于重启后消失的注册表键值的详细介绍
01-11
详细分析C++ 数据封装和数据抽象
12-05
C++数据结构之文件压缩(哈夫曼树)实例详解
01-09
VC++实现的OpenGL线性渐变色绘制操作示例
JQuery
VUE
AngularJS
MSSql
MySQL
MongoDB
Redis
Linux
Tomcat
Nginx
网站首页
广告投放
联系我们
版权申明
联系站长