我需要一个极其紧凑的 UUID,越短越好。
\n为此,我写道:
\n public String getBase36UIID() {\n // More compact version of UUID\n String strUUID = UUID.randomUUID().toString().replace("-", "");\n return new BigInteger(strUUID, 16).toString(36);\n }\nRun Code Online (Sandbox Code Playgroud)\n通过执行这段代码,我得到,例如:
\n5luppaye6086d5wp4fqyz57xb\nRun Code Online (Sandbox Code Playgroud)\n这很好,但还不是最好的。Base 36 使用所有数字和小写字母,但不使用大写字母。
\n如果可以使用大写字母作为与小写字母分开的数字,则可以推导出以 62 为基数的数字,该数字由以下数字组成:
\n0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\nRun Code Online (Sandbox Code Playgroud)\n我还可以使用重音字符(例如“\xc3\xa8”或“\xc3\xa9”)或特殊字符(例如“$”或“!”)来理论化数字基数,从而进一步增加可用的位数。
\n然而,使用这些重音字符或特殊字符可能会给我带来问题,所以目前我不想考虑它们。
\n在所有这些前提之后,我如何将代表我的 UUID 的 BigInteger 转换为上面理论上的 62 基数,以使其更加紧凑?谢谢
\n我已经验证过像下面这样的代码是不可用的,因为每个超过 36 的基数都被视为基数 10:
\nreturn new BigInteger(strUUID, 16).toString(62);\nRun Code Online (Sandbox Code Playgroud)\n毕竟,在数学中并没有我想象的基数 62,但我认为在 Java 中可以创建它。
\n是否可以在同一个 Codename One 项目中使用更多 CSS?
用例 1:我想在应用程序的不同部分使用不同的样式,或者我想完全替换当前的样式。
用例 2:我希望当前样式源自多个 CSS,例如在网页中
我有以下代码。因为该@Id值是在my中顺序生成的MariaDB,所以这是不安全的:我需要在客户端中公开它。这就是为什么我想要一个不可预测的random @Id。我应该如何更改代码?
@Entity
public class Item implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id; // Automatic generated value
// other fields, getters, setters & constructors
}
Run Code Online (Sandbox Code Playgroud)