本文目录
网址生成的二维码有时间限制吗
推荐使用“二维斑马”这个二维码生成器。
将网址链接制成静态二维码是没有任何时间限制的,终身有效且免费使用。
制作成动态二维码的话是按照时间来付费的,但是动态二维码可以追踪最实时的扫描数据,还可以随时更改二维码背后的网址链接,无需对二维码进行任何改动。
网址二维码是什么怎么做的
一个非常好的问题。网址二维码就是把网址信息保存到了二维码中。
一,初识二维码
二维码是特定的按一定规律在平面分布的图形,这些图形黑白相间,记录数据符号信息,通过图象输入设备或光电扫描设备自动识读。
既然二维码是保存信息的,那么网址也可以保存到二维码中。
二,在线生成二维码
二维码的使用场景非常多,也有很多简单易用的生成工具。
推荐一个在线二维码生成网站,只需简单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。
工具准备
分析短网址的特性,包含以下项目:
- 唯一性:键需要全局唯一
- 时效性:键需要有过期时间
- 目标网址唯一,如果重复,则自动返回既有的键。
考虑到上述情形,我们使用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方便快多了
白描网页版:一款在线提取图片中的文字的网站
把这些收藏多年的工具都分享出来了,应该足够让我们做个“点赞之交”的朋友吧~