亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? kdb_stats.c

?? 基于DHT的對等協議
?? C
字號:
/** * This program analyzes the keyauxdb files of all the vnodes of a * Chord ring, and outputs stats detailing how many keys each node is * missing in its local database, compared to all the keys that exist * in the network within the node's scope. * * You need to have a kdb file for each node in the ring, and you to * name them as follows: <node_id>.<type>.kdb.db.  Thus, the noauth * kdb for node fbc193dd04c4b653b878969a859b5d868a369b76 would be * called fbc193dd04c4b653b878969a859b5d868a369b76.n.kdb.db. * * To run it, simply run "./kdb_stats *.n.kdb.db" in the directory * with all the kdb files, which will produce the stats for all the * noauth side of things. * * The program will output (at its end) stats for each node of the form: *    * <node_id> <num_keys_in_scope> <num_keys_missing> <num_batches_of_missing_keys> <first_key_in_range_missing> <last_key_in_range_missing> **/#include <async.h>#include <itree.h>#include <qhash.h>#include <rxx.h>#include <keyauxdb.h>#include <id_utils.h>struct node_rec {  int pos;  node_rec *next;};struct key_rec {  chordID key;  node_rec *nodes;  itree_entry<key_rec> next;};struct node_stats {  uint num_in_scope;  uint num_missing;  uint num_batch;  bool last_missing;  bool at_start;  bool last_key_in_range;};typedef itree<chordID, key_rec, &key_rec::key, &key_rec::next> keytree;//static const int NPREDS = 12;static const int NPREDS = 2;int main (int argc, char **argv) {  if (argc <= 1) {    warn << "Usage: kdb_stats kdbfiles\n";    exit (0);  }  int num_nodes = argc-1;  keytree sorted_nodes;  keytree global_keys;  keyauxdb **kdb = (keyauxdb **) malloc( sizeof(keyauxdb*)*num_nodes );  vec<chordID> nodes;  vec<str> nodes_str;  for( int i = 0; i < num_nodes; i++ ) {    str filename = argv[i+1];    kdb[i] = New keyauxdb(filename);    vec<str> parts;    static const rxx slashy_rx( "\\/" );    uint num_parts = split( &parts, slashy_rx, filename );    rxx nodeid_rx( "(\\w+)\\.[cn]\\.kdb\\.db" );    if( nodeid_rx.search( parts[num_parts-1] ) ) {      chordID x;      str2chordID( nodeid_rx[1], x );      nodes.push_back(x);      nodes_str.push_back(nodeid_rx[1]);      key_rec *krec = New key_rec();      krec->key = x;      sorted_nodes.insert(krec);    } else {      fatal << "Could parse this file name: " << filename << ", " 	    << parts[num_parts-1] << "\n";    }  }  // now let's get us a sorted list of uniq-ified keys  // (both global and per-node)  uint num_keys = 0;  uint num_keys_uniq = 0;  for( int i = 0; i < num_nodes; i++ ) {    keyauxdb *k = kdb[i];    uint avail;    uint at_a_time = 100000;    const keyaux_t *keys;    uint recno = 0;    while( (keys = k->getkeys(recno, at_a_time, &avail)) && avail > 0 ) {      for( uint j = 0; j < avail; j++ ) {	key_rec *krec = New key_rec();	krec->nodes = NULL;	uint aux;	keyaux_unmarshall( &(keys[j]), &krec->key, &aux );	if( global_keys[krec->key] == NULL ) {	  num_keys_uniq++;	  global_keys.insert(krec);	} else {	  chordID k = krec->key;	  delete krec;	  krec = global_keys[k];	}	node_rec *n = New node_rec();	n->pos = i;	n->next = krec->nodes;	krec->nodes = n;	num_keys++;      }      recno += avail;    }    warn << "... " << num_keys_uniq << " " << num_keys << "\n";    delete k;    kdb[i] = NULL;  }  warn << "num_keys " << num_keys << ", num_keys_uniq "        << num_keys_uniq << "\n";  // need the last one  key_rec *last = NULL;  key_rec *next = sorted_nodes.first();  while( next != NULL ) {    warn << next->key << " ";    last = next;    next = sorted_nodes.next(last);  }  warn << "\n";  qhash<str, key_rec *> preds;  qhash<str, node_stats *> stats;  for( int i = 0; i < num_nodes; i++ ) {    chordID curr_node = nodes[i];    // find the nth predecessor    int j = 1;    key_rec *pred = sorted_nodes[curr_node];    while( j < NPREDS ) {      pred = sorted_nodes.prev(pred);      if( pred == NULL ) {	pred = last;      }      j++;    }    warn << "The last predecessor for " << curr_node << " is " 	 << pred->key << "\n";    preds.insert( nodes_str[i], pred );    node_stats *s = New node_stats();    s->num_in_scope = 0;    s->num_missing = 0;    s->num_batch = 0;    s->last_missing = false;    s->last_key_in_range = true;    stats.insert( nodes_str[i], s );  }  key_rec *curr_key = global_keys.first();  uint x = 0;  while( curr_key != NULL ) {    x++;    for( int i = 0; i < num_nodes; i++ ) {      chordID curr_node = nodes[i];      str curr_node_str = nodes_str[i];      node_stats *s = *(stats[curr_node_str]);      // for each node, see if it belongs on the node, and if so, is it there?      if( betweenrightincl( (*(preds[curr_node_str]))->key, curr_node, 			    curr_key->key ) ) {	s->num_in_scope++;	bool found = false;	node_rec *n = curr_key->nodes;	while( n != NULL ) {	  if( n->pos == i ) {	    found = true;	    break;	  } else {	    n = n->next;	  }	}	if( !found ) {	  s->num_missing++;	  if( !s->last_missing ) {	    s->num_batch++;	    s->last_missing = true;	  }	} else {	  s->last_missing = false;	}	// when this transitions from false to true, you've found the	// beginning of the node's range	if( !s->last_key_in_range ) {	  s->last_key_in_range = true;	  s->at_start = !found;	}      } else {	s->last_key_in_range = false;      }    }    curr_key = global_keys.next(curr_key);  }  for( int i = 0; i < num_nodes; i++ ) {    node_stats *s = *(stats[nodes_str[i]]);    warn << nodes[i] << " " << s->num_in_scope << " " 	 << s->num_missing << " " << s->num_batch << " " << s->at_start	 << " " << s->last_missing << "\n";  }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成年人网站91| 一本大道久久a久久综合| 欧美国产丝袜视频| 欧美精品 日韩| 成人a免费在线看| 久久er99精品| 亚洲国产精品综合小说图片区| 久久综合久久综合亚洲| 欧美在线免费播放| 99久久99精品久久久久久| 美女视频免费一区| 亚洲一区二三区| 中文字幕亚洲成人| 国产亚洲一本大道中文在线| 欧美一区二区女人| 色av一区二区| 99re热视频精品| 国产91富婆露脸刺激对白| 日韩国产欧美视频| 亚洲午夜在线电影| 1000精品久久久久久久久| 久久综合给合久久狠狠狠97色69| 欧美日韩一级黄| 欧美色网站导航| 日本大香伊一区二区三区| 国产成人精品免费| 国模无码大尺度一区二区三区| 日韩精品色哟哟| 亚洲综合男人的天堂| 日韩美女精品在线| 亚洲国产高清不卡| 久久久电影一区二区三区| 日韩女同互慰一区二区| 欧美福利视频导航| 欧美性欧美巨大黑白大战| 一本大道综合伊人精品热热| 成人精品免费视频| 成人黄色大片在线观看| 国产精品1区2区3区| 韩国精品主播一区二区在线观看| 欧美日韩卡一卡二| 欧美三级午夜理伦三级中视频| 一本久久精品一区二区| 91久久精品一区二区| av成人免费在线观看| 不卡的电视剧免费网站有什么| 成人蜜臀av电影| jlzzjlzz亚洲日本少妇| 99精品视频在线观看| 一本一道综合狠狠老| 99v久久综合狠狠综合久久| 一本一道久久a久久精品综合蜜臀| av亚洲产国偷v产偷v自拍| 91麻豆精品一区二区三区| 色综合色狠狠综合色| 欧美综合久久久| 5858s免费视频成人| 欧美不卡一区二区三区四区| 精品国产青草久久久久福利| 久久九九全国免费| 亚洲色图都市小说| 亚洲高清久久久| 九九国产精品视频| 成人综合在线视频| 欧美在线观看18| 美女高潮久久久| 国产在线视视频有精品| 国产99久久久久久免费看农村| 91小视频在线免费看| 欧美日韩久久一区| 国产亚洲欧洲997久久综合| 国产精品三级av在线播放| 亚洲欧美日本韩国| 日韩激情视频在线观看| 国产69精品久久久久毛片| 色菇凉天天综合网| 欧美成人女星排行榜| 亚洲天堂中文字幕| 日韩精品一区第一页| 国产成人亚洲综合a∨婷婷| 91在线丨porny丨国产| 91麻豆精品国产91久久久| 国产免费成人在线视频| 亚洲成人av一区二区三区| 国产成人精品亚洲日本在线桃色| 色先锋久久av资源部| 日韩欧美一二三区| 一区二区三区在线看| 欧美成人r级一区二区三区| 国产精品免费人成网站| 亚洲一区二区三区视频在线| 精品一区二区三区视频| 91久久久免费一区二区| 精品国产免费人成电影在线观看四季| 国产精品久久久久三级| 天堂一区二区在线免费观看| 岛国精品一区二区| 日韩一区二区三区视频在线 | 一本色道久久综合亚洲aⅴ蜜桃| 欧美午夜精品一区二区三区| 欧美激情在线看| 美女视频黄 久久| 在线中文字幕一区二区| 久久久国产精品麻豆| 日本不卡视频一二三区| 色婷婷亚洲一区二区三区| 国产人伦精品一区二区| 日本不卡在线视频| 91福利视频在线| 国产精品网曝门| 国产综合久久久久影院| 欧美一区二区视频网站| 亚洲精品欧美专区| 不卡在线观看av| 久久久久久亚洲综合影院红桃| 日韩福利电影在线| 欧美私模裸体表演在线观看| 国产精品毛片高清在线完整版| 加勒比av一区二区| 欧美成人一区二区三区在线观看| 亚洲一线二线三线视频| 一本久道中文字幕精品亚洲嫩| 中文字幕av不卡| 国产+成+人+亚洲欧洲自线| 久久亚洲春色中文字幕久久久| 欧美aaa在线| 91麻豆精品91久久久久同性| 亚洲一区二区三区四区在线 | 日韩视频免费观看高清完整版| 亚洲国产日韩综合久久精品| 色综合天天性综合| 国产精品久久二区二区| 不卡电影一区二区三区| 国产精品免费网站在线观看| 成人听书哪个软件好| 国产精品少妇自拍| 97精品久久久久中文字幕 | 日韩一级二级三级| 7777精品伊人久久久大香线蕉| 亚洲国产欧美日韩另类综合| 欧美丝袜自拍制服另类| 婷婷久久综合九色综合绿巨人 | 337p日本欧洲亚洲大胆精品| 秋霞成人午夜伦在线观看| 欧美精品一二三| 精品影视av免费| 久久―日本道色综合久久| 国内成+人亚洲+欧美+综合在线| 久久色在线视频| 成人性生交大合| 亚洲男人的天堂在线aⅴ视频| 91官网在线观看| 日本三级亚洲精品| 久久网站最新地址| av在线播放一区二区三区| 樱花影视一区二区| 欧美一区二区三区视频免费| 激情六月婷婷久久| 国产精品免费aⅴ片在线观看| 91在线视频在线| 婷婷开心激情综合| 久久久影院官网| 91免费视频大全| 亚洲超碰97人人做人人爱| 日韩欧美精品在线| 成人午夜电影网站| 亚洲超碰97人人做人人爱| 久久综合九色综合97婷婷| 波多野结衣视频一区| 亚洲国产sm捆绑调教视频| 欧美成人伊人久久综合网| 国产精品国产三级国产| 欧美日韩一级片在线观看| 麻豆成人在线观看| 国产精品美女久久福利网站| 欧美卡1卡2卡| 国产成人三级在线观看| 一区二区成人在线视频| 日韩欧美三级在线| 97国产一区二区| 久久国产精品区| 亚洲四区在线观看| 欧美mv日韩mv国产网站app| 91色在线porny| 麻豆精品一区二区三区| 亚洲欧美一区二区三区极速播放| 这里是久久伊人| 97久久人人超碰| 国产精品主播直播| 亚洲国产精品久久久久婷婷884| 久久久久久免费| 欧美日韩精品专区| 99热国产精品| 国模娜娜一区二区三区| 午夜欧美视频在线观看| 亚洲人成伊人成综合网小说| 欧美成人高清电影在线| 欧美日韩国产首页| 日本韩国一区二区三区| 懂色av中文一区二区三区|