これは厳密にはURLの短縮についてではありませんが、私の目的はとにかくそうですので、そのように見てみましょう。もちろん、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
これで十分ですか?
困ったことに、なぜUUIDを気にしていますか?なぜ、ランダムインスタンスから5バイト程度しか生成しないのですか? –
私はrandom/System.nanoTime/macアドレスのビットを起動して、uuidにこれらのすべてがあることを認識しました:-) – Bozho
@Bozho [Base32 encoding aka Crockford encoding](http://www.crockford .com/wrmg/base32.html)には、0や文字Lのようなあいまいな文字を削除するなどの利点があるため、長いURLで終わることになりますが、何十億という価値がない場合はおそらく価値があります。 –