## 短链接生成
- 使用哈希算法、自增计数等将长URL映射到短标识符,并且短标识符应该足够短以便于记忆和传播。
## 通过短链接访问原链接
- 一般使用 HTTP重定向的方式。当用户访问短连接时,服务器通过HTTP重定向将其引导至原始URL。
import hashlib
def generate_short_url(original_url):
hash_object = hashlib.md5(original_url.encode())
short_code = hash_object.hexdigest()[:8] # 截取前8位作为短标识符
return short_code
class ShortURLGenerator:
def __init__(self):
self.counter = 0
def generate_short_url(self):
short_code = base62_encode(self.counter) # 假设使用62进制
self.counter += 1
return short_code
import random
import string
def generate_short_url():
short_code = ''.join(random.choices(string.ascii_letters + string.digits, k=6))
return short_code
def generate_short_url_from_keyword(keyword):
# 简化处理,可以使用更复杂的映射关系
return base62_encode(hash(keyword))
import hashlib
from flask import Flask, request, redirect
app = Flask(__name__)
url_mapping = {}
def generate_short_url(original_url):
hash_object = hashlib.md5(original_url.encode())
short_code = hash_object.hexdigest()[:8] # 截取前8位作为短标识符
return short_code
@app.route('/shorten', methods=['POST'])
def shorten_url():
data = request.get_json()
original_url = data.get('url')
if not original_url:
return 'Invalid request', 400
short_code = generate_short_url(original_url)
short_url = f"http://your-short-domain/{short_code}"
url_mapping[short_code] = original_url
return {'short_url': short_url}
@app.route('/' )
def redirect_to_original_url(short_code):
original_url = url_mapping.get(short_code)
if original_url:
return redirect(original_url, code=302)
else:
return 'URL not found', 404
if __name__ == '__main__':
app.run(debug=True)
示例中:
/shorten 路由用于接收 POST 请求,生成短连接并返回短连接的 JSON 响应。
/redirect/<short_code> 路由用于接收短连接请求,根据短标识符重定向到原始URL。
你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.
我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。
作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。
在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。
我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。
保持关注我的博客,让我们共同追求技术卓越。