hash

Sort multidimensional hash by values and print the highest

余生颓废 提交于 2020-03-01 05:29:46
问题 I have a stored multidimensional hash ( %info ) with following structure: $info{$os}{$id}=$length; foreach $os (keys %info){ foreach $id (keys %{$info{$os}}){ print "$os $id => " . $info{$os}{$id} ."\n" if (keys %info > 100); } } With this, I can read the hash and print only those $os with more than 100 occurrences, but now I would like to print only the $id with highest $length (i.e., values). So I would like to sort the hash by values and print only $os and $id with highest value. Any help?

第二十八天:内置函数的讲解:

ⅰ亾dé卋堺 提交于 2020-02-29 22:30:10
1.在我们学的数据类型中字典可以通过[]来进行获取value的值,那么对象是否可以通过[]来获取属性和方法吗? 2可以通过getitem获得: class A: def __init__(self,name,sex,age): self.name=name self.sex=sex self.age=age def __getitem__(self, item): pass if hasattr(self,item): return self.__dict__[item] f=A('alex','男',10) print(f['name']) #遇到这种格式会直接执行__getitemz函数如果不存在就报错 结果为 alex View Code 3.也可以通过此方法进行对象属性的添加: class A: def __init__(self,name,sex,age): self.name=name self.sex=sex self.age=age def __getitem__(self, item): pass if hasattr(self,item): return self.__dict__[item] def __setitem__(self, key, value): self.__dict__[key]=value f=A('alex','男',10) print

如何添加或更新查询字符串参数?

谁说胖子不能爱 提交于 2020-02-29 22:16:58
使用javascript,如何将查询字符串参数添加到url(如果不存在)或如果存在,则更新当前值? 我正在使用jquery进行客户端开发。 #1楼 我已经扩展了该解决方案,并将其与我发现的另一个解决方案结合在一起,可以根据用户输入并考虑url锚点来替换/更新/删除querystring参数。 不提供值将删除该参数,提供一个将添加/更新该参数。 如果没有提供URL,它将从window.location中获取。 function UpdateQueryString(key, value, url) { if (!url) url = window.location.href; var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"), hash; if (re.test(url)) { if (typeof value !== 'undefined' && value !== null) { return url.replace(re, '$1' + key + "=" + value + '$2$3'); } else { hash = url.split('#'); url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); if (typeof hash[1]

彻底搞懂spark的shuffle过程(shuffle write)

