首页 / 短链 / 手机短信收到的短链接如何生成?

专业的短链接生成工具

链接域名

短网址有效期

手机短信收到的短链接如何生成?

更新时间:2025-5-1 16:53:12 作者:爱短链

想必大家都经常收到垃圾短信……短信中的链接一般都是短链接:


为什么网址这么短?有什么好处?短链接如何生成的?


短网址的好处是:


短。短信和很多平台(微博)都有字数限制,不能加长链接。


好看。与很多未知参数相比,短链接更加简洁友好。


做一些统计很方便。当你点击链接时,会有人记录和分析。


安全。不公开访问参数。


这就是为什么我们现在收到的大多数垃圾邮件都是短 URL。


那么短链接如何生成的呢?


短网址从生成到使用分为以下几个步骤。


有一项服务可以将要发送给您的长 URL 映射到短 URL。例如 ->


将短url拼接到短信内容等中发送。


用户点击短网址,浏览器通过301/302重定向访问对应的长网址。


显示相应的内容。


本文主要关注第一步,即如何将长网址映射到短网址。


如果你考虑一下长URL和短URL之间的真正对应关系,那么你会走得很远。


理想的情况是:我们使用一种算法将每个长 URL 唯一地转换为一个短 URL。它还保持了反向转换的能力。


但这是不可能的,如果有这样的算法,世界上所有的压缩算法都可以死在原地。


正确的思路是建立一个sender,每次有新的长URL进来,我们就加一,返回新的值。第一个 URL 返回“/0”,第二个 URL 返回“/0” 返回“/1”。


接下来,以QA形式写几个小问题:


这个对应的数据必须放在磁盘上,而且每次系统重启都不能重新排列编号,所以可以存储在mysql等数据库中。而如果数据量小,qps低,可以直接使用数据库的自增主键。意识到。


根据上述发行方策略,无法保证长短链接一一对应。如果连续两次使用同一个URL,结果值会不同。


为了实现长短链接一一对应,需要付出很大的空间成本,尤其是为了快速响应,可能需要在内存中做一层缓存,太浪费了.


但是可以实现一些变体来实现部分的一一对应超值资料:手机短信中的短链接是如何设计和实现的?,比如将最新/最流行的对应存储在K-V数据库中,这样可以节省空间,加快响应速度。


我们返回的短网址一般是把数字转换成32进制,这样可以更有效的缩短URL长度,那么32进制的数字对于电脑来说只是一个字符串,怎么存储呢?直接存储字符串 很容易找到等值,但是对范围搜索太不友好了。


其实可以直接存储十进制数,不仅占用空间更小,对搜索的支持也更好,同时可以更方便的转换成more/less bases,进一步缩短网址。


如果直接存储在MySQL中,当并发请求增加时,对数据库的压力太大,可能会造成瓶颈。这时候可以做一些优化。



缓存

在长链接和短链接的一一对应中也提到了缓存。这里我们要加快程序的处理速度。流行的长链接(需要统计长链接进来的次数),最近的长链接(可以用redis保存最后一小时)等等缓存,保存在内存或者redis中- 类似内存数据库,如果请求的长URL命中缓存,则直接获取对应的短URL并返回,无需再次生成操作。


分批发号

每次下发一个数字,都需要访问MySQL一次,获取当前最大数字,获取后更新最大数字,压力比较大。


我们每次可以从数据库中获取10000个数字,然后在内存中发出。当剩余数字小于 1000 时,我们将重新向 MySQL 请求 10000 个数字。上一批号发出后,分批写入回车。


这样可以将数据库的持续操作移到代码中,异步进行取写操作,保证服务的持续高并发。

上面设计的系统是单点的,即发射机是单点的,很容易挂机。


可以使用分布式服务。如果是分布式的话,如果每个发行者在发号后都需要同步到其他发行者短信短链接,可能不会太麻烦。


换一种思路,可以有两个数字发送器,一个用于单号,一个用于双号。号码发出后,不再加1,而是加12.


以此类推,我们可以用1000个服务发出0-999结尾的号码,每个号码发出后递增1000.这个很简单,服务之间基本不需要通信, 做你自己的事。


因为我懒得写JDBC代码,更懒得去弄Mybatis,所以代码里凡是用到MySQL的地方我都用Redis。


