序文
オンライン ショート リンク ジェネレーターである SpringBoot に基づくオンライン ショート リンク生成システムを共有します。
完全なプロジェクトのソースコードは記事の最後にあります。自分でダウンロードできます~
1. 機能を実現する
1. 長いリンクを短いリンクに変換します。短いリンクにアクセスすると、302 によって元の長いリンクにリダイレクトされます。
2. 短いチェーン有効期間の設定をサポート
3. 訪問数の記録をサポート
2. インターフェース表示
3. 技術の選択
頼る | 説明する |
---|---|
スプリングブーツ | 基本的な枠組み |
タイムリーフ | テンプレートエンジン |
Jdbcテンプレート | 永続層フレームワーク |
レディス | キャッシュ |
グアバ | ハッシュアルゴリズム、ブルームフィルター |
4. ロジックを理解する
1. MurmurHash アルゴリズムを使用して、元の長いリンクを 32 ビットのハッシュ値にハッシュし、そのハッシュ値を短いリンクである BASE62 エンコードに変換します。
2. ユーザーがショートリンクにアクセスすると、Redis にキャッシュがあるかどうかを確認し、存在する場合はキャッシュ時間を更新します。キャッシュに存在しない場合は、データベースに移動して検索し、検索が成功した場合は、 、Redis キャッシュに追加され、元の長いリンクに 302 リダイレクトされ、リンクの訪問数が自動的に増加します。データベースに存在しない場合は、404 ページにジャンプします。
5. 技術的な紹介
1、マームルハッシュ
MurmurHash は、一般的なハッシュ取得操作に適した非暗号化ハッシュ関数です。MD5 などの他の一般的なハッシュ関数と比較して、MurmurHash のランダム分散特性は、強い規則性を持つキーに対してより優れたパフォーマンスを発揮します。非暗号化ということは、MD5 と比較して SHA 機能のパフォーマンスが高くなければならないことを意味します (実際、そのパフォーマンスは MD5 などの暗号化アルゴリズムの 10 倍以上です)。MurmurHash には 32 ビット、64 ビット、および 128 ビットの実装があり、32 ビットは約 43 億の短いリンクを表すのに十分です。Java が使用される場合、 Google の
guava または hutool
に対応する実装があり、ここでは guava が使用されます。
2、base62
MurmurHash によって生成されるハッシュ値の 10 進数は最大 10 桁ですが、ショート リンクの長さをさらに短縮するために、ハッシュ値を Base62 エンコードに変換すると、最大長はわずか 6 文字になります。
3. 301 リダイレクトと 302 リダイレクトの違い
- 301 は、永続的なリダイレクトを表します 。つまり、長いリンクを取得するための最初のリクエストの後、ブラウザが次に短いリンクをリクエストするとき、短い URL サーバーをリクエストせず、ブラウザのキャッシュから直接取得します。短縮URLのクリック数をサーバーレベルで取得することができないため、そのリンクがたまたまあるアクティビティのリンクだった場合、そのアクティビティの影響を分析することができません。したがって、通常は 301 を使用しません。
- 302 は、一時リダイレクトを表します 。つまり、短いリンクをリクエストするたびに、短い URL サーバーをリクエストすることになります (ブラウザーのキャッシュを暗示するために応答で Cache-Control または Expired が使用されている場合を除く)。クリック数をカウントするためにサーバーに接続するため、302 が使用されますが、サーバーに少し負担がかかりますが、データが非常に重要な今日では、このコードにはそれだけの価値があるため、302 をお勧めします。
6. プロジェクトのソースコードのダウンロード
プロジェクトのソース コードのダウンロード リンク: https://download.csdn.net/download/weixin_47367099/85397360