java 各种ID生成

文件ID

public static String generateFileId(int type) {
		char[]	cs		= new char[] { '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', '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' };

		long	time	= type + System.currentTimeMillis();

		Random	r		= new Random();
		time	= time * 1000 + r.nextInt(1000);
		time	= time * 1000 + r.nextInt(1000);
		StringBuilder	sb	= new StringBuilder();

		long			temp;
		for (long index = time; index > 0;) {

			temp	= index;
			index	= index / cs.length;
			int y = (int) (temp - index * (cs.length));
			sb.append(cs[y]);
		}

		return sb.toString();
	}

token 生成和解析


	public static String tokentoUser(String token) {

		String			s		= "" + token.charAt(62) + token.charAt(2);
		int				length	= Integer.parseInt(s);

		int[]			posArr	= random(length);

		StringBuilder	sb		= new StringBuilder();
		for (int pos : posArr) {
			sb.append(token.charAt(pos));
		}
		for (int i = posArr.length; i < length; i++) {
			sb.append(token.charAt(i + 43 - posArr.length + 1));
		}

		return sb.toString();

	}

	public static String userToToken(String user) {
		char[]			cs	= new char[] { '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', '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' };

		Random			r	= new Random();

		StringBuilder	sb	= new StringBuilder();
		String			l;
		int[]			ii	= random(user.length());

		if (user.length() < 10) {
			l = "0" + user.length();
		} else {
			l = String.valueOf(user.length());
		}

		for (int i = 0; i < 64; i++) {

			if (i == 2) {
				sb.append(l.charAt(1));
				continue;
			}
			if (i == 62) {
				sb.append(l.charAt(0));
				continue;
			}

			int index = containIndex(ii, i);
			if (index != -1) {
				sb.append(user.charAt(index));
				continue;
			}

			if (i > 43) {
				if (ii.length < user.length()) {
					int ci = i - 43 + ii.length - 1;
					if (ci < user.length()) {
						sb.append(user.charAt(ci));
						continue;
					}
				}

			}

			int ri = r.nextInt(cs.length);
			sb.append(cs[ri]);
		}

		return sb.toString();

	}

	private static int[] random(int seed) {
		Random	rs	= new Random(seed);
		int[]	ii	= new int[seed];
		int		temp;
		int		i	= 0;
		for (; i < seed; i++) {
			boolean g = false;
			for (int j = 0; j < 10; j++) {
				temp = rs.nextInt(40) + 3;

				if (containIndex(ii, temp) != -1) {
					continue;
				} else {
					g		= true;
					ii[i]	= temp;
					break;
				}
			}
			if (!g) {
				break;
			}
		}
		return Arrays.copyOf(ii, i);
	}

	private static int containIndex(int[] arr, int value) {
		for (int i = 0; i < arr.length; i++) {

			if (arr[i] == value) {
				return i;
			}
			if (arr[i] == 0) {
				return -1;
			}
		}
		return -1;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值