package util;
import redis.clients.jedis.Jedis;
/**
 * Created by pfliu on 2019/06/23.
 */
public class ShortUrlUtil {
    private static final String SHORT_URL_KEY = "SHORT_URL_KEY";
    private static final String LOCALHOST = "http://localhost:4444/";
    private static final String SHORT_LONG_PREFIX = "short_long_prefix_";
    private static final String CACHE_KEY_PREFIX = "cache_key_prefix_";
    private static final int CACHE_SECONDS = 1 * 60 * 60;
    private final String redisConfig;
    private final Jedis jedis;
    public ShortUrlUtil(String redisConfig) {
        this.redisConfig = redisConfig;
        this.jedis = new Jedis(this.redisConfig);
    }
    public String getShortUrl(String longUrl, Decimal decimal) {
        // 查询缓存
        String cache = jedis.get(CACHE_KEY_PREFIX + longUrl);
        if (cache != null) {            return LOCALHOST + toOtherBaseString(Long.valueOf(cache), decimal.x);
        }
        // 自增
        long num = jedis.incr(SHORT_URL_KEY);
        // 在数据库中保存短-长URL的映射关系,可以保存在MySQL中
        jedis.set(SHORT_LONG_PREFIX + num, longUrl);
        // 写入缓存
        jedis.setex(CACHE_KEY_PREFIX + longUrl, CACHE_SECONDS, String.valueOf(num));
        return LOCALHOST + toOtherBaseString(num, decimal.x);
    }
    /**
     * 在进制表示中的字符集合
     */
    final static char[] digits = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
            '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
            'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y',
            'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
    /**
     * 由10进制的数字转换到其他进制
     */
    private String toOtherBaseString(long n, int base) {
        long num = 0;
        if (n < 0) {
            num = ((long) 2 * 0x7fffffff) + n + 2;
        } else {
            num = n;
        }
        char[] buf = new char[32];
        int charPos = 32;
        while ((num / base) > 0) {
            buf[--charPos] = digits[(int) (num % base)];
            num /= base;
        }
        buf[--charPos] = digits[(int) (num % base)];
        return new String(buf, charPos, (32 - charPos));
    }
    enum Decimal {
        D32(32),
        D64(64);
        int x;
        Decimal(int x) {
            this.x = x;
        }
    }
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            System.out.println(new ShortUrlUtil("localhost").getShortUrl("www.baidudu.com", Decimal.D32));
            System.out.println(new ShortUrlUtil("localhost").getShortUrl("www.baidu.com", Decimal.D64));
        }
    }
}

短链接如何生成?搞定,短链接就是这么生成的,你学会了吗?


以上就是关于《手机短信收到的短链接如何生成?》的全部内容了,感兴趣的话可以点击右侧直接使用哦!》》在线短链接生成

爱短链平台各工具使用方法及功能汇总

短链接

活码系统

微信外链

抖音卡片

相关搜索

创建短链接

注册与登录 首先,访问爱短链的官方网站,点击右上角的“注册”按钮,填写相关信息完成注册。注册成功后,使用账号和密码登录到平台后台。登录过程简单快捷,支持微信扫码和手机验证码等多种方式。 获取长链接 在准备创建短链接之前,你需要先获取想要缩短的长链接。例如,在微信公众号后台,打开需要生成短链接的文章,将该文章的长链接复制到剪贴板中。 生成短链接 登录爱短链平台后,你会看到后台界面提供了多种功能选项。点击“短链”功能,将刚刚复制的长链接粘贴到指定的输入框中。爱短链还允许用户绑定自己的域名,使短链接更具个性化和辨识度。设置完成后,点击“生成短链接”按钮,平台会立即为你生成对应的短链接。 使用短链接 短链接生成后,你可以将其复制并粘贴到公众号推文中需要添加链接的位置,如正文内容、阅读原文链接、公众号菜单栏等。在正文中插入短链接时,可以搭配一些吸引人的引导语,如“点击下方链接查看更多精彩内容”或“详情请戳[短链接]”等,以提高用户的点击率。

爱短链

2025-02-20 14:33:23

抖音链接跳转微信

