左(6)hash,大数据,位运算

news2024/12/28 22:25:32

前言

仅记录学习笔记,如有错误欢迎指正。

一、哈希函数和哈希表:

hash():
(1) 输入是无限的,输出有限!
(2)相同的输入,相同的输出(无随机因子)
(3)不同的输入,也可能相同的输出 (hash碰撞,概率极低)
(4)不同的输入,但是分布具有均匀性

一致性哈希原理:

key的选择:尽量种类多

在这里插入图片描述
因为一致性Hash算法对于节点的增减都只需重定位环空间中的一小部分数据,只有部分缓存会失效,不至于将所有压力都在同一时间集中到后端服务器上,具有较好的容错性和可扩展性。(增减机器数据迁移工作量大大减少)

问题1:如果机器数据少,怎么把环均分?
问题2:增减机器怎么负载均衡?
解决方案:虚拟节点

一致性哈希算法引入了虚拟节点机制,即对每一个服务节点计算多个哈希,每个计算结果位置都放置一个此服务节点,称为虚拟节点,一个实际物理节点可以对应多个虚拟节点,虚拟节点越多,hash环上的节点就越多,缓存被均匀分布的概率就越大,hash环倾斜所带来的影响就越小,同时数据定位算法不变,只是多了一步虚拟节点到实际节点的映射。

题目:

一个大文件,文件中都是无符号的整数(0-2^32),40亿个数字,
1g内存,返回出现次数最多的数字!

思路:

对于每一个数做hash运算,取模100,得到100个文件夹分别存模后的数据,
因为均匀性,所以文件中的数字数量基本一致,相同的数字肯定都在一个文件中,
之后在对每个文件找出现次数最多数字,100个文件找出100个数字,再取出现最多的数字!

布隆过滤器:(通过hash计算值的)

就是bitmap实现的!

布隆过滤器优缺点 :
下图hash1(key)=1,那么在第2个格子将0变为1(数组是从0开始计数的),hash2(key)=7,那么将第8个格子置位1,依次类推。

在这里插入图片描述

怎么判断数据是否存在?

只要把这个数据的hash值找出来,去看value是不是1,不是1就肯定不存在,是1就可能存在,还有可能是其他数据。

优点:优点很明显,二进制组成的数组,占用内存极少,并且插入和查询速度都足够快。
缺点:随着数据的增加,误判率会增加;还有无法判断数据一定存在;另外还有一个重要缺点,无法删除数据。

BitMap:

占用空间1B,很小
用int类型表示bit类型
在这里插入图片描述

二、大数据类型题目:

在这里插入图片描述

题目1.

在这里插入图片描述

思路:

法一:
利用磁频统计数量来定位没出现的数字,如果只有3kb,约等于512B,用40亿除512=x
然后遍历40亿数字,用每个数字/x 出来的范围++,肯定有某个范围小于x的数量。
然后在当前范围内用bitmap,存在置为1,再次遍历 为0的数字就是不存在的数据
法二:
或者利用0~40亿二分,最多遍历32次,把数字所在区间找出来、
然后在当前范围内用bitmap,存在置为1,再次遍历 为0的数字就是不存在的数据

题目2:

在这里插入图片描述
法一:把大文件hash后取模为小文件,之后去小文件中统计重复的url,汇总
法二:利用布隆过滤器,每次插入的数据的时候先去查询是否已经存在,存在则保存。(有一定误判率)

补充问题:(利用小根堆)

hash为小文件之后,把各个文件的内容以出现次数作大根堆处理,然后新增一个总的大根堆用来存放各个小文件的堆顶,此时弹出总堆的堆顶;
这个值为所有搜索内容的top1,然后看top1来自于哪个小文件中,删除该小文件中的堆顶,重复以上过程找出top2,top3.。

题目三:

在这里插入图片描述

思路:

可以用位图,两位来表示状态,00表示没出现过,01表示出现一次,10表示2次,11表示出现2次以上
补充思路:按照题目1的法一,累加前n个文件的数量,看第20亿左右数字出现在哪个文件,然后继续分割该文件的内容,直到精确找出第20亿个数字就是中位数。

题目四:

10g的文件,内容为无序的正整数,给你5g内存,怎么生成一个新文件,文件内容为有序的数字。(2021Goggle面试题)

在这里插入图片描述
建立一个大根堆去遍历文件,找出最大值小于y的数字和频率,写入另一个文件,然后y变大,
找出大于之前y,小于当前y的数字,重复此过程

三、位运算题目:

在这里插入图片描述
思路:利用位运算,获取符号位,判断a的符号,b的符号,a-b的符号
通过符号来判断a,b的大小
在这里插入图片描述
getMax1方法a-b可能会有溢出,所以有了getMax2()
为什么能用+来表示if的意思,因为difSab和SameSab是互斥关系!

在这里插入图片描述

位运算题目二:

判断一个32位数是不是2的幂或者4的幂

思路:

如果是2的幂,那么32位只能有一个1,如000000…001就是2的0次方
x &(x-1)==0 可以判断是否只有一个1
判断4的幂的前提:首先是2的幂,其次1的位置是在0,2,4,8…位上
在这里插入图片描述

题目三:

在这里插入图片描述
在这里插入图片描述

除法建议自行百度。比较难理解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jQuery 语法

通过 jQuery,您可以选取(查询,query) HTML 元素,并对它们执行"操作"(actions)。 jQuery 语法 jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作。 基础语法…

【Python教学】pyqt6入门到入土系列,超详细教学讲解

