C1N短网址 | 核心专利(1) - 基于随机字符实现的网址缩短

news2024/11/15 19:34:17

1.短链接介绍

举个例子,现在我的博客地址是这个:https://blog.csdn.net/liwei128/article/details/91358071 (55个字符),我通过短链接服务可以将上面的地址转成http://m.c1n.cn (15个字符)

那我为什么要将原有的URL转成较短的链接呢?比如我们发短信提醒用户去XXX,XXX有优惠活动,在文案上往往会带有一个链接进行跳转,方便用户快速去到对应的活动落地页。而短信的发送是需要成本的,短信的成本主要有两方面组成:发送的人数(发的人越多,自然短信的花费就越大,这个我就不解释了)短信发送的字数(比如,文案总字数超过70个字,那就算两条短信计费,超过140个字就算三条短信计费)所以在发送短信给用户时:要么就投放更加精准优质的用户,以便控制好发送的数量,要么就尽可能控制文案的字数。显然,如果在短信上配上普通的URL,那真正的文案可写的字数就没多少了。于是我们可以发现,各大公司的短信推送的URL都是短链接。

比如在一些平台发布消息时会限制字数,如果我们的发的URL过长就很容易就被限制住了。

使用短链接的好处:短、字符少、美观、便于发布、传播。

2.行业内短网址实现方案

1.将长链接通过一定的“手段”生成一个短链接。

2.访问短链接时实际访问的是短链接服务器,然后根据短链接的参数找回对应的长链接

3.重定向跳转

实际核心要做的是怎么从http://m.c1n.cn类似这样的参数找到对应的完整URL:https://blog.csdn.net/liwei128/article/details/91358071现在业内用得比较多的是发号器(ID自增)+62进制编码:为什么要用62进制转换?62进制转换是因为62进制转换后只含数字+小写+大写字母。而64进制转换会含有/,+这样的符号(不符合正常URL的字符)10进制转62进制可以缩短字符,如果我们要6位字符的话,已经有560亿个组合了。

3.现有技术待改进的点

由于将链接缩短时使用的算法规则固定,无法实现短网址按需求进行自定义,比如我想指定将https://blog.csdn.net/liwei128/article/details/91358071缩短为http://c1n.cn/csdn便于记忆、美观性。

现有的短网址方案无法自定义三级域名,比如http://m.c1n.cn。

4.我技术方案

短网址生成算法不固定,采用随机生成字符串的形式。可以满足上述自定义短网址的需求。

具体步骤:

1.用户浏览器携带原网址请求短网址服务。
2.短网址服务随机生成字符串或者用户指定字符串,并将字符串和原网址的映射关系保存到数据库(字符串重复则重新生成->保存)
3.短网址服务将服务域名和生成的随机字符拼接成完整的url(即短网址)返回给浏览器
4.用户浏览器访问短网址,短网址服务从数据库查询到短网址中随机字符对应的原网址,然后告知浏览器重定向访问原网址。
5.用户浏览器访问原网址

5.本发明的技术方案(具体实现技术细节)

1. 如何实现访问被缩短的网址依然可以进入长网址

方案:在短网址服务器中将短网址合长网址的对应关系保存下来,用户访问短链接时实际访问的是短链接服务器,然后根据短链接的参数找回对应的长链接,然后重定向跳转。

2.使用随机字符作为短链接,如何解决短链接重复冲突的问题

方案:由于使用随机数实现,难免会出现短网址重复冲突的情况,虽然短网址使用6位字符,已经有560亿个组合了,但是依然无法保证绝对不冲突。我的处理方案是从数据库查询是否有重复的短网址,如果存在,在采用随机数再生成一次,然后再次判断重复性,直到不重复位置。当短网址生成数量过之后,重复的概率会增加,导致多次循环生成,影响性能,这时候可以考虑扩展短网址长度,增加一位字符,即可扩展至62倍的组合(大小写字母、数字一共62个)

3.如何自定义三级域名的短网址

方案:首先需要修改域名解析,将三级域名的A记录全部解析到短网址服务器。然后用户访问短链接时,服务器获取到三级域名的字符串,去数据库查找对应的长网址,进行重定向。

