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

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

?? hashfunction.java

?? Chord package into p2psim
?? JAVA
字號:
/***************************************************************************
 *                                                                         *
 *                             HashFunction.java                           *
 *                            -------------------                          *
 *   date                 : 16.08.2004                                     *
 *   copyright            : (C) 2004-2008 Distributed and                  *
 *                              Mobile Systems Group                       *
 *                              Lehrstuhl fuer Praktische Informatik       *
 *                              Universitaet Bamberg                       *
 *                              http://www.uni-bamberg.de/pi/              *
 *   email                : sven.kaffille@uni-bamberg.de                   *
 *   			    		karsten.loesing@uni-bamberg.de                 *
 *                                                                         *
 *                                                                         *
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   A copy of the license can be found in the license.txt file supplied   *
 *   with this software or at: http://www.gnu.org/copyleft/gpl.html        *
 *                                                                         *
 ***************************************************************************/
package de.uniba.wiai.lspi.chord.service.impl;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import de.uniba.wiai.lspi.chord.data.ID;
import de.uniba.wiai.lspi.chord.data.URL;
import de.uniba.wiai.lspi.chord.service.Key;

/**
 * Provides a hash function for calculating the hash value out of {@link Key} or
 * {@link URL} objects.
 * 
 * @author Karsten Loesing, Sven Kaffille
 * @version 1.0.5
 */
final class HashFunction {

	/**
	 * Singleton instance of this class.
	 */
	private static HashFunction hashFunction = null;

	/**
	 * Returns the singleton instance of this class.
	 * 
	 * @return Singleton instance of HashFunction.
	 * @throws RuntimeException
	 *             If there is an internal problem with the specified hash
	 *             function of the Java API.
	 */
	static HashFunction getHashFunction() {

		if (hashFunction == null) {
			try {
				hashFunction = new HashFunction(MessageDigest
						.getInstance("SHA-1"));
			} catch (NoSuchAlgorithmException e) {
				throw new RuntimeException("No hash function available!", e);
			}
		}

		return hashFunction;

	}

	/**
	 * Message digest for calculating hash values.
	 */
	private MessageDigest messageDigest;

	/**
	 * Constructor is hidden and only invoked once by {@link #getHashFunction()}.
	 * 
	 * @param digest1
	 *            Message digest for calculating hash values.
	 */
	private HashFunction(MessageDigest digest1) {
		if (digest1 == null) {
			throw new NullPointerException("Parameter may not be null!");
		}
		this.messageDigest = digest1;
	}

	/**
	 * Returns the length of IDs generated by this hash function.
	 * 
	 * @return Number of bytes of generated IDs.
	 */
	final int getLengthOfIDsInBytes() {
		return this.messageDigest.getDigestLength();
	}

	/**
	 * Calculates the hash value for a given data Key.
	 * 
	 * @param entry
	 * @return ID for the given Key.
	 */
	final ID getHashKey(Key entry) {

		if (entry == null) {
			throw new IllegalArgumentException(
					"Parameter entry must not be null!");
		}
		if (entry.getBytes() == null || entry.getBytes().length == 0) {
			throw new IllegalArgumentException(
					"Byte representation of Parameter must not be null or have length 0!");
		}

		byte[] testBytes = entry.getBytes();
		return this.createID(testBytes);
	}

	private final ID createID(byte[] testBytes) {
		/*
		 * synchronize access to messageDigest, so that messageDigest cannot be
		 * reset by another thread before calculating digest.
		 */
		synchronized (this.messageDigest) {
			this.messageDigest.reset();
			this.messageDigest.update(testBytes);
			return new ID(this.messageDigest.digest());
		}
	}