一、什么是PyQt6? 简单介绍一下PyQt6 1、基础简介 PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Qt库是最强大的GUI库之一。PyQt6的官网:www.riverbankcomputing.co.uk/news。PyQt6是由Riverbank Computing公司开发的 资料大礼包点击蓝色字体领取 Python零基础…

机器学习6scikit-learn中的scaler

文章目录一、scikit-learn中的scaler对测试数据集如何归一化?测试数据是模拟真实环境:综上二、演示一、scikit-learn中的scaler 对测试数据集如何归一化? 测试数据集不能跟训练数据集归一化一样,应该把测试数据集与训练数据集归…

Java JDK 环境变量配置教程

文章目录Java JDK 环境变量配置JDK 11 环境变量配置详细步骤Java JDK 环境变量配置 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 环境变量…

第二证券|抖音发布三季度安全透明度报告,整治贩卖焦虑广告近3万条

近来,抖音发布《2022年第三季度安全透明度陈述》(以下简称《陈述》)。《陈述》显现经过要点整治,渠道不标准表达削减超越30%,不实信息被告发量同比下降36.7%,整治贩卖焦虑广告2.9万条。一起,抖音还更新了《社区自律条约…

关于我对线程安全问题中死锁的理解

文章目录1.什么是死锁2.三个典型情况3.可重入与不可重入4.死锁的四个必要条件5.如何破除死锁1.什么是死锁 比如张三谈了一个女朋友,张三就对这个女朋友加锁了。 此时李四也看上了这个女生,但是他只能等待张三分手(解锁)后&#xf…

[附源码]计算机毕业设计保护濒危动物公益网站Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

赋能千百行加快 “5G+工业互联网”落地深耕

目前,我国5G基站已达196.8万个,“5G工业互联网”建设项目3100个,5G与工业互联网融合应用深入工业设计、制造、管理、服务等各环节,在促进传统企业提质降本增效的同时,不断拓展信息通信产业新蓝海。 记者从工信部获悉&a…

Nginx部署Vue前端项目

系统环境:Mac Pro—10.15.7版本 Nginx版本:1.19.6 一、安装Nginx brew install nginx 1、安装完成 Nginx的配置文件目录:/usr/local/etc/nginx Nginx的安装目录:/usr/local/Cellar/nginx 2、启动Nginx brew services star…

Linux虚拟机共享文件夹不显示问题终极解决方法

打开共享文件夹处查看一下,我的结果如下图(没有显示共享文件内容): 接着打开终端: 输入命令:没有共享目录显示 解决方法: 输入:sudo apt-get install open-vm-tools 等待安装完 …

音乐在线教育解决方案,打造在线教育高品质教学体验

音乐是一种在时间中流动的形态,有节奏的音乐,能给人带来心理的快乐和艺术的享受,学一门乐器成为了很多人的选择。因此,音乐教育培训机构在搭建线上音乐课程时,就需要选择低延时、高同步、画质还原、高保真的技术方案&a…

基于轻量级CNN的12306验证码识别分析系统

在我很早的一篇文章中有写过图标型验证码识别的实践项目,这里主要是基于以往的实践经历做出的技术升级,包括:模型轻量化、界面开发、Grad-CAM热力图集成等。 话不多说,首先看效果: 基于CNN的轻量级12306验证码识别分析…

用Python预测世界杯球赛结果,还别说准确度还是蛮高的

前言 那么四年一度的世界杯即将要在卡塔尔开幕了,对于不少热爱足球运动的球迷来说,这可是十分难得的盛宴,而对于最后大力神杯的归属,相信很多人都满怀着期待,每个人心中都有不同的答案。 今天我就通过Python数据分析…

Word控件Spire.Doc 【图像形状】教程(10): 如何在C#中重置word文档的形状大小

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

SEO优化之扁平化目录结构PbootCMS

在网站内部优化中,扁平化的目录结构对于一个网站来讲是非常有意义的。我们经常看到一些网站结构混乱,搞的你都不知道哪里是哪里了。而有的网站结构非常清晰,这样用户喜欢,搜索引擎也喜欢。而PbootCMS 2.0开始,系统也默…

2022,开发转测试,会不会后悔?

每个人做任何选择都是趋利避害的,当选择了认为对自己更有利的选择后,发现结果和期望不符,甚至发现大失所望,才会出现后悔的情绪。 那么为什么开发转测试就会后悔呢,只有一个原因: 那就是转到测试行业后&a…

PIL+pyplot+transforms.ToTensor+unsqueeze+div

目录PIL & pyplottransforms.ToTensortorch.unsqueeze(input,dim,outNone)torch.squeeze(input, dimNone, outNone)torch.divPIL & pyplot from PIL import Image import matplotlib.pyplot as plt from torchvision import transforms# PIL打开图片 img_PIL Image.o…

面试华为必备:华为18级技术官呕心沥血三年整理的 趣谈网络协议

华为是一个热门的互联网大厂,华为每年都要进很多新人,对于新人来说,那些高大上的技术是用不到的,反倒是非常需要这些基础的文档,有这些新手进步会快很多,搞清楚TCP IP协议栈,其他的学起来也就容…

运动规划问答 -路径规划

1、Dijstra算法,算法流程 关键 初始化: 算法是基于图搜索的思想,所以需要先构建一个图,图中不包含障碍物,读入起点和终点信息,设置一个以代价作为键值排序的multiMap,起点入队,并设…

搜索技术——遗传算法

如果有兴趣了解更多相关内容,欢迎来我的个人网站看看:瞳孔空间 一:进化与遗传的概念 拉马克(Lamarck)进化论: 一切物种都是其他物种演变和进化而来的,而生物的演变和进化是一个缓慢和连续的过程环境的变化能够引起生…