网站的栏目是什么,犀牛云做的网站怎么样,网站建设的重要性与价值,网站开发后台软件java实现短链接转换服务 类似上图这种短信#xff0c;对应的就是一个短链接。 看到原理也不难#xff0c;于是先写个最简易版的玩玩#xff0c;以后有需求了再补充吧
下面是一个简易版的短链接生成代码
搭个spring-boot服务#xff0c;复制这两个controller#xff0c;就…java实现短链接转换服务 类似上图这种短信对应的就是一个短链接。 看到原理也不难于是先写个最简易版的玩玩以后有需求了再补充吧
下面是一个简易版的短链接生成代码
搭个spring-boot服务复制这两个controller就能看到效果。 import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Random;/*** Description: 发号器随机生成*/
RestController
RequestMapping(/shortUrl)
public class ShortUrlController {private String BASE62 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ;// 短链url域名前缀private String shortUrlPrefix http://a.cn/;private HashMapString, String map new HashMap();RequestMapping(getShortUrl)public String getShortUrl(String longUrl) {String key creatKey();while (map.containsKey(key)) {key creatKey();}map.put(key, longUrl);return shortUrlPrefix key;}RequestMapping(getLongUrl)public String getLongUrl(String shortUrl) {return map.get(shortUrl.replace(shortUrlPrefix, ));}private String creatKey() {Random rand new Random();StringBuilder sb new StringBuilder();for (int i 0; i 6; i) {sb.append(BASE62.charAt(rand.nextInt(62)));}return sb.toString();}
}import com.zs.qunfx.util.Base62Util;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;/*** Description: 发号器自增生成*/
RestController
RequestMapping(/shortUrl2)
public class ShortUrl2Controller {// 短链url域名前缀private String shortUrlPrefix http://a.cn/;private HashMapString, String map new HashMap();private Long num 1000000L;RequestMapping(getShortUrl)public String getShortUrl(String longUrl) {String key creatKey();map.put(key, longUrl);return shortUrlPrefix key;}RequestMapping(getLongUrl)public String getLongUrl(String shortUrl) {return map.get(shortUrl.replace(shortUrlPrefix, ));}private String creatKey() {String base62 Base62Util.base62Encode(num);num;return base62;}
}最后
现在常用的还是第二种用自增的发号器生成对应的短链接。 生产环境要用可以用数据库的自增id来发号或者分布式下生成id用类似雪花算法来发号。 同时避免原始链接重复可做重复判断可用布隆过滤器或redis 长链接和短链接的对应关系可保存在数据库也可保存在类似redis中顺带还可以设置过期时间。
也有开源的生成短链接的比如yourlsPHP实现安装只需要装PHP和mysql即可。
或者也可以直接购买短链接服务比如百度的短链接服务亚马逊的短链接服务等按需付费。