ÔØÈëÖС£¡£¡£ 'S bLog
 
ÔØÈëÖС£¡£¡£
 
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
ÔØÈëÖС£¡£¡£
 
ÌîдÄúµÄÓʼþµØÖ·£¬¶©ÔÄÎÒÃǵľ«²ÊÄÚÈÝ£º


 
º£Á¿ÐÅÏ¢´¦ÀíµÄ³£Ó÷½·¨
[ 2012/8/6 14:15:00 | By: ÃÎÏè¶ù ]
 

ºÎνº£Á¿Êý¾Ý´¦Àí£¿

Ëùνº£Á¿Êý¾Ý´¦Àí£¬Î޷ǾÍÊÇ»ùÓÚº£Á¿Êý¾ÝÉϵĴ洢¡¢´¦Àí¡¢²Ù×÷¡£ºÎνº£Á¿£¬¾ÍÊÇÊý¾ÝÁ¿Ì«´ó£¬ËùÒÔµ¼ÖÂҪôÊÇÎÞ·¨Ôڽ϶Ìʱ¼äÄÚѸËÙ½â¾ö£¬ÒªÃ´ÊÇÊý¾ÝÌ«´ó£¬µ¼ÖÂÎÞ·¨Ò»´ÎÐÔ×°ÈëÄÚ´æ¡£

Äǽâ¾ö°ì·¨ÄØ?Õë¶Ôʱ¼ä£¬ÎÒÃÇ¿ÉÒÔ²ÉÓÃÇÉÃîµÄËã·¨´îÅäºÏÊʵÄÊý¾Ý½á¹¹£¬ÈçBloom filter/Hash/bit-map/¶Ñ/Êý¾Ý¿â»òµ¹ÅÅË÷Òý/trieÊ÷£¬Õë¶Ô¿Õ¼ä£¬Î޷ǾÍÒ»¸ö°ì·¨£º´ó¶ø»¯Ð¡£º·Ö¶øÖÎÖ®/hashÓ³É䣬Äã²»ÊÇ˵¹æÄ£Ì«´óÂÄǼòµ¥°¡£¬¾Í°Ñ¹æÄ£´ó»¯Îª¹æÄ£Ð¡µÄ£¬¸÷¸ö»÷ÆÆ²»¾ÍÍêÁËÂï¡£

ÖÁÓÚËùνµÄµ¥»ú¼°¼¯ÈºÎÊÌ⣬ͨË×µãÀ´½²£¬µ¥»ú¾ÍÊÇ´¦Àí×°ÔØÊý¾ÝµÄ»úÆ÷ÓÐÏÞ(Ö»Òª¿¼ÂÇcpu£¬Äڴ棬ӲÅ̵ÄÊý¾Ý½»»¥)£¬¶ø¼¯Èº£¬»úÆ÷ÓжàÁ¾£¬ÊʺϷֲ¼Ê½´¦Àí£¬²¢ÐмÆËã(¸ü¶à¿¼ÂǽڵãºÍ½Úµã¼äµÄÊý¾Ý½»»¥)¡£

´¦Àíº£Á¿Êý¾ÝÎÊÌ⣬Î޷ǾÍÊÇ£º

  1. ·Ö¶øÖÎÖ®/hashÓ³Éä + hashͳ¼Æ + ¶Ñ/¿ìËÙ/¹é²¢ÅÅÐò£»
  2. Ë«²ãͰ»®·Ö
  3. Bloom filter/Bitmap£»
  4. TrieÊ÷/Êý¾Ý¿â/µ¹ÅÅË÷Òý£»
  5. ÍâÅÅÐò£»
  6. ·Ö²¼Ê½´¦ÀíÖ®Hadoop/Mapreduce¡£

ÏÂÃæ£¬±¾ÎĵÚÒ»²¿·Ö¡¢´Óset/map̸µ½hashtable/hash_map/hash_set£¬¼òÒª½éÉÜÏÂset/map/multiset/multimap£¬¼°hash_set/hash_map/hash_multiset/hash_multimapÖ®Çø±ð(ÍòÕɸߥƽµØÆð£¬»ù´¡×îÖØÒª)£¬¶ø±¾Îĵڶþ²¿·Ö£¬ÔòÕë¶ÔÉÏÊöÄÇ6ÖÖ·½·¨Ä£Ê½½áºÏ¶ÔÓ¦µÄº£Á¿Êý¾Ý´¦ÀíÃæÊÔÌâ·Ö±ð¾ßÌå²ûÊö¡£


µÚÒ»²¿·Ö¡¢´Óset/map̸µ½hashtable/hash_map/hash_set

ÉÔºó±¾Îĵڶþ²¿·ÖÖн«¶à´ÎÌáµ½hash_map/hash_set£¬ÏÂÃæÉÔÉÔ½éÉÜÏÂÕâЩÈÝÆ÷£¬ÒÔ×÷Ϊ»ù´¡×¼±¸¡£Ò»°ãÀ´Ëµ£¬STLÈÝÆ÷·ÖÁ½ÖÖ£¬

  • ÐòÁÐʽÈÝÆ÷(vector/list/deque/stack/queue/heap)£¬
  • ¹ØÁªÊ½ÈÝÆ÷¡£¹ØÁªÊ½ÈÝÆ÷ÓÖ·ÖΪset(¼¯ºÏ)ºÍmap(Ó³Éä±í)Á½´óÀ࣬ÒÔ¼°ÕâÁ½´óÀàµÄÑÜÉúÌåmultiset(¶à¼ü¼¯ºÏ)ºÍmultimap(¶à¼üÓ³Éä±í)£¬ÕâЩÈÝÆ÷¾ùÒÔRB-treeÍê³É¡£
  • ´ËÍ⣬»¹ÓеÚ3Àà¹ØÁªÊ½ÈÝÆ÷£¬Èçhashtable(É¢Áбí)£¬ÒÔ¼°ÒÔhashtableΪµ×²ã»úÖÆÍê³ÉµÄhash_set(É¢Áм¯ºÏ)/hash_map(É¢ÁÐÓ³Éä±í)/hash_multiset(É¢Áжà¼ü¼¯ºÏ)/hash_multimap(É¢Áжà¼üÓ³Éä±í)¡£Ò²¾ÍÊÇ˵£¬set/map/multiset/multimap¶¼ÄÚº¬Ò»¸öRB-tree£¬¶øhash_set/hash_map/hash_multiset/hash_multimap¶¼ÄÚº¬Ò»¸öhashtable¡£

Ëùν¹ØÁªÊ½ÈÝÆ÷£¬ÀàËÆ¹ØÁªÊ½Êý¾Ý¿â£¬Ã¿±ÊÊý¾Ý»òÿ¸öÔªËØ¶¼ÓÐÒ»¸ö¼üÖµ(key)ºÍÒ»¸öʵֵ(value)£¬¼´ËùνµÄKey-Value(¼ü-Öµ¶Ô)¡£µ±ÔªËر»²åÈëµ½¹ØÁªÊ½ÈÝÆ÷ÖÐʱ£¬ÈÝÆ÷ÄÚ²¿½á¹¹(RB-tree/hashtable)±ãÒÀÕÕÆä¼üÖµ´óС£¬ÒÔijÖÖÌØ¶¨¹æÔò½«Õâ¸öÔªËØ·ÅÖÃÓÚÊʵ±Î»Öá£

°üÀ¨ÔÚ·**ØÁªÊ½Êý¾Ý¿âÖУ¬±ÈÈ磬ÔÚMongoDBÄÚ£¬Îĵµ(document)ÊÇ×î»ù±¾µÄÊý¾Ý×éÖ¯ÐÎʽ£¬Ã¿¸öÎĵµÒ²ÊÇÒÔKey-Value£¨¼ü-Öµ¶Ô£©µÄ·½Ê½×éÖ¯ÆðÀ´¡£Ò»¸öÎĵµ¿ÉÒÔÓжà¸öKey-Value×éºÏ£¬Ã¿¸öValue¿ÉÒÔÊDz»Í¬µÄÀàÐÍ£¬±ÈÈçString¡¢Integer¡¢ListµÈµÈ¡£
{ "name" : "July",
"sex" : "male",
"age" : 23}

set/map/multiset/multimap

set£¬Í¬mapÒ»Ñù£¬ËùÓÐÔªËØ¶¼»á¸ù¾ÝÔªËØµÄ¼üÖµ×Ô¶¯±»ÅÅÐò£¬ÒòΪset/mapÁ½ÕßµÄËùÓи÷ÖÖ²Ù×÷£¬¶¼Ö»ÊÇת¶øµ÷ÓÃRB-treeµÄ²Ù×÷ÐÐΪ£¬²»¹ý£¬ÖµµÃ×¢ÒâµÄÊÇ£¬Á½Õß¶¼²»ÔÊÐíÁ½¸öÔªËØÓÐÏàͬµÄ¼üÖµ¡£
²»Í¬µÄÊÇ£ºsetµÄÔªËØ²»ÏñmapÄÇÑù¿ÉÒÔͬʱӵÓÐʵֵ(value)ºÍ¼üÖµ(key)£¬setÔªËØµÄ¼üÖµ¾ÍÊÇʵֵ£¬ÊµÖµ¾ÍÊǼüÖµ£¬¶ømapµÄËùÓÐÔªËØ¶¼ÊÇpair£¬Í¬Ê±ÓµÓÐʵֵ(value)ºÍ¼üÖµ(key)£¬pairµÄµÚÒ»¸öÔªËØ±»ÊÓΪ¼üÖµ£¬µÚ¶þ¸öÔªËØ±»ÊÓΪʵֵ¡£
ÖÁÓÚmultiset/multimap£¬ËûÃǵÄÌØÐÔ¼°Ó÷¨ºÍset/mapÍêÈ«Ïàͬ£¬Î¨Ò»µÄ²î±ð¾ÍÔÚÓÚËüÃÇÔÊÐí¼üÖµÖØ¸´£¬¼´ËùÓеIJåÈë²Ù×÷»ùÓÚRB-treeµÄinsert_equal()¶ø·Çinsert_unique()¡£

hash_set/hash_map/hash_multiset/hash_multimap