4.当原网址部分数据丢失时,如何提升访问的成功率

方案:https://www.bing.com/search?q=%s&PC=U316&FORM=CHROM 如该网址所示,url的组成结构一般为协议://域名(或者是网址)/端口或者是所要访问的服务器资源的路径;可以根据url的组成结构将url划分多个部分,例如,将url划分为协议部分、域名部分以及其他部分。用户可以自定义的短网址,或者服务器根据用户发送的请求随机生成的短网址,并建立短网址和初始url进行划分得到的url集合建立映射关系。当用户访问短网址时,将url集合中的各个部分按照预设规则进行拼接得到初始url,重新定向至初始url所指向的服务器以访问资源。

若由于url集合中的部分数据丢失时,例如,协议部分丢失,由于常见的协议有http和https,以及一些不常见的协议,例如:mailto: ftp:,可以对各种协议设置优先级,基于优先级逐一获取协议尝试还原初始url,当其他部分丢失时,可以只拼接协议部分和域名部分,通常情况下,协议部分和域名部分组成的url为访问首页目标网站的首页,用户在首页可以根据需要跳转至具体页面。

5.已实现的效果展示:C1N短网址

6.完整的短网址使用时序图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110940.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++QT---QT-day3

使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为&…

https证书配置(nginx)

HTTPS 是什么 HTTPS 是一种应用层协议,是一种透过计算机网络进行安全通信的传输协议,HTTPS 经由 HTTP 进行通信,但是在 HTTP 的基础上引入了一个加密层,使用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是…

重磅!海云安联合深圳大学共同举行“人工智能联合实验室”揭牌仪式

2023年10月17日,大数据系统计算技术国家工程实验室-深圳海云安网络安全技术有限公司人工智能联合实验室(以下简称“联合实验室” )揭牌仪式在深圳大学致真楼图灵会议室举行。 大数据国家工程实验室执行主任李坚强、成果转化办公室主任王利、健康大数据研究中心副主任…

无代码玩转web UI自动化

可以直接进入官网下载开源版或点击右上角体验企业版体验 RunnerGo UI自动化平台 RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。 RunnerGo UI自动化基于Selenium浏览器自动化方案构建,内嵌高度…

最新AI创作系统ChatGPT网站H5源码V2.6.4+搭建部署教程+支持GPT4.0+支持ai绘画(Midjourney)/支持Prompt预设应用

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…

C语言实现面向对象编程 | 干货

前言 GOF的《设计模式》一书的副标题叫做“可复用面向对象软件的基础”,从标题就能看出面向对象是设计模式基本思想。 由于C语言并不是面向对象的语言,C语言没有直接提供封装、继承、组合、多态等面向对象的功能,但C语言有struct和函数指针。…

2023年中国精准护肤发展现状及趋势分析:未来皮肤实现定制化诊断成趋势[图]

精准护肤是深度融合光电科技与精准医学在皮肤上的实践,以皮肤问题为导向通过研究挖掘各类皮肤问题发生发展的生理机制、环境因素,找寻相应的靶点并选择活性成分与光电技术,利用现代医疗技术实现能量/成分靶向传递,并通过不同人群的…

选择低代码开发,我轻松了不少!

一、传统软件开发现状 随着对定制应用程序的需求激增,很明显传统的开发方法无法跟上。 传统的瀑布式应用程序开发过程需要许多具有高度专业化角色的人员参与。例如,该过程需要: 业务分析师创建功能需求技术分析师将这些需求转化为技术规范创建…

mysql宋红康第一篇

mysql宋红康第一篇 索引的数据结构 为什么使用索引? 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录中找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理&#xf…

前端Sortable拖拽实现排序

下载地址: https://download.csdn.net/download/dongyan3595/85111182 <script type"text/javascript" src"moduleSet.js"></script> <script type"text/javascript" src"Sortable.min.js"></script> 前端…

读《Gaitset: Regarding gait as a set for cross-view gait recognition》

