短地址

利用api生成短地址 利用API生成短地址 阅读详情

 

web站点和wap站点本身的url实在是太长,其中有一些是历史遗留问题,有一些是不得不为之。而像专题活动这类的,很多时候需要用来营销。一个很长的url地址,太长, 不好看,所以就需要把长地址转为短地址。而就想新浪微博那样,你分享的帖子链接,会被自动转换为url.xxx的短地址类似。

短地址分为两个服务,一个是解析短地址(decode),一个是生成短地址(encode)。当然,其中也还涉及到缓存,负载均衡等问题。若一台服务器不能满足服务要求,那么负载均衡也就是势在必行了。

生成短地址,顾名思义,就是把web或wap的长地址转换为短地址。而短地址采用什么形式的编码呢。现在比较流行的,貌似是用[1-9|A-Z|a-z]共62个字符作为62进制编码使用。(ps:一开始没去网上看,后来做好了,想去看看别人是怎么做的,发现蛮多人都是这样的想法。)另外,涉及到方便营销,所以A-Z开头的短地址用于web站点,a-z开头的短地址用于wap站点,而0-9开头的短地址,就作为手工配置的预案,用于配置特别的短地址。

在上面的短地址分类中,A-Z开头和a-z开头的短地址,是通过httpInvoke来提供service服务。web站点和wap站点通过spring httpinvoke来调用。

缓存采用memcache。使用现有的四台缓存服务器来做缓存。如0001的短地址,对应http://www.ww.com?ca=2长地址;那么就会缓存有两个键值对,其中一个key为0001,value为http://www.ww.com?ca=2,另外一个key就是长地址,value为短地址。前者用于解析,后者用于生成。

生成短地址时,涉及到同步的问题,要考虑到短地址生成请求不会用同一个短地址生成,所以就做了如下的设计:

1.短地址与长地址的key-value匹配记录,在数据库中的主键ID和生成的短地址shortUrl形成一一对应。主键ID作为十进制数字,shoryUrl作为62进制数字。两者在数值上相等,如此就可以以主键ID对应短地址。(ps:0-9开头的特殊配置也可遵照这个规则)。

2.同步点,肯定不能在dao访问数据库insert数据时做同步控制。那么应该如何做呢?直接在内存里维护一个短地址最大编码对应的主键ID,写一个函数仅对这个主键ID做同步控制:

每个新的短地址请求,若在缓存中没有相应长地址的短地址存在,就会获取一个可用的短地址编码(已存在的短地址最大主键ID+1),再调用dao insert 到db,若insert成功,则写入缓存,保留24小时。

而考虑到若由于网络或服务器的问题,产生访问数据库异常或其他问题,导致短地址浪费,所以定义一个内存map,用于存储dao insert异常的短地址。便于回收利用,并设置其最大数目,若超过则不生产新的短地址编码,而全部从map中获取,并提供日志报警。

又有一个新的问题,分布式情况下怎么办呢。这的确是相对前面比较棘手的问题。考虑之后,方案有以下几种:

1.memcache同步策略。采用memcache存储短地址最大编码的主键ID,这样的话多台服务器可以在这个ID上做同步控制,这样的话会存在同步锁频繁情况;

2.单台同步策略。采用一台服务器提供短地址最大编码的主键ID管理的服务,其他服务器通过访问服务来同步控制,但是这个方法就需要这个项目有两个版本,不好控制。

3. IP策略。因为公司的线上服务的ip是连续的,所以可以在生成算法中做一个跃步。如有4台服务器,IP分别为1,2,3,4.那么算法中就根据IP来取4的模,取得为m,每台服务器有一个自己的最大短地址编码ID。那么第1台生成的短地址主键ID为m依次为:1,4+1,4*2+1,...,4*n+1;第2台的主键ID一次为:2,4*1+2,...,4*n+2;第3和第4台类似。这样做的好处是项目只有一个版本,只用修改服务器台数。但涉及到一个问题是,若新增一台服务器或减少一台服务器,就会造成一个段地址管理婚礼和浪费。

4.范围控制策略。即若有4台服务器,若生成的短地址主键ID范围是0-1000.那么第1台生成的范围为:0-249;第2台为250-499;第3台为501-724;第4台为725-1000。这种情况下,项目版本也只需要一个版本,通过配置下限参数和上限参数来控制每台服务器的生成范围。优点是不易造成短地址浪费,也不会造成混乱。缺点就是需要对4个服务器的部署版本的上下限参数进行限制,在管理上有一定的瑕疵。