hash_set/hash_map£¬Á½ÕßµÄÒ»ÇвÙ×÷¶¼ÊÇ»ùÓÚhashtableÖ®ÉÏ¡£²»Í¬µÄÊÇ£¬hash_setͬsetÒ»Ñù£¬Í¬Ê±ÓµÓÐʵֵºÍ¼üÖµ£¬ÇÒʵÖʾÍÊǼüÖµ£¬¼üÖµ¾ÍÊÇʵֵ£¬¶øhash_mapͬmapÒ»Ñù£¬Ã¿Ò»¸öÔªËØÍ¬Ê±ÓµÓÐÒ»¸öʵֵ(value)ºÍÒ»¸ö¼üÖµ(key)£¬ËùÒÔÆäʹÓ÷½Ê½£¬ºÍÉÏÃæµÄmap»ù±¾Ïàͬ¡£µ«ÓÉÓÚhash_set/hash_map¶¼ÊÇ»ùÓÚhashtableÖ®ÉÏ£¬ËùÒÔ²»¾ß±¸×Ô¶¯ÅÅÐò¹¦ÄÜ¡£ÎªÊ²Ã´?ÒòΪhashtable ûÓÐ×Ô¶¯ÅÅÐò¹¦ÄÜ¡£
ÖÁÓÚhash_multiset/hash_multimapµÄÌØÐÔÓëÉÏÃæµÄmultiset/multimapÍêÈ«Ïàͬ£¬Î¨Ò»µÄ²î±ð¾ÍÊÇËüÃÇ hash_multiset/hash_multimapµÄµ×²ãʵÏÖ»úÖÆÊÇhashtable(¶ømultiset/multimap£¬ÉÏÃæËµÁË£¬µ×²ãʵÏÖ»úÖÆÊÇRB-tree)£¬ËùÒÔËüÃǵÄÔªËØ¶¼²»»á±»×Ô¶¯ÅÅÐò£¬²»¹ýÒ²¶¼ÔÊÐí¼üÖµÖØ¸´¡£

ËùÒÔ£¬×ÛÉÏ£¬Ëµ°×ÁË£¬Ê²Ã´ÑùµÄ½á¹¹¾ö¶¨ÆäʲôÑùµÄÐÔÖÊ£¬ÒòΪset/map/multiset/multimap¶¼ÊÇ»ùÓÚRB-treeÖ®ÉÏ£¬ËùÒÔÓÐ×Ô¶¯ÅÅÐò¹¦ÄÜ£¬¶øhash_set/hash_map/hash_multiset/hash_multimap¶¼ÊÇ»ùÓÚhashtableÖ®ÉÏ£¬ËùÒÔ²»º¬ÓÐ×Ô¶¯ÅÅÐò¹¦ÄÜ£¬ÖÁÓÚ¼Ó¸öǰ׺multi_Î޷ǾÍÊÇÔÊÐí¼üÖµÖØ¸´¶øÒÑ¡£



µÚ¶þ²¿·Ö¡¢´¦Àíº£Á¿Êý¾ÝÎÊÌâÖ®Áù°ÑÃܳ×


Ãܳ×Ò»¡¢·Ö¶øÖÎÖ®/HashÓ³Éä + Hashͳ¼Æ + ¶Ñ/¿ìËÙ/¹é²¢ÅÅÐò

1¡¢º£Á¿ÈÕÖ¾Êý¾Ý£¬ÌáÈ¡³öijÈÕ·ÃÎʰٶȴÎÊý×î¶àµÄÄǸöIP¡£
¼ÈÈ»ÊǺ£Á¿Êý¾Ý´¦Àí£¬ÄÇô¿ÉÏë¶øÖª£¬¸øÎÒÃǵÄÊý¾ÝÄǾÍÒ»¶¨ÊǺ£Á¿µÄ¡£Õë¶ÔÕâ¸öÊý¾ÝµÄº£Á¿£¬ÎÒÃÇÈçºÎ×ÅÊÖÄØ?¶ÔµÄ£¬Î޷ǾÍÊÇ·Ö¶øÖÎÖ®/hashÓ³Éä + hashͳ¼Æ + ¶Ñ/¿ìËÙ/¹é²¢ÅÅÐò£¬Ëµ°×ÁË£¬¾ÍÊÇÏÈÓ³É䣬¶øºóͳ¼Æ£¬×îºóÅÅÐò£º
  1. ·Ö¶øÖÎÖ®/hashÓ³É䣺Õë¶ÔÊý¾ÝÌ«´ó£¬ÄÚ´æÊÜÏÞ£¬Ö»ÄÜÊÇ£º°Ñ´óÎļþ»¯³É(ȡģӳÉä)СÎļþ£¬¼´16×Ö·½Õ룺´ó¶ø»¯Ð¡£¬¸÷¸ö»÷ÆÆ£¬ËõС¹æÄ££¬Öð¸ö½â¾ö
  2. hashͳ¼Æ£ºµ±´óÎļþת»¯ÁËСÎļþ£¬ÄÇôÎÒÃDZã¿ÉÒÔ²ÉÓ󣹿µÄhash_map(ip£¬value)À´½øÐÐÆµÂÊͳ¼Æ¡£
  3. ¶Ñ/¿ìËÙÅÅÐò£ºÍ³¼ÆÍêÁËÖ®ºó£¬±ã½øÐÐÅÅÐò(¿É²ÉÈ¡¶ÑÅÅÐò)£¬µÃµ½´ÎÊý×î¶àµÄIP¡£

¾ßÌå¶øÂÛ£¬ÔòÊÇ£º ¡°Ê×ÏÈÊÇÕâÒ»Ì죬²¢ÇÒÊÇ·ÃÎʰٶȵÄÈÕÖ¾ÖеÄIPÈ¡³öÀ´£¬Öð¸öдÈëµ½Ò»¸ö´óÎļþÖС£×¢Òâµ½IPÊÇ32λµÄ£¬×î¶àÓиö2^32¸öIP¡£Í¬Ñù¿ÉÒÔ²ÉÓÃÓ³ÉäµÄ·½·¨£¬±ÈÈçÄ£1000£¬°ÑÕû¸ö´óÎļþÓ³ÉäΪ1000¸öСÎļþ£¨hash(IP)00£©£¬ÔÙÕÒ³öÿ¸öСÎÄÖгöÏÖÆµÂÊ×î´óµÄIP£¨¿ÉÒÔ²ÉÓÃhash_map½øÐÐÆµÂÊͳ¼Æ£¬È»ºóÔÙÕÒ³öƵÂÊ×î´óµÄ¼¸¸ö£©¼°ÏàÓ¦µÄƵÂÊ¡£È»ºóÔÙÔÚÕâ1000¸ö×î´óµÄIPÖУ¬ÕÒ³öÄǸöƵÂÊ×î´óµÄIP£¬¼´ÎªËùÇ󡣡±

¹ØÓÚ±¾Ì⣬»¹Óм¸¸öÎÊÌ⣬ÈçÏ£º

1¡¢HashȡģÊÇÒ»ÖֵȼÛÓ³É䣬²»»á´æÔÚͬһ¸öÔªËØ·ÖÉ¢µ½²»Í¬Ð¡ÎļþÖÐÈ¥µÄÇé¿ö£¬¼´ÕâÀï²ÉÓõÄÊÇmod1000Ëã·¨£¬ÄÇôÏàͬµÄIPÔÚhashºó£¬Ö»¿ÉÄÜÂäÔÚͬһ¸öÎļþÖУ¬²»¿ÉÄܱ»·ÖÉ¢µÄ¡£
2¡¢Äǵ½µ×ʲôÊÇhashÓ³ÉäÄØ£¿¼òµ¥À´Ëµ£¬¾ÍÊÇΪÁ˱ãÓÚ¼ÆËã»úÔÚÓÐÏÞµÄÄÚ´æÖд¦ÀíbigÊý¾Ý£¬´Ó¶øÍ¨¹ýÒ»ÖÖÓ³ÉäÉ¢Áеķ½Ê½ÈÃÊý¾Ý¾ùÔÈ·Ö²¼ÔÚ¶ÔÓ¦µÄÄÚ´æÎ»ÖÃ(Èç´óÊý¾Ýͨ¹ýÈ¡ÓàµÄ·½Ê½Ó³Éä³ÉСÊ÷´æ·ÅÔÚÄÚ´æÖУ¬»ò´óÎļþÓ³Éä³É¶à¸öСÎļþ)£¬¶øÕâ¸öÓ³ÉäÉ¢Áз½Ê½±ãÊÇÎÒÃÇͨ³£Ëù˵µÄhashº¯Êý£¬Éè¼ÆµÄºÃµÄ hashº¯ÊýÄÜÈÃÊý¾Ý¾ùÔÈ·Ö²¼¶ø¼õÉÙ³åÍ»¡£¾¡¹ÜÊý¾ÝÓ³Éäµ½ÁËÁíÍâһЩ²»Í¬µÄλÖ㬵«Êý¾Ý»¹ÊÇÔ­À´µÄÊý¾Ý£¬Ö»ÊÇ´úÌæºÍ±íʾÕâЩԭʼÊý¾ÝµÄÐÎʽ·¢ÉúÁ˱仯¶øÒÑ¡£

´ËÍ⣬ÓÐÒ»ÅóÓÑquicktestÓÃpythonÓïÑÔʵ¼ù²âÊÔÁËϱ¾Ì⣬µØÖ·ÈçÏ£ºhttp://blog.csdn.net/quicktest/article/details/7453189¡£Ð»Ð»¡£OK£¬ÓÐÐËȤµÄ£¬»¹¿ÉÒÔÔÙÁ˽âÏÂÒ»ÖÂÐÔhashËã·¨£¬¼ûblogÄÚ´ËÎĵÚÎ岿·Ö£ºhttp://blog.csdn.net/v_july_v/article/details/6879101¡£

2¡¢Ñ°ÕÒÈÈÃŲéѯ£ºËÑË÷ÒýÇæ»áͨ¹ýÈÕÖ¾Îļþ°ÑÓû§Ã¿´Î¼ìË÷ʹÓõÄËùÓмìË÷´®¶¼¼Ç¼ÏÂÀ´£¬Ã¿¸ö²éѯ´®µÄ³¤¶ÈΪ1-255×Ö½Ú¡£

¼ÙÉèĿǰÓÐһǧÍò¸ö¼Ç¼£¨ÕâЩ²éѯ´®µÄÖØ¸´¶È±È½Ï¸ß£¬ËäÈ»×ÜÊýÊÇ1ǧÍò£¬µ«Èç¹û³ýÈ¥ÖØ¸´ºó£¬²»³¬¹ý3°ÙÍò¸ö¡£Ò»¸ö²éѯ´®µÄÖØ¸´¶ÈÔ½¸ß£¬ËµÃ÷²éѯËüµÄÓû§Ô½¶à£¬Ò²¾ÍÊÇÔ½ÈÈÃÅ£©£¬ÇëÄãͳ¼Æ×îÈÈÃŵÄ10¸ö²éѯ´®£¬ÒªÇóʹÓõÄÄÚ´æ²»Äܳ¬¹ý1G¡£

