海量数据处理思想

一、STL容器

序列式容器vector/list/deque/stack/queue/heap

关联式容器(key-value)MongoDB

RB-tree:set、map(map同时拥有key和value,set的key就是value)、multiset、multimap(允许重复键值)
         
hashtable:hashset、hashmap、hashmultiset、hashmultimap(不具备自动排序功能)(允许重复键值)

2、set和map的区别
    
set和map一样所有的元素都会根据键值自动排序(各种操作都是转调RB-tree的操作行)

set元素的键值就是实值(实值就是键值)
map元素都是pair,同时拥有实值(value)和键值(key)(pair第一个为key,第二个为value)

multiset和multimap运行键值重复,插入操作基于RB-tree的inset_equal()


二、处理海量数据

1、海量日志数据,提取出某日访问百度次数最多的那个IP。

分而治之/hash映射+HashMap统计+堆、快速、归并排序

1)分而治之/hash映射:大而化小,各个击破、缩小规模、逐个解决
2)HashMap统计+堆:ip,value进行频率统计
3)堆、快速、归并排序:堆排序,得到次数多的IP

        
并发(Concurrent) 和并行(Parallel Programming)

并行:多个CPU实例或者多台机器同时执行一段逻辑,是真正的同时

并发:通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时,并发往往在场景中有公共的资源
那么针对这个公用的资源往往产生瓶颈,我们会用TPS或者QPS来反应这个系统的处理能力    

猜你喜欢

转载自blog.csdn.net/weixin_39650971/article/details/90373332