短网址生成网站源码(短链接源码是什么意思)

:暂无数据 2026-08-30 15:40:09 :0

短网址生成网站源码(短链接源码是什么意思)

本篇文章给大家谈谈短网址生成网站源码,以及短链接源码是什么意思对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

短链接源码是什么意思

是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。短链接一经生成不会变化。链接是指电子计算机程序的各个模块之间传递参数和控制命令。

为什么有的URL长,有的短


Java代码实现如下:
/**
* 进制转换工具,最大支持十进制和62进制的转换
* 1、将十进制的数字转换为指定进制的字符串;
* 2、将其它进制的数字(字符串形式)转换为十进制的数字
* @author xuliugen
* @date 2018/04/23
*/
public class NumericConvertUtils {
/**
* 在进制表示中的字符集合,0-Z分别用于表示最大为62进制的符号表示
*/
private static final char digits = {’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’,
’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’};
/**
* 将十进制的数字转换为指定进制的字符串
* @param number 十进制的数字
* @param seed 指定的进制
* @return 指定进制的字符串
*/
public static String toOtherNumberSystem(long number, int seed) {
if (number 《 0) {
number = ((long) 2 * 0x7fffffff) + number + 2;
}
char;
int charPos = 32;
while ((number / seed) 》 0) {
buf;
number /= seed;
}
buf;
return new String(buf, charPos, (32 - charPos));
}
/**
* 将其它进制的数字(字符串形式)转换为十进制的数字
* @param number 其它进制的数字(字符串形式)
* @param seed 指定的进制,也就是参数str的原始进制
* @return 十进制的数字
*/
public static long toDecimalNumber(String number, int seed) {
char charBuf = number.toCharArray();
if (seed == 10) {
return Long.parseLong(number);
}
long result = 0, base = 1;
for (int i = charBuf.length - 1; i 》= 0; i--) {
int index = 0;
for (int j = 0, length = digits.length; j 《 length; j++) {
//找到对应字符的下标,对应的下标才是具体的数值
if (digits) {
index = j;
}
}
result += index * base;
base *= seed;
}
return result;
}
}
/**
* Twitter的SnowFlake算法,使用SnowFlake算法生成一个整数,然后转化为62进制变成一个短地址URL
* @author beyond
* @author xuliugen
* @date 2018/04/23
*/
public class SnowFlakeShortUrl {
/**
* 起始的时间戳
*/
private final static long START_TIMESTAMP = 1480166465631L;
/**
* 每一部分占用的位数
*/
private final static long SEQUENCE_BIT = 12; //序列号占用的位数
private final static long MACHINE_BIT = 5; //机器标识占用的位数
private final static long DATA_CENTER_BIT = 5; //数据中心占用的位数
/**
* 每一部分的最大值
*/
private final static long MAX_SEQUENCE = -1L ^ (-1L 《《 SEQUENCE_BIT);
private final static long MAX_MACHINE_NUM = -1L ^ (-1L 《《 MACHINE_BIT);
private final static long MAX_DATA_CENTER_NUM = -1L ^ (-1L 《《 DATA_CENTER_BIT);
/**
* 每一部分向左的位移
*/
private final static long MACHINE_LEFT = SEQUENCE_BIT;
private final static long DATA_CENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
private final static long TIMESTAMP_LEFT = DATA_CENTER_LEFT + DATA_CENTER_BIT;
private long dataCenterId; //数据中心
private long machineId; //机器标识
private long sequence = 0L; //序列号
private long lastTimeStamp = -1L; //上一次时间戳
/**
* 根据指定的数据中心ID和机器标志ID生成指定的序列号
* @param dataCenterId 数据中心ID
* @param machineId 机器标志ID
*/
public SnowFlake(long dataCenterId, long machineId) {
if (dataCenterId 》 MAX_DATA_CENTER_NUM || dataCenterId 《 0) {
throw new IllegalArgumentException("DtaCenterId can’t be greater than MAX_DATA_CENTER_NUM or less than 0!");
}
if (machineId 》 MAX_MACHINE_NUM || machineId 《 0) {
throw new IllegalArgumentException("MachineId can’t be greater than MAX_MACHINE_NUM or less than 0!");
}
this.dataCenterId = dataCenterId;
this.machineId = machineId;
}
/**
* 产生下一个ID
* @return
*/
public synchronized long nextId() {
long currTimeStamp = getNewTimeStamp();
if (currTimeStamp 《 lastTimeStamp) {
throw new RuntimeException("Clock moved backwards. Refusing to generate id");
}
if (currTimeStamp == lastTimeStamp) {
//相同毫秒内,序列号自增
sequence = (sequence + 1) & MAX_SEQUENCE;
//同一毫秒的序列数已经达到最大
if (sequence == 0L) {
currTimeStamp = getNextMill();
}
} else {
//不同毫秒内,序列号置为0
sequence = 0L;
}
lastTimeStamp = currTimeStamp;
return (currTimeStamp - START_TIMESTAMP) 《《 TIMESTAMP_LEFT //时间戳部分
| dataCenterId 《《 DATA_CENTER_LEFT //数据中心部分
| machineId 《《 MACHINE_LEFT //机器标识部分
| sequence; //序列号部分
}
private long getNextMill() {
long mill = getNewTimeStamp();
while (mill 《= lastTimeStamp) {
mill = getNewTimeStamp();
}
return mill;
}
private long getNewTimeStamp() {
return System.currentTimeMillis();
}
public static void main(String args) {
SnowFlake snowFlake = new SnowFlake(2, 3);
for (int i = 0; i 《 (1 《《 4); i++) {
//10进制
Long id = snowFlake.nextId();
//62进制
String convertedNumStr = NumericConvertUtils.toOtherNumberSystem(id, 62);
//10进制转化为62进制
System.out.println("10进制:" + id + " 62进制:" + convertedNumStr);
//TODO 执行具体的存储操作,可以存放在Redis等中
//62进制转化为10进制
System.out.println("62进制:" + convertedNumStr + " 10进制:" + NumericConvertUtils.toDecimalNumber(convertedNumStr, 62));
System.out.println();
}
}
}
//生成结果:
10进制:185784275776581632 62进制:dITqmhW2

