美文网首页
关于长链转短链的方案和思考

关于长链转短链的方案和思考

作者: 小明同学_Random | 来源:发表于2019-12-09 10:41 被阅读0次

背景

前些天,和同学交流,他说要做一个生成短链的系统,然后我们就针对这个进行了研究和讨论

讨论方案

  1. 我们首先讨论了下该系统的功能模块,既然是要把长链转成短链,必然需要一个生成短链的接口;既然生成了短链,那我们必然需要有短链转长链的功能。所有确定了系统提供的功能:

    a. 由长链生成短链
    b. 由短链还原长链

  2. 确定了功能,就开始设计方案,这里面就面临这两个问题,第一个问题,如何进行短链生成?第二个问题,如何还原出原有的长链?

    a. 我们首先想到的是有没有一种算法可以实现长字符串转成短字符串,又可以把短字符串还原回去?简单思考了下这个其实不太现实,加密更多的是把字符串变的更长或者同长度的转换,这样才可以正常的解密回来。
    b. 那我们需要一种算法把长字符串转成断字符串,然后落地下短链和长链的映射关系,这样也可以做到还原原有长链的功能,这也是我们最终确定的方案

  3. 确定了设计方案,我们如何设计长链变短链的算法?

    a. 这里有一个问题,就是不同的链接不能变成相同的短链,也就是说我们需要针对短链进行去重。
    b. 我们的短链要固定长度,也就是说无论多长的字符串,都要生成相同长度的字符串,首先想到的是随机数,只要长度足够,我们就可以随机出概率足够小的随机字符串来,再加上去重的方案,就可以保证唯一的短链生成。
    c. 然后我们想到了hash,根据字符串的hash码再做映射出固定长度的字符串来,这样做相对随机数碰撞概率更小,重复生成的几率也就更少
    d. 我们觉得这两种方案都是可行的,但是却总有些差强人意,有没有更好的方式去做?然后查询资料,发现了使用md5值的方案进行转换,具体如下:

0.确定短链为6位,每位由0-9a-zA-Z共62个字符组成,这样六位码可以组成580亿个组合。

1.首先通过原始链接进行MD5得到一个32位的0-9a-f的字符串。

2.把字符串按照1-6,6-11,11-16,16-21,21-26,26-31分成六份,每份六个字符

3.把每份的六位当成十六进制,计算得到一个long值,然后除以62得到余数,通过余数找到62个字符中的一个。

4.把六份字符串计算得到的字符组合后就是最终六位短码。
  1. 分析使用md5方式的好处与问题:

a. 固定长度的随机字符串生成
b. 碰撞几率更小
c. 这个没法解决重复的问题,还是有概率出现重复

思考

有没有其他一些方法?

相关文章

  • 关于长链转短链的方案和思考

    背景 前些天,和同学交流,他说要做一个生成短链的系统,然后我们就针对这个进行了研究和讨论 讨论方案 我们首先讨论了...

  • deno和oak开发的包含管理api的短链系统v2.0

    短链应用 使用deno和oak开发的短链系统,包含短链和短链管理系统 使用短链 获取短链 http://local...

  • 关于跨链技术解方案OneLedger和 Cosmos, AION

    关于跨链技术解方案OneLedger和 Cosmos, AION 的比较 目前三种典型的跨链技术:公证人机制、侧链...

  • 社交媒体营销URL短链在线生成工具

    什么是URL短链? URL短链,就是由长链接转化而来的短链接。 以欧美网红Rosanna Pansino为例,她的...

  • 锁与事务

    最近在写一个短链服务,提供两个API给用户使用,一个API用于生成短链,一个API用于根据短链获取长链接。 生成短...

  • 小程序快速实现短链接转换,长链瞬间转短链

    前言 本教程是基于 “apifm-wxapi” 模块,教你快速实现小程序开发,所以你可能需要先了解以下知识点: 《...

  • 短链接系统设计

    短链系统设计 作用 短链系统用于为长链接创建较短的别名,这些别名叫做短链接。当用户点击短链接时,他们会被重定向到原...

  • lnc RNA学习笔记

    概述 非编码RNA,根据其长度的不同可分为长链非编码RNA和短链非编码RNA。转录本序列长度在200 bp 以上的...

  • 喵叔叔说「区块链」

    区块链是啥 关于区块链的文章是很多,但很多看完容易让人云里雾里的转,关于使用区块链相关技术创业的新闻也是多了起来,...

  • 当我们做区块链时,我们在做什么

    长话短说,我们在建链。 区块链 关于区块链是什么,网上的解释多如牛毛。这里,我从需求的角度总结一下:当做记录保存(...

网友评论

      本文标题:关于长链转短链的方案和思考

      本文链接:https://www.haomeiwen.com/subject/eykbgctx.html