# hs-interview **Repository Path**: befory/hs-interview ## Basic Information - **Project Name**: hs-interview - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-25 - **Last Updated**: 2021-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 环境说明 该工程采用`jdk 1.8`版本,基于`maven 3.5.3`构建的`springboot`项目; # 架构模式 该项目集成了接口文档`knife4j-spring-boot-starter`、参数验证`hibernate-validator`、`hutool-all`工具包,其中`hutool-all`工具包主要承担缓存处理作用; 项目采用常用的`mvc`开发模式,以缓存充当数据存储; 该项目使用的是单机模式; # 实现方式 根据某站统计全球大约有40亿的网址链接,从短链接属性上看,短链接一般是由[0-9a-zA-Z]字符(62位)构成,我们的要求是短链接字符长度不超过8位,而仅仅短链接固定长度为8位时最大的组合为62 的8次方`218340105584896`,远远大于40亿; 基于以上特性,由系统生成自增ID后,然后进行base62编码,具体算法如下: ```java private AtomicLong atomicLong = new AtomicLong(0); @Override public String generate() { StringBuilder sb = new StringBuilder(); long id = atomicLong.getAndIncrement(); do { int i = (int) (id % BASE.length()); sb.append(BASE.charAt(i)); id /= BASE.length(); } while (id > 0); return sb.toString(); } ``` # 测试方法 # 接口文档 项目启动后,浏览器访问 `http://127.0.0.1:8080/doc.html`