(一).

注意:IPV4 的IP地址2^32位约42亿个,占空间4G

(二).哈希函数

1.哈希函数即散列函数

哈希函数的输入域可以是非常大的范围,但是输出域是固定范围。

2.哈希函数的性质:

a.典型的哈希函数都有无线的输入值域 
b.输入值相同时,返回值相同,返回值即哈希值 
c.输入值不同时,返回值可能一样,也可能不一样 
d.不同输入值得到的哈希值,整体均匀的分布在输出域s上。(重要) 
前三点性质是哈希函数的基础,最后一点是评价一个哈希函数优劣的关键。

(3)无论哈希函数设计有多么精细,都会产生冲突现象,也就是2个关键字处理函数的结果映射在了同一位置上,因此,有一些方法可以避免冲突。

一个优秀的哈希函数可以使不同输入值得到的哈希值均匀分布,哈希值越均匀的分布在s上,该哈希函数越优秀。这种均匀分布与输入值无关,比如”aaa1”,”aaa2”,”aaa3”,虽然相似,但一个优秀的哈希函数计算出的哈希值应该差异巨大。这样s(输出域)对%m后的结果,也会均匀的分布在0~m-1这个值域上。这一点在哈希函数的应用中是非常重要的。

4.如何设计哈希函数以及如何处理冲突,请看这篇博客:散列查找


(三).Map-Reduce思想 
把大任务分成俩个阶段: 
1.Map阶段(分)

  通过哈希函数把任务分成若干个子任务,哈希函数是系统自带的或是用户指定的,相同哈希值的任务会被分配到同一个节点上。在分布式系统中,一个节点可以是一个计算节点,也可以是一台计算机。

2.Reduce阶段

分开处理,并行运算,然后合并结果的阶段。

3.Map-Reduce的原理简单,但工程上的实现会遇到很多问题。

a.备份的考虑,分布式存储的设计细节,以及容灾策略 
b.任务分配策略与任务进度跟踪的细节设计,以及节点状态的呈现 
c.分布式系统多用户权限的控制

4.用Map-Reduce方法统计一篇文章中每个单词出现的个数。

(1).首先把文章进行预处理,最终得到一篇单词字符串文本。 
比如去掉文章中的标点符号;对连字符”-“的处理,如pencil-box,和换行处的连字符;对于缩写的处理,如I’m、don’t等等;大小写的转换等。 
(2).输入文本,生成每个单词词频为1的记录,进入map阶段 
对每个单词都生成词频为1的记录。比如(dog,1)、(pig,1)等。此时一个单词可能有多个词频为1的记录,比如说可能有多个(dog,1)的记录。 
(3).通过哈希函数,将单词文本分流成多个小文件。 
根据哈希函数的性质我们知道,单词相同的记录会被分配到一起。 
(4).进入Reduce阶段。 
在子任务中,同一种单词的词频进行合并,最后得到所有记录并统一合并。因为每个子任务都是并行处理的,所以效率会比较高。


(四).常见海量数据处理题目的解题关键

**1. 分而治之,通过哈希函数将大文件分流到机器,或是分流成小文件,对每一个小文件进行处理,然后再把结果给合并起来 
2. 常用HashMap,bitmap等数据结构。 
3. 难点在于通讯,时间和空间的估算。**


(五).bitmap解决大数据量文件排序

【题目】请对10亿个IPV4的ip地址进行排序,每个ip只会出现一次。每个ip只会出现一次。

关键:只会出现一次,所以可以考虑使用bitmap模型。

IPv4中规定IP地址长度为32(按TCP/IP参考模型划分) ,即有2^32-1个地址。 
IPv6协议的地址长度是128位,全部可分配地址数为2的128次方(2^128)个。

(1)普通方法 
IPV4的ip数量大约为42亿,我们要记住2^32约等于42亿!每个ip需要4B来存储,10亿个ip全部转换为无符号整数,然后使用快速排序方法,然后把10亿个排好序的数字转换为ip地址。需要4GB的内存空间!但是有更好的方法。

(2).bitmap方法 
申请一个长度为2^32的bit类型的数组,每个位置上是一个bit,只可表示0或者1两种状态,空间为512MB。

