【转载】perl中获得哈希(hash)长度的办法.txt铁饭碗的真实含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃。就算是一坨屎,也有遇见屎壳郎的那天。所以你大可不必为今天的自己有太多担忧。【转载】perl中获得哈希(hash)长度的办法
2009年05月09日星期六 15:11
今天bean向我请教perl中如何知道一个hash表的长度,一时难住了我,心有不甘(“呼呼,好不容易被bean请教一回问题,怎能只回答‘不知道’三个字呢”),于是上网查。经过测试,发现如下办法可用,记在这里备忘:
$length = keys %hashname;
则$length中得到的直接是该hash的key的个数。
------------------------
呜呜,本来本篇的题目是写成“perl中获得哈希(hash)长度的三种办法”的,结果经过测试,原来写的两种方法都不可行。原来以为也可以用的两种方法分别是:
1、 $length = %hashname;
得到的返回值比较有趣,是一个复合值: A/B,其中A是实际上该hash中实际使用的单位的个数,B是事实上分配给该hash多少个单位。特别是,后面的这个B值,是呈指数增长的(8,16,32,...),应该是和perl中的hash实现方法有关。
例如: %hashname = (apple=>01, orange=>02, banana =>03);
$length = %hashname;
print "$length";
那么执行之后的输出值为 3/8。
2、强制类型转换一下,把hash强制成一个标量: scalar(%hashname)
该函数的取值同上述方法1的得到值。
注:如果是一个数组例(如scalar(@arrray))而不是哈希,则该函数直接得到数组中的元素个数。
上述两个方法,对本任务不可用的主要原因是:这里“实际使用单位”和“分配的单位”不知道是以什么表达的。也许是某种内存分配的块数?
继续查资料,感觉下面这个解释比较清晰:
“散列在标量上下文下返回的字符串“xxx/yyy”,实际上是斜杠分割的 xhv_fill 和
xhv_max,
至于 xhv_fill 和 xhv_max 是什么,可以阅读《Perl 高级编程》。
我在这里简要介绍一下,众所周知,所谓“散列表”,是指采用“散列函数”将任意一个字符串(key)映射成一个“有限范围”内的整数,从而通过访问以该整数为下标的数组元素,来访问 key 对应的 value 的一种算法。因为没有任何一种散列函数能够将无穷可能地 key 映射到有限范围的数组下标空间,因此,必然会产生多个 key 使用同一个散列值的情形。此时将产生冲突,依照惯例,解决冲突的办法就是为每个散列值准备一个 value 链表而不仅仅是单个的 value,xhv_fill 是指最多能有多少个 key 使用同一个散列值(每个散列值对应的链表的最大长度),xhv_max 则是值最多能有多少个哈希值(散列函数的值空间大小)。
按说 hash 最多能储存的 key 应该等于 xhv_fill × xhv_max,然而当 xhv_fill ÷xhv_max 比值下降时,
hash 的性能会非常糟糕。因此,Perl 会在 xhv_fill / xhv_max 增大到一定程度时,将xhv_max 翻倍,
正则匹配哈希值从而减小 xhv_fill / xhv_max,提高 hash 的访问速度。”
下面是赠送的两篇散文欣赏,可以仔细阅读,不需要的朋友可以下载后编辑删除!!谢谢!!
脚下的时光
不知走过多少地方,不知看过多少风景,不知听说过多少轶事;
题记:蒲公英
我走过很多地方,但是同样的,我也有更多的地方没去过!
我渴望走遍地球上每一寸土地,我期许世界上每一个地方的人都善良!
然而,现实的世界告诉我;理想的丰满一定要遇到拥有相同理想的另一半!
我喜欢珠海,一个美丽的花园城市;我喜欢那里的天气,没有北方的寒冷;四季如春的温度感觉非常惬意,不用担心换季带来的差异!走在市区的街道上,绿化的花草树木被园丁修剪的井然有序;形态各异的花卉搭配得格外美观!尤其是除过草之后的绿地,泥土的芬芳与绿草的清新扑鼻而来,有一种身处大草原的感觉,使人心旷神怡!我时常一个人发呆,散步;看着过往的人,车水马龙的街道;也时常去繁华的街巷,拥挤的商业中心;感觉这才是生活,正因为世界有了这么多事物的陪伴,才使我有了对美好生活的向往与喜悦!
珠海的夜,很美;到处灯红酒绿,一派的祥和;每当夜幕降临,才是广东因有的生活的开始!溜冰场,酒吧,迪厅,大排档等等等等;我很庆幸在这里认识了很多人,他们教会了我很多,也帮助了我很多;我们都是来自五湖四海,为了同一个目标而聚集在一起的年轻人;我们时常出去聚会,嗨皮;但等到散场后,又回到了应有的孤寂!白天,可以去渔女,公园,九州城,免税店等等都是不错的地方!
人常说,一个时代会有一个时代的代表;而我在这个曾经为之奋斗的地方,也时常会想起曾经相识的人,走过的地方,看过的风景;有时候,听着当时的流行歌曲,也会感伤;也会自嘲一笑;还有那公车到站的粤语提醒,还有那想见却永远没见的人;一篇篇,一幕幕久久回荡在脑海;早晨的肠粉,中午的餐饭,下午的炒粉,晚上的烧烤;好像味道还回味
在口中一样!人,只有在对自己真诚的人的眼里,才会感觉到亲切;而我,也着实喜欢这座城市带给我家一样的温暖感觉!
在这短暂而悠长的时光里,我成长了很多,也磨砺了很多;正是因为思想的成熟,阅历的增长,我选择了离开;去寻属于自己的新的天地,新的开始,新的征程!
其实,无论走过多少地方;都不重要!
重要的是你从中得到什么!知识!阅历!思想!······
每个人,在人生的道路上;难免遇到挫折困苦,也难免会因为一些因素而错失机缘!
也不可能因为一时的过失而自暴自弃颓废一生!
人,应该用豁达的心态来迎接下一秒的新鲜时光;而不是沉溺在上一秒的懊恼当中!
每个人的路,都在自己的脚下;只有自己醒悟才能把未来的路走好,反之只会让错误延续到未来,从而影响以后的健康生活!
即便曾经的时光再美好,那也只是人生道路上的一段插曲;没必要去纠结当时的愕然,愚昧!就像我,从来不对上一秒的事情产生情绪一样!
一切都是恬淡的样子,顺其自然比什么都好!
对于未来,只要真诚的去善待身边的所有;我相信,未来的时光,也该是你想象的模样!
蒲公英
2015.12.13
家乡的茶籽林
家乡高才坂,一年四季茶籽林郁郁葱葱,枝繁叶茂。村头的亭后坑、银珠垄、赤土岭、牛脊崎,村尾的庵墘头、虎坪林、下淂,村庄对岸的牌匾山、坑里、墘头、下坋、坑柄里等等,山坡上,山坳里,道路边,田边地头,屋后山边,漫山遍野到处是一片连着一片的茶籽林。那里是我儿时与伙伴们捉迷藏、摘茶苞、采茶菇、捡茶籽的地方。
每当春风拂来,几场淅淅沥沥的春雨之后,唤醒沉睡了一个冬季的茶籽树林。老茶树开始发出新枝,抽出嫩芽,嫩芽吐露出嫩红嫩红的叶片,转眼间,嫩红的叶片又变成稚嫩的绿叶。整片茶籽林绿浪涛涛,层层叠叠,在家乡山环抱的山腰上,形成一道翠绿的屏障。清明节后,儿时的我常与伙伴们在嬉戏玩耍的同时,十分注意寻茶籽树梢上的“茶苞”,这是一种生长在茶籽树上的果实,果熟时表面会脱去一层薄如蝉翼的白皮,淡绿的形似胖胖的寿桃,中空,果瓤可以食用,果肉脆而汁多,清甜爽口。“茶苞”是儿时伙伴们最喜欢的果实,从茶籽树上摘下,在袖口上来回擦几下,
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论