基本就想到以上几点。最终考虑了之后,选择了第4种方案。相比前三种,第4种只需要打包的时候打成4个部署版本即可。虽然麻烦了点,但是不会有其他的那些问题。当然,也可以集合第3方案的IP策略和第4中范围控制策略,但若IP不连续,那么就会存在问题了。(ps:若一台服务器的短地址用完了,怎么办,这个可以不会有上面问题,62进制的短地址版本,若是6位的话,就是62的6次方,很多很多...,若真出现了,那么日志会报警,可以进行范围升级)

解析短地址的话,就比较简单了,不做任何同步控制(ps:没有必要)。算法:

1.先查缓存,若有短地址对应的长地址,则直接重定向到长地址,否则进入2。

2.查询数据库,若有短地址对应的长地址,则直接重定向到长地址,否则进入3。

3,判断是A-Z开头还是a-z开头,若是前者就重定向到web首页,若是后者则重定向到wap首页,若是0-9,无法判断是web或wap,则默认跳转到web首页。(ps:0-9的配置,可以精细划分为0-4为web和5-9为wap,如此就不会默认跳转的问题)。

综合分析:因为解析短地址不会有同步控制,所以并发压力不算大。而生成短地址时,是对内存中的一个变量进行同步控制,速度非常的快,并发也不会存在太大问题。现在是单台服务器在跑,至今稳定运行中,没有出现什么问题(ps:网速慢除外)。

本来一直想写一下这个短地址的方案,但是一直在忙着sms系统的改版。再接再励...^_^,以后再写写下在线竞拍系统和osgi相关的东西。

 

原文地址:http://cmsky.yingjiawujin.com/?p=95

 

智能合约漏洞——短地址攻击 基础知识 严格意义来说,短地址/参数攻击并不算智能合约的漏洞,这是一个应用上的接口数据处理问题。在介绍过得ERC20模板智能合约,其中有个transfer函数,其定义如下; function transfer(address _to, uint256 _value) returns (bool success) 实际进行调用的时候,客户端(DApp)需要发起一个交易,交易中附带对于这个智能合约函数的调用,也就是交易的data字段,它是一个字节数组。其中前4个字节是函数选择器,其后应该是这两个参数的A. 阅读详情

相关推荐

微博URL短地址lua生成算法

短地址(Short URL),或叫短网址、短链接等等,就是比较短的URL地址。借助短地址,可以将原来冗长的网址替换成简短的网址,让使用者可以更容易分享链接。在Web 2.0的今天,不得不说,这是一个潮流(我喜欢这句话,就原封不动从别人文章复制过来了)。短地址,主要应用场景是微博。微博消息限制字数为140字,如果要发一些链接,这个网址可能占用一半字数了,所以短地址就应运而生。

没有开花的树 3863

聊聊短地址及其原理

原文 短地址原理,优快云同步发布。 转载请注明出处,谢谢! 简介 一个同事遇到一个问题,他说受限于第三方的服务,自己请求所带过去的字符串因为太长,无法从第三方服务获取信息,很是苦恼????。后来我们商量了一下,最终借鉴短地址的思想解决了问题。道理很简单,因为我们请求中的附加字符串信息第三方服务只是透传回来给我们,我们只需要把这些附加信息进行字符压缩就可以了,这样请求带过去的字符串长度就满足了要求????...

CodingMan 4257

golang实战--实现短地址服务