ÓÉÉÏÃæµÚ1Ì⣬ÎÒÃÇÖªµÀ£¬Êý¾Ý´óÔò»®ÎªÐ¡µÄ£¬µ«Èç¹ûÊý¾Ý¹æÄ£±È½ÏС£¬ÄÜÒ»´ÎÐÔ×°ÈëÄÚ´æÄØ?±ÈÈçÕâµÚ2Ì⣬ËäÈ»ÓÐһǧÍò¸öQuery£¬µ«ÊÇÓÉÓÚÖØ¸´¶È±È½Ï¸ß£¬Òò´ËÊÂʵÉÏÖ»ÓÐ300ÍòµÄQuery£¬Ã¿¸öQuery255Byte£¬Òò´ËÎÒÃÇ¿ÉÒÔ¿¼ÂǰÑËûÃǶ¼·Å½øÄÚ´æÖÐÈ¥£¬¶øÏÖÔÚÖ»ÊÇÐèÒªÒ»¸öºÏÊʵÄÊý¾Ý½á¹¹£¬ÔÚÕâÀHash Table¾ø¶ÔÊÇÎÒÃÇÓÅÏȵÄÑ¡Ôñ¡£ËùÒÔÎÒÃÇÞðÆú·Ö¶øÖÎÖ®/hashÓ³ÉäµÄ·½·¨£¬Ö±½ÓÉÏhashͳ¼Æ£¬È»ºóÅÅÐò¡£So£¬

  1. hash ͳ¼Æ£ºÏȶÔÕâÅúº£Á¿Êý¾ÝÔ¤´¦Àí(ά»¤Ò»¸öKeyΪQuery×Ö´®£¬ValueΪ¸ÃQuery³öÏÖ´ÎÊýµÄHashTable£¬¼´ hash_map(Query£¬Value)£¬Ã¿´Î¶Áȡһ¸öQuery£¬Èç¹û¸Ã×Ö´®²»ÔÚTableÖУ¬ÄÇô¼ÓÈë¸Ã×Ö´®£¬²¢ÇÒ½«ValueÖµÉèΪ1£»Èç¹û¸Ã×Ö´®ÔÚTableÖУ¬ÄÇô½«¸Ã×Ö´®µÄ¼ÆÊý¼ÓÒ»¼´¿É¡£×îÖÕÎÒÃÇÔÚO(N)µÄʱ¼ä¸´ÔÓ¶ÈÄÚÓÃHash±íÍê³ÉÁËͳ¼Æ£»
  2. ¶ÑÅÅÐò£ºµÚ¶þ²½¡¢½èÖú¶Ñ Õâ¸öÊý¾Ý½á¹¹£¬ÕÒ³öTop K£¬Ê±¼ä¸´ÔÓ¶ÈΪN¡®logK¡£¼´½èÖú¶Ñ½á¹¹£¬ÎÒÃÇ¿ÉÒÔÔÚlogÁ¿¼¶µÄʱ¼äÄÚ²éÕҺ͵÷Õû/ÒÆ¶¯¡£Òò´Ë£¬Î¬»¤Ò»¸öK(¸ÃÌâÄ¿ÖÐÊÇ10)´óСµÄС¸ù¶Ñ£¬È»ºó±éÀú300ÍòµÄQuery£¬·Ö±ðºÍ¸ùÔªËØ½øÐжԱÈËùÒÔ£¬ÎÒÃÇ×îÖÕµÄʱ¼ä¸´ÔÓ¶ÈÊÇ£ºO£¨N£© + N'*O£¨logK£©£¬£¨NΪ1000Íò£¬N¡¯Îª300Íò£©¡£

±ðÍüÁËÕâÆªÎÄÕÂÖÐËùÊöµÄ¶ÑÅÅÐò˼·£º¡°Î¬»¤k¸öÔªËØµÄ×îС¶Ñ£¬¼´ÓÃÈÝÁ¿ÎªkµÄ×îС¶Ñ´æ´¢×îÏȱéÀúµ½µÄk¸öÊý£¬²¢¼ÙÉèËüÃǼ´ÊÇ×î´óµÄk¸öÊý£¬½¨¶Ñ·ÑʱO£¨k£©£¬²¢µ÷Õû¶Ñ£¨·ÑʱO£¨logk£©£©ºó£¬ÓÐk1>k2>...kmin£¨kminÉèΪС¶¥¶ÑÖÐ×îÐ¡ÔªËØ£©¡£¼ÌÐø±éÀúÊýÁУ¬Ã¿´Î±éÀúÒ»¸öÔªËØx£¬Óë¶Ñ¶¥ÔªËرȽϣ¬Èô x>kmin£¬Ôò¸üжѣ¨ÓÃʱlogk£©£¬·ñÔò²»¸üжѡ£ÕâÑùÏÂÀ´£¬×Ü·ÑʱO£¨k*logk+£¨n-k£©*logk£©=O£¨n*logk£©¡£´Ë·½·¨µÃÒæÓÚÔÚ¶ÑÖУ¬²éÕҵȸ÷Ïî²Ù×÷ʱ¼ä¸´ÔӶȾùΪlogk¡£¡±
µ±È»£¬ÄãÒ²¿ÉÒÔ²ÉÓÃtrieÊ÷£¬¹Ø¼ü×ÖÓò´æ¸Ã²éѯ´®³öÏֵĴÎÊý£¬Ã»ÓгöÏÖΪ0¡£×îºóÓÃ10¸öÔªËØµÄ×îÐ¡ÍÆÀ´¶Ô³öÏÖÆµÂʽøÐÐÅÅÐò¡£

3¡¢ÓÐÒ»¸ö1G´óСµÄÒ»¸öÎļþ£¬ÀïÃæÃ¿Ò»ÐÐÊÇÒ»¸ö´Ê£¬´ÊµÄ´óС²»³¬¹ý16×Ö½Ú£¬ÄÚ´æÏÞÖÆ´óСÊÇ1M¡£·µ»ØÆµÊý×î¸ßµÄ100¸ö´Ê¡£
ÓÉÉÏÃæÄÇÁ½¸öÀýÌ⣬·Ö¶øÖÎÖ® + hashͳ¼Æ + ¶Ñ/¿ìËÙÅÅÐòÕâ¸öÌ×·£¬ÎÒÃÇÒѾ­¿ªÊ¼ÓÐÁËÂÅÊÔ²»Ë¬µÄ¸Ð¾õ¡£ÏÂÃæ£¬ÔÙÄü¸µÀÔÙ¶à¶àÑé֤ϡ£Çë¿´´ËµÚ3Ì⣺ÓÖÊÇÎļþºÜ´ó£¬ÓÖÊÇÄÚ´æÊÜÏÞ£¬Õ¦°ì?»¹ÄÜÔõô°ìÄØ?ÎÞ·Ç»¹ÊÇ£º

  1. ·Ö¶øÖÎÖ®/hashÓ³É䣺˳Ðò¶ÁÎļþÖУ¬¶ÔÓÚÿ¸ö´Êx£¬È¡hash(x)P00£¬È»ºó°´ÕÕ¸ÃÖµ´æµ½5000¸öСÎļþ£¨¼ÇΪ x0,x1,...x4999£©ÖС£ÕâÑùÿ¸öÎļþ´ó¸ÅÊÇ200k×óÓÒ¡£Èç¹ûÆäÖеÄÓеÄÎļþ³¬¹ýÁË1M´óС£¬»¹¿ÉÒÔ°´ÕÕÀàËÆµÄ·½·¨¼ÌÐøÍùÏ·֣¬Ö±µ½·Ö½âµÃµ½µÄСÎļþµÄ´óС¶¼²»³¬¹ý1M¡£
  2. hashͳ¼Æ£º¶Ôÿ¸öСÎļþ£¬²ÉÓÃtrieÊ÷/hash_mapµÈͳ¼ÆÃ¿¸öÎļþÖгöÏֵĴÊÒÔ¼°ÏàÓ¦µÄƵÂÊ¡£
  3. ¶Ñ/¹é²¢ÅÅÐò£ºÈ¡³ö³öÏÖÆµÂÊ×î´óµÄ100¸ö´Ê£¨¿ÉÒÔÓú¬100¸ö½áµãµÄ×îС¶Ñ£©£¬²¢°Ñ100¸ö´Ê¼°ÏàÓ¦µÄƵÂÊ´æÈëÎļþ£¬ÕâÑùÓֵõ½ÁË5000¸öÎļþ¡£×îºó¾ÍÊǰÑÕâ5000¸öÎļþ½øÐй鲢£¨ÀàËÆÓڹ鲢ÅÅÐò£©µÄ¹ý³ÌÁË¡£
4¡¢º£Á¿Êý¾Ý·Ö²¼ÔÚ100̨µçÄÔÖУ¬Ïë¸ö°ì·¨¸ßЧͳ¼Æ³öÕâÅúÊý¾ÝµÄTOP10¡£
´ËÌâÓëÉÏÃæµÚ3ÌâÀàËÆ£¬
  1. ¶ÑÅÅÐò£ºÔÚÿ̨µçÄÔÉÏÇó³öTOP10£¬¿ÉÒÔ²ÉÓðüº¬10¸öÔªËØµÄ¶ÑÍê³É£¨TOP10С£¬ÓÃ×î´ó¶Ñ£¬TOP10´ó£¬ÓÃ×îС¶Ñ£©¡£±ÈÈçÇóTOP10´ó£¬ÎÒÃÇÊ×ÏÈȡǰ10¸öÔªËØµ÷Õû³É×îС¶Ñ£¬Èç¹û·¢ÏÖ£¬È»ºóɨÃèºóÃæµÄÊý¾Ý£¬²¢Óë¶Ñ¶¥ÔªËرȽϣ¬Èç¹û±È¶Ñ¶¥ÔªËØ´ó£¬ÄÇôÓøÃÔªËØÌæ»»¶Ñ¶¥£¬È»ºóÔÙµ÷ÕûΪ×îС¶Ñ¡£×îºó¶ÑÖеÄÔªËØ¾ÍÊÇTOP10´ó¡£
  2. Çó³öÿ̨µçÄÔÉϵÄTOP10ºó£¬È»ºó°ÑÕâ100̨µçÄÔÉϵÄTOP10×éºÏÆðÀ´£¬¹²1000¸öÊý¾Ý£¬ÔÙÀûÓÃÉÏÃæÀàËÆµÄ·½·¨Çó³öTOP10¾Í¿ÉÒÔÁË¡£
ÉÏÊöµÚ4ÌâµÄ´Ë½â·¨£¬¾­¶ÁÕß·´Ó¦ÓÐÎÊÌ⣬Èç¾Ù¸öÀý×ÓÈçÇó2¸öÎļþÖеÄtop2£¬ÕÕÉÏÊöËã·¨£¬Èç¹û
µÚÒ»¸öÎļþÀïÓУº
a 49´Î
b 50´Î
c 2´Î
d 1´Î
µÚ¶þ¸öÎļþÀïÓУº
a 9´Î
b 1´Î
c 11´Î
d 10´Î
ËäÈ»µÚÒ»¸öÎļþÀï³öÀ´top2ÊÇb£¨50´Î£©,a£¨49´Î£©,µÚ¶þ¸öÎļþÀï³öÀ´top2ÊÇc£¨11´Î£©,d£¨10´Î£©,È»ºó2¸ötop2£ºb£¨50´Î£©a£¨49 ´Î£©Óëc£¨11´Î£©d£¨10´Î£©¹é²¢£¬ÔòËã³öËùÓеÄÎļþµÄtop2ÊÇb(50 ´Î),a(49 ´Î),µ«Êµ¼ÊÉÏÊÇa(58 ´Î),b(51 ´Î)¡£ÊÇ·ñÕæÊÇÈç´ËÄØ?ÈôÕæÈç´Ë£¬ÄÇ×÷ºÎ½â¾öÄØ£¿
ÕýÈçÀÏÃÎËùÊö£º
Ê×ÏÈ£¬ÏȰÑËùÓеÄÊý¾Ý±éÀúÒ»±é×öÒ»´Îhash(±£Ö¤ÏàͬµÄÊý¾ÝÌõÄ¿»®·Öµ½Í¬Ò»Ì¨µçÄÔÉϽøÐÐÔËËã)£¬È»ºó¸ù¾Ýhash½á¹ûÖØÐ·ֲ¼µ½100̨µçÄÔÖУ¬½ÓÏÂÀ´µÄËã·¨°´ÕÕ֮ǰµÄ¼´¿É¡£
×îºóÓÉÓÚa¿ÉÄܳöÏÖÔÚ²»Í¬µÄµçÄÔ£¬¸÷ÓÐÒ»¶¨µÄ´ÎÊý£¬ÔÙ¶Ôÿ¸öÏàͬÌõÄ¿½øÐÐÇóºÍ£¨ÓÉÓÚÉÏÒ»²½ÖèÖÐhashÖ®ºó£¬Ò²·½±ãÿ̨µçÄÔÖ»ÐèÒª¶Ô×Ô¼º·Öµ½µÄÌõÄ¿ÄÚ½øÐÐÇóºÍ£¬²»Éæ¼°µ½±ðµÄµçÄÔ£¬¹æÄ£ËõС£©¡£

5¡¢ÓÐ10¸öÎļþ£¬Ã¿¸öÎļþ1G£¬Ã¿¸öÎļþµÄÿһÐдæ·ÅµÄ¶¼ÊÇÓû§µÄquery£¬Ã¿¸öÎļþµÄquery¶¼¿ÉÄÜÖØ¸´¡£ÒªÇóÄã°´ÕÕqueryµÄƵ¶ÈÅÅÐò¡£

Ö±½ÓÉÏ£º

  1. hashÓ³É䣺˳Ðò¶ÁÈ¡10¸öÎļþ£¬°´ÕÕhash(query)µÄ½á¹û½«queryдÈëµ½ÁíÍâ10¸öÎļþ£¨¼ÇΪ£©ÖС£ÕâÑùÐÂÉú³ÉµÄÎļþÿ¸öµÄ´óС´óÔ¼Ò²1G£¨¼ÙÉèhashº¯ÊýÊÇËæ»úµÄ£©¡£
  2. hashͳ¼Æ£ºÕÒһ̨ÄÚ´æÔÚ2G×óÓҵĻúÆ÷£¬ÒÀ´Î¶ÔÓÃhash_map(query, query_count)À´Í³¼ÆÃ¿¸öquery³öÏֵĴÎÊý¡£×¢£ºhash_map(query,query_count)ÊÇÓÃÀ´Í³¼ÆÃ¿¸öqueryµÄ³öÏÖ´ÎÊý£¬²»ÊÇ´æ´¢ËûÃǵÄÖµ£¬³öÏÖÒ»´Î£¬Ôòcount+1¡£
  3. ¶Ñ/¿ìËÙ/¹é²¢ÅÅÐò£ºÀûÓÿìËÙ/¶Ñ/¹é²¢ÅÅÐò°´ÕÕ³öÏÖ´ÎÊý½øÐÐÅÅÐò£¬½«ÅÅÐòºÃµÄqueryºÍ¶ÔÓ¦µÄquery_coutÊä³öµ½ÎļþÖУ¬ÕâÑùµÃµ½ÁË10¸öÅźÃÐòµÄÎļþ£¨¼ÇΪ£©¡£×îºó£¬¶ÔÕâ10¸öÎļþ½øÐй鲢ÅÅÐò£¨ÄÚÅÅÐòÓëÍâÅÅÐòÏà½áºÏ£©¡£
³ý´ËÖ®Í⣬´ËÌ⻹ÓÐÒÔÏÂÁ½¸ö·½·¨£º
·½°¸2£ºÒ»°ãqueryµÄ×ÜÁ¿ÊÇÓÐÏ޵ģ¬Ö»ÊÇÖØ¸´µÄ´ÎÊý±È½Ï¶à¶øÒÑ£¬¿ÉÄܶÔÓÚËùÓеÄquery£¬Ò»´ÎÐԾͿÉÒÔ¼ÓÈëµ½ÄÚ´æÁË¡£ÕâÑù£¬ÎÒÃǾͿÉÒÔ²ÉÓÃtrieÊ÷/hash_mapµÈÖ±½ÓÀ´Í³¼ÆÃ¿¸öquery³öÏֵĴÎÊý£¬È»ºó°´³öÏÖ´ÎÊý×ö¿ìËÙ/¶Ñ/¹é²¢ÅÅÐò¾Í¿ÉÒÔÁË¡£

·½°¸3£ºÓë·½°¸1ÀàËÆ£¬µ«ÔÚ×öÍêhash£¬·Ö³É¶à¸öÎļþºó£¬¿ÉÒÔ½»¸ø¶à¸öÎļþÀ´´¦Àí£¬²ÉÓ÷ֲ¼Ê½µÄ¼Ü¹¹À´´¦Àí£¨±ÈÈçMapReduce£©£¬×îºóÔÙ½øÐкϲ¢¡£

6¡¢¸ø¶¨a¡¢bÁ½¸öÎļþ£¬¸÷´æ·Å50ÒÚ¸öurl£¬Ã¿¸öurl¸÷Õ¼64×Ö½Ú£¬ÄÚ´æÏÞÖÆÊÇ4G£¬ÈÃÄãÕÒ³öa¡¢bÎļþ¹²Í¬µÄurl£¿

¿ÉÒÔ¹À¼ÆÃ¿¸öÎļþ°²µÄ´óСΪ5G¡Á64=320G£¬Ô¶Ô¶´óÓÚÄÚ´æÏÞÖÆµÄ4G¡£ËùÒÔ²»¿ÉÄܽ«ÆäÍêÈ«¼ÓÔØµ½ÄÚ´æÖд¦Àí¡£¿¼ÂDzÉÈ¡·Ö¶øÖÎÖ®µÄ·½·¨¡£

  1. ·Ö¶øÖÎÖ®/hashÓ³É䣺±éÀúÎļþa£¬¶Ôÿ¸öurlÇóÈ¡£¬È»ºó¸ù¾ÝËùÈ¡µÃµÄÖµ½«url·Ö±ð´æ´¢µ½1000¸öСÎļþ£¨¼ÇΪ£©ÖС£ÕâÑùÿ¸öСÎļþµÄ´óԼΪ300M¡£±éÀúÎļþb£¬²ÉÈ¡ºÍaÏàͬµÄ·½Ê½½«url·Ö±ð´æ´¢µ½1000СÎļþÖУ¨¼ÇΪ£©¡£ÕâÑù´¦Àíºó£¬ËùÓпÉÄÜÏàͬµÄurl¶¼ÔÚ¶ÔÓ¦µÄСÎļþ£¨£©ÖУ¬²»¶ÔÓ¦µÄСÎļþ²»¿ÉÄÜÓÐÏàͬµÄurl¡£È»ºóÎÒÃÇÖ»ÒªÇó³ö1000¶ÔСÎļþÖÐÏàͬµÄurl¼´¿É¡£
  2. hashͳ¼Æ£ºÇóÿ¶ÔСÎļþÖÐÏàͬµÄurlʱ£¬¿ÉÒÔ°ÑÆäÖÐÒ»¸öСÎļþµÄurl´æ´¢µ½hash_setÖС£È»ºó±éÀúÁíÒ»¸öСÎļþµÄÿ¸öurl£¬¿´ÆäÊÇ·ñÔڸղʹ½¨µÄhash_setÖУ¬Èç¹ûÊÇ£¬ÄÇô¾ÍÊ**²Í¬µÄurl£¬´æµ½ÎļþÀïÃæ¾Í¿ÉÒÔÁË¡£

OK£¬´ËµÚÒ»ÖÖ·½·¨£º·Ö¶øÖÎÖ®/hashÓ³Éä + hashͳ¼Æ + ¶Ñ/¿ìËÙ/¹é²¢ÅÅÐò£¬ÔÙ¿´×îºó4µÀÌ⣬ÈçÏ£º

7¡¢ÔõôÔÚº£Á¿Êý¾ÝÖÐÕÒ³öÖØ¸´´ÎÊý×î¶àµÄÒ»¸ö£¿

·½°¸1£ºÏÈ×öhash£¬È»ºóÇóÄ£Ó³ÉäΪСÎļþ£¬Çó³öÿ¸öСÎļþÖÐÖØ¸´´ÎÊý×î¶àµÄÒ»¸ö£¬²¢¼ÇÂ¼ÖØ¸´´ÎÊý¡£È»ºóÕÒ³öÉÏÒ»²½Çó³öµÄÊý¾ÝÖÐÖØ¸´´ÎÊý×î¶àµÄÒ»¸ö¾ÍÊÇËùÇ󣨾ßÌå²Î¿¼Ç°ÃæµÄÌ⣩¡£

8¡¢ÉÏǧÍò»òÉÏÒÚÊý¾Ý£¨ÓÐÖØ¸´£©£¬Í³¼ÆÆäÖгöÏÖ´ÎÊý×î¶àµÄÇ®N¸öÊý¾Ý¡£

·½°¸1£ºÉÏǧÍò»òÉÏÒÚµÄÊý¾Ý£¬ÏÖÔڵĻúÆ÷µÄÄÚ´æÓ¦¸ÃÄÜ´æÏ¡£ËùÒÔ¿¼ÂDzÉÓÃhash_map/ËÑË÷¶þ²æÊ÷/ºìºÚÊ÷µÈÀ´½øÐÐͳ¼Æ´ÎÊý¡£È»ºó¾ÍÊÇÈ¡³öǰN¸ö³öÏÖ´ÎÊý×î¶àµÄÊý¾ÝÁË£¬¿ÉÒÔÓõÚ2ÌâÌáµ½µÄ¶Ñ»úÖÆÍê³É¡£

9¡¢Ò»¸öÎı¾Îļþ£¬´óÔ¼ÓÐÒ»ÍòÐУ¬Ã¿ÐÐÒ»¸ö´Ê£¬ÒªÇóͳ¼Æ³öÆäÖÐ×îÆµ·±³öÏÖµÄǰ10¸ö´Ê£¬Çë¸ø³ö˼Ï룬¸ø³öʱ¼ä¸´ÔÓ¶È·ÖÎö¡£

·½°¸1£ºÕâÌâÊÇ¿¼ÂÇʱ¼äЧÂÊ¡£ÓÃtrieÊ÷ͳ¼ÆÃ¿¸ö´Ê³öÏֵĴÎÊý£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n*le)£¨le±íʾµ¥´ÊµÄƽ׼³¤¶È£©¡£È»ºóÊÇÕÒ³ö³öÏÖ×îÆµ·±µÄǰ 10¸ö´Ê£¬¿ÉÒÔÓöÑÀ´ÊµÏÖ£¬Ç°ÃæµÄÌâÖÐÒѾ­½²µ½ÁË£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n*lg10)¡£ËùÒÔ×ܵÄʱ¼ä¸´ÔÓ¶È£¬ÊÇO(n*le)ÓëO(n*lg10)ÖнϴóµÄÄÄÒ»¸ö¡£

