网址缩短算法
现在,这并不是严格意义上的URL缩短,但我的目的就是这样,所以让我们这样看待它。当然,缩短URL的步骤是:
- 获取完整的网址
- 生成唯一的短字符串作为 URL 的键
- 将URL和密钥存储在数据库中(键值存储在这里是完美的匹配)
现在,关于第二点。以下是我想出的:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
UUID uuid = UUID.randomUUID();
dos.writeLong(uuid.getMostSignificantBits());
String encoded = new String(Base64.encodeBase64(baos.toByteArray()), "ISO-8859-1");
String shortUrlKey = StringUtils.left(encoded, 6); // returns the leftmost 6 characters
// check if exists in database, repeat until it does not
这足够好吗?