2019在AAAI&#xff08;还有一版叫GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition&#xff0c;大体上一样&#xff09; 摘要 现有的步态识别方法要么利用步态模板&#xff0c;难以保存时间信息&#xff0c;要么利用保持不必要的顺序约束的步态序列&#x…

面试题解答:Spring Lifecycle 和 SmartLifecycle 有何区别?

当我们想在 Spring 容器启动或者关闭的时候&#xff0c;做一些初始化操作或者对象销毁操作&#xff0c;我们可以怎么做&#xff1f; 注意我这里说的是容器启动或者关闭的时候&#xff0c;不是某一个 Bean 初始化或者销毁的时候&#xff5e; 1. Lifecycle 对于上面提到的问题…

加密行业焦点:本周五,关注灰度GBTC转型是否有解?

密切关注比特币交易所交易基金&#xff08;ETF&#xff09;进展的投资者&#xff0c;正在将目光聚集到本周五。由于众多比特币现货ETF都被推迟到明年的一月中&#xff0c;市场现在最关注的就是灰度GBTC转型是否有解。 据报道&#xff0c;华盛顿特区的法院将在本周五发布一项命令…

10月19日星期四今日早报简报微语报早读

10月19日星期四&#xff0c;农历九月初五&#xff0c;早报微语早读分享。 1、浙江发现3000年前的夏商宫殿级遗址&#xff1b; 2、江苏省消保委&#xff1a;“萝卜刀”玩具广告应去除暴力等不良暗示&#xff1b; 3、广东个体工商户数量突破1000万户&#xff1b; 4、国家统计…

MT3520B 丝印AS20B 2A电流 2.3V-6V输入、1.5MHz同步降压转换器

MT3520B是一个1.5MH的恒定频率电流模式降压转换器。它非常适合需要单节离子电池提供高达2A电流的便携式设备&#xff0c;同时在峰值负载条件下仍能实现90%以上的效率。该MT3520B也可以运行在100%的低压差操作占空比&#xff0c;延长便携式系统的电池寿命&#xff0c;而轻载操作…

【高危安全通告】Oracle 10月月度安全漏洞预警

近日&#xff0c;安全狗应急响应中心关注到Oracle官方发布安全公告&#xff0c;共披露出在Oracle Weblogic中存在的6个高危漏洞。 漏洞描述 CVE-2023-22069&#xff1a;Oracle Weblogic 远程代码执行漏洞 Oracle WebLogic Server存在远程代码执行漏洞&#xff0c;该漏洞的CVS…

审批流程设计

审批流程界面的设计有多种多样。本文介绍其中一种形式。如下图所示&#xff1a; 做好审批流程需注意2个点&#xff0c;定制审批流程与审批环节介绍。定制审批流程&#xff0c;可以根据单据种类&#xff08;或其他因素&#xff09;定制不同的审批流环节&#xff0c;从而适应多种…

Kali Linux 安装搭建 hadoop 平台 详细教程

1&#xff09;前期环境准备&#xff1a;&#xff08;虚拟机、jdk、ssh&#xff09; 2&#xff09;SSH相关配置 安装SSH Server服务器&#xff1a;apt-get install openssh-server 更改默认的SSH密钥 cd /etc/ssh mkdir ssh_key_backup mv ssh_host_* ssh_key_backup 创建新…

idgen导入Android11源码

文章目录 配置下载AS编译源码依赖导入玩一下andorid.iml 注意&#xff1a; 有些时候发现为啥自己编译就这么难呢&#xff1f;不是卡死就无数次重启虚拟机&#xff0c;一切的原罪在配置过低&#xff0c;换句话说就是穷。关于导入源码的下载参考 Android Studio for Platform (AS…

day09_面向对象_多态_static

今日内容 1.作业 2.访问修饰符 3.static 4.多态 零、复习 私有化的单词: private 继承的关键词: extends 属性的封装 将属性私有,private提供一对儿set,get 继承的特性:(自己的话说明) 继承目的是减少重复代码,父类代码子类自己使用A extends B关于属性: 子类可以使用父类非私有…