×

短网址链接生成器

短网址链接生成器(网址生成的二维码有时间限制吗)

admin admin 发表于2023-05-30 09:38:38 浏览33 评论0

抢沙发发表评论

本文目录

网址生成的二维码有时间限制吗

推荐使用“二维斑马”这个二维码生成器。

将网址链接制成静态二维码是没有任何时间限制的,终身有效且免费使用。

制作成动态二维码的话是按照时间来付费的,但是动态二维码可以追踪最实时的扫描数据,还可以随时更改二维码背后的网址链接,无需对二维码进行任何改动。

网址二维码是什么怎么做的

一个非常好的问题。网址二维码就是把网址信息保存到了二维码中。

一,初识二维码

二维码是特定的按一定规律在平面分布的图形,这些图形黑白相间,记录数据符号信息,通过图象输入设备或光电扫描设备自动识读。

既然二维码是保存信息的,那么网址也可以保存到二维码中。

二,在线生成二维码

二维码的使用场景非常多,也有很多简单易用的生成工具。

推荐一个在线二维码生成网站,只需简单3步。

1,选择二维码类型

2,输入网址

3,将生成的二维码图片保存

有没有免费的短网址工具

我是@程序员小助手, 本文从技术角度,对短网址进行深度挖掘。

前言

网上已经有产品,用着还不错。可是,作为程序员,从零开始造轮子,开发一个属于自己的短网址服务器,这想法amazing!

通过本文,读者可明白短网址的技术原理,以及通过Go语言实现一个短网址服务。

简明教程

短网址为什么存在?

微博等产品的兴起,活跃了网上的社交圈内大多数用户。但是微博一般有140字限制,如果不转发,单纯评论文字,再加上一段网址,极有可能超过限制而被截断。

短网址应运而生,用较短的一个字符串,替换较长的一个字符串,从观感上讲,效果要友好的多。

从技术原理上说,短网址是一个hash表,用于映射两个字符串的对应关系。

使用键,找到对应的值,重定向进行访问,就完成了整个流程。

短网址算法

短网址的一般结构,比如新浪的 SwuTjn,其中后端的一段6位字符串,就是用来唯一标记一条记录的ID。那么,使用什么算法,可以生成一条无重复的ID呢?

使用通用的做法,使用 0-9 A-Z a-z 一共62个字符,我们看使用hash键位数分别有多少种排列组合情况。

  • 1位:pow(62,1) = 62 种

  • 2位:pow(62,2) = 3844 种

  • 3位:pow(62,3) = 238328 种

  • 4位:pow(62,4) = 14776336 种

  • 5位:pow(62,5) = 916132832 种

  • 6位:pow(62,6) = 56800235584 种

一般情况下,6个字符,就足够使用了,共计568亿种可能。

还有一种情况是,用原网址字符串的MD5值,共计32位,然后通过切分为4段,分别按位与运算,并裁剪到30位。间隔5位选出该位的字符作为该段索引,共有6位。但是这种做法也有几率发生重复,也不直观。

因此本文使用第一种算法生成键ID。

工具准备

分析短网址的特性,包含以下项目:

  1. 唯一性:键需要全局唯一
  2. 时效性:键需要有过期时间
  3. 目标网址唯一,如果重复,则自动返回既有的键。

考虑到上述情形,我们使用redis存储这些对应关系。使用Gin框架作为路由和控制器,提供对外的API访问。

核心函数

计算机中常见的2进制,8进制,10进制,16进制,我们此处需要使用62个字符,循环表示一个整数,那么可称之为62进制。

下面使用go语言实现这个函数,用于将任意的整数(uint64)转换为(0-9A-Za-z)的字符串。

需要注意,基础的方法,就是循环取余数,根据进制字典,索引相应的字符,然后将各个余数拼接出来,就是结果。

这个计算方法,与2进制,8进制,原理是相同的。

由于字典比较长,有62个键值对,我们仅列出一部分。

上述函数的转换结果,类似于 6489264001 = 75ai0p

功能规划

下面是对于系统路由,创建短链接,以及使用短链接访问目标网址的方法。

1 - 规划路由

路由比较简单,一共2个,一个POST方法,生成短链接;一个是GET方法,访问短链接。

代码如下:

2 - 引入redis并初始化

为了方便演示,我们使用redis存储键值,并设置expire时间。

“github.com/gin-gonic/gin“ “github.com/go-redis/redis/v7“

我们使用go-redis提供的接口操作redis数据库。

下面是全局的

redis.Client

对象生成,和初始化函数。

这样做的好处是,我们全局都可以使用变量 rdb 调用方法操作redis键值。

