Java面试笔试指南(七)---海量数据处理

通过对海量数据的挖掘能有效地揭示用户的行为模式,加深对用户需求的理解,提取用户的集体智慧,从而为研发人员决策提供依据,提升产品和用户体验,进而占领市场

基础方法

1、Hash法

Hash一般被称为散列,一种映射关系(即给定一个数据元素,其关键字为key,按一个确定的散列函数计算出hash(key),并把hash(key)作为关键字key对应元素的存储地址,再进行数据元素的插入和检索操作),散列函数就是一种将任意长度的消息压缩到某个固定长度的消息摘要的函数

Hash主要是用来进行“快速存取”,在0(1)内就可以找到目标元素,或者判断其是否存在

  • 散列表:是具有固定大小(一般为质数)的数组
  • 冲突:就是两个关键字映射到同一个存储地址的情况

散列函数的特点:

  1. 运算应该尽可能简单
  2. 函数的值域必须在散列表的范围内
  3. 尽可能减少冲突

散列函数的构建方法:

  1. 直接寻址法:取关键字或关键字的某个线性函数值为散列地址,h(key)=a*key+b(这种方法不会产生冲突,但是由于它没有压缩,当关键字集合很大时,这种方法不肯能实现地址编码的散列)
  2. 取模法:选择一个合适的正整数p,h(key)=key mod p(如果选择的是比较大的素数,效果比价好,一般选取p为散列表大小)
  3. 数字分析法:分析关键字(简单直观,但是需要预先知道每个关键字的情况)
  4. 折叠法:将关键字分成位数为t的几部分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值