场景: 模拟营销短信中的短链接 (支持高并发)
import org.apache.commons.lang3.StringUtils; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * @author tao.liu * @desc 短链接算法 * @email 18827498006@163.com */ public class ShortUrl { /** * 开始时间截 (2019-01-01) */ private final long twepoch = 1546272000L; /** * 机器id所占的位数 */ private final long workerIdBits = 5L; /** * 数据标识id所占的位数 */ private final long datacenterIdBits = 5L; /** * 支持的最大机器id,结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */ private final long maxWorkerId = -1L ^ (-1L << workerIdBits); /** * 支持的最大数据标识id,结果是31 */ private final long maxDatacenterId = -1L ^ (-1L << datacenterIdBits); /** * 序列在id中占的位数 */ private final long sequenceBits = 12L; /** * 机器ID向左移12位 */ private final