10. 1000Íò×Ö·û´®£¬ÆäÖÐÓÐЩÊÇÖØ¸´µÄ£¬ÐèÒª°ÑÖØ¸´µÄÈ«²¿È¥µô£¬±£ÁôûÓÐÖØ¸´µÄ×Ö·û´®¡£ÇëÔõôÉè¼ÆºÍʵÏÖ£¿

  • ·½°¸1£ºÕâÌâÓÃtrieÊ÷±È½ÏºÏÊÊ£¬hash_mapÒ²ÐС£
  • ·½°¸2£ºfrom xjbzju:£¬1000wµÄÊý¾Ý¹æÄ£²åÈë²Ù×÷ÍêÈ«²»ÏÖʵ£¬ÒÔǰÊÔ¹ýÔÚstlÏÂ100wÔªËØ²åÈësetÖÐÒѾ­ÂýµÃ²»ÄÜÈÌÊÜ£¬¾õµÃ»ùÓÚhashµÄʵÏÖ²»»á±ÈºìºÚÊ÷ºÃÌ«¶à£¬Ê¹ÓÃvector+sort+unique¶¼Òª¿ÉÐÐÐí¶à£¬½¨Ò黹ÊÇÏÈhash³ÉСÎļþ·Ö¿ª´¦ÀíÔÙ×ۺϡ£
