内存频率

【转】海量数据处理:十道面试题与十个海量数据处理方法总结

巧了我就是萌 提交于 2019-12-08 18:08:02
海量数据处理:十道面试题与十个海量数据处理方法总结 作者:July、youwang、yanxionglu。 时间:二零一一年三月二十六日 说明:本文分为俩部分,第一部分为10道海量数据处理的面试题,第二部分为10个海量数据处理的方法总结。有任何问题,欢迎交流、指正。 出处: http://blog.csdn.net/v_JULY_v 。 ------------------------------------------ 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章: 十一、从头到尾彻底解析Hash表 算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。 2、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来

教你如何迅速秒杀99%的海量数据处理面试题

倖福魔咒の 提交于 2019-12-08 18:01:26
前言 一般而言,标题含有“秒杀”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章: 十道海量数据处理面试题与十个方法大总结 的一般抽象性总结。 毕竟受文章和理论之限,本文摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后,有一点必须强调的是,全文行文是基于面试题的分析基础之上的,具体实践过程中,还是得具体情况具体分析,且场景也远比本文所述的任何一种场景复杂得多。 OK,若有任何问题,欢迎随时不吝赐教。谢谢。 何谓海量数据处理? 所谓海量数据处理,其实很简单,海量,海量,何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。 那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie/ ,针对空间,无非就一个办法:大而化小: 分而治之/hash映射 ,你不是说规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。 至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘的数据交互),而集群,机器有多辆,适合分布式处理,并行计算

十道海量数据处理面试题与十个方法大总结

筅森魡賤 提交于 2019-12-08 17:53:38
海量数据处理:十道面试题与十个海量数据处理方法总结 作者:July、youwang、yanxionglu。 时间:二零一一年三月二十六日 本文之总结: 教你如何迅速秒杀掉:99%的海量数据处理面试题 。有任何问题,欢迎随时交流、指正。 出处: http://blog.csdn.net/v_JULY_v 。 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_map进行频率统计,然后再找出频率最大的几个)及相应的频率。然后再在这1000个最大的IP中,找出那个频率最大的IP,即为所求。 或者如下阐述(雪域之鹰): 算法思想:分而治之+Hash 1.IP地址最多有2^32=4G种取值情况,所以不能完全加载到内存中处理; 2.可以考虑采用“分而治之”的思想,按照IP地址的Hash(IP)%1024值,把海量IP日志分别存储到1024个小文件中。这样,每个小文件最多包含4MB个IP地址; 3.对于每一个小文件,可以构建一个IP为key,出现次数为value的Hash map

大数据——海量数据处理的基本方法总结

时间秒杀一切 提交于 2019-12-08 17:50:28
原文地址为: 大数据——海量数据处理的基本方法总结 声明: 原文引用参考July大神的csdn博客文章 => 海量处理面试题 海量数据处理概述 所谓海量数据处理,就是数据量太大,无法在较短时间内迅速解决,无法一次性装入内存。本文在前人的基础上总结一下解决此类问题的办法。那么有什么解决办法呢? 时间复杂度方面,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树。空间复杂度方面,分而治之/hash映射。 海量数据处理的基本方法总结起来分为以下几种: 分而治之/hash映射 + hash统计 + 堆/快速/归并排序; 双层桶划分; Bloom filter/Bitmap; Trie树/数据库/倒排索引; 外排序; 分布式处理之Hadoop/Mapreduce。 前提基础知识: 1 byte= 8 bit。 int整形一般为4 bytes 共32位bit。 2^32=4G。 1G=2^30=10.7亿。 1 分而治之+hash映射+快速/归并/堆排序 问题1 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 分析 :50亿*64=320G大小空间。 算法思想1 :hash 分解+ 分而治之 + 归并 遍历文件a

面试经典的海量数据处理(TOPK)问题—转载+个人见解!

