小编Fra*_*ani的帖子

极其紧凑的 UUID(使用所有字母数字字符)

我需要一个极其紧凑的 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    }\n
Run Code Online (Sandbox Code Playgroud)\n

通过执行这段代码,我得到,例如:

\n
5luppaye6086d5wp4fqyz57xb\n
Run Code Online (Sandbox Code Playgroud)\n

这很好,但还不是最好的。Base 36 使用所有数字和小写字母,但不使用大写字母。

\n

如果可以使用大写字母作为与小写字母分开的数字,则可以推导出以 62 为基数的数字,该数字由以下数字组成:

\n
0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\n
Run Code Online (Sandbox Code Playgroud)\n

我还可以使用重音字符(例如“\xc3\xa8”或“\xc3\xa9”)或特殊字符(例如“$”或“!”)来理论化数字基数,从而进一步增加可用的位数。

\n

然而,使用这些重音字符或特殊字符可能会给我带来问题,所以目前我不想考虑它们。

\n

在所有这些前提之后,我如何将代表我的 UUID 的 BigInteger 转换为上面理论上的 62 基数,以使其更加紧凑?谢谢

\n

我已经验证过像下面这样的代码是不可用的,因为每个超过 36 的基数都被视为基数 10:

\n
return new BigInteger(strUUID, 16).toString(62);\n
Run Code Online (Sandbox Code Playgroud)\n

毕竟,在数学中并没有我想象的基数 62,但我认为在 Java 中可以创建它。

\n

java math

7
推荐指数
1
解决办法
2772
查看次数

多个代号一个 CSS

是否可以在同一个 Codename One 项目中使用更多 CSS?

用例 1:我想在应用程序的不同部分使用不同的样式,或者我想完全替换当前的样式。

用例 2:我希望当前样式源自多个 CSS,例如在网页中

codenameone

5
推荐指数
1
解决办法
187
查看次数

为实体生成不可预测的随机@Id

我有以下代码。因为该@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)

java hibernate spring-data

3
推荐指数
2
解决办法
3994
查看次数

标签 统计

java ×2

codenameone ×1

hibernate ×1

math ×1

spring-data ×1