ÉÏÊö·½°¸2ÖжÁÕßxbzjuµÄ·½·¨ÈÃÎÒÏëµ½ÁËһЩÎÊÌ⣬¼´ÊÇset/map£¬Óëhash_set/hash_mapµÄÐÔÄܱȽÏ?¹²¼Æ3¸öÎÊÌ⣬ÈçÏ£º
  • 1¡¢hash_setÔÚǧÍò¼¶Êý¾ÝÏ£¬insert²Ù×÷ÓÅÓÚset? Õâλblog£ºhttp://t.cn/zOibP7t ¸øµÄʵ¼ùÊý¾Ý¿É¿¿²»?
  • 2¡¢ÄÇmapºÍhash_mapµÄÐÔÄܱȽÏÄØ? Ë­×ö¹ýÏà¹ØÊµÑé?
  • 3¡¢ÄDzéѯ²Ù×÷ÄØ£¬Èç϶ÎÎÄ×ÖËùÊö?


»òÕßСÊý¾ÝÁ¿Ê±ÓÃmap£¬¹¹Ôì¿ì£¬´óÊý¾ÝÁ¿Ê±ÓÃhash_map?

rbtree£¨ºìºÚÊ÷£© PK hashtable

¾ÝÅóÓÑ×öµÄºìºÚÊ÷ºÍhash tableµÄÐÔÄܲâÊÔÖз¢ÏÖ£ºµ±Êý¾ÝÁ¿»ù±¾ÉÏintÐÍkeyʱ£¬hash tableÊÇrbtreeµÄ3-4±¶£¬µ«hash tableÒ»°ã»áÀË·Ñ´ó¸ÅÒ»°ëÄÚ´æ¡£

ÒòΪhash tableËù×öµÄÔËËã¾ÍÊǸö%£¬¶ørbtreeÒª±È½ÏºÜ¶à£¬±ÈÈçrbtreeÒª¿´valueµÄÊý¾Ý£¬Ã¿¸ö½ÚµãÒª¶à³ö3¸öÖ¸Õ루»òÕ߯«ÒÆÁ¿£© Èç¹ûÐèÒªÆäËû¹¦ÄÜ£¬±ÈÈ磬ͳ¼ÆÄ³¸ö·¶Î§ÄÚµÄkeyµÄÊýÁ¿£¬¾ÍÐèÒª¼ÓÒ»¸ö¼ÆÊý³ÉÔ±¡£

ÇÒ1s rbtreeÄܽøÐдó¸Å50w+´Î²åÈ룬hash table´ó¸ÅÊDz¶à200w´Î¡£²»¹ýºÜ¶àµÄʱºò£¬ÆäËÙ¶È¿ÉÒÔÈÌÁË£¬ÀýÈçµ¹ÅÅË÷Òý²î²»¶àÒ²ÊÇÕâ¸öËÙ¶È£¬¶øÇÒµ¥Ị̈߳¬ÇÒµ¹ÅűíµÄÀ­Á´³¤¶È²»»áÌ«´ó¡£ÕýÒòΪ»ùÓÚÊ÷µÄʵÏÖÆäʵ²»±ÈhashtableÂýµ½ÄÄÀïÈ¥£¬ËùÒÔÊý¾Ý¿âµÄË÷ÒýÒ»°ã¶¼ÊÇÓõÄB/B+Ê÷£¬¶øÇÒB+Ê÷»¹¶Ô´ÅÅÌÓѺÃ(BÊ÷ÄÜÓÐЧ½µµÍËüµÄ¸ß¶È£¬ËùÒÔ¼õÉÙ´ÅÅ̽»»¥´ÎÊý)¡£±ÈÈçÏÖÔڷdz£Á÷ÐеÄNoSQLÊý¾Ý¿â£¬ÏñMongoDBÒ²ÊDzÉÓõÄBÊ÷Ë÷Òý¡£¹ØÓÚBÊ÷ϵÁУ¬Çë²Î¿¼±¾blogÄÚ´ËÆªÎÄÕ£º´ÓBÊ÷¡¢B+Ê÷¡¢B*Ê÷̸µ½R Ê÷¡£

OK£¬¸ü¶àÇë´ýºóÐøÊµÑéÂÛÖ¤¡£½ÓÏÂÀ´£¬ÔÛÃÇÀ´¿´µÚ¶þÖÖ·½·¨£¬Ë«²ãͱ»®·Ö¡£

Ãܳ׶þ¡¢Ë«²ãͰ»®·Ö

Ë«²ãͰ»®·Ö----Æäʵ±¾ÖÊÉÏ»¹ÊÇ·Ö¶øÖÎÖ®µÄ˼Ïë£¬ÖØÔÚ¡°·Ö¡±µÄ¼¼ÇÉÉÏ£¡
¡¡¡¡ÊÊÓ÷¶Î§£ºµÚk´ó£¬ÖÐλÊý£¬²»Öظ´»òÖØ¸´µÄÊý×Ö
¡¡¡¡»ù±¾Ô­Àí¼°Òªµã£ºÒòÎªÔªËØ·¶Î§ºÜ´ó£¬²»ÄÜÀûÓÃÖ±½ÓѰַ±í£¬ËùÒÔͨ¹ý¶à´Î»®·Ö£¬Öð²½È·¶¨·¶Î§£¬È»ºó×îºóÔÚÒ»¸ö¿ÉÒÔ½ÓÊܵķ¶Î§ÄÚ½øÐС£¿ÉÒÔͨ¹ý¶à´ÎËõС£¬Ë«²ãÖ»ÊÇÒ»¸öÀý×Ó¡£

ÎÊÌâʵÀý£º

11¡¢2.5ÒÚ¸öÕûÊýÖÐÕÒ³ö²»Öظ´µÄÕûÊýµÄ¸öÊý£¬ÄÚ´æ¿Õ¼ä²»×ãÒÔÈÝÄÉÕâ2.5ÒÚ¸öÕûÊý¡£
¡¡¡¡ÓеãÏñ¸ë³²Ô­Àí£¬ÕûÊý¸öÊýΪ2^32,Ò²¾ÍÊÇ£¬ÎÒÃÇ¿ÉÒÔ½«Õâ2^32¸öÊý£¬»®·ÖΪ2^8¸öÇøÓò(±ÈÈçÓõ¥¸öÎļþ´ú±íÒ»¸öÇøÓò£»Õâ8¸öÇøµÄ·¶Î§ÈçÏ£º0µ½(2^24-1),2^24µ½(2^25-1)£¬2^25µ½2^26-1,2^26µ½2^27-1,2^27µ½2^28-1,2^28µ½2^29-1,2^29µ½2^30-1,2^30µ½2^31-1)¡£È»ºó½«Êý¾Ý·ÖÀëµ½²»Í¬µÄÇøÓò£¬È»ºó²»Í¬µÄÇøÓòÔÚÀûÓÃbitmap¾Í¿ÉÒÔÖ±½Ó½â¾öÁË¡£Ò²¾ÍÊÇ˵ֻҪÓÐ×ã¹»µÄ´ÅÅ̿ռ䣬¾Í¿ÉÒԺܷ½±ãµÄ½â¾ö¡£

×¢£º½«2.5ÒÚ¸öÕûÊý»®·ÖµÄº¯Êý¿ÉÒÔ²ÉÓÃ:value/2^(32-8)£¬¼´value/2^24¡£Öð¸ö¶ÁÈ¡2.5ÒÚ¸öÕûÊý£¬¸ù¾Ý»®·Öº¯Êý½«Ã¿¸öÕûÊý»®·Öµ½²»Í¬µÄÇøÓò¡£