3 - 实现POST路由方法:add

本函数用于接收form表单数据,生成一个全局唯一的 hash ,作为键,存入redis,设置值和过期时间。

代码如下:

本段我们使用了一个 getCounter 函数,这是设置在redis内的键,将其每次请求创建的时候,自增+1,可保证无重复。根据这个计数器,我们调用 helper的 DecToAny 方法,将其转化为62进制的字符串,作为全局唯一的 hash 值。

下图是 getCounter 的定义:

特别注意的是,helper包,就是我们在“核心函数”部分定义的函数。在主函数体内引用。

4 - 实现GET方法:visit

本函数主要用于使用上一节接口生成的短链接,进行访问,并自动重定向到目标网址。

代码如下:

对于不存在的短链接,或者redis获取失败,返回错误信息。

如果存在,使用 301 = StatusMovedPermanently 状态码重定向到目标地址。

测试

我们使用curl工具,测试上述两个接口。

首先,使用POST表单提交数据:

curl -s -X POST -d “target=

Happy coding :-)

【本文由 @程序员小助手 发布,持续分享编程与程序员成长相关的内容,欢迎关注】

你收藏了哪些小众又非常好用的网页版工具软件

28个实用“工具类”网站,一次性打包给你们!都是精选出来的哟,和大家交个朋友~

目录如下:

  • 导航类(8个)
  • 图形处理类(8个)
  • 素材类(4个)
  • 生成器类(4个)
  • 格式转换类(2个)
  • 其他(2个)

一、导航类

简视频:视频创作网站导航

搜图导航:图片搜索网站导航

考拉新媒体导航:新媒体人必备的工具导航

CXY521:程序员导航

HiPPTer:PPT模板素材综合导航站

24k导航:综合类导航,其中还整理了好几类职业导航,有设计师、媒体运营、Web前端、产品经理、人力资源、市场营销、建筑设计、会计财经、律师法务等

工具猫:综合类平台,其中包括辟谣平台、数据源集、视频制作、编程算法、外语学习、工具效率、社区资讯等。

熊猫搜书:电子书搜索导航

二、图形处理类

亿图图示:综合绘图软件,支持在线绘制流程图、思维导图、组织结构图、软件架构图、甘特图、电路图、商业画布等260+图形图表,全拖拽式操作,几乎零学习成本。

创客贴:零基础在线设计网站,小白也能轻松设计出好看的新媒体封面图、营销海报、易拉宝海报等。里面还有个一键抠图的功能,非常方便。

Pixso:原型、设计、交付、协作、资源管理一体化设计平台,大家可以理解为在线版sketch,可以在设计师、产品经理、开发之间实现高效协同。

MindMaster:全平台思维导图软件,最值得一提的是它的导图社区,拥有10W+作品,覆盖读书笔记、考研考证、职场技能等领域。

remove.bg:和创客贴的一键抠图功能一样,但这个网站免费可用。

Photopea:在线版Photoshop,如果电脑没有安装 Photoshop,又临时要做一些简单的图片排版或图片修改处理的话,Photopea 完全能够胜任。而且还不用到处找破解版资源。

Online Image Tool:在线一键压缩和转换图片,压缩快,图片质量基本不会有损失,无使用限制

Bigjpg:免费图片智能放大网站,区别于使用PS或其他图形打开软件的放大方法,放大的图片后不会有明显的模糊感,边缘的重影以及噪点。

三、素材类

iconfont:阿里巴巴免费矢量图标库,贼好用,谁用谁知道。

100font:一个专门收集免费商用字体的网站

Videvo:4k免费视频素材网站

coverr:免费网页背景素材图库

四、生成器类

草料二维码:二维码生成器,可以一键将文本、文件、图片、音视频、链接等转成二维码

百度短网址:短网址生成器,就是将长链接快速转成短链接

Blobmaker:不规则圆形生成器,适合用在一些PPT制图上

Wordart:云文字生成器,免费一键生成云文字

五、格式转换类

Convertio:说到格式转换,Convertio就是最强王者。支持超300种不同的文件格式(不止图像、文档,还有音频、视频、电子书、向量等)间超过25600种不同的转换方式。数量全面超越其他任何转换器。使用Convertio转化文件格式时,无需登录账号,而且下载转换后的文件也没有水印。

PDF派:专门转PDF文件的在线工具,免费,无限次使用,无需注册即可使用

六、其他

奶牛快传:免费在线文件传输,比用WX、BD方便快多了

白描网页版:一款在线提取图片中的文字的网站

把这些收藏多年的工具都分享出来了,应该足够让我们做个“点赞之交”的朋友吧~