范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

JAVA实现短网址服务的原理是什么?

  针对于有些用户担心短网址会不会重复的问题,现将缩链(https://suolink.cn)平台短网址服务的原理进行了详细介绍,以便用户对短网址有更深的理解,消除其担心。
  Q:那么小的长度应该有一定概率会重复的吧?是不是一定时间后就不可用了?
  A:短网址(Short URL),顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接。
  短网址服务,可能很多朋友都已经不再陌生,现在大部分微博、手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场。估计很多朋友现在也正在使用。
  看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个想到的就是原来公司写的一个游戏激活码规则,也就是下面的算法2,
  26个大写字母 26小写字母,10个数字,随机生成6个然后插入数据库对应一个id,短连接跳转的时候,根据字符串查询到对应id,即可实现相应的跳转!不过2的62次方,不知道有没有重复的,小概率可以,但是对应不是很大的网站应该足够了
  自从twitter推出短网址(shorturl),继之国内各大微博跟风,google公开goo.gl使用API,短网址之风愈演愈烈.不得不说这是一个新兴又一大热门web2.0服务.现整理一下,包括完整短网址网站,短网址生成原理,算法举例,以及优劣比较。
  短链接的好处:
  1、内容需要;2、用户友好;3、便于管理。
  为什么要这样做的,原因我想有这样几点:
  微博限制字数为140字一条,那么如果我们需要发一些连接上去,但是这个连接非常的长,以至于将近要占用我们内容的一半篇幅,这肯定是不能被允许的,所以短网址应运而生了。
  短网址可以在我们项目里可以很好的对开放级URL进行管理。有一部分网址可以会涵盖暴力,广告等信息,这样我们可以通过用户的举报,完全管理这个连接将不出现在我们的应用中,应为同样的URL通过加密算法之后,得到的地址是一样的。
  我们可以对一系列的网址进行流量,点击等统计,挖掘出大多数用户的关注点,这样有利于我们对项目的后续工作更好的作出决策。
  算法原理
  算法一
  1)将长网址md5生成32位签名串,分为4段, 每段8个字节;
  2)对这四段循环处理, 取8个字节, 将他看成16进制串与0x3fffffff(30位1)与操作, 即超过30位的忽略处理;
  3)这30位分成6段, 每5位的数字作为字母表的索引取得特定字符, 依次进行获得6位字符串;
  4)总的md5串可以获得4个6位串; 取里面的任意一个就可作为这个长url的短url地址;
  这种算法,虽然会生成4个,但是仍然存在重复几率,下面的算法一和三,就是这种的实现.
  算法二
  a-zA-Z0-9 这64位取6位组合,可产生500多亿个组合数量.把数字和字符组合做一定的映射,就可以产生唯一的字符串,如第62个组合就是aaaaa9,第63个组合就是aaaaba,再利用洗牌算法,把原字符串打乱后保存,那么对应位置的组合字符串就会是无序的组合。
  把长网址存入数据库,取返回的id,找出对应的字符串,例如返回ID为1,那么对应上面的字符串组合就是bbb,同理 ID为2时,字符串组合为bba,依次类推,直至到达64种组合后才会出现重复的可能,所以如果用上面的62个字符,任意取6个字符组合成字符串的话,你的数据存量达到500多亿后才会出现重复的可能。
  具体参看这里彻底完善新浪微博接口和超短URL算法,算法四可以算作是此算法的一种实现,此算法一般不会重复,但是如果是统计的话,就有很大问题,特别是对域名相关的统计,就抓瞎了。
  JAVA 实现代码: public class ShortUrlGenerator { /** @param args */ public static void main(String[] args) { String sLongUrl = "QQ空间"; //长链接 String[] aResult = shortUrl(sLongUrl); // 打印出结果 for (int i = 0; i < aResult.length; i++) { System.out.println("[" ystem.out.println("[" + i + "]:::" + aResult[i]); } } public static String[] shortUrl(String url) { // 可以自定义生成 MD5 加密字符传前的混合 KEY String key = "mengdelong"; // 要使用生成 URL 的字符 String[] chars = new String[]{"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", "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" }; // 对传入网址进行 MD5 加密 String sMD5EncryptResult = (new Encrypt()).md5(key tring sMD5EncryptResult = (new Encrypt()).md5(key + url); String hex = sMD5EncryptResult; String[] resUrl = new String[4]; for (int i = 0; i < 4; i++) { // 把加密字符按照 8 位一组 16 进制与 0x3FFFFFFF 进行位与运算 String sTempSubString = hex.substring(i tring sTempSubString = hex.substring(i * 8, i * 8 + 8); // 这里需要使用 long 型来转换,因为 Inteper .parseInt() 只能处理 31 位 , 首位为符号位 , 如果不用 long ,则会越界 long lHexLong = 0x3FFFFFFF & Long.parseLong(sTempSubString, 16); String outChars = ""; for (int j = 0; j < 6; j++) { // 把得到的值与 0x0000003D 进行位与运算,取得字符数组 chars 索引 long index = 0x0000003D & lHexLong; // 把取得的字符相加 outChars += chars[(int) index]; // 每次循环按位右移 5 位 lHexLong = lHexLong >> 5; } // 把字符串存入对应索引的输出数组 resUrl[i] = outChars; } return resUrl; } }

短视频平台都有哪些?2016年短视频行业全面爆发,当美拍秒拍快手等一系列短视频APP大火之后,短视频被认为是下一个新媒体传播工具的巨大风口。今日头条先是上线抖音短视频,定位为15秒音乐短视频社区,强调汤加火山喷发不足以导致气候变化来源科技日报汤加火山喷发不足以导致气候变化卫星监测显示,汤加火山喷发将大量火山灰喷射到超过海平面30千米的高空,向大气平流层注入了约40万吨的二氧化硫。那么,这场21世纪最大的火山科研团队开发出高精度硅基半导体量子点日本理化学研究所的国际研究小组利用硅基半导体制作的量子点成功实现量子计算机所需的操作精度,克服了量子计算机实用化开发的一大技术难题。该成果发表在自然上。量子计算机容易发生计算错误,自动续费套路多智能手机时代,很多手机应用都有付费会员功能,本来付费就是为了享受更多更好的服务,可不少人开通付费会员功能后,却遇到了自动续费的各种套路。自动续费的字样,有时候字体很小,很难看清,取CentOS7下FreeSwitch1。8源码安装过程完整记录1yum安装相关的依赖包yuminstallygitgcccwgetalsalibdevelautoconfautomakebisonbroadvoicedevelbzip2cur申通超低价激励,顺丰20亿回购股份,快递巨头股权激励一申通超低价激励对快递企业而言,去年伴随着行业进行了一场较为惨烈的洗牌。在激烈的竞争中,申通快递今年率先推出了快递公司的首份股权激励计划。2月15日,申通快递发布公告,本次股权计划SpaceX星链在15国平均下载速度超过100Mbps财经网科技3月17日讯,据网易科技消息,全球宽带网络速度测试网站Speedest。net运营商Ookla发布最新数据显示,尽管SpaceX旗下星链卫星互联网服务刚刚完成测试阶段,但远控节点上,切换用户执行命令ansibleplaybook登录远控节点是一个账号,切换到root账号执命令。需要在hosts文件里配置用户密码namechangeuserremoteuserubuntugatherfactsnobecom央视315晚会起底直播乱象直播平台佣金高达50随着2022年央视315晚会的落幕,又一批在消费领域违法侵权的现象被曝光。今年晚会以公平守正安心消费为主题,第一个节目直指直播领域乱象,除了经营管理的乱象外,直播平台高达50的佣金原材料上涨推高成本比亚迪等新能源车企掀起涨价潮本报记者矫月见习记者李昱丞新能源汽车的成本压力正向需求端传导。3月15日夜间,比亚迪在官方微博发布通知,自3月16日零时起对王朝网和海洋网相关新能源车型的官方指导价进行调整,上调幅二线集团撞期正面交锋,荣耀Redmi同时祭出杀招,华为再躺枪还有几十分钟,这个月备受关注的两场新品发布会就要开始,荣耀Magic4系列和RedmiK50系列将加入新机市场的争夺。这两个品牌从创立之初就不可避免地受到了一线母品牌的影响,Red
数字人民币加快试点步伐流通服务层蕴藏隐形冠军随着试点城市的不断增加以及受理场景的逐步铺开,数字人民币正在引发越来越多的讨论。众所周知,数字人民币和支付机构的关系一直是业内的关切点,坊间也流传着数字人民币就是要取代第三方支付的鸿蒙直打安卓最大软肋!中企齐心才可破西方垄断,免重演阿里失败文华商韬略吴苏6月2日,华为鸿蒙系统正式发布,Mate40系列领衔更新。中国企业为外资安卓打工,巨头谷歌靠垄断躺赚的日子会终结吗?在此之前,即使贵为行业巨头的中国手机品牌,也要无条垃圾信息入侵iPhone相册背后单条价格低至6分钱,日发80万条垃圾信息正以无孔不入的方式入侵我的iPhone。如果不是要给朋友发几张照片,家住北京的于女士并未注意到自己的iPhone相册里,竟多了5条共享相簿请求。全是给某平台点赞涨粉的垃圾信麒麟新芯片初具雏形,虽无缘三大代工企业,却找到重要突破口如今,华为的芯片问题已经不是一家公司的问题,更是受到了社会各界的普遍关注,有一点风吹草动就会引起很大反响。在经过了去年的事件之后,很多人都认为华为的芯片不能再继续研发了,但是最近却原来,磷酸铁锂才是小鹏P7的解药众所周知,小鹏P7已经实现交付近一年的时间,但是参考特斯拉Model3比亚迪汉两款直接竞品,前者在销量上其实是存在可进步空间的,那么您会给它的综合表现打多少分?刚刚结束的上海车展,发生了什么?电商三巨头一夜飙升2500亿,蔚来也涨疯了中国基金报记者金宥智周二美股表现平淡,但中概股却十分亮眼。618号角吹响,电商三巨头飙升超2500亿,拼多多更是涨超11。刚公布5月交付数据的新能源车中概股也普涨,三家公司市值共大史上最贵离婚案敲定!前妻一次性拿走2400亿后,贝索斯还是世界首富点击上方蓝字,关注21君走进经济生活里的一切导读备受全球关注的亚马逊CEO杰夫贝索斯(JeffBezos)离婚案终于有了新进展!据报道,贝索斯前妻麦肯齐放弃300亿美元财富,让贝索千元机也有旗舰级体验魅族智能冻结3。0绝了!网友良心大厂大赞一直以来,安卓手机的流畅度都备受用户诟病,而且还有不少流氓应用,不断在后台自启动,拖慢手机系统的运行速度,给用户带来了非常不好的使用体验。同时,还有越来越多的用户开始误认为手机硬件iPadAir3100充电实测一定要扔掉它iPadAir30100充电实测扔掉你的原装充电器吧苹果于北京时间3月26日凌晨1点召开了2019年春季发布会,这同时也是苹果在2019年举办的第一场发布会。与以往不同,本次发布会瑞幸咖啡回应4500万抵押为保证资产价值最大化我们刚完成B轮融资,手里有足够的现金。瑞幸咖啡联合创始人兼CMO杨飞高调发声仅四个月,瑞幸咖啡就迫不及待通过抵押咖啡机奶箱粉仓获得中关村租赁4500万元融资,引发了市场的质疑。一时中国移动光纤猫自带WiFi功能,还需要买路由器吗?我自己家里就是用的移动光猫,我觉得,要不要再买路由器,需要根据你的自身情况来看1。家里wifi设备多移动光猫最大支持802。11n协议。(至少我家里用的是这种),默认是一根天线发送