短信被截断?5分钟用Java打造企业级短链服务

01 短链接技术背景

有没有接收到类似上图的推广或促销短信?之前不以为然,不就是一个网址么?也没有关心。

直到最近做了一个项目,用户提交资料以后,审核完成后,需要短信通知用户,引导用户点击链接查看结果。简单的以为就是放一个链接就好了,结果再设计评审的时候,有老司机提出来:链接太长会被短信分成两条发送,需要用到短链接。短链接也正式进入我的视野。

在短信营销场景中,运营商通常将短信长度限制在70字符以内;微信小程序分享卡片对URL长度有严格限制;微博等社交平台也会自动截断长链接。短链接技术通过将原始长URL压缩为6-8位字符的短码,完美解决这些场景的URL展示问题。

02 核心实现原理

无论任何看似简单展示,背后都有你想象不到的技术支撑。曾经一个同事有非常严重的职业病,他说每次点击一个按钮或者打开网页,都会不自觉的想像背后的处理逻辑。甚至因此变的胆小,觉得他的每一步操作都会泄露自己的隐私被第三方采集。

短链接是怎么实现的呢?

  • 映射机制:建立短码与原始URL的键值对映射
  • 重定向技术:服务端返回302状态码实现跳转,重定向到原始的URL
  • 编码算法:生成短码(a-z,A-Z, 0-9)

其中短码的生成,可以自定义生成,也可以通过编码算法将原始链接转化成短码。

03 最佳实践

3.1 随机算法生成短码

利用JDK 手搓方法

@Test
void test01() {
   
    String BASE_SEED = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    int len = BASE_SEED.length();

    Random random = new Random();
    StringBuffer codeBuffer = new StringBuffer();
    for (int i=0; i< 6; i++) {
   
        codeBuffer.append(BASE_SEED.charAt(random.nextInt(len) - 1));
    }

    System.out.println(codeBuffer);
    // 结果 cNrt5D</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值