易语言能读取短网址吗现在很多网址都被缩短了,用易语言直接能获得网页源码吗

易语言的==================》》》求采纳

请问怎么在易语言上面做一个网址记录器,还有易语言一按按钮在网址生成多个短网址、求源码啊,求求大神!

这个要看你网站的数据库。。。每一次访问数据库都会记录,这种东西必须是本人才做得出啊来。j

短链接源码是什么意思的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于短链接源码是什么意思、短链接源码是什么意思的信息别忘了在本站进行查找哦。

短网址生成网站源码(短链接源码是什么意思)

本文编辑:admin

更多文章:


英语网站的英文(网站英文怎么写)

英语网站的英文(网站英文怎么写)

大家好,今天小编来为大家解答以下的问题,关于英语网站的英文,网站英文怎么写这个很多人还不知道,现在让我们一起来看看吧!

2026年11月3日 18:50

百度推广账户优化(百度推广优化是怎么做的)

百度推广账户优化(百度推广优化是怎么做的)

这篇文章给大家聊聊关于百度推广账户优化,以及百度推广优化是怎么做的对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年11月3日 18:40

中国建设银行手机银行app(中国建设银行app怎么免密登录)

中国建设银行手机银行app(中国建设银行app怎么免密登录)

大家好,关于中国建设银行手机银行app很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于中国建设银行app怎么免密登录的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮

2026年11月3日 18:30

个人简历制作方法(个人简历如何制作)

个人简历制作方法(个人简历如何制作)

各位老铁们好,相信很多人对个人简历制作方法都不是特别的了解,因此呢,今天就来为大家分享下关于个人简历制作方法以及个人简历如何制作的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年11月3日 18:10

百度关键词优化师(百度推广关键词规划师在哪里,怎么用)

百度关键词优化师(百度推广关键词规划师在哪里,怎么用)

大家好,百度关键词优化师相信很多的网友都不是很明白,包括百度推广关键词规划师在哪里,怎么用也是一样,不过没有关系,接下来就来为大家分享关于百度关键词优化师和百度推广关键词规划师在哪里,怎么用的一些知识点,大家可以关注收藏,免得下次来找不到哦

2026年11月3日 17:40

快速开发平台社区(java程序员经常去哪些网上社区论坛)

快速开发平台社区(java程序员经常去哪些网上社区论坛)

大家好,关于快速开发平台社区很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java程序员经常去哪些网上社区论坛的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年11月3日 16:40

顺口的公司名字(比较顺口的公司名字推荐大气招财公司取名)

顺口的公司名字(比较顺口的公司名字推荐大气招财公司取名)

各位老铁们好,相信很多人对顺口的公司名字都不是特别的了解,因此呢,今天就来为大家分享下关于顺口的公司名字以及比较顺口的公司名字推荐大气招财公司取名的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年11月3日 16:30

seo和sem的区别(SEO和SEM有什么不一样)

seo和sem的区别(SEO和SEM有什么不一样)

今天给各位分享SEO和SEM有什么不一样的知识,其中也会对SEO和SEM有什么不一样进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年11月3日 15:20

福州做网站互联网公司(福州协宏网络科技有限公司怎么样)

福州做网站互联网公司(福州协宏网络科技有限公司怎么样)

本篇文章给大家谈谈福州做网站互联网公司,以及福州协宏网络科技有限公司怎么样对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年11月3日 13:00

项目推广是做什么的?项目推广有哪些分类

项目推广是做什么的?项目推广有哪些分类

各位老铁们,大家好,今天由我来为大家分享项目推广,以及项目推广是做什么的的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年11月3日 12:10

最近更新

mate40pro配置(华为mate40pro参数)
2026-11-03 19:20:19 浏览:0
荣耀magicboo(荣耀magicbook14-2021锐龙版有触屏功能吗-支持触屏吗)
2026-11-03 19:10:16 浏览:0
英语网站的英文(网站英文怎么写)
2026-11-03 18:50:12 浏览:0
热门文章

flash cs6怎么下载(Adobe Flash CS6 Professional在哪下能破解吗)
2026-07-24 09:40:17 浏览:8
标签列表