每个IP地址转化成无符号整数k,数组下标0~2^32-1与k对应起来。如果k==1,就把bitmap[0]=1;如果k==n,把bitmap[n-1 =1;

如果整数1出现,就把bitmap对应的位置从0变到1,这个数组可以表示任意一个(注意是一个)32位无符号整数是否出现过,

然后把10亿个ip地址全部转换成整数,相应的在bitmap中相应的位置描黑即可,

最后只要从bitmap的零位一直遍历到最后,然后提取出对应为1的下标整数k,再转换成ip地址,就完成了从小到大的排序。空间复杂度很小,时间复杂度O(n)

(六)

10亿个年龄进行排序----桶排序

建立0到200个桶表示年龄从0到200,然后将10亿数据入桶,再依次倒出

10亿个IP地址排序、10亿年龄排序相关推荐

  1. IP地址:10.10.1.1/24的“/24”是什么意思?

    IP地址:10.10.1.1/24的"/24"是什么意思? "/24"表示这个IP的子网为24位,为子网掩码,指有24个"1",即" ...

  2. 华为linux改ip地址,ubuntu9.10校园网上网配置详细教程(华为h3c,mac地址绑定)

    写一下ubuntu9.10的校园网配置方法,便于以后参考,适用于学校静态ip地址绑定网卡mac地址的校园网 一.下载华为H3c linux版的客户端 点下面下载客户端的tar.gz包 下载 如果失效了 ...

  3. CentOS release 6.10 (Final) 修改IP地址

    修改前查看网卡配置信息[nailwl@nailwl network-scripts]$ ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:A5:14: ...

  4. java 姓排序_Java中先按照姓名排序在按照年龄排序 代码

    package cn.Home; import java.util.Arrays; import java.util.Comparator; import org.junit.Test; public ...

  5. linux ip别名和辅助ip地址

    转:https://blog.csdn.net/xiewen99/article/details/54729112?utm_source=itdadao&utm_medium=referral ...

  6. IP 别名和辅助 IP 地址

    概述 IP 别名(IP Alias),辅助ip地址(Secondary IP Address) IP alias 是由 ifconfig 程序来创建和维护的,而 secondary IP addres ...

  7. 全球居然还有 2 亿多 IPv4 地址未分配

    大家好,我是小弗.2019 年就有报道说,IPv4 地址已经使用完了,以为 IPv6 会全面替代 IPv4 .结果过去两年多,IPv4 还是主流,IPv6 也在上线一部分,但是更像个摆设,实际上没有用 ...

  8. 71张图详解IP 地址、IP 路由、分片和重组、三层转发、ARP、ICMP

    目录 有小伙伴问:为什么没有配置 IP 地址就无法上网?IP 协议又是啥? 这要从 TCP/IP 协议说起,互联网使用的是 TCP/IP 协议,其中 IP 协议又是最重要的协议之一.IP 协议是基于  ...

  9. 如何在Linux中找到您的IP地址

    无论我们是否知道,我们每天都在使用Internet协议(IP). 例如,每当您在Web浏览器中键入网站名称或搜索词时,它都会查询该URL(或搜索引擎)的IP地址,然后加载该网站. 让我们将IP地址分为 ...

最新文章

  1. 论文简述 | CamVox: 一种低成本、高精度的激光雷达辅助视觉SLAM系统
  2. auve子表单中只读不好用
  3. 一步一步学习SignalR进行实时通信_6_案例
  4. 图像处理-PCA人脸识别
  5. Python 网络爬虫笔记11 -- Scrapy 实战
  6. Xtragrd 取消当前行
  7. 揭秘腾讯云最新音视频及融合通信技术实践
  8. 关于压缩工具 7z(7-zip) 的选项 -x(排除文件)的解读
  9. java系列6:封装
  10. (二)Java数组的使用
  11. JDBC 连接数据库,包含连接池
  12. Logitech Control Center 3.9.8 特别版 Mac 罗技USB键盘和鼠标管理软件
  13. bldc 原理 方波控制_浅析无刷直流电机FOC、方波、正弦波控制!
  14. JVM与Java体系结构
  15. android studio透明背景,使用Android Studio时出现黑色的PNG透明背景
  16. Linux 系统Error starting userland proxy: listen tcp4 0.0.0.0:xx端口: bind: address already in use的端口占用问题
  17. Linux motd详解
  18. C++在使用fgetc读取文件时出现方框乱码
  19. 华为日历怎么显示一月_华为P20使用感受
  20. android 分享到微博客户端,Android APP集成新浪微博分享功能

热门文章

  1. android edl模式,高通方案生成大包后,如何刷机
  2. 软件测试,作为职场新鸟?我该怎么办?看看资深5年测试的见解......
  3. PHP使用PHPExcel读取excel表格
  4. Unreal Engine中的UHT和UBT
  5. 【python种子项目ppc】一行代码生成项目与开发详细指导
  6. 佳能Canon PIXMA MG2545S 打印机驱动
  7. c/c++ 结构体赋初值的小技巧
  8. 一百行代码实现微信朋友圈九宫格图片显示
  9. Codeforces - 750A. New Year and Hurry
  10. 【收藏版】Linux常用命令大全