12¡¢5ÒÚ¸öintÕÒËüÃǵÄÖÐλÊý¡£
¡¡¡¡Õâ¸öÀý×Ó±ÈÉÏÃæÄǸö¸üÃ÷ÏÔ¡£Ê×ÏÈÎÒÃǽ«int»®·ÖΪ2^16¸öÇøÓò£¬È»ºó¶ÁÈ¡Êý¾Ýͳ¼ÆÂäµ½¸÷¸öÇøÓòÀïµÄÊýµÄ¸öÊý£¬Ö®ºóÎÒÃǸù¾Ýͳ¼Æ½á¹û¾Í¿ÉÒÔÅжÏÖÐλÊýÂäµ½ÄĸöÇøÓò£¬Í¬Ê±ÖªµÀÕâ¸öÇøÓòÖеĵڼ¸´óÊý¸ÕºÃÊÇÖÐλÊý¡£È»ºóµÚ¶þ´ÎɨÃèÎÒÃÇֻͳ¼ÆÂäÔÚÕâ¸öÇøÓòÖеÄÄÇЩÊý¾Í¿ÉÒÔÁË¡£
¡¡¡¡Êµ¼ÊÉÏ£¬Èç¹û²»ÊÇintÊÇint64£¬ÎÒÃÇ¿ÉÒÔ¾­¹ý3´ÎÕâÑùµÄ»®·Ö¼´¿É½µµÍµ½¿ÉÒÔ½ÓÊܵij̶ȡ£¼´¿ÉÒÔÏȽ«int64·Ö³É2^24¸öÇøÓò£¬È»ºóÈ·¶¨ÇøÓòµÄµÚ¼¸´óÊý£¬ÔÚ½«¸ÃÇøÓò·Ö³É2^20¸ö×ÓÇøÓò£¬È»ºóÈ·¶¨ÊÇ×ÓÇøÓòµÄµÚ¼¸´óÊý£¬È»ºó×ÓÇøÓòÀïµÄÊýµÄ¸öÊýÖ»ÓÐ2^20£¬¾Í¿ÉÒÔÖ±½ÓÀûÓÃdirect addr table½øÐÐͳ¼ÆÁË¡£


Ãܳ×Èý£ºBloom filter/Bitmap

Bloom filter

¹ØÓÚʲôÊÇBloom filter£¬Çë²Î¿´blogÄÚ´ËÎÄ£º

¡¡¡¡ÊÊÓ÷¶Î§£º¿ÉÒÔÓÃÀ´ÊµÏÖÊý¾Ý×ֵ䣬½øÐÐÊý¾ÝµÄÅÐÖØ£¬»òÕß¼¯ºÏÇó½»¼¯
¡¡¡¡»ù±¾Ô­Àí¼°Òªµã£º
¡¡¡¡¶ÔÓÚÔ­ÀíÀ´ËµºÜ¼òµ¥£¬Î»Êý×é+k¸ö¶ÀÁ¢hashº¯Êý¡£½«hashº¯Êý¶ÔÓ¦µÄÖµµÄλÊý×éÖÃ1£¬²éÕÒʱÈç¹û·¢ÏÖËùÓÐhashº¯Êý¶ÔӦλ¶¼ÊÇ1˵Ã÷´æÔÚ£¬ºÜÃ÷ÏÔÕâ¸ö¹ý³Ì²¢²»±£Ö¤²éÕҵĽá¹ûÊÇ100%ÕýÈ·µÄ¡£Í¬Ê±Ò²²»Ö§³Öɾ³ýÒ»¸öÒѾ­²åÈëµÄ¹Ø¼ü×Ö£¬ÒòΪ¸Ã¹Ø¼ü×Ö¶ÔÓ¦µÄλ»áÇ£¶¯µ½ÆäËûµÄ¹Ø¼ü×Ö¡£ËùÒÔÒ»¸ö¼òµ¥µÄ¸Ä½ø¾ÍÊÇ counting Bloom filter£¬ÓÃÒ»¸öcounterÊý×é´úÌæÎ»Êý×飬¾Í¿ÉÒÔÖ§³Öɾ³ýÁË¡£
¡¡¡¡»¹ÓÐÒ»¸ö±È½ÏÖØÒªµÄÎÊÌ⣬ÈçºÎ¸ù¾ÝÊäÈëÔªËØ¸öÊýn£¬È·¶¨Î»Êý×émµÄ´óС¼°hashº¯Êý¸öÊý¡£µ±hashº¯Êý¸öÊýk=(ln2)*(m/n)ʱ´íÎóÂÊ×îС¡£ÔÚ´íÎóÂʲ»´óÓÚEµÄÇé¿öÏ£¬m ÖÁÉÙÒªµÈÓÚn*lg(1/E)²ÅÄܱíʾÈÎÒân¸öÔªËØµÄ¼¯ºÏ¡£µ«m»¹Ó¦¸Ã¸ü´óЩ£¬ÒòΪ»¹Òª±£Ö¤bitÊý×éÀïÖÁÉÙÒ»°ëΪ0£¬ÔòmÓ¦¸Ã>=nlg(1 /E)*lge ´ó¸Å¾ÍÊÇnlg(1/E)1.44±¶(lg±íʾÒÔ2Ϊµ×µÄ¶ÔÊý)¡£
¡¡¡¡¾Ù¸öÀý×ÓÎÒÃǼÙÉè´íÎóÂÊΪ0.01£¬Ôò´ËʱmÓ¦´ó¸ÅÊÇnµÄ13±¶¡£ÕâÑùk´ó¸ÅÊÇ8¸ö¡£
¡¡¡¡×¢ÒâÕâÀïmÓënµÄµ¥Î»²»Í¬£¬mÊÇbitΪµ¥Î»£¬¶ønÔòÊÇÒÔÔªËØ¸öÊýΪµ¥Î»(׼ȷµÄ˵ÊDz»Í¬ÔªËصĸöÊý)¡£Í¨³£µ¥¸öÔªËØµÄ³¤¶È¶¼ÊÇÓкܶàbitµÄ¡£ËùÒÔʹÓÃbloom filterÄÚ´æÉÏͨ³£¶¼ÊǽÚÊ¡µÄ¡£

¡¡¡¡À©Õ¹£º
¡¡ ¡¡Bloom filter½«¼¯ºÏÖеÄÔªËØÓ³É䵽λÊý×éÖУ¬ÓÃk£¨kΪ¹þÏ£º¯Êý¸öÊý£©¸öÓ³ÉäλÊÇ·ñÈ«1±íÊ¾ÔªËØÔÚ²»ÔÚÕâ¸ö¼¯ºÏÖС£Counting bloom filter£¨CBF£©½«Î»Êý×éÖеÄÿһλÀ©Õ¹ÎªÒ»¸öcounter£¬´Ó¶øÖ§³ÖÁËÔªËØµÄɾ³ý²Ù×÷¡£Spectral Bloom Filter£¨SBF£©½«ÆäÓ뼯ºÏÔªËØµÄ³öÏÖ´ÎÊý¹ØÁª¡£SBF²ÉÓÃcounterÖеÄ×îСֵÀ´½üËÆ±íÊ¾ÔªËØµÄ³öÏÖÆµÂÊ¡£

13¡¢¸øÄãA,BÁ½¸öÎļþ£¬¸÷´æ·Å50ÒÚÌõURL£¬Ã¿ÌõURLÕ¼ÓÃ64×Ö½Ú£¬ÄÚ´æÏÞÖÆÊÇ4G£¬ÈÃÄãÕÒ³öA,BÎļþ¹²Í¬µÄURL¡£Èç¹ûÊÇÈý¸öÄËÖÁn¸öÎļþÄØ£¿

¡¡¡¡¸ù¾ÝÕâ¸öÎÊÌâÎÒÃÇÀ´¼ÆËãÏÂÄÚ´æµÄÕ¼Óã¬4G=2^32´ó¸ÅÊÇ40ÒÚ*8´ó¸ÅÊÇ340ÒÚ£¬n=50ÒÚ£¬Èç¹û°´³ö´íÂÊ0.01ËãÐèÒªµÄ´ó¸ÅÊÇ650ÒÚ¸ö bit¡£ÏÖÔÚ¿ÉÓõÄÊÇ340ÒÚ£¬Ïà²î²¢²»¶à£¬ÕâÑù¿ÉÄÜ»áʹ³ö´íÂÊÉÏÉýЩ¡£ÁíÍâÈç¹ûÕâЩurlipÊÇÒ»Ò»¶ÔÓ¦µÄ£¬¾Í¿ÉÒÔת»»³Éip£¬Ôò´ó´ó¼òµ¥ÁË¡£

ͬʱ£¬ÉÏÎĵĵÚ5Ì⣺¸ø¶¨a¡¢bÁ½¸öÎļþ£¬¸÷´æ·Å50ÒÚ¸öurl£¬Ã¿¸öurl¸÷Õ¼64×Ö½Ú£¬ÄÚ´æÏÞÖÆÊÇ4G£¬ÈÃÄãÕÒ³öa¡¢bÎļþ¹²Í¬µÄurl£¿Èç¹ûÔÊÐíÓÐÒ»¶¨µÄ´íÎóÂÊ£¬¿ÉÒÔʹÓÃBloom filter£¬4GÄÚ´æ´ó¸Å¿ÉÒÔ±íʾ340ÒÚbit¡£½«ÆäÖÐÒ»¸öÎļþÖеÄurlʹÓÃBloom filterÓ³ÉäΪÕâ340ÒÚbit£¬È»ºó°¤¸ö¶ÁÈ¡ÁíÍâÒ»¸öÎļþµÄurl£¬¼ì²éÊÇ·ñÓëBloom filter£¬Èç¹ûÊÇ£¬ÄÇô¸ÃurlÓ¦¸ÃÊ**²Í¬µÄurl£¨×¢Òâ»áÓÐÒ»¶¨µÄ´íÎóÂÊ£©¡£



Bitmap

ÏÂÃæ¹ØÓÚBitmapµÄÓ¦Óã¬Ö±½ÓÉÏÌ⣬ÈçϵÚ9¡¢10µÀ£º

14¡¢ÔÚ2.5ÒÚ¸öÕûÊýÖÐÕÒ³ö²»Öظ´µÄÕûÊý£¬×¢£¬ÄÚ´æ²»×ãÒÔÈÝÄÉÕâ2.5ÒÚ¸öÕûÊý¡£

·½°¸1£º²ÉÓÃ2-Bitmap£¨Ã¿¸öÊý·ÖÅä2bit£¬00±íʾ²»´æÔÚ£¬01±íʾ³öÏÖÒ»´Î£¬10±íʾ¶à´Î£¬11ÎÞÒâÒ壩½øÐУ¬¹²ÐèÄÚ´æ2^32 * 2 bit=1 GBÄڴ棬»¹¿ÉÒÔ½ÓÊÜ¡£È»ºóɨÃèÕâ2.5ÒÚ¸öÕûÊý£¬²é¿´BitmapÖÐÏà¶ÔӦ룬Èç¹ûÊÇ00±ä01£¬01±ä10£¬10±£³Ö²»±ä¡£ËùÃèÍêʺ󣬲鿴 bitmap£¬°Ñ¶ÔӦλÊÇ01µÄÕûÊýÊä³ö¼´¿É¡£
·½°¸2£ºÒ²¿É²ÉÓÃÓëµÚ1ÌâÀàËÆµÄ·½·¨£¬½øÐл®·ÖСÎļþµÄ·½·¨¡£È»ºóÔÚСÎļþÖÐÕÒ³ö²»Öظ´µÄÕûÊý£¬²¢ÅÅÐò¡£È»ºóÔÙ½øÐй鲢£¬×¢ÒâÈ¥³ýÖØ¸´µÄÔªËØ¡£