抖音链接跳转微信不仅为品牌营销和个人推广提供了更多可能性,也为用户带来了更加便捷、高效的信息获取和互动体验。在未来,随着社交电商的蓬勃发展和用户需求的不断变化,抖音链接跳转微信将成为越来越多用户的首选引流方式,助力品牌营销和个人推广迈向新的高度。

爱短链

2025-01-15 16:13:31

活码二维码生成器在线

活码二维码生成器在线工具如爱短链等,操作简单,无需复杂的技术知识。用户只需在网页上打开相应的生成器平台,按照提示进行操作即可。通常,用户需要输入想要关联的信息,如网址、文本、图片、文件等,然后选择一些个性化设置,即可快速生成一个活码二维码。

爱短链

2025-01-15 16:13:31

生成短链接的工具

长链接的繁琐与不便愈发凸显,而一款优秀的短链接生成工具则成为了信息高效传播的关键。爱短链,正是这样一款脱颖而出的卓越工具,为你带来前所未有的链接管理体验。

爱短链

2025-01-15 16:13:31

跳转卡片在线生成

爱短链平台提供高效的跳转卡片在线生成功能,用户可轻松定制卡片模板,填入链接与信息,即刻生成吸引眼球的跳转卡片,适用于社交媒体、营销活动等场景,助力提升点击率与营销效果,实现精准引流。

爱短链

2025-01-15 16:13:31

最通俗易懂的短链接原理讲解

看了看,想要了解短链接算法的伙伴还是蛮多的,那么今天爱短链小编就帮大家带来详细的介绍。

爱短链

2022-05-30 15:20:34

微信活码的功能特点介绍

微信活码是营销推广行业必备的一个神器,它不但可以帮助我们更好的裂变,还能降低用户流失率。

爱短链

2022-05-19 12:37:01

营销推广必备的5个效率小工具

营销推广不仅要靠扎实的专业知识,在工具使用方面也是非常重要,没有好的工具就算自己有多么厉害的技能也会事倍功半。

爱短链

2022-05-18 14:08:22

用户喜欢

缩短链接:链接在线一键秒缩短

缩短链接是一种将长网址转换为短网址的服务,通常用于社交媒体、短信、电子邮件等场合,以便更简洁地分享链接。以下是一些在线一键缩短链接的方法和工具:

爱短链

2025-02-19 10:16:16

网址简化:1秒简化网址

网址简化,也称为URL缩短,是指将冗长的网址转换为简短、易记的链接。以下是几种快速简化网址的方法:

爱短链

2025-02-19 10:16:16

网站链接太长怎么缩短

当遇到网站链接太长需要缩短的情况时,可以采取以下几种方法:

爱短链

2025-02-18 16:04:47

h5页面跳转微信小程序

H5页面跳转微信小程序的需求普遍存在,因为微信小程序只能在微信内部访问,而H5页面可以在任何浏览器中访问,因此需要通过跳转来实现两者之间的衔接。以下是H5页面跳转微信小程序的主要方式:

爱短链

2025-02-18 16:04:46

链接缩短,教程分享,一招把链接缩短

链接缩短是一个方便用户分享和访问长链接的有效方法。以下是一招把链接缩短的详细教程:

爱短链

2025-02-18 14:15:53

微信卡片链接生成

微信卡片链接是指在微信中分享的一个特定格式的链接,通过该链接可以展示网页或内容的相关信息,并以卡片的形式呈现给接收者。以下是生成微信卡片链接的详细步骤:

爱短链

2025-02-18 09:57:08

微信活码免费在线制作

微信活码是一种可以智能切换的二维码,通常用于解决微信群扫码人数限制、微信号无限加好友、多渠道引流等问题。以下是一些免费在线制作微信活码的方法和步骤:

爱短链

2025-02-18 09:57:08

微信群活码,免费生成,永久生效

微信群二维码本身具有7天的有效期,微信官方并未提供直接生成永久有效微信群二维码的功能。但可以通过一些第三方工具实现类似永久有效的效果,以下是几种免费生成微信群活码并尽量保持其长期有效的方法:

爱短链

2025-02-18 09:57:08

全平台跨域跳转微信工具,助力企业全渠道获客

爱发布客服-依依

公网安备32010402001342号

苏ICP备2021048188号-3

© 爱短链 2019 | 南京推吧网络科技有限公司版权所有

客服