さて、これはURLの短縮について厳密ではありませんが、私の目的はとにかくそのようなものなので、そのように見てみましょう. もちろん、URL短縮の手順は次のとおりです。
- 完全な URL を取る
- URL のキーとなる一意の短い文字列を生成します
- URL とキーをデータベースに保存します (ここでは、キーと値のストアが完全に一致します)。
さて、2点目について。これが私が思いついたものです:
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
これで十分ですか?