15¡¢ÌÚÑ¶ÃæÊÔÌ⣺¸ø40ÒÚ¸ö²»Öظ´µÄunsigned intµÄÕûÊý£¬Ã»ÅŹýÐòµÄ£¬È»ºóÔÙ¸øÒ»¸öÊý£¬ÈçºÎ¿ìËÙÅжÏÕâ¸öÊýÊÇ·ñÔÚÄÇ40ÒÚ¸öÊýµ±ÖУ¿
·½°¸1£ºfrome oo£¬ÓÃλͼ/BitmapµÄ·½·¨£¬ÉêÇë512MµÄÄڴ棬һ¸öbitλ´ú±íÒ»¸öunsigned intÖµ¡£¶ÁÈë40ÒÚ¸öÊý£¬ÉèÖÃÏàÓ¦µÄbit룬¶ÁÈëÒª²éѯµÄÊý£¬²é¿´ÏàÓ¦bitλÊÇ·ñΪ1£¬Îª1±íʾ´æÔÚ£¬Îª0±íʾ²»´æÔÚ¡£

Ãܳ×ËÄ¡¢TrieÊ÷/Êý¾Ý¿â/µ¹ÅÅË÷Òý

TrieÊ÷

¡¡¡¡ÊÊÓ÷¶Î§£ºÊý¾ÝÁ¿´ó£¬Öظ´¶à£¬µ«ÊÇÊý¾ÝÖÖÀàС¿ÉÒÔ·ÅÈëÄÚ´æ
¡¡¡¡»ù±¾Ô­Àí¼°Òªµã£ºÊµÏÖ·½Ê½£¬½Úµãº¢×ӵıíʾ·½Ê½
¡¡¡¡À©Õ¹£ºÑ¹ËõʵÏÖ¡£
¡¡¡¡ÎÊÌâʵÀý£º

  1. ÉÏÃæµÄµÚ2Ì⣺ѰÕÒÈÈÃŲéѯ£º²éѯ´®µÄÖØ¸´¶È±È½Ï¸ß£¬ËäÈ»×ÜÊýÊÇ1ǧÍò£¬µ«Èç¹û³ýÈ¥ÖØ¸´ºó£¬²»³¬¹ý3°ÙÍò¸ö£¬Ã¿¸ö²»³¬¹ý255×Ö½Ú¡£
  2. ÉÏÃæµÄµÚ5Ì⣺ÓÐ10¸öÎļþ£¬Ã¿¸öÎļþ1G£¬Ã¿¸öÎļþµÄÿһÐж¼´æ·ÅµÄÊÇÓû§µÄquery£¬Ã¿¸öÎļþµÄquery¶¼¿ÉÄÜÖØ¸´¡£ÒªÄã°´ÕÕqueryµÄƵ¶ÈÅÅÐò¡£
  3. 1000Íò×Ö·û´®£¬ÆäÖÐÓÐЩÊÇÏàͬµÄ(ÖØ¸´),ÐèÒª°ÑÖØ¸´µÄÈ«²¿È¥µô£¬±£ÁôûÓÐÖØ¸´µÄ×Ö·û´®¡£ÇëÎÊÔõôÉè¼ÆºÍʵÏÖ£¿
  4. ÉÏÃæµÄµÚ8Ì⣺һ¸öÎı¾Îļþ£¬´óÔ¼ÓÐÒ»ÍòÐУ¬Ã¿ÐÐÒ»¸ö´Ê£¬ÒªÇóͳ¼Æ³öÆäÖÐ×îÆµ·±³öÏÖµÄǰ10¸ö´Ê¡£Æä½â¾ö·½·¨ÊÇ£ºÓÃtrieÊ÷ͳ¼ÆÃ¿¸ö´Ê³öÏֵĴÎÊý£¬Ê±¼ä¸´ÔÓ¶ÈÊÇO(n*le)£¨le±íʾµ¥´ÊµÄƽ׼³¤¶È£©£¬È»ºóÊÇÕÒ³ö³öÏÖ×îÆµ·±µÄǰ10¸ö´Ê¡£

¸ü¶àÓйØTrieÊ÷µÄ½éÉÜ£¬Çë²Î¼û´ËÎÄ£º´ÓTrieÊ÷£¨×ÖµäÊ÷£©Ì¸µ½ºó׺Ê÷¡£

Êý¾Ý¿âË÷Òý
¡¡¡¡ÊÊÓ÷¶Î§£º´óÊý¾ÝÁ¿µÄÔöɾ¸Ä²é
¡¡¡¡»ù±¾Ô­Àí¼°Òªµã£ºÀûÓÃÊý¾ÝµÄÉè¼ÆÊµÏÖ·½·¨£¬¶Ôº£Á¿Êý¾ÝµÄÔöɾ¸Ä²é½øÐд¦Àí¡£

µ¹ÅÅË÷Òý(Inverted index)
¡¡¡¡ÊÊÓ÷¶Î§£ºËÑË÷ÒýÇæ£¬¹Ø¼ü×Ö²éѯ
¡¡¡¡»ù±¾Ô­Àí¼°Òªµã£ºÎªºÎ½Ðµ¹ÅÅË÷Òý£¿Ò»ÖÖË÷Òý·½·¨£¬±»ÓÃÀ´´æ´¢ÔÚÈ«ÎÄËÑË÷ÏÂij¸öµ¥´ÊÔÚÒ»¸öÎĵµ»òÕßÒ»×éÎĵµÖеĴ洢λÖõÄÓ³Éä¡£
¡¡ÒÔÓ¢ÎÄΪÀý£¬ÏÂÃæÊÇÒª±»Ë÷ÒýµÄÎı¾£º
T0 = "it is what it is"
T1 = "what is it"
T2 = "it is a banana"
ÎÒÃǾÍÄܵõ½ÏÂÃæµÄ·´ÏòÎļþË÷Òý£º
"a": {2}
"banana": {2}
"is": {0, 1, 2}
"it": {0, 1, 2}
"what": {0, 1}
¡¡¼ìË÷µÄÌõ¼þ"what","is"ºÍ"it"½«¶ÔÓ¦¼¯ºÏµÄ½»¼¯¡£

¡¡¡¡ÕýÏòË÷Òý¿ª·¢³öÀ´ÓÃÀ´´æ´¢Ã¿¸öÎĵµµÄµ¥´ÊµÄÁÐ±í¡£ÕýÏòË÷ÒýµÄ²éѯÍùÍùÂú×ãÿ¸öÎĵµÓÐÐòƵ·±µÄÈ«ÎIJéѯºÍÿ¸öµ¥´ÊÔÚУÑéÎĵµÖеÄÑéÖ¤ÕâÑùµÄ²éѯ¡£ÔÚÕýÏòË÷ÒýÖУ¬ÎĵµÕ¼¾ÝÁËÖÐÐĵÄλÖã¬Ã¿¸öÎĵµÖ¸ÏòÁËÒ»¸öËüËù°üº¬µÄË÷ÒýÏîµÄÐòÁС£Ò²¾ÍÊÇ˵ÎĵµÖ¸ÏòÁËËü°üº¬µÄÄÇЩµ¥´Ê£¬¶ø·´ÏòË÷ÒýÔòÊǵ¥´ÊÖ¸ÏòÁ˰üº¬ËüµÄÎĵµ£¬ºÜÈÝÒ׿´µ½Õâ¸ö·´ÏòµÄ¹ØÏµ¡£
¡¡¡¡À©Õ¹£º
¡¡¡¡ÎÊÌâʵÀý£ºÎĵµ¼ìË÷ϵͳ£¬²éѯÄÇЩÎļþ°üº¬ÁËijµ¥´Ê£¬±ÈÈç³£¼ûµÄѧÊõÂÛÎĵĹؼü×ÖËÑË÷¡£

¹ØÓÚµ¹ÅÅË÷ÒýµÄÓ¦Ó㬸ü¶àÇë²Î¼û£º

Ãܳ×Îå¡¢ÍâÅÅÐò

¡¡¡¡ÊÊÓ÷¶Î§£º´óÊý¾ÝµÄÅÅÐò£¬È¥ÖØ
¡¡¡¡»ù±¾Ô­Àí¼°Òªµã£ºÍâÅÅÐòµÄ¹é²¢·½·¨£¬Öû»Ñ¡Ôñ°ÜÕßÊ÷Ô­Àí£¬×îÓŹ鲢Ê÷
¡¡¡¡À©Õ¹£º
¡¡¡¡ÎÊÌâʵÀý£º
¡¡¡¡1).ÓÐÒ»¸ö1G´óСµÄÒ»¸öÎļþ£¬ÀïÃæÃ¿Ò»ÐÐÊÇÒ»¸ö´Ê£¬´ÊµÄ´óС²»³¬¹ý16¸ö×Ö½Ú£¬ÄÚ´æÏÞÖÆ´óСÊÇ1M¡£·µ»ØÆµÊý×î¸ßµÄ100¸ö´Ê¡£
¡¡¡¡Õâ¸öÊý¾Ý¾ßÓкÜÃ÷ÏÔµÄÌØµã£¬´ÊµÄ´óСΪ16¸ö×Ö½Ú£¬µ«ÊÇÄÚ´æÖ»ÓÐ1M×öhashÃ÷ÏÔ²»¹»£¬ËùÒÔ¿ÉÒÔÓÃÀ´ÅÅÐò¡£ÄÚ´æ¿ÉÒÔµ±ÊäÈ뻺³åÇøÊ¹Óá£

¹ØÓڶ෹鲢Ëã·¨¼°ÍâÅÅÐòµÄ¾ßÌåÓ¦Óó¡¾°£¬Çë²Î¼ûblogÄÚ´ËÎÄ£º

Ãܳ×Áù¡¢·Ö²¼Ê½´¦ÀíÖ®Mapreduce

