做电影网站怎么降低内存/百度官方网站
雪花算法生成ID是一个64位长整型(但是也可以通过优化简短位数)
组成部分:
时间戳
机器ID
序列号
用途:
分布式系统唯一ID生成:解决数据库自增ID在分布式环境下的唯一性问题、避免UUID的无序性和性能问题
有序性保障:
时间戳部分保证ID全局趋势递增(适合数据库索引优化)、同一结点生成的ID按时间严格递增
高并发场景
可以用来生成用户唯一id,在做聊天室这个项目时我的用户id就是用雪花算法来完成的
uuid也可以直接用雪花算法完成
以下是生成14位的id代码
public class PasswordGenerator {// 定义字符集(可根据需求调整)private static final String LOWERCASE = "abcdefghijklmnopqrstuvwxyz";private static final String UPPERCASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";private static final String NUMBERS = "0123456789";private static final String SPECIALS = "!@#$%^&*()-_=+[]{}|;:,.<>?";private static final SecureRandom RANDOM = new SecureRandom();private static final int PASSWORD_LENGTH = 8;// 禁止实例化private PasswordGenerator() {}public static String generateStrongPassword() {StringBuilder password = new StringBuilder(PASSWORD_LENGTH);// 确保包含每种字符类型至少一个password.append(randomChar(LOWERCASE));password.append(randomChar(UPPERCASE));password.append(randomChar(NUMBERS));password.append(randomChar(SPECIALS));// 填充剩余位置String allChars = LOWERCASE + UPPERCASE + NUMBERS + SPECIALS;for (int i = 4; i < PASSWORD_LENGTH; i++) {password.append(randomChar(allChars));}// 打乱字符顺序char[] chars = password.toString().toCharArray();for (int i = 0; i < chars.length; i++) {int randomIndex = RANDOM.nextInt(chars.length);char temp = chars[i];chars[i] = chars[randomIndex];chars[randomIndex] = temp;}return new String(chars);}private static char randomChar(String charSet) {return charSet.charAt(RANDOM.nextInt(charSet.length()));}
}
可直接调用generateStrongPassword()方法来生成id
MD5是一种广泛使用的哈希函数,由 Ron Rivest 在 1991 年设计。它的主要作用是将任意长度的数据转换为 128位(16字节)固定长度的哈希值
核心特性:固定长度输出、不可逆性、抗碰撞性、计算速度快
MD5 的唯一合理用途:非安全场景的快速数据校验(如非敏感文件校验)
将用户的密码存入数据库时需用到