瘦欲@ 提交于 2020-02-29 22:00:29
什么时候需要 shuffle writer 假如我们有个 spark job 依赖关系如下 我们抽象出来其中的rdd和依赖关系: E <-------n------, C <--n---D---n-----F--s---, A <-------s------ B <--n----`-- G 对应的划分后的RDD结构为: 最终我们得到了整个执行过程: 中间就涉及到shuffle 过程,前一个stage 的 ShuffleMapTask 进行 shuffle write, 把数据存储在 blockManager 上面, 并且把数据位置元信息上报到 driver 的 mapOutTrack 组件中, 下一个 stage 根据数据位置元信息, 进行 shuffle read, 拉取上个stage 的输出数据。 这篇文章讲述的就是其中的 shuffle write 过程。 spark shuffle 演进的历史 Spark 0.8及以前 Hash Based Shuffle Spark 0.8.1 为Hash Based Shuffle引入File Consolidation机制 Spark 0.9 引入ExternalAppendOnlyMap Spark 1.1 引入Sort Based Shuffle,但默认仍为Hash Based Shuffle Spark 1.2

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

谁说我不能喝 提交于 2020-02-29 16:44:19
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,同时记录当前出现次数最多的那个IP地址; 4.可以得到1024个小文件中的出现次数最多的IP,再依据常规的排序算法得到总体上出现次数最多的IP; 2、搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个

[转]海量数据处理的面试题的方法总结

喜你入骨 提交于 2020-02-29 16:36:20
处理海量数据问题,无非就是: 分而治之/hash映射 + hash统计 + 堆/快速/归并排序; Bloom filter/Bitmap; Trie树/数据库/倒排索引; 外排序; 分布式处理之hadoop/mapreduce。 本文接下来的部分,便针对这5种方法模式结合对应的海量数据处理面试题分别具体阐述。 密匙一、分而治之/hash映射 + hash统计 + 堆/快速/归并排序 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 既然是海量数据处理,那么可想而知,给我们的数据那就一定是海量的。针对这个数据的海量,我们如何着手呢?对的,无非就是分而治之/hash映射 + hash统计 + 堆/快速/归并排序,说白了,就是先映射,而后统计,最后排序: 分而治之/hash映射:针对数据太大,内存受限,智能是:把大文件化成(取模映射)小文件,即16字方针:大而化小,各个击破,缩小规模,逐个解决 hash统计:当大文件转化了小文件,那么我们便可以采用常规的hashmap(ip,value)来进行频率统计。 堆/快速排序:统计完了之后,便进行排序(可采取堆排序),得到次数最多的IP。 具体而论,则是: “首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000

Redis中的hash数据类型

◇◆丶佛笑我妖孽 提交于 2020-02-29 14:12:35
一 hash Redis hash是一个string类型的field和value的映射表, hash特别适合用于存储对象。 Redis中每个hash可以存储40多亿键值对。 可以看成具有KEY和VALUE的MAP容器,该类型非常适合存储值对象的信息,如:uname,upass, age等。 该类型的数据仅占用很少的磁盘空间。(相比于JSON) 二 hash常用命令 1)hset命令:设置一个key的filed对应的值,filed不存在则新增,field存在则修改field对应的值。 2)hgetall命令:获取该key的所有field以及对应的值。 3)hlen命令:获取key的长度,就是field的个数。 4)hvals命令:获取所有filed对应的value,只返回value。 5)hkeys命令:获取所有的filed,只返回filed,不返回value。 6)hmset命令:一次设置多个filed和对应的值 7)hmget命令:获取多个filed的值 8)hdel命令:删除filed,允许删除多个。 9)hincrby命令:给filed字段的值增加一个数,可以是负数。不能是浮点数。 10)hexists命令:判断某个field是否存在,存在则返回1,否则返回0。 三 Hash的应用场景(存储一个用户信息对象数据) 1、常用于存储一个对象(JavaBean) 2

hash值和hash算法

隐身守侯 提交于 2020-02-29 13:50:11
hash值的作用 现在主流的还是base64编码,进行对字符串的编码。base64其实不是安全领域下的加密解密算法。虽然有时候经常看到所谓的base64加密解密。其实base64只能算是一个编码算法,对数据内容进行编码来适合传输。虽然base64编码过后原文也变成不能看到的字符格式,但是这种方式很初级,很简单。一般高级一点的程序员一眼就能看出来是不是用的base64进行编码,进而通过base64的解密,得出想要的结果。 所以使用hash值进行编码的转换,因为hash值是唯一的,不可逆的!但是通过hash编码却是可以的!二是因为hash值一串数字比较不容易辨别是不是hash值。 2.hash值 一般是把字符串或者byte[],当成一个数组进行遍历,然后转换为int类型的值。 hash主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这些编码值叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系。 3.hash值的计算算法 这个只是其中的一种算法: /** * 使用FNV1_32_HASH算法计算服务器的Hash值,这里不使用重写hashCode的方法,最终效果没区别 */ private static int getHash(String str) { final int p = 16777619; int hash =

iframe标签刷新页面停留在当前页

此生再无相见时 提交于 2020-02-29 02:11:36
整体思路:在iframe所在当前页面地址url后拼接 #+targetUrl <a href="url" target="iframeId" onclick="loadIframe($(this))">a标签跳转iframe</a> // iframe模板刷新后页面跳转问题解决--start function loadIframe(url) { //获取url链接 var u = window.location.href; //因为每次获取的链接中都有之前的旧锚点, //所以需要把#之后的旧锚点去掉再来加新的锚点(即传入的url参数) var end = u.indexOf("#"); var rurl = u.substring(0,end); if(rurl == ''){ rurl="当前页面url" } //设置新的锚点 window.location.href = rurl + "#" + url; } window.onhashchange = function() { //location.hash取到的是url链接中#(包括自己)后面的内容 var hash = location.hash; //去掉#号,得到的就是我们要设置到iframe中src上的地址 var url = hash.substring(1,hash.length); $("#iframeId")

默克尔树的python简单实现

不羁岁月 提交于 2020-02-28 14:15:59
# coding=utf-8import mathimport randomimport hashlibclass Node: def __init__(self,item): self.item = item self.child1 = None self.child2 = None self.hash = None self.data = None def change_data(self,data): self.data=data self.hash = hashlib.md5(data.encode('utf-8')).hexdigest()[8:-8] #hexdigest()返回摘要,作为十六进制数据字符串值 [8:-8]将32位MD5转换为16进制 print("make_hash",self.hash,"size",len(self.hash),end=" ") return self.hash: def __init__(self): self.root = Noneclass Tree def add(self, item):#逐层添加子节点 node = Node(item) end_str = make_data(item) print("add node ",item) if end_str !=None and end_str != -1: node