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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ringset.cpp

?? 件主要用于幫助計(jì)算機(jī)愛(ài)好者學(xué)習(xí)蟻群算法時(shí)做有關(guān)蟻群算法的試驗(yàn)。蟻群算法作為一種優(yōu)秀的新興的算法
?? CPP
字號(hào):
/******************************************************************************Meridian prototype distributionCopyright (C) 2005 Bernard WongThis program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public Licenseas published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with this program; if not, write to the Free SoftwareFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.The copyright owner can be contacted by e-mail at bwong@cs.cornell.edu*******************************************************************************/using namespace std;#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include "RingSet.h"int RingSet::getRingNumber(u_int latencyUS) {	double latencyMS = (latencyUS / 1000.0);		int ringNumber = (int)ceil((log(latencyMS) / log((double)exponentBase)));	//	If node is really far away, put it in the maximum ring	if (ringNumber >= MAX_NUM_RINGS) {		ringNumber = MAX_NUM_RINGS - 1;					} else if (ringNumber < 0) {		ringNumber = 0;		}	return ringNumber;}int RingSet::eraseNode(const NodeIdent& inNode) {	map<NodeIdent, u_int, ltNodeIdent>::iterator findIt 		= nodeLatencyUS.find(inNode);				if (findIt == nodeLatencyUS.end()) {		return -1;	// Node does not exist	}		int ringNumber = getRingNumber(findIt->second);	if (eraseNode(inNode, ringNumber) == -1) {		assert(false);	// Logic error		}	return 0;		}int RingSet::eraseNode(const NodeIdent& inNode, int ring) {	if (ringFrozen[ring]) {		WARN_LOG("Cannot erase node from frozen ring\n");		return 0;		}	bool foundNode = false;	for (u_int i = 0; i < primaryRing[ring].size(); i++) {		NodeIdent tmp = primaryRing[ring][i];		if ((tmp.addr == inNode.addr) && (tmp.port == inNode.port)) {			foundNode = true;			primaryRing[ring][i] = primaryRing[ring].back();			primaryRing[ring].pop_back();			// Pick a random node from secondary ring to insert			if (secondaryRing[ring].size() > 0) {				primaryRing[ring].push_back(secondaryRing[ring].front());				secondaryRing[ring].pop_front();			}			break;	// Found it, exit loop		}						}	//	If not in primary, must be in secondary	if (!foundNode) {		deque<NodeIdent>::iterator dIt			= secondaryRing[ring].begin();		for (; dIt != secondaryRing[ring].end(); dIt++) {			if ((dIt->addr == inNode.addr) && (dIt->port == inNode.port)) {				//	Found it, erase and end				secondaryRing[ring].erase(dIt);				foundNode = true;				break;			}		}	}			if (!foundNode) {		return -1; //	If deleting a node that doesn't exist, return -1	}	nodeLatencyUS.erase(inNode);	// Erase from latency map	rendvMapping.erase(inNode);		// Erase from rendavous map	return 0;}int RingSet::insertNode(	const NodeIdent& inNode, u_int latencyUS) {	NodeIdent rend = {0, 0};		map<NodeIdent,	NodeIdent, ltNodeIdent>:: iterator findRend =		rendvMapping.find(inNode);	if (findRend != rendvMapping.end()) {		rend = findRend->second;	}	return insertNode(inNode, latencyUS, rend);}int RingSet::insertNode(		const NodeIdent& inNode, u_int latencyUS, const NodeIdent& rend) {	//	Store/update rendavous information	//	Okay to update even if ring frozen	if ((rend.addr) != 0 && (rend.port) != 0) {		rendvMapping[inNode] = rend; 	}					int ringNum = getRingNumber(latencyUS);	// New ring number	if (ringFrozen[ringNum]) {		WARN_LOG("Cannot update frozen ring\n");		return 0;		}	map<NodeIdent, u_int, ltNodeIdent>::iterator findIt 		= nodeLatencyUS.find(inNode);				if (findIt != nodeLatencyUS.end()) {		int prevRingNum = getRingNumber(findIt->second);		if (prevRingNum == ringNum) {			// If old and new ring is the same, just need to update latency 			nodeLatencyUS[inNode] = latencyUS;					return 0;		} else {			// If old ring is frozen, just return			if (ringFrozen[prevRingNum]) {				WARN_LOG("Cannot update frozen ring\n");				return 0;				}			// If node has changed rings, remove node from old ring						if (eraseNode(inNode, prevRingNum) == -1) {				assert(false);	// Logic error				}		}	}/*		u_int netAddr = htonl(inNode.addr);	printf("Adding node %s:%d of latency %0.2f ms to ring %d\n",		 	inet_ntoa(*(struct in_addr*)&netAddr), inNode.port, 			latencyUS / 1000.0, ringNum);*/				//	Push new node into rings	if (primaryRing[ringNum].size() < primarySize) {		primaryRing[ringNum].push_back(inNode);	} else {		if (secondaryRing[ringNum].size() >= secondarySize) {			// Remove oldest member of secondary ring			if (eraseNode(secondaryRing[ringNum].front(), ringNum) == -1) {				assert(false);	// Logic error				}						}		secondaryRing[ringNum].push_back(inNode);	}	//	Store latency of new node	nodeLatencyUS[inNode] = latencyUS;	return 0;}	

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品性色| 精品一区二区三区香蕉蜜桃| 成人h动漫精品| 国产精品久久777777| 国产ts人妖一区二区| 国产精品天干天干在线综合| av电影一区二区| 亚洲人成伊人成综合网小说| 色视频成人在线观看免| 亚洲国产精品尤物yw在线观看| 欧美乱熟臀69xxxxxx| 日本亚洲三级在线| 久久人人超碰精品| 成人一级视频在线观看| 亚洲欧美日韩中文播放 | 亚洲成av人片一区二区梦乃| 91国内精品野花午夜精品| 亚洲黄色在线视频| 欧美午夜视频网站| 久久精品久久99精品久久| 久久青草欧美一区二区三区| 国产iv一区二区三区| 亚洲精品第1页| 日韩色视频在线观看| 成人午夜电影久久影院| 亚洲黄色av一区| 欧美一级高清片在线观看| 国产麻豆精品在线| 最新热久久免费视频| 欧美人妇做爰xxxⅹ性高电影| 日日夜夜精品视频免费| 欧美精品一区二| 91丨porny丨在线| 无码av免费一区二区三区试看| 精品理论电影在线| 91蜜桃在线观看| 国产在线一区观看| 一区二区三区欧美亚洲| 国产欧美日韩亚州综合| 欧美狂野另类xxxxoooo| 国产成人综合在线观看| 偷拍一区二区三区四区| 欧美国产一区视频在线观看| 欧美日韩亚洲综合在线| 成人免费视频视频在线观看免费| 亚洲电影在线免费观看| 国产精品嫩草99a| 91精品国产高清一区二区三区| 欧美日韩免费电影| 91麻豆免费看片| 国产精品一区二区在线播放| 性做久久久久久久免费看| 国产精品欧美精品| 久久婷婷色综合| 这里只有精品99re| 在线观看欧美日本| voyeur盗摄精品| 韩国欧美国产1区| 日韩av午夜在线观看| 亚洲欧美成人一区二区三区| 国产区在线观看成人精品| 欧美一区二区三区四区视频| 色狠狠一区二区| 99久久综合精品| 国产精品一区二区不卡| 免费不卡在线观看| 性欧美疯狂xxxxbbbb| 亚洲自拍偷拍欧美| 亚洲欧美日韩国产综合| 国产精品动漫网站| 日本一区二区成人在线| 久久九九国产精品| 久久综合九色综合欧美就去吻| 欧美一区二区三区免费| 69堂成人精品免费视频| 欧美日韩国产123区| 欧美天天综合网| 欧美三级欧美一级| 在线观看国产日韩| 在线日韩一区二区| 欧美在线观看一二区| 91蜜桃婷婷狠狠久久综合9色| 99精品欧美一区二区三区小说| 成人免费电影视频| 成人激情电影免费在线观看| 成人做爰69片免费看网站| 国产不卡一区视频| 成人国产精品免费观看视频| 欧美午夜理伦三级在线观看| 欧美日韩亚州综合| 欧美日韩精品一区二区三区蜜桃 | 亚洲在线一区二区三区| 亚洲精品国产精品乱码不99| 中文字幕一区二区三区不卡在线| 国产精品久久久久久一区二区三区| 中文字幕精品在线不卡| 自拍偷拍国产精品| 一区二区三区美女视频| 五月天婷婷综合| 激情综合网天天干| 国v精品久久久网| 97精品国产97久久久久久久久久久久 | 色噜噜偷拍精品综合在线| 91社区在线播放| 91 com成人网| 欧美激情资源网| 一区二区成人在线| 精彩视频一区二区| 成人av在线资源| 制服.丝袜.亚洲.中文.综合| 国产日产欧美精品一区二区三区| 亚洲欧美日韩在线| 精品一区免费av| 一本久久精品一区二区| 欧美不卡激情三级在线观看| 国产精品福利一区| 日本美女一区二区| eeuss鲁片一区二区三区在线观看| 欧美日韩在线观看一区二区| 国产亚洲综合色| 午夜视黄欧洲亚洲| 国产91对白在线观看九色| 欧美吻胸吃奶大尺度电影 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 91国在线观看| 日韩亚洲欧美在线| 久久蜜桃av一区精品变态类天堂 | 色婷婷av一区二区三区gif| 91黄色在线观看| 88在线观看91蜜桃国自产| 久久久综合网站| 亚洲视频网在线直播| 五月天精品一区二区三区| 国产成人免费在线视频| 欧美色窝79yyyycom| 欧美不卡激情三级在线观看| 中文在线免费一区三区高中清不卡| 亚洲国产综合视频在线观看| 国内精品不卡在线| 一本大道av一区二区在线播放| 欧美主播一区二区三区美女| 国产视频一区在线播放| 亚洲午夜久久久久久久久电影院 | fc2成人免费人成在线观看播放| 欧美综合久久久| 久久综合九色综合97婷婷| 精品免费视频.| 日本成人中文字幕| 99这里只有精品| 日韩欧美一区中文| 亚洲18女电影在线观看| 成人性视频网站| 9191精品国产综合久久久久久| 久久精品亚洲精品国产欧美kt∨| 亚洲午夜一区二区三区| 韩国v欧美v亚洲v日本v| 色综合天天天天做夜夜夜夜做| 国产精品天干天干在线综合| 日精品一区二区| 91热门视频在线观看| 亚洲欧洲精品一区二区精品久久久| 蜜臀精品久久久久久蜜臀| 99久久精品国产一区二区三区| 欧美韩国日本综合| 99精品欧美一区二区三区综合在线| 午夜精品福利久久久| 欧美日韩精品欧美日韩精品| 亚洲国产精品国自产拍av| 蜜臀av性久久久久蜜臀av麻豆| 91精品国产乱| 五月婷婷久久丁香| 91福利在线免费观看| 亚洲一区二区四区蜜桃| www.色综合.com| 国产欧美日韩视频在线观看| 国产成a人亚洲| 精品久久一区二区| 秋霞影院一区二区| 精品国一区二区三区| 亚洲国产综合人成综合网站| 一本到不卡精品视频在线观看| 亚洲乱码中文字幕| 成人av影院在线| 国产欧美日韩三区| 97成人超碰视| 一区二区中文视频| thepron国产精品| 亚洲国产视频网站| 欧美亚男人的天堂| 亚洲精品视频在线看| 欧美日韩成人激情| 五月婷婷久久综合| 欧美视频一区在线观看| 久久国产福利国产秒拍| 日韩欧美亚洲另类制服综合在线| 午夜精品爽啪视频| 日韩亚洲欧美高清| 极品少妇一区二区| 久久久久久久久久久久久久久99| 国产精品亚洲综合一区在线观看|