golang写的简单的短地址服务,只做练手用,还有很多不完善的地方 TODO: 验证URL的有效性; 确认URL的协议(http、https) 数据库操作优化 现在的路由太简单了 下面贴上代码 package main import ( "database/sql" "fmt" "net/http" "io/ioutil" "encoding/json" _ "

aslackers的专栏 2961

短址(short URL)原理及其实现

前言 最近看了一些关于短址(short URL)方面的一些博客,有些博客说到一些好的东西,但是,也不是很全,所以,这篇博客算是对其它博客的一个总结吧。 介绍 短址,顾名思义,就是把长的 URL 转成短的 URL, 现在提供这种服务的有很多公司,我们以google家的 URL shortener 服务: http://goo.gl/ 为例。 首先我们到 http://goo.gl/,然后把本...

xmt1139057136的专栏 8528

Go: 短地址服务

短地址: 将长地址缩短到缩短到一个很短的地址,用户访问这个短地址可以重定向到原本的长地址。 设计HTTP Router和Handler 在HTT处理流程中加入Middleware 利用Go的interface实现可扩展的设计 利用Redis的自增长序列生成短地址 API接口: POST /api/shorten 把长地址转换为一个短地址 GET /api/info?shortlink...

手写我对你的温柔 852

数字后端实战指南 | Innovus Function ECO全流程解析(从LAB到Tapeout)

本文深入解析了在Cadence Innovus工具中进行Function ECO的全流程实战指南。从LAB环境搭建到Tapeout前的签核验证,详细拆解了Pre-mask与Post-mask ECO的核心步骤、关键命令(如ecoDesign)以及常见避坑方案。重点阐述了如何应对时序、DRC等挑战,并强调了备用单元管理与严格验证的重要性,是数字后端工程师提升综合能力的必备参考。

weixin_28452161的博客 641

短链(短地址、Short URL)

     短链接产生和流行得益于社交网络的发展。短链接可以更方便的在网络中传播,避免超出字符限制,使得分享地址更加容易并且能够统计此地址的访问信息。      下面是新浪微博API对短链接口的描述:http://open.weibo.com/wiki/API%E6%96%87%E6%A1%A3_V2#.E7.9F.AD.E9.93.BE      我们最关心的是将一个长链接转化成短链接,其他内...

weixin_33719619的博客 505

NVIDIA Isaac平台体验:Isaac Sim与Isaac ROS的快速了解

NVIDIA Isaac平台是一个专为机器人和人工智能(AI)打造的加速平台,旨在为开发者提供一个全面的工具集,以加速机器人相关应用的开发和部署。材质定义语言(MDL)是一种用于描述材质属性和行为的编程语言,能够精确地定义材质的光学特性和物理属性。NVIDIA Isaac Sim 通过支持 MDL,进一步提升了仿真环境中材质的真实感和细节表现。精确的材质定义:MDL 允许开发者精确地定义材质的光学特性和物理属性,如反射率、折射率、粗糙度和透明度等。这使得仿真环境中的物体看起来更加真实和自然。动态材质。

全世界的博客 4万+

Linux基于Redis实现短地址服务

Linux基于Redis实现短地址服务,URL 压缩,把原始长地址压缩成短地址,便于文本长度限制的场景使用(短信、社交网络、网络营销)

2301_81729384的博客 1313

4G LTE 与 5G 无线网络规划对比:从 BBU/RRU 到 CU/DU/AAU 的架构演进解析

本文深度解析4G LTE与5G无线网络架构的演进差异,从BBU/RRU分立式架构到CU/DU/AAU三级重构,揭示移动通信代际跃迁的技术本质。重点对比了网络规划中的覆盖能力、容量规划、传输网络等九大维度,为通信工程师提供实用的技术对照手册,助力5G网络高效部署。

weixin_32821533的博客 288

GEE:基于自定义的年度时序数据集进行LandTrendr变化检测

本文介绍了使用年度时序数据进行LandTrendr变化检测的方法,包括核心函数调用、参数设置和结果可视化。通过筛选参数(年份、变化幅度和持续时间)对结果进行过滤,输出变化年份、变化幅度和持续时间。代码提供了完整的处理流程,包括数据输入、LandTrendr算法运行、结果筛选与可视化,并支持结果导出。适用于基于Google Earth Engine平台的地表变化检测分析。

养乐多的博客 752

一个简易的短地址服务小练习

62进制压缩算法命令行交互系统基础访问统计功能关键收获理解短地址服务的核心原理掌握进制转换的实际应用实践C语言模块化开发。

2301_80436820的博客 1062

Android 14.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

在14.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现, 接下来就来分析实现这个功能

安卓兼职framework和app工程师的博客 1311

以太坊中的短地址攻击

1.什么叫短地址 按照字面的意思就是说这个地址比别人的要短些,那么我们都知道在以太坊中正常的化地址就是0x1234567890123456789012345678901234567800这样的,数数,它有20个字节(这个地址的表示方法是用16进制的数去表示的,所以就会有40位)。 那么我们一看这个地址后面两位也就是一个字节都是0呀,那么我们其实可以不用写最后的两位,因为以太坊机制中存在自动补0的情况,一听多么人性的操作,多么体贴就像是暖男一样,思你之所思,急你之所急,啊多么好的设计,我们就把这种地址最后两位

weixin_43977647的博客 1102

ABAP Secure Storage 在事务码 SM59 中的应用

系统管理人员在进行维护时,应关注相关日志信息,及时发现可能出现的安全异常,并针对不同安全等级的操作制定相应的备份与恢复策略,以降低潜在风险。该区域在设计上具备高度隔离性,仅允许经过授权的组件访问。保存后,系统会将密码存储在 Secure Storage 中,这种处理方式充分体现了 SAP 标准程序在安全设计上的考量。对于系统管理员而言,这种机制在日常维护与审计中提供了有力的支持,可以通过比对存储数据的哈希值或其他完整性校验手段,及时发现异常变动,保障系统长期稳定运行。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 675

UG\NX二次开发 替换部件引用集UF_ASSEM_replace_refset

替换部件引用集UF_ASSEM_replace_refset,需要替换成“完整部件(Entire Part)”需要第三个参数传入空指针或者空字符串。

王牌飞行员_里海的博客 255

Solidity学习 - 短地址攻击

在Solidity智能合约的开发领域,安全始终是重中之重。其中,短地址攻击作为一种较为隐蔽的安全漏洞,犹如一颗隐藏在暗处的“定时炸弹”,随时可能对智能合约的安全性造成严重威胁。接下来,我们将深入剖析短地址攻击的原理,通过实际案例感受其危害,并探讨有效的解决办法。

本郡主是喵 1235

Pixhawk2.4.8接口及引脚定义

pixhawk2.4.8接口定义图解

加斯顿工程师的博客 8749

短地址实现

短地址实现思路 本博文参考网上的一些博客,以及实现思路,最终确定的一个实现方法 目前项目存在一个缺陷,浏览器创建短地址,url后面的参数无法接收,暂时请大家使用ajax的方式创建,这样可以保存完整的url(包括参数) 欢迎大家在博客留言,共同讨论附加的功能 暂时代码为开源,等项目完善后开源 已经搭建公共的短地址服务器,供各位使用 接口文档 创建短地址:http://zaa.biz/crea...

weixin_46181903的博客 727

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

zigbee路由转发,短地址是否不变?

zigbee的最大特点在于自组网,而这个自组网的功能实现主要依靠路由的转发功能,路由转发的其中一个条件是当设备离协调器太远的时候,这个设备会通过一个中间路由进行转发,网络中有多个路由的情况下,会选择一个离协调器最短的路径。         最近在做一个项目,设备运行环境容易受到障碍物屏蔽信号,为了解决这个问题,我采取了两个措施:1.给zigbee加PA芯片,增强zigbee的发送和接

MENGHUANBEIKE的专栏 3603

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

基于MySQL的短地址生成系统设计与实现

本文介绍了一个基于C语言和MySQL实现的高效短地址系统。系统采用62进制转换算法生成短码,支持长地址与短地址的双向转换。架构包含用户认证、地址转换、数据统计和数据库四大模块,使用MySQL存储长短地址映射、访问日志和用户信息。核心算法实现了62进制转换与地址生成,通过自增序列确保唯一性。系统提供用户管理、地址转换、访问统计等功能,并进行了连接池、缓存等性能优化。该短地址系统结构清晰、运行高效,可扩展为分布式架构以支持更高并发需求。

2301_81453689的博客 280

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

简历上写这个短地址服务,面试直接通过了!

大量相同的长链接生成短链接请求:缓存长链接和自增号,当大量同一个长链接过来,直接从缓存服务器里返回短网址,这样就无法耗光我们的自增号了。短地址项目核心就是将长链接转换成短链接,并保证每个长链接对应唯一的短链接。:活动秒杀链接高频访问性能问题:对于可能被高频访问短链接,通过增加缓存来提高自增号对应长链接的查找速度。这个方式绕开了短链接转换成长链接,但是没有解决长链接转成短链接重复的问题。攻击的形式有2中:大量相同的长链接生成短链接请求、和大量不同的长链接生成短链接的请求。缺点是会增加服务器的压力。

程序员小奎的博客 1342

solidity 安全 合约的短地址攻击——这个锅谁来背

前一段时间,有个用户用说发交易的时候提示地址错误,后来发现发送的地址少了一字节;所以钱包检测发送地址时,会提示错误。当时也没当回事,以为是用户自己搞错了。最近研究solidity的时候,才明白了当时是怎么回事,原来这个用户遇到了短地址攻击。今天就来分析一下短地址攻击,玩ERC20的“韭菜们”都需要注意一下,否则你会发现,你的token被自己莫奇妙的都送给别人了,到时候可没地方说理去。 ...

The future is already here it's just not evenly distributed。 2291

智能合约之短地址攻击

在了解以太坊智能合约短地址攻击之前,先要简单了解一下以太坊代币ERC-20 TOKEN 的一些基础知识。ERC(EthereumRequest for Comment)即以太坊通用征求意见协议,开发者可以通过提交EIP(Ethereum Improvement Proposal以太坊改进建议),向以太坊社区提交新的ERC标准提案。ERC-20是整个加密社区中的所有标准中名气最大的,而且大多数基于以...

u010304442的博客 1276

终端发送自己的短地址给协调器

终端发送自己的短地址给协调器

无知人生,记录点滴 3517
上一篇: 在线竞拍系统-ajax轮询
下一篇: jmm相关知识点-延迟加载(DCL)
cmsky
博客等级 码龄15年 4粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值