	/**
	 * Calculates the hash value for a given URL.
	 * 
	 * @param incomingURL
	 *            URL of current node which is used to create a pseudo-unique
	 *            ID.
	 * @return ID for the given URL.
	 * @throws IllegalArgumentException
	 *             If <code>incomingURL</code> is null!
	 */
	final ID createUniqueNodeID(URL incomingURL) {
		if (incomingURL == null) {
			throw new IllegalArgumentException("URL must not be null!");
		}
		String id = incomingURL.toString();
		ID resultKey = this.createID(id.getBytes());
		return resultKey;
	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av不卡在线播放| 激情国产一区二区| 国产精品国产自产拍高清av| 久久色成人在线| 国产日产欧美一区二区三区| 久久亚洲影视婷婷| 国产精品理伦片| 亚洲男人天堂一区| 午夜精品久久久久久久99樱桃 | 国产精品一二三区在线| 国产一区不卡在线| 国产成人一区在线| 成人福利视频在线| 欧美在线制服丝袜| 日韩欧美一区二区视频| 国产亚洲va综合人人澡精品| 国产清纯美女被跳蛋高潮一区二区久久w | 国产一区二区不卡在线| 国产成人三级在线观看| 波多野洁衣一区| 在线免费亚洲电影| 欧美肥胖老妇做爰| 久久精品亚洲一区二区三区浴池| 国产精品女主播av| 亚洲国产精品久久不卡毛片| 看电视剧不卡顿的网站| 成年人国产精品| 欧美亚洲日本一区| 欧美成人vr18sexvr| 国产精品免费丝袜| 亚洲国产综合视频在线观看| 韩日欧美一区二区三区| 91高清在线观看| 久久伊人蜜桃av一区二区| 中文字幕在线观看不卡| 爽好久久久欧美精品| 国产精品一区二区在线播放 | 在线观看日韩高清av| 日韩欧美你懂的| 亚洲免费在线视频| 国产一区二区三区综合| 欧美亚洲国产一区二区三区va| 精品久久久久av影院| 亚洲综合在线观看视频| 国产一区二区三区四区五区美女 | 激情国产一区二区| 欧美视频在线一区| 中文字幕二三区不卡| 图片区小说区区亚洲影院| 豆国产96在线|亚洲| 日韩一区二区电影| 一区二区国产盗摄色噜噜| 国产99精品视频| 日韩精品一区二区三区在线观看| 亚洲激情六月丁香| 成人av网站免费观看| 久久久亚洲午夜电影| 日韩国产一区二| 欧美精品一卡两卡| 一区二区三区小说| 91视频.com| 自拍偷拍国产亚洲| 成人91在线观看| 国产精品电影院| 成人的网站免费观看| 国产欧美日韩三级| 国产盗摄一区二区| 国产日本欧洲亚洲| 丁香激情综合五月| 国产精品第13页| 白白色 亚洲乱淫| 中文字幕一区二区三区精华液 | 日本一区二区在线不卡| 韩国女主播一区| www国产精品av| 国产一区二区福利| 精品国产百合女同互慰| 久久国产精品99久久人人澡| 日韩精品中午字幕| 极品少妇一区二区| 国产欧美一区二区精品性色超碰 | 亚洲午夜精品久久久久久久久| 色综合婷婷久久| 一区二区三区日本| 欧美午夜精品免费| 日韩福利视频导航| 久久亚洲综合色一区二区三区| 国产麻豆精品视频| 国产精品天美传媒沈樵| 91久久精品一区二区| 天堂久久久久va久久久久| 精品国产免费久久| 成人久久18免费网站麻豆| 亚洲男人电影天堂| 日韩欧美专区在线| 成人在线综合网站| 亚洲制服丝袜在线| 精品av久久707| 99久久综合狠狠综合久久| 亚洲一线二线三线视频| 日韩免费看的电影| 99国产一区二区三精品乱码| 亚洲国产sm捆绑调教视频 | 亚洲国产你懂的| 精品国产91久久久久久久妲己 | 91丨porny丨户外露出| 午夜精品久久久久久久久久久| 欧美精品一区二区三区四区 | 中文一区二区在线观看| 在线一区二区视频| 久久福利视频一区二区| 国产精品卡一卡二卡三| 91精品国产色综合久久不卡蜜臀| 国产一区欧美二区| 亚洲国产综合91精品麻豆| 久久久久97国产精华液好用吗| 99久久精品国产网站| 蜜桃av一区二区| 一区二区三区四区蜜桃 | 在线看一区二区| 精品一区二区久久久| 亚洲精品欧美综合四区| 亚洲精品一区二区三区福利| 欧美三级在线看| 成人av免费在线播放| 国内精品免费**视频| 日韩中文字幕一区二区三区| 17c精品麻豆一区二区免费| 精品国产一二三| 欧美一区二区人人喊爽| 色美美综合视频| 成人午夜在线播放| 激情综合网天天干| 免费看欧美女人艹b| 亚洲国产精品久久久久婷婷884| 中文字幕在线观看一区二区| 久久久国产午夜精品 | 亚洲欧洲国产日本综合| 久久免费偷拍视频| 精品剧情v国产在线观看在线| 欧美色中文字幕| 欧美中文字幕亚洲一区二区va在线| 波多野结衣亚洲一区| 懂色av中文一区二区三区 | 亚洲日本一区二区| 国产精品久久久久9999吃药| 国产网红主播福利一区二区| 精品欧美黑人一区二区三区| 日韩欧美成人一区| 欧美成人女星排行榜| 日韩欧美电影一二三| 久久综合一区二区| 亚洲精品一区在线观看| 久久久久亚洲蜜桃| 国产免费久久精品| 日韩码欧中文字| 亚洲精品国产精品乱码不99| 一区二区三区成人| 亚洲综合图片区| 日韩av一区二区三区| 蜜桃视频一区二区| 国产精品资源在线看| 成人美女在线观看| 99国产精品99久久久久久| 91看片淫黄大片一级| 欧美制服丝袜第一页| 日韩一卡二卡三卡四卡| 久久久久国产一区二区三区四区| 中文字幕不卡一区| 亚洲日本免费电影| 亚洲成av人片一区二区三区| 日本成人中文字幕在线视频| 久久99久久99精品免视看婷婷 | 午夜不卡在线视频| 久久99精品久久久久婷婷| 国产69精品久久久久777| 色成年激情久久综合| 欧美一区二区三区公司| 亚洲精品一区二区精华| 亚洲丝袜另类动漫二区| 天堂蜜桃91精品| 国产69精品久久久久毛片| 欧美亚洲国产bt| 久久久久国产精品麻豆| 亚洲卡通欧美制服中文| 免费观看30秒视频久久| 成人黄色小视频在线观看| 精品视频在线免费看| 久久综合九色综合97婷婷女人| 亚洲精品视频一区| 激情六月婷婷久久| 欧洲日韩一区二区三区| 久久久国产精品麻豆| 亚洲成人午夜影院| 国产不卡在线视频| 欧美一级欧美三级在线观看 | 蜜臀va亚洲va欧美va天堂| 99热这里都是精品| 久久综合999| 丝袜a∨在线一区二区三区不卡|