同步id生成器

import java.sql.Connection;
import org.apache.log4j.Logger;


/**
 * @author rq
 * 
 */
public class CardIdManager {

	public static Logger logger = Logger.getLogger(CardIdManager.class);

	private static CardIdManager cardNum;

	private Object obj = new Object();

	public static CardIdManager getInstance() {
		if (cardNum == null) {
			cardNum = new CardIdManager();
		}
		return cardNum;
	}

	/**
	 * 同步的方法块获取唯一的商城卡号
	 * 
	 * @param key
	 * @return
	 * @throws Exception
	 */
	public long getNextCardNum(String key, Connection con) throws Exception {
		synchronized (obj) {
			long result = 0;
			int num = 0;
			if (key.length() == 1 && "2".equalsIgnoreCase(key)) {
				num = 10;
			} else if (key.length() == 7) {
				num = 4;
			} else if (key.length() == 11) {
				num = 4;
				key = key.substring(0, 7);
			} else {
				logger.error("aa");
				throw new Exception("ss");
			}
			long randomNumber = 0;
			int i = 0;
			String keyNum;
			do {
				i++;
				randomNumber = Random.getRandomNumber(num);
				keyNum = key + String.valueOf(randomNumber);
				logger.warn(i+ "aa" + keyNum);
			} while (checkNum(keyNum, con));
			result = Long.parseLong(key + String.valueOf(randomNumber));
			return result;
		}
	}

	/**
	 * 通过查询数据库验证商城卡号是否存在 存在则返回true 反之返回false
	 * 
	 * @param cardNum
	 * @return
	 */
	private boolean checkNum(String cardNum, Connection con) throws Exception {
		boolean result = false;
//		CardMasterDao dao = new CardMasterDao(con);
//		List<CardMaster> cardList = dao
//				.findCardMaster("C_ID='" + cardNum + "'");
//		if (cardList != null && cardList.size() > 0) {
//			logger.error(BusinessConfigParameters.W_ACTIVATE_CARD_002);
//			result = true;
//		}
		return result;
	}

	public static void main(String[] s) throws Exception {
		for (int i = 0; i < 10; i++) {
			System.out.println(CardIdManager.getInstance().getNextCardNum(
					"15868846882", null));
//			System.out.println("======================");
			System.out.println(CardIdManager.getInstance().getNextCardNum("2",
					null));
			System.out.println("*******************************");
		}
	}
}
import java.util.Date;

/**
 * 随机数生成器
 * 
 * @author rq
 * 
 */
public class Random {

	private static final String[] aStrRandom = { "0", "1", "2", "3", "4", "5",
			"6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i",
			"j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
			"w", "x", "y", "z" };

	/**
	 * 获取num位随机数
	 * 
	 * @param num
	 * @return
	 */
	public static long getRandomNumber(int num) {
		long result = 0;
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < num; i++) {
			sb.append((int) (9 * Math.random() + 1));
		}
		result = Long.parseLong(sb.toString());
		return result;
	}

	public static String getRandomNumberStr(int num, boolean is, int nu) {
		String result = "";
		StringBuffer sb = new StringBuffer();
		int base = nu;
		for (int i = 0; i < num; i++) {
			if (is && nu == i) {
				sb.append(" ");
				nu = nu + base;
			}
			sb.append((int) (9 * Math.random() + 1));
		}
		result = sb.toString();
		return result;
	}

	/**
	 * 获取随机数
	 * 
	 * @param base
	 * @return
	 */
	public static int getRandom(int base) {
		return (int) (base * Math.random() + 1);
	}

	/**
	 * 获取num位随机字符
	 * 
	 * @param num
	 * @return
	 */
	public static String getRandomString(int num) {
		String result = "";
		for (int i = 0; i < num; i++) {
			result += aStrRandom[getRandom(aStrRandom.length - 1)];
		}
		return result;
	}

	public static void main(String[] q) throws Exception {
		// Date sDate = new Date();
		// String filePath = "D://test//" + new Date().getTime();
		// WorkBookManager work = WorkBookManager.getInstance(filePath);
		// work.initWorkBook();
		// work.setMaxRow(1000);
		// work.setMaxSheetPage(2);
		// for (int i = 0; i < 1000; i++) {
		// String cardNum = Random.get3NumStr(String.valueOf(i + 1), 6);
		// String cardPwd = Random.getRandomNumberStr(17, true, 4);
		// work.put("1004 " + "001 " + "002 " + cardNum, cardPwd);
		// }
		// work.saveFile();
		// // ZipUtils.put(filePath, filePath + ".zip");
		// Date eDate = new Date();
		// System.out
		// .println("共耗时=>" + (eDate.getTime() - sDate.getTime()) + "毫秒");
		System.out.println(getSperator("123456dfvdfvdsavasdfasdf789", 4));
	}

	/**
	 * 获取线程睡眠时间
	 * 
	 * @param num
	 * @return
	 */
	public static int getSleepNumber(int num) {
		return (int) (num * Math.random() + 1);
	}

	/**
	 * @param s
	 * @return
	 */
	public static String get3NumStr(String s, int num) {
		int temp = num - s.length();
		for (int i = 0; i < temp; i++) {
			s = "0" + s;
		}
		return s;
	}

	public static String getSperator(String s, int num) {
		StringBuffer result = new StringBuffer();
		int base = num;
		for (int i = 0; i < s.length(); i++) {
			if (i == base) {
				base += num;
				result.append(" ");
			}
			result.append(s.substring(i, i + 1));
		}
		return result.toString();
	}

}

猜你喜欢

转载自goahead2010.iteye.com/blog/2405104