MapReduceÊÇÒ»ÖÖ¼ÆËãÄ£ÐÍ£¬¼òµ¥µÄ˵¾ÍÊǽ«´óÅúÁ¿µÄ¹¤×÷£¨Êý¾Ý£©·Ö½â£¨MAP£©Ö´ÐУ¬È»ºóÔÙ½«½á¹ûºÏ²¢³É×îÖÕ½á¹û£¨REDUCE£©¡£ÕâÑù×öµÄºÃ´¦ÊÇ¿ÉÒÔÔÚÈÎÎñ±»·Ö½âºó£¬¿ÉÒÔͨ¹ý´óÁ¿»úÆ÷½øÐв¢ÐмÆË㣬¼õÉÙÕû¸ö²Ù×÷µÄʱ¼ä¡£µ«Èç¹ûÄãÒªÎÒÔÙͨË×µã½éÉÜ£¬ÄÇô£¬Ëµ°×ÁË£¬MapreduceµÄÔ­Àí¾ÍÊÇÒ»¸ö¹é²¢ÅÅÐò¡£

ÊÊÓ÷¶Î§£ºÊý¾ÝÁ¿´ó£¬µ«ÊÇÊý¾ÝÖÖÀàС¿ÉÒÔ·ÅÈëÄÚ´æ
¡¡¡¡»ù±¾Ô­Àí¼°Òªµã£º½«Êý¾Ý½»¸ø²»Í¬µÄ»úÆ÷È¥´¦Àí£¬Êý¾Ý»®·Ö£¬½á¹û¹éÔ¼¡£
¡¡¡¡À©Õ¹£º
¡¡¡¡ÎÊÌâʵÀý£º

  1. The canonical example application of MapReduce is a process to count the appearances of each different word in a set of documents:
  2. º£Á¿Êý¾Ý·Ö²¼ÔÚ100̨µçÄÔÖУ¬Ïë¸ö°ì·¨¸ßЧͳ¼Æ³öÕâÅúÊý¾ÝµÄTOP10¡£
  3. Ò»¹²ÓÐN¸ö»úÆ÷£¬Ã¿¸ö»úÆ÷ÉÏÓÐN¸öÊý¡£Ã¿¸ö»úÆ÷×î¶à´æO(N)¸öÊý²¢¶ÔËüÃDzÙ×÷¡£ÈçºÎÕÒµ½N^2¸öÊýµÄÖÐÊý(median)£¿

¸ü¶à¾ßÌå²ûÊöÇë²Î¼ûblogÄÚ£º

ÆäËüģʽ/·½·¨ÂÛ£¬½áºÏ²Ù×÷ϵͳ֪ʶ

ÖÁ´Ë£¬ÁùÖÖ´¦Àíº£Á¿Êý¾ÝÎÊÌâµÄģʽ/·½·¨ÒѾ­²ûÊöÍê±Ï¡£¾Ý¹Û²ì£¬Õâ·½ÃæµÄÃæÊÔÌâÎÞÍâºõÒÔÉÏÒ»ÖÖ»òÆä±äÐΣ¬È»ÌâĿΪºÎȡΪÊÇ£ºÃëɱ99%µÄº£Á¿Êý¾Ý´¦ÀíÃæÊÔÌ⣬¶ø²»ÊÇ100%ÄØ¡£OK£¬¸ø¶ÁÕß¿´×îºóÒ»µÀÌ⣬ÈçÏ£º
·Ç³£´óµÄÎļþ£¬×°²»½øÄڴ档ÿÐÐÒ»¸öintÀàÐÍÊý¾Ý£¬ÏÖÔÚÒªÄãËæ»úÈ¡100¸öÊý¡£
ÎÒÃÇ·¢ÏÖÉÏÊöÕâµÀÌ⣬ÎÞÂÛÊÇÒÔÉÏÈκÎÒ»ÖÖģʽ/·½·¨¶¼²»ºÃ×ö£¬ÄÇÓÐʲôºÃµÄ±ðµÄ·½·¨ÄØ£¿ÎÒÃÇ¿ÉÒÔ¿´¿´£º²Ù×÷ϵͳÄÚ´æ·ÖҳϵͳÉè¼Æ(˵°×ÁË£¬¾ÍÊÇÓ³Éä+½¨Ë÷Òý)¡£
Windows 2000ʹÓûùÓÚ·ÖÒ³»úÖÆµÄÐéÄâÄڴ档ÿ¸ö½ø³ÌÓÐ4GBµÄÐéÄâµØÖ·¿Õ¼ä¡£»ùÓÚ·ÖÒ³»úÖÆ£¬Õâ4GBµØÖ·¿Õ¼äµÄһЩ²¿·Ö±»Ó³ÉäÁËÎïÀíÄڴ棬һЩ²¿·ÖÓ³ÉäÓ²ÅÌÉϵĽ»»»ÎÄ ¼þ£¬Ò»Ð©²¿·ÖʲôҲûÓÐÓ³Éä¡£³ÌÐòÖÐʹÓõͼÊÇ4GBµØÖ·¿Õ¼äÖеÄÐéÄâµØÖ·¡£¶ø·ÃÎÊÎïÀíÄڴ棬ÐèҪʹÓÃÎïÀíµØÖ·¡£¹ØÓÚʲôÊÇÎïÀíµØÖ·ºÍÐéÄâµØÖ·£¬Çë¿´£º
  • ÎïÀíµØÖ· (physical address): ·ÅÔÚѰַ×ÜÏßÉϵĵØÖ·¡£·ÅÔÚѰַ×ÜÏßÉÏ£¬Èç¹ûÊǶÁ£¬µç·¸ù¾ÝÕâ¸öµØÖ·Ã¿Î»µÄÖµ¾Í½«ÏàÓ¦µØÖ·µÄÎïÀíÄÚ´æÖеÄÊý¾Ý·Åµ½Êý¾Ý×ÜÏßÖд«Êä¡£Èç¹ûÊÇд£¬µç·¸ù¾ÝÕâ¸öµØÖ·Ã¿Î»µÄÖµ¾Í½«ÏàÓ¦µØÖ·µÄÎïÀíÄÚ´æÖзÅÈëÊý¾Ý×ÜÏßÉϵÄÄÚÈÝ¡£ÎïÀíÄÚ´æÊÇÒÔ×Ö½Ú(8λ)Ϊµ¥Î»±àÖ·µÄ¡£
  • ÐéÄâµØÖ· (virtual address): 4GÐéÄâµØÖ·¿Õ¼äÖеĵØÖ·£¬³ÌÐòÖÐʹÓõͼÊÇÐéÄâµØÖ·¡£ ʹÓÃÁË·ÖÒ³»úÖÆÖ®ºó£¬4GµÄµØÖ·¿Õ¼ä±»·Ö³ÉÁ˹̶¨´óСµÄÒ³£¬Ã¿Ò»Ò³»òÕß±»Ó³Éäµ½ÎïÀíÄڴ棬»òÕß±»Ó³Éäµ½Ó²ÅÌÉϵĽ»»»ÎļþÖУ¬»òÕßûÓÐÓ³ÉäÈκζ«Î÷¡£¶ÔÓÚÒ»°ã³ÌÐòÀ´Ëµ£¬4GµÄµØÖ·¿Õ¼ä£¬Ö»ÓÐһС²¿·ÖÓ³ÉäÁËÎïÀíÄڴ棬´óƬ´óƬµÄ²¿·ÖÊÇûÓÐÓ³ÉäÈκζ«Î÷¡£ÎïÀíÄÚ´æÒ²±»·ÖÒ³£¬À´Ó³É䵨ַ¿Õ¼ä¡£¶ÔÓÚ32bitµÄ Win2k£¬Ò³µÄ´óСÊÇ4K×Ö½Ú¡£CPUÓÃÀ´°ÑÐéÄâµØÖ·×ª»»³ÉÎïÀíµØÖ·µÄÐÅÏ¢´æ·ÅÔÚ½Ð×öҳĿ¼ºÍÒ³±íµÄ½á¹¹Àï¡£
ÎïÀíÄÚ´æ·ÖÒ³£¬Ò»¸öÎïÀíÒ³µÄ´óСΪ4K×Ö½Ú£¬µÚ0¸öÎïÀíÒ³´ÓÎïÀíµØÖ· 0x00000000 ´¦¿ªÊ¼¡£ÓÉÓÚÒ³µÄ´óСΪ4KB£¬¾ÍÊÇ0x1000×Ö½Ú£¬ËùÒÔµÚ1Ò³´ÓÎïÀíµØÖ· 0x00001000 ´¦¿ªÊ¼¡£µÚ2Ò³´ÓÎïÀíµØÖ· 0x00002000 ´¦¿ªÊ¼¡£¿ÉÒÔ¿´µ½ÓÉÓÚÒ³µÄ´óСÊÇ4KB£¬ËùÒÔÖ»ÐèÒª32bitµÄµØÖ·Öиß20bitÀ´Ñ°Ö·ÎïÀíÒ³¡£
·µ»ØÉÏÃæÎÒÃǵÄÌâÄ¿£º·Ç³£´óµÄÎļþ£¬×°²»½øÄڴ档ÿÐÐÒ»¸öintÀàÐÍÊý¾Ý£¬ÏÖÔÚÒªÄãËæ»úÈ¡100¸öÊý¡£Õë¶Ô´ËÌ⣬ÎÒÃÇ¿ÉÒÔ½è¼øÉÏÊö²Ù×÷ϵͳÖÐÄÚ´æ·ÖÒ³µÄÉè¼Æ·½·¨£¬×ö³öÈçϽâ¾ö·½°¸£º

²Ù×÷ϵͳÖеķ½·¨£¬ÏÈÉú³É4GµÄµØÖ·±í£¬ÔÚ°ÑÕâ¸ö±í»®·ÖΪСµÄ4MµÄСÎļþ×ö¸öË÷Òý£¬¶þ¼¶Ë÷Òý¡£30λǰʮλ±íʾµÚ¼¸¸ö4MÎļþ£¬ºó20λ±íʾÔÚÕâ¸ö4MÎļþµÄµÚ¼¸¸ö£¬µÈµÈ£¬»ùÓÚkey valueÀ´Éè¼Æ´æ´¢£¬ÓÃkeyÀ´½¨Ë÷Òý¡£

µ«Èç¹ûÏÖÔÚÖ»ÓÐ10000¸öÊý£¬È»ºóÔõÃ´È¥Ëæ»ú´ÓÕâÒ»Íò¸öÊýÀïÃæËæ»úÈ¡100¸öÊý£¿Çë¶ÁÕß˼¿¼¡£

http://blog.sina.com.cn/s/blog_6dd65c6f01013ypp.html

 
 
·¢±íÆÀÂÛ£º
ÔØÈëÖС£¡£¡£

 
 
 

ÃÎÏè¶ùÍøÕ¾ ÃηÉÏèµÄµØ·½ http://www.dreamflier.net
ÖлªÈËÃñ¹²ºÍ¹úÐÅÏ¢²úÒµ²¿TCP/IPϵͳ ±¸°¸ÐòºÅ£ºÁÉICP±¸09000550ºÅ

Powered by Oblog.