hash聚集猝灭发光现象现象是同义词之间么

君,已阅读到文档的结尾了呢~~
哈希表分布式哈希表及chord,分布式哈希表,分布式哈希表技术,哈希表,哈希表原理,c 哈希表,哈希表实现,java 哈希表,哈希表查找,什么是哈希表
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
哈希表分布式哈希表及chord
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口 上传我的文档
 下载
 收藏
粉丝量:44
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
第08章 哈希表(课件)
下载积分:2000
内容提示:第08章 哈希表(课件)
文档格式:PPT|
浏览次数:5|
上传日期: 10:45:54|
文档星级:
全文阅读已结束,如果下载本文需要使用
 2000 积分
下载此文档
该用户还上传了这些文档
第08章 哈希表(课件)
关注微信公众号476被浏览26,241分享邀请回答553 条评论分享收藏感谢收起bbs.cenet.org.cn/dispbbs.asp?boardid=27507&rootid=&id=30864) 蓝田日暖27我家旁边有一条街,一边満是建筑、装潢类的商店,而另一边却是银行、酒店、娱乐中心、服装店等等不同类的商店。同一条街,为什么会有这种商店扎堆与不扎堆的现象呢?拖鞋我觉得这种同行扎堆的现象主要是由于广告等营销宣传活动的外部性造成的。由于是同行,商品基本同质,所以如果有一家做宣传,其他的商家只要靠近这家就能够分享宣传带来的部分好处。就象时装街一样,如果有一家大肆宣传,吸引来大量的顾客,这些顾客在光顾这家店同时,也能给附近的同样的店带来增加的顾客。而且大城市通常都有功能性的分区,就像人们知道北京泡吧要去三里屯一样,同行扎堆的地方相对其他地方能让商家省去很多宣传费。qg2003商店扎堆的现象在世界各地都很普遍,这就排除了文化传统等带有地域特征的影响因素。经济学中的对策论中曾经提到过这个问题,我认为很有道理。案例是这样的,既有一个沙滩,在沙滩上进行日光浴的人均匀分布在沙滩上。有两个买可乐的小车,每个小车都想获得最大的收益。这时,如果一个小车首先占了沙滩的边上,那么另一个小车主如果是理性的话,他就会在靠近第一个小车的沙滩上停下,因为这两个小车的可乐都是一样的,因此消费者都是就近购买,这样第二个小车就占领了决大部分沙滩的消费者。接着,第一个小车主如果不傻的话,他也会把小车移动到第二个小车的里面,而更靠近沙滩的中心,因为在那里他最少能够获得一半以上的沙滩市场。这种根据对手的行为来决定自己的行为的过程使得这两部小车不断的移动,最终这两个小车主都决定把小车停留在沙滩的正中央,各分一半市场。这时每一方都没有了在移动的动机,因为如果谁要再移动的话,他就会失去一部分市场给他的对手。这个例子也许没有讲清楚,可以参阅微观经济学 ,但我认为这种对策的行为是造成同种商店扎墩的主要原因。forunliu楼上给的解释是一种线性的空间竞争模型(豪泰林,1929),实际上属于比较旧的理论模型之一,后来的萨洛普模型将竞争空间拓展为环形。但是,这里的分析思路可能还是有点不同。对于商业活动的扎堆,一个基本的原因,正如“拖鞋”所提到的,是外部经济性。但与广告的溢出效应略有不同,这里存在的实际上是区域经济中分析聚集提到的Localization Economies。更具体的原因可能在于顾客在购买过程中,存在搜寻成本,同类企业(包括商业企业)的集聚,因为有利于顾客更多的选择、比较,所以更能够吸引消费者的集聚(因为存在以更低成本实现更优购买的预期)。随着企业集聚规模的扩张,越多的消费者会被吸引过来,只要后者的速度大于前者,平均而言,对于大家都是有利的。大家如果不同观点,敬请提出讨论。saviolazgs结实扎堆的比较容易,我想知道不扎堆是为什么?通常的解释是一种区域内部分工扎堆与否是这个区域做为主体供应者是否可以容纳多家生产者.和微观上讨论行业是否垄断的方法一样.但这里还有个问题是一个区域的独特功能也许必须有扎堆,,因为消费者在扎堆的地方获得多样选择的成本比较低
9添加评论分享收藏感谢收起  摘要:当前是一个信息爆炸的时代,海量的信息充斥了人们生活的各个方面,所以从大量的数据中快速的找到所需信息已经成为一个热门的课题。一般的搜索方法,在搜索时需进行关键字的比较。这一类建立在比较的基础上的搜索方法,其效率依赖于搜索过程中所进行的比较次数。而通过使用哈希表人们可以不经任何比较,一次存取便能得到所需的信息,从而大大提高了搜索的效率。然而,建立哈希表不可能没有冲突,解决冲突则会产生诸如堆积、二次聚集等现象,降低了查找效率。文中通过举例阐明了该过程,并提出了有效的解决方法。   关键词:哈希表冲突查找关键字   1 一般查找方法和哈希表的比较   最容易理解的莫过于按照顺序查找,它的查找过程为:   从表中的第一个记录开始,逐条地进行记录的关键字和给定值的比较,这时可能会发生两种情况,第一种情况是找到关键字和给定值相等的记录,查找成功,第二种情况是找遍所有记录却没有找到满足条件的记录,查找失败。当表中存储的数据量非常多的时候,该方法效率就会变得很低,最糟糕的情况就是可能要把所有的数据都读一遍才找到指定记录。由此可见顺序查找方法效率不高。而其他查找方法如折半查找法,也称为二分查找法,它充分利用了元素间的次序关系,它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果xa[n/2],则我们只要在数组a的右半部继续搜索x。二分搜索法的思想易于理解,但是要写一个正确的二分搜索算法也不是一件简单的事,甚至Bentley在他的著作《Writing Correct Programs》中写道,90%的计算机专家不能在2小时内写出完全正确的二分搜索算法。其问题的关键在于准确地制定各次查找范围的边界以及终止条件的确定。    综上所述,查找的效率依赖于查找过程中所进行的比较次数。比较的次数越多,查找时间就越长。理想的情况是希望不经任何比较,一次存取便能得到所查找的记录。而这个理想的情况可以用哈希表和它的算法来实现。   2 哈希表的概念   哈希表(Hash table,也叫散列表),是根据关键码值而直接进行访问的数据结构。它是通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫做哈希表。哈希表的最大特点,就是数据存储位置和数据记录的内容相关,存在着一个函数换算关系:   Offset=Hash (K)   其中,Offset为数据存储的偏移量,Hash(K)为哈希函数(Hash Function),K为关键字,若表中存在关键字和K相等的记录,则必定在Hash(K)的存储位置上。哈希函数,是计算机科学中一个重要的课题。其实,哈希概念并没有一个严格的定义。一般说来,哈希函数满足以下的条件:   ①对输入值运算,得到一个固定长度的摘要(Hash value);   ②散列函数的输出值尽量接近均匀分布;   ③k的微小变化可以使Hash(k)发生非常大的变化,即所谓“雪崩效应”;   原来,这是为了减少“哈希冲突”(Hash collision),也就是两个不同输入产生了相同输出值的情况。根据抽屉原理,Hash算法不可能没有冲突(collision),但是,由于冲突会造成一些问题,可能会影响到应用Hash函数的某些算法的效率,所以,我们需要尽量避免之。这样,对Hash算法的选择,就是很重要的了。   3 除留余数法建立哈希表   构造哈希函数的目标是使哈希地址尽可能均匀地分布在连续的内存单元地址上,以减少冲突发生的可能性,同时使计算尽可能简单以达到尽可能高的时间效率。根据关键字的结构和分布不同,可构造出与之适应的各不相同的哈希函数。   除留余数法是采用取模运算(MOD),把关键字除以某个不大于哈希表表长的整数得到的余数作为哈希地址。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。哈希函数的形式为:   Hash(k)=k MOD p(p≤m,m为哈希表表长)   而除留余数法的关键就是选好p,一般p取素数或m。若p选的不好,容易产生同义词,即发生冲突。冲突会造成一些问题,可能会影响到应用Hash函数的某些算法的效率,所以好的p值可以使得记录集合中的每个关键字通过该数转换后映射到哈希表范围内任意地址上的概率相等,从而尽可能减少发生冲突的可能性。但是,根据抽屉原理,Hash算法不可能没有冲突。   冲突解决技术可分为两大类:开散列法(又称为链地址法)和闭散列法(又称为开放地址法)。哈希表是用数组实现的一片连续的地址空间,两种冲突解决技术的区别在于发生冲突的元素是存储在这片数组的空间之外还是空间之内。   下面以闭散列法中的线性探测法为例说明,线性探测法的基本思想是:当发生冲突时,从冲突位置的下一个单元顺序寻找,只要找到一个空位,就把元素放入此空位中。可用如下公式表示:   Hi=(Hash(k) + i)MODm 公式(1)   其中Hash(k)为哈希函数;m为哈希表长;i为增量。   一组关键字为(12,19,23,28,39,51,56,76,84),哈希表长m=13,哈希函数为:Hash(k)=k MOD11,并使用线性探测法处理冲突,可得表如下:   根据除留余数法的计算规则,12,19,28,76这4个关键字是直接添加到第1,8,6,10这4个位置,而其他的关键字则都要经过线性探测法才能确定其填充的位置,例如关键字39,由哈希函数Hask(39)=39 MOD 11=6,可知,39应该填充到位置6,可是位置6已经被关键字19占据,所以必须进行再次计算。根据公式(1),   H1=(Hash(39)+1) MOD 13=7,即关键字39对应位置为7,但是,这样就出现一个问题,根据哈希函数计算,Hask(51)=51 MOD 11=7,可以看出根据除留余数法规则,原本属于关键字51的位置7却被关键字39占据了,这就导致57也必须进行线性探测法寻找自己的位置:   H1=(Hash(51)+1) MOD 13=8 (冲突,位置8已被关键字19占据)   H2=(Hash(51)+2) MOD 13=9 (成功,位置9为空,关键字51填充到位置9)   每个元素经哈希函数计算出来的地址称为基地址,这种不同基地址的元素争夺同一个单元的现象叫做二次聚集。二次聚集实际上是在处理同义词之间的冲突时引发的非同义词的冲突。显然,这种现象对查找不利。线性探测很容易出现二次聚集,小的聚集能汇合成大的聚集,最终导致很长的探测序列,从而降低哈希表的运算效率。   4 改进的除留余数法建立哈希表   使用哈希表的主要目的是为了加快查找速度,提高查找效率,任何导致查找速度和效率降低的问题都是我们尽力去解决的。由上面的论述可知二次聚集的产生,是由在建立哈希表时采取了遇到冲突立刻解决的方法引起的。我们针对这一特点,可以采用以下的策略:在建立哈希表时先依次填入所有不产生冲突的元素,在填入的过程中,将遇到冲突的元素暂时放入一临时表中,并且记下它发生冲突位置,等全部数据处理完后,再去专门解决产生冲突元素(暂存入队列中的元素) 。   例如,一组关键字为(12,19,23,28,39,51,56,76,84),哈希表长m=13,哈希函数为:Hash(k)=k MOD 11。下面分析一下它的存储过程:Hash(12)=1,位置1为空,将12存入;Hash(19)=8,位置8为空,将19存入;Hash(23)= 1,位置1不为空,将23存入临时表;Hash(28)=6,位置6为空,将28存入;Hash(39)=6,位置6不为空,将39存入临时表;Hash(51)=7,位置7为空,将51存入;Hash( 56)=1,位置1不为空,将56入临时表;Hash(76)=10,位置10为空,将76存入;Hash(84)=7,位置7不为空,将84入临时队列。这时建表如下:   队列中的每个元素包括两项:数据元素和其产生冲突的位置。要解决冲突元素问题,将临时表中的元素填入哈希表,处理过程为:   取队列中第一个哈希地址上冲突的数据元素得Hash(23)=1,寻找下一个空的哈希地址:   H1=(Hash(23)+1) mod11=2地址2为空,将23存入。取队列中第二个哈希地址上冲突的数据元素得Hash(39)=6,寻找下一个空的哈希地址:   H1=(Hash(39)+1) mod11=7位置7不为空   H2=(Hash(39)+2) mod11=8位置8不为空   H3=(Hash(39)+3) mod11=9位置9为空,将39存入。取队列中第三个哈希地址上冲突的数据元素得Hash(56)=1,寻找下一个空的哈希地址:   H1=(Hash(56)+1) mod11=2位置2不为空   H2=(Hash(56)+2) mod11=3位置3为空,将56存入。   取队列中第三个哈希地址上冲突的数据元素得Hash(84)=7,寻找下一个空的哈希地址:   H1=(Hash(84)+1) mod11=7位置7不为空   H2=(Hash(84)+2) mod11=8位置8不为空   H3=(Hash(84)+3) mod11=9位置9不为空   H4=(Hash(84)+4) mod11=10位置10不为空   H1=(Hash(84)+5) mod11=11位置11为空,将84存入   最终结果如下:   5 结论   改进方法之后,避免了非同义词抢占同一个位置,不会再带来新的冲突,所以能有效的减少冲突次数,从而大大的提高了查找效率。而且,改进方法之后,在读取数据时不需面对非同义词的冲突,所以绝大部分数据不需要进行比较便可直接获得查找结果,这就更符合使用哈希表的初衷。   参考文献:   [1]严蔚敏,吴伟民.数据结构(C语言版)[M].4版.北京:清华大学出版社,2007.   [2]Weiss M A.数据结构与算法分析[M].北京:机械工业出版社,2004.   [3]王川,王岁花.地址哈希排序算法的设计与实现[J].平原大学学报,):61-63.
【相关论文推荐】& 相关文章 &
的)。称伪随机探测法。
(4)建域法
假设哈希函数的值域为[0,m-1],则设向量HashTable[0..m-1]为基本表,另外设立存储空间向量OverTable[0..v]用以存储发生冲突的记录。 3、散列查找示例:使用除留取余法构造散列函数,和拉链法处理冲突 #define MAX 10
//链表数据结构
typedef struct list
list hashtable[MAX
的哈希函数。
(5)除留取余法   取关键字被某个不大于哈希表表长m的数p除后所得余数为哈希地址。 H(key)=key MOD p (p&=m)
(6)随机数法   选择一个随机函数,取关键字的随机函数值为它的哈希地址,即 H(key)=random(key),其中random为随机函数。通常用于关键字长度不等时采用此法。   若已知哈希函数及冲突处理方法,哈希表的建立步骤如下:   Step1. 取出一个数据元素的关键字key,计算其则哈希表中的存储地址D=H(key)。若存储地址
数据结构:哈希表(除留取余法--线性探测法)
ClearHashTable( HashTable* pHashTable )
if ( !pHashTable )
delete[] pHashT
return SUCCESS;
//哈希函数
int Hash( int key )
return key % HASHSIZE; //除留取余法,根据前辈们的经验,若哈希表长为M,则取余因子P为小于
//或等于表长(最好接近M)的最小质数或不包含小于
数据结构:哈希表(除留取余法--链地址法)
#include &iostream&
//哈希函数的构造方法:除留取余法
//处理冲突机制:链地址法
typedef struct _NODE
struct _NODE*
typedef struct Hash_Table
_NODE* pChainHash[13];
//初始化哈希表
Hash_Table* InitHashTable
查找算法系列之复杂算法:哈希查找
历届招生人数统计表A,其中以年份为关键字。则哈希函数可设计为:H(key) = key - 1959 直接定址法由于关键字与存储地址存在一一对应关系,因此,不会 发生冲突现象。 Key 61 1962 H(key) 0 1 2 3 若此时需要查询1961年得招生人数,那么得到其地址 H(1961) = 2,然后直接取A[2],A[2]中存的就是1961年的招生人数。
2.2 除余法:
选择一个适当的正整数P(P≤表长),用P 去除关键字,取所得余数作为哈希地址
【数据结构与算法】Hash表
,可以将address(key)=89+03+24+12+3作为Hash地址。   4)除留取余法   如果知道Hash表的最大长度为m,可以取不大于m的最大质数p,然后对关键字进行取余运算,address(key)=key%p。   在这里p的选取非常关键,p选择的好的话,能够最大程度地减少冲突,p一般取不大于m的最大质数。
2.Hash表大小的确定   Hash表大小的确定也非常关键,如果Hash表的空间远远大于最后实际存储的记录个数,则造成了很大的空间浪费,如果选取小了的话
数据结构基础-Hash Table详解
,可以将address(key)=89+03+24+12+3作为Hash地址。 4.除留取余法 如果知道Hash表的最大长度为m,可以取不大于m的最大质数p,然后对关键字进行取余运算,address(key)=key%p。在这里p的选取非常关键,p选择的好的话,能够最大程度地减少冲突,p一般取不大于m的最大质数。 5.数字分析法 假设关键字是以r为基的数,并且哈希表中可能出现的关键字都是事先知道的,则可取关键字的若干数位组成哈希地址。
例如有某些人的生日数据如下
(5)数据结构与算法 ---- 哈希表总结
的记录争夺同一个后继哈希地址的现象称作“二次聚集”,即在处理同义词的冲突过程中又添加了非同义词的冲突,显然,这种现象对查找不利。 但另一方面,用线性探测再散列处理冲突可以保证做到:只要哈希表未填满,总能找到一个不发生冲突的地址Hk,而二次探测再散列只有在哈希表长m为形如 4j+3(j为整数)的素数时才可能,随机探测再散列,则取决于伪随机数列。 2.再哈希法
这种方法是同时构造多个不同的哈希函数:
Hi=RH1(key),i=1,2,3,…,n.
浅谈算法和数据结构: 十一 哈希表
新添加的值放到新的bucket中,当空余空间不足的时候,会进行扩容操作(Resize),然后重新hash到目标bucket。这里面需要注意的是Resize操作比较消耗资源。 总结 前面几篇文章先后介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,本篇文章最后介绍了查找算法中的最后一类即符号表又称哈希表,并介绍了哈希函数以及处理哈希冲突的两种方法:拉链法和线性探测法。各种查找算法的最坏和平均条件下各种操作的时间复杂度如下图: 在实际编写代码中,如何选择合适的数据结构需要
浅谈算法和数据结构(11):哈希表
和线性探测法。 哈希表是一个在时间和空间上做出权衡的经典例子。如果没有内存限制,那么可以直接将键作为数组的索引。那么所有的查找时间复杂度为O(1);如果没有时间限制,那么我们可以使用无序数组并进行顺序查找,这样只需要很少的内存。哈希表使用了适度的时间和空间来在这两个极端之间找到了平衡。只需要调整哈希函数算法即可在时间和空间上做出取舍。 哈希函数 哈希查找第一步就是使用哈希函数将键映射成索引。这种映射函数就是哈希函数。如果我们有一个保存0-M数组,那么我们就需要一个能够将任意键转换为该数组范围内
浅谈算法和数据结构:哈希表
,则替换之前的值,然后返回。 如果没有找到,则将新添加的值放到新的bucket中,当空余空间不足的时候,会进行扩容操作(Resize),然后重新hash到目标bucket。这里面需要注意的是Resize操作比较消耗资源。 总结 前面几篇文章先后介绍了基于无序列表的顺序查找,基于有序数组的二分查找,平衡查找树,以及红黑树,本篇文章最后介绍了查找算法中的最后一类即符号表又称哈希表,并介绍了哈希函数以及处理哈希冲突的两种方法:拉链法和线性探测法。各种查找算法的最坏和平均条件下各种操作的时间复杂度如下图
深入理解数据结构之散列表、散列、散列函数
后去这几部分的叠加和。折叠法
一般是和除留余法一起使用的。
5、除留余法:
取关键字被某个不大于散列表表长 m 的数 p 除后所得的余数为散列地址。即 hash(k)
= k mod p, p & m。不仅可
[读书笔记]哈希表[数据结构(C语言版)严慧敏]
在实际的工作中需视不同的情况采用不同的哈希函数。通常考虑的因素有:
(1)计算哈希函数所需时间(包括硬件指令的因素);
(2)关键字的长度;
(3)哈希表的大小;
(4)关键字的分布情况;
(5)记录的查找频率;
4.处理冲突的方法:
(1)开放定址法:线性探测再散列、二次探测再散列、伪随机探测再散列。
(2)在哈希法:即在同义词产生地址冲突时计算另一个哈希函数地址,直到冲突不在发生。
(3)链地址法:将所有关键字为
[读书笔记]哈希表[数据结构(C语言版)严慧敏]
在实际的工作中需视不同的情况采用不同的哈希函数。通常考虑的因素有:
(1)计算哈希函数所需时间(包括硬件指令的因素);
(2)关键字的长度;
(3)哈希表的大小;
(4)关键字的分布情况;
(5)记录的查找频率;
4.处理冲突的方法:
(1)开放定址法:线性探测再散列、二次探测再散列、伪随机探测再散列。
(2)在哈希法:即在同义词产生地址冲突时计算另一个哈希函数地址,直到冲突不在发生。
(3)链地址法:将所有关键字为
哈希表以及解决冲突的方法
————————
—————————
(a)移位叠加
(b) 折叠叠加
图8.24 由叠加法求哈希地址
4. 除留余数法 假设哈希表长为m,p为小于等于m的最大素数,则哈希函数为 h(k)=k
p ,其中%为模p取余运算。 例如,已知待散列元素为
哈希表以及解决冲突的方法
————————
—————————
(a)移位叠加
(b) 折叠叠加
图8.24 由叠加法求哈希地址
4. 除留余数法 假设哈希表长为m,p为小于等于m的最大素数,则哈希函数为 h(k)=k
p ,其中%为模p取余运算。 例如,已知待散列元素为
哈希表 构造方法,处理冲突方法, 哈希表的查找,删除算法,时间复杂度,装载因子等
38,由哈希函数得到地址为5,若用线性探测再散列,如下:
哈希表算法
2、再哈希法 当发生冲突时,使用第二个、第三个、哈希函数计算地址,直到无冲突时。缺点:计算时间增加。 3、链地址法 将所有关键字为同义词的记录存储在同一线性链表中。 哈希表算法
4、建立一个公共溢出区 假设哈希函数的值域为[0,m-1],则设向量HashTable[0..m-1]为基本表,另外设立存储空间向量OverTable[0..v]用以存储发生冲突的记录。 装载因子: loadFactor又称装载因子,是一个
return find3(root-&right,val);
} 4、哈希查找(除留取余法+链式法) #define MAX 10
//链表数据结构
typedef struct list
list hashtable[MAX];
///链式法解决地址冲突,MAX个带头节点的hash链表
//除留取余法
int hashFunc(int n)
return n%MAX;
哈希函数的构造方法以及冲突解决办法
和i+3的记录都将填入j+3的位置,这种在处理冲突过程中发生的两个第一个哈希地址不同的记录争夺同一个后继哈希地址的现象称作“二次聚集”,即在处理同义词的冲突过程中又添加了非同义词的冲突,显然,这种现象对查找不利。 但另一方面,用线性探测再散列处理冲突可以保证做到:只要哈希表未填满,总能找到一个不发生冲突的地址Hk,而二次探测再散列只有在哈希表长m为形如 4j+3(j为整数)的素数时才可能,随机探测再散列,则取决于伪随机数列。 2.再哈希法
Hi=RHi(key)
RHi均是不同
哈希表的应用(C++实现)
return -1;
void HashTable::Hashname(DataInfo *dataInfo)//以名字为关键字建立哈希表
{//利用除留取余法建立以名字为关键字建立的哈希函数,在发生冲突时调用Random函数处理冲突
int i = 0;
int key = 0;
for (int t=0; dataInfo-&name[t
& 2012 - 2016 & aiuxian.com &All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";}

我要回帖

更多关于 二次聚集现象 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信