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

    业务id密文的一种实现思路

    业务场景: 买家通过电商app下单后,会受到一条短信,短信内容中包括改订单详情页面的h5地址连接,因为是出现在短信中,所以对连接有要求:1.尽量;2.安全性考虑,订单在数据库中对应的自增主键id不能暴露出来...鉴于此,要继续往下深入思考一下了 在搜索引擎如此发达的时代,如果什么事情都想着自己去原创,那样会显得太傻,于是,当你当前所能想出的方案不能解决问题时候,那就去度娘或者谷歌吧 于是去度娘敲下“微博”,...深深可以借鉴,先粘上微博中url算法思路及代码如下: 将长网址md5生成32位签名串,分为4段,每段8个字节; 对这四段循环处理,取8个字节,将他看成16进制串与0x3fffffff(30位1)与操作...,即超过30位的忽略处理; 这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串; 总的md5串可以获得4个6位串;取里面的任意一个就可作为这个长url的url地址; function...output; } 看了之后,真是啧啧称赞,肯定就用这个思路了,但是需要稍稍改良一下,因为 这个加密后有6位,而我们要求5位,需要注意的事:要满足不同id加密后的唯一性(其实是尽量保持低碰撞率);他的可表示的连接数为

    44330

    高性能设计

    生成的几种方法 1、哈希算法 怎样才能生成,仔细观察上例中的,显然它是由固定域名 + 长映射成的一串字母组成,那么长怎么才能映射成一串字母呢,哈希函数不就用来干这事的吗,于是我们有了以下设计思路...所以该怎么优化呢 首先我们需要给字段 surl 加上唯一索引 当长经过 MurmurHash 得到后,直接将长短对应关系插入 db 中,如果 db 里不含有此的记录,则插入,如果包含了,...用哈希算法生成的其实已经能满足我们的业务需求,接下来我们再来看看如何用自增序列的方式来生成 2、自增序列算法 我们可以维护一个 ID 自增生成器,比如 1,2,3 这样的整数递增 ID,当收到一个长的请求时...那么问题来了,如果用 Mysql 自增 id 作为 ID,在高并发下,db 的写压力会很大,这种情况该怎么办呢。 考虑一下,一定要在用到的时候去生成 id 吗,是否可以提前生成这些自增 id ?...当长的请求打到某台机器时,先看这台机器是否分配了号段,未分配就往发号表插入一条记录,则这台机器将为分配范围在 tmp_start_num 到 tmp_end_num 之间的 id。

    3K51

    pyshorteners生成神器

    前言 在我们的日常工作生活中,通常遇到一些很长的超链接,当你想要将链接转发或者记录的时候,由于链接很长而不方便操作,国内云厂商提供的链接服务又是收费的,这让生活本就贫苦的自己怎么办呢?...浏览器打开链接,测试其能否正常跳转。...列表 对于 tinyurl 默认提供缩短功能,但是部分链接比如 po.st 这种断是需要注册后使用 APIkey 才能使用调用的。...pyshorteners 支持的断类型如下: 断 是否需要Key Adf.ly True Bit.ly True Cutt.ly True Git.io True Po.st True Short.cm...short_engine.qpsru.short(base_url) print(res1+'\n',res2+'\n',res3+'\n',res4+'\n',res5+'\n') 通过对比,你会发现 isgd 和 dagd 的断相对比较简洁

    1.8K10

    Java-如何设计

    前言,通俗地讲就是将原本非常长的URL链接精简,让链接也能访问到原本的长链接。比如给我们发送的系统通知。长让我们都能访问到同一篇文章。那既然有了长,为什么还需要?...// 计算出长的hashint fnvHash = HashUtil.fnvHash(longChain);// 10进制62进制字符串 "1eDpPm"String shortChain =...同时,如果是特别热点的数据,就像上面说的,掘金发给全部用户活动的,我们可以保存到Redis中,快速返回结果。❓在长用hash计算时,如果产生哈希冲突怎么办?...hash int fnvHash = HashUtil.fnvHash(longChain); // 10进制62进制字符串 "1eDpPm" shortChain = DecimalUtil.decimalTo62Base...❓不同用户对于同一个长怎么生成?当需要统计同一篇文章不同人分享时的点击量,这时长的对应关系就是一对多了,在生成的时候就需要把用户的ID加到长上了。

    10910

    的设计和思考

    前几天项目出了一些问题,祸源就在平台应用的是第三方(新浪t.cn),所有使用新浪的平台都未能逃过本次关服的洗刷。...第三方平台的好处进制的转化引入随机字符串测试 第三方平台的好处 它提供的服务不会出现地址重复、重定向失败等问题,所以用稳定的高效算法打造出来的平台必然会让平台损失降到最低 image.png...本篇应用自己服务器搭建平台 前期准备:一个域名、many台能用的服务器,一套生成算法 前提: 需要号称国内最好用的工具包:hutool4.x && lombok 1.18.x <dependency...来试试… 这里我直接贴上10进制62进制的代码,代码跟10进制16一样,别被62进制吓坏了~~     /**      * 初始化 62 进制数据,索引位置代表字符的数值,比如 A代表10,z代表...所以我们应该怎么做呢?

    77420

    如何快速搭建服务​

    url其实很长一串,为什么要使用链接呢,原因是因为短信运营商是按照70个字符收费的,如果不使用,那么单单url就几十个字符,本来一条短信就可以完成的事情就变成了两条,费用也随之翻倍。...如何实现 商业产品 这里不打广告了,市场上做这块业务的公司还是不少的,各种档次的都有 开源在线 开源的这些用的比较广泛的应该是新浪地址,但是开源的毕竟是大家都去用也是要耗费资源的,所以使用起来是有一定限制的...,免费的限额额度都有上限,也就是说,他们也提供对应的行业产品,除了下面我列的这两个,其实还有很多很多,大家可以自行查询 新浪地址[1] 百度[2] 自建 你去github上搜索下,会发现有很多开源的服务..., 有php写的,有golang写的等等,这里推荐几个golang版本的,尤为推荐subosito/shorturl, 推荐的原因是开箱即用,当然了公司规模大量,是需要用自己公司对应的域名来做服务,...感兴趣的话可以部署试用下 tx-url-shortener[3] short[4] shorturl[5] 周边文档 高性能设计[6] 这可能是东半球最接地气的链接系统设计[7] 总结 需求紧张的情况下

    2.9K50

    系统设计:URL设计

    ,http://www.educative.io/distributed.php?...id=设计,以及http://www.educative.io/distributed.php%3Fid%3Ddesign 除了URL编码之外,其他的都是相同的。...生成URL步骤 我们可以有一个独立的密钥生成服务(KGS),它可以预先生成随机的六个字母字符串,并将它们存储在数据库中(我们称之为密钥数据库)。...题者补充 从上面的步骤来看,其实该案例详细的解读了,产生URL的背景是什么?收益是什么?我们应该如何设计URL设计?...关注的点和长如何维护映射关系,根据现状情况如何进行API设计,大量的调用是否会涉及缓存,负载均衡,数据库存储,统计审计,如何保证信息安全,那么换个其他设计问题,也应该同样采用如上思路。

    6.2K165

    服务接口慢优化 redis应用

    服务接口慢优化 redis应用 链接服务: 1.长链接 查询 链接(长链接如果存在,直接返回链接,如果长链接不存在,则需要生成链接),比如:在获取短信之前,或者管理后台编辑短信内容之前,需要根据长链接去获取链接的...2.链接 查询 长链接,比如:在短信中点击需要根据的Code去获取长链接,然后redirect跳转实现。 方案1:以上两处的查询,都需要考虑加上mongodb索引。...memNo=HUIYUANHAO"}) db.shortUrlTestMongoDB.find({"code":"123564"}) 方案2:在服务调用方处,加上redis缓存,可以理解为:每个订单号对应的...CODE是不变的,没必要每次都是调用服务。...stringRedisTemplate.opsForValue().get(redisShortUrl + orderNo); if (StringUtils.isEmpty(redisKeyValue)) { //调用服务获取

    7710

    PHP发展路径

    摘要 按照了解的很多 PHP/LNMP 程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段 PHP 程序员的技术要求,来帮助很多 PHP...之类的影响性能的配置),知道 mod_php/fastcgi 的区别;在 PHP 方面已经能够熟练各种基础技术,还包括各种深入些的 PHP,包括对 PHP 面向对象的深入理解/SPL/语法层面的特殊特性比如反射之类的...;在框架方面已经阅读过最少一个以上常规 PHP MVC 框架的代码了,知道基本 PHP 框架内部实现机制和设计思想;在 PHP 开发中已经能够熟练使用常规的设计模式来应用开发(抽象工厂/单例/观察者/命令...从基本代码应用上面来说,能够解决在 PHP 开发中遇到 95%的问题,了解大部分 PHP 的技巧;对大部分的 PHP 框架能够迅速在一天内上手使用,并且了解各个主流 PHP 框架的优缺点,能够迅速方便项目开发中做技术选型...PHP 扩展开发,了解一些扩展开发的中高级知识(minit/rinit 等),熟悉 php 跟 apache/nginx 不同的通信交互方式细节(mod_php/fastcgi);除了开发 PHP 扩展

    2.5K31
    领券