不想你离开。 提交于 2019-12-08 17:48:35
常见问题: ① Top K问题 : 分治+Trie树/Hash_map+小顶堆 。采用Hash(x)%M将原文件分割成小文件,如果小文件太大则继续Hash分割,直至可以放入内存。 ② 重复问题 : BitMap位图 或 Bloom Filter布隆过滤器 或 Hash_set集合 。每个元素对应一个bit处理。 ③ 排序问题 : 外排序 或 BitMap位图 。分割文件+文件内排序+文件之间归并。 Top K问题: 1. 有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。 ①分治:顺序读文件,对每个词x取Hash(x)%2000,按照该值存到2000个小文件中。每个文件是500k左右。如果有文件超过了1M则继续分割。O(N) ②Trie树/Hash_map:字符串用Trie树最好。对每个小文件,统计其中出现的词频。 O(N)*(平均字符长度),长度一般是常数,也就是O(N). ③小顶堆:用容量为100的小顶堆,以频率为value值插入,取每个文件现频率最大的100个词,把这100个词及相应的频率存入文件。最差O(N)*lg(100),也就是O(N). 注:2,3步骤合起来需要一轮磁盘存取过程。存入文件的个数可以缩减一下,因为主要开销在磁盘读取上,减少文件读取次数,可以在每个文件存取最大容量的字符数量,比如这道题1*(

海量数据处理面试题集锦与Bit-map详解

你离开我真会死。 提交于 2019-12-08 17:44:58
十七道海量数据处理面试题与Bit-map详解 作者:小桥流水,redfox66,July。 前言 本博客内曾经整理过有关海量数据处理的10道面试题( 十道海量数据处理面试题与十个方法大总结 ),此次除了重复了之前的10道面试题之后,重新多整理了7道。仅作各位参考,不作它用。 同时, 程序员编程艺术系列 将重新开始创作,第十一章以后的部分题目来源将取自下文中的17道海量数据处理的面试题。因为,我们觉得,下文的每一道面试题都值得重新思考,重新深究与学习。再者,编程艺术系列的前十章也是这么来的。若您有任何问题或建议,欢迎不吝指正。谢谢。 第一部分、十五道海量数据处理面试题 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为300M。 遍历文件b,采取和a相同的方式将url分别存储到1000小文件中(记为 )。这样处理后,所有可能相同的url都在对应的小文件( )中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。

海量数据处理面试题集锦

安稳与你 提交于 2019-12-08 17:44:28
十七道海量数据处理面试题与Bit-map详解 作者:小桥流水,redfox66,July。 前言 本博客内曾经整理过有关海量数据处理的10道面试题( 十道海量数据处理面试题与十个方法大总结 ),此次除了重复了之前的10道面试题之后,重新多整理了7道。仅作各位参考,不作它用。 同时, 程序员编程艺术系列 将重新开始创作,第十一章以后的部分题目来源将取自下文中的17道海量数据处理的面试题。因为,我们觉得,下文的每一道面试题都值得重新思考,重新深究与学习。再者,编程艺术系列的前十章也是这么来的。若您有任何问题或建议,欢迎不吝指正。谢谢。 第一部分、十五道海量数据处理面试题 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为300M。 遍历文件b,采取和a相同的方式将url分别存储到1000小文件中(记为 )。这样处理后,所有可能相同的url都在对应的小文件( )中,不对应的小文件不可能有相同的url。然后我们只要求出1000对小文件中相同的url即可。

【java虚拟机】jvm调优原则

旧巷老猫 提交于 2019-12-05 11:27:56
转自:https://www.cnblogs.com/xiaopaipai/p/10522794.html 合理规划jvm性能调优 JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考虑各方面的影响。但也有一些基础的理论和原则,理解这些理论并遵循这些原则会让你的性能调优任务将会更加轻松。为了更好的理解本篇所介绍的内容。你需要已经了解和遵循以下内容: 1、已了解jvm 垃圾收集器 2、已了解jvm 性能监控常用工具 3、能够读懂gc日志 4、确信不为了调优而调优,jvm调优不能解决一切性能问题 如果对这些不了解不建议读本篇文章。 本篇文章基于jvm性能调优,结合jvm的各项参数对应用程序调优,主要内容有以下几个方面: 1、jvm调优的一般流程 2、jvm调优所要关注的几个性能指标 3、jvm调优需要掌握的一些原则 4、调优策略&示例 一、性能调优的层次 为了提升系统性能,我们需要对系统的各个角度和层次来进行优化,以下是需要优化的几个层次。 从上面我们可以看到,除了jvm调优以外,还有其他几个层面需要来处理,所以针对系统的调优不是只有jvm调优一项,而是需要针对系统来整体调优,才能提升系统的性能。本篇只针对jvm调优来讲解,其他几个方面,后续再介绍。 在进行jvm调优之前,我们假设项目的架构调优和代码调优已经进行过或者是针对当前项目是最优的。这两个是jvm调优的基础

JVM性能调优详解

只谈情不闲聊 提交于 2019-12-04 13:11:59
JVM性能调优详解 https://www.cnblogs.com/secbro/p/11833651.html应该是 jdk8 以前的方法 貌似permsize 已经放弃这一块了. 前面我们学习了整个JVM系列,最终目标的不仅仅是了解JVM的基础知识,也是为了进行JVM性能调优做准备。这篇文章带领大家学习JVM性能调优的知识。 性能调优 性能调优包含多个层次,比如:架构调优、代码调优、JVM调优、数据库调优、操作系统调优等。 架构调优和代码调优是JVM调优的基础,其中架构调优是对系统影响最大的。 性能调优基本上按照以下步骤进行:明确优化目标、发现性能瓶颈、性能调优、通过监控及数据统计工具获得数据、确认是否达到目标。 何时进行JVM调优 遇到以下情况,就需要考虑进行JVM调优了: Heap内存(老年代)持续上涨达到设置的最大内存值; Full GC 次数频繁; GC 停顿时间过长(超过1秒); 应用出现OutOfMemory 等内存异常; 应用中有使用本地缓存且占用大量内存空间; 系统吞吐量与响应性能不高或下降。 JVM调优的基本原则 JVM调优是一个手段,但并不一定所有问题都可以通过JVM进行调优解决,因此,在进行JVM调优时,我们要遵循一些原则: 大多数的Java应用不需要进行JVM优化; 大多数导致GC问题的原因是代码层面的问题导致的(代码层面); 上线之前

4.云计算&大数据_linux基础知识(3)计算机为何物-个人计算机架构(如何成为一个自身条件过硬的高手)

微笑、不失礼 提交于 2019-12-02 07:06:10
个人计算机架构与周边设备(高手的身体素质) AMD&Inter筋骨不同,英材施教 主板芯片组,两大主流x86开发商(Intel, AMD)的CPU架构并不相容,而且设计理念也有所差异, 所以两大主流CPU所需要的主机板芯片组设计也就不太相同 Inter主板(1)北桥:负责连结速度较快的CPU、主内存与显示卡等组件;(2)南桥:负责连接速度较慢的周边介面, 包括硬盘、USB、网络卡等等 与Intel不同的地方在於主内存是直接与CPU沟通而不透过北桥!从前面的说明我们可以知道CPU的数据主要都是来自於主内存提供, 因此 AMD为了加速这两者的沟通,所以将内存控制组件整合到CPU当中, 理论上这样可以加速CPU与主内存的传输速度!这是两种CPU在架构上面主要的差异点。 2009-Inter主板架构 2009-AMD主板架构 以个人喜好的东厂筋骨为例 (谁让笔记本经常阉割,哈哈哈) 主要的组件为:CPU、主内存、磁盘设备(IDE/SATA)、系统总线芯片组(南桥/北桥)、显示卡介面(PCI-Express)与其他介面卡(PCI)。 底下的各项组件,参考Intel芯片组架构与技嘉主机板各组件! 以下肢解东厂高手(#^_^#) 1.CPU(高手的智商)   (1)不同的微指令集会导致CPU工作效率的优劣。    (2)CPU的频率! 频率就是CPU每秒钟可以进行的工作次数。