首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

短链服务?用 Nest 自己写一个

base62 则是去掉了两个特殊字符,一共 62 个字符。 做短链的话,我们用 base62 比较多。...安装用到的包: npm install base62 测试下: const base62 = require("base62/lib/ascii"); const res = base62.encode...小结下: 用递增 id + base62 作为压缩码,可以保证唯一,但是容易被人拿到其它短码,不安全。 用 url 做 hash 之后取一部分然后 base62 做为压缩码,有碰撞的可能,不唯一。...AppModule 引入: 保存之后,TypeORM会自动建表: 表创建好了,接下来插入一些数据: nest g service unique-code --flat --no-spec 生成 service ,...核心是压缩码的生成,我们分析了自增 id + base62,这样容易被人拿到其它短链,不安全。hash + base62 会有冲突的可能,所以最终用的是自己生成随机数 + base62 的方案。

28010

如何设计一个短链接系统

Base62 索引表:为了让哈希值表示起来尽可能短,我们可以将通过 MurmurHash得到的 10 进制的哈希值转化成 62 进制如何做呢?...String base62Number = convertToBase62(hashValue); String shortUrl = String.format("hash值:%d base62...}}运行结果:长链接:https://cloud.tencent.com/developer/article/2378083 hash值:580086598hash值:580086598 base62...:dFz1S通过MurmurHash算法把长链 哈希取值后得到10进制的哈希值,然后10进制转换base62,经过两次变化,得到的短链为http://xx.cn/dFz1S ,已经很短了,这样是不是完美了呢...用户体验长链转换为短链的时候,千万要注意生成的短链有没有带关键字,比如:3691004 这个10进制数转换为base62得到的是fuck,短链为:http://xx.cn/fuck 你这样发出去,你的用户以为是你在骂他

31100

推荐一款优秀的国内开源工具库Hutool,让你的代码量减少90%

文章目录 一、常用的工具库有哪些?为啥我要推荐Hutool?...四、包含组件    一个Java基础工具,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具,同时提供以下组件: 模块介绍hutool-aopJDK动态代理封装...BoundedPriorityQueue 线程安全的HashSet-ConcurrentHashSet Map Map工具-MapUtil 双向查找Map-BiMap 可重复键值Map-TableMap Codec编码 Base62...编码解码-Base62 Base64编码解码-Base64 Base32编码解码-Base32 文本操作 CSV文件处理工具-CsvUtil 可复用字符串生成器-StrBuilder Unicode编码转换工具...HttpUtil Http请求-HttpRequest Http响应-HttpResponse HTML工具-HtmlUtil UA工具-UserAgentUtil 简易Http服务器-SimpleServer

3.5K30

System、Runtime、Robot

System: System主要是用来操作、获得系统相关的一些东西,例如之前用到的获取系统时间的方法System.currentTimeMillis(); ? 运行结果: ?...所以这时候就要使用到BigDecimal。 BigDecimal: BigDecimal用于解决float和double运算时会丢失精度的问题。...BigInteger:   BigInteger是一个能够存储很大的整型数字的,能够存储很多很多的数字,并且不会损失精度。 ? 运行结果: ?...Runtime: Runtime是用来使应用程序能够与其运行的环境相连接的,使用对象可以访问JVM的相关信息,如处理器数量,内存信息等。并且可以控制终端执行一些系统命令。...Robot: Robot是可以实现自动控制的一个,例如自动控制鼠标,键盘,截图等功能。 控制键盘: ? 控制截图: ? 控制鼠标: ?

58720
领券