小编Ash*_*ral的帖子

Jackson json提供者linkedHashSet反序列化

我们使用Spring rest模板和jackson json提供程序来序列化/反序列化json.从我的服务中,我发送一个linkedHashSet,当我收到它时,它会转换为客户端的HashSet.因此我放松了元素的插入顺序.这是针对Set的jackson json提供程序的默认实现吗?有没有其他方法,所以它可以反序列化到正确的实现?我觉得这会很棘手,但你们会非常感激投入.

谢谢

java rest spring jax-rs jackson

11
推荐指数
1
解决办法
7932
查看次数

com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize 的用法和性能

我们遇到了 JaxB 类加载问题,如Jaxb classCastException所突出显示的那样。

为了解决这个问题,我添加了com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true,这实际上解决了问题。

然而,我读到这将禁用 Jaxb 直接与字节码交互并通过 Java Reflection API 的能力,因此在通过“ JAXBContext.newInstance ”初始化新的 Jaxb 上下文时可能会对性能产生轻微影响。

为了测试性能,我添加了一个简单的方法,该方法在 for 循环中调用 JAXBContext.newInstance 约 500 次。我用 flag=true 和 =false 运行了这个。

在最坏的情况下,我发现每次调用的平均性能影响仅为 3.5 毫秒左右。

有没有人遇到过类似的问题并尝试过上述修复?你的发现是什么?我找不到有关com.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize的太多信息。您能否分享有关其行为和影响的更多信息?

java xml compilation jaxb compiler-optimization

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

java随机字符串生成和生日悖论

我需要编写一个随机字符串生成类,它从31个字符的字符集和一些字母表中生成7char字符串(10 + 26-5,省略5个元音).简单的数学给出了一组31 ^ 7种可能的组合~275亿.我对bday悖论有疑问,我进行了一些测试,重复数量呈指数级增长.我可以做些什么来避免这种情况吗?

At 1 million, duplicates encountered till now = 19
At 2 million, duplicates encountered till now = 69
At 3 million, duplicates encountered till now = 157
At 4 million, duplicates encountered till now = 280
At 5 million, duplicates encountered till now = 470
At 6 million, duplicates encountered till now = 662
At 7 million, duplicates encountered till now = 896
At 8 million, duplicates encountered till now = 1185
At 9 million, …
Run Code Online (Sandbox Code Playgroud)

java apache random probability birthday-paradox

6
推荐指数
1
解决办法
212
查看次数

Postgres分页的唯一排序顺序

在尝试从Postgres中的服务器端实现分页时,我遇到了一个问题,即在使用limit和offset关键字时,您必须在唯一列(可能是主键)上提供ORDER BY子句。

在我的情况下,我将PU密钥使用UUID生成,因此我不能依赖于增加密钥的顺序。ORDER BY pkey DESC-可能不会总是导致新行排在最前面。所以我求助于使用Created Date列-timestamp列,该列应该是唯一的。

但是我的问题是,如果UI客户端要按其他列排序怎么办?如果它可能并不总是唯一的列,我求助于ORDER BY user_column created_dt DESC,以保持可预测的postgres分页结果。

这是正确的方法吗?我不确定我走的路是否正确。请指教。

sql postgresql

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

带有自定义注释的 Jaxb 编组

我有一个要求,根据字段上标记的自定义注释对 java pojo 的某些元素进行编组/解组。假设我的 java pojp 中有 3 个字段

@CustomVersion("v1")
private String field1;
@CustomVersion("v1","v2")
private String field2;
@CustomVersion("v2")
private String field3;
Run Code Online (Sandbox Code Playgroud)

如果我在 jaxb 中转换时传递 version="v1" 参数,我只想编组带有 v1 的字段。如果我通过 v2,所有带有 v2 注释的字段应该只被编组。

甚至可以使用 jaxb 吗?我确信选择性编组会通过某些库或方式得到支持,经过相当多的搜索后我仍然无法弄清楚。任何帮助、建议或指示都受到高度赞赏。

java xml jaxb

2
推荐指数
1
解决办法
6481
查看次数

BigDecimal HALF_UP舍入问题

我试图使用scale = 3和HALF_UP舍入模式舍入0.14049,并希望看到舍入值= 0.141但是得到0.140.

根据我的理解,最后的十进制数字9应该向上舍入4到5,当使用比例3时,它应该反过来向上舍入0到1,我应该看到0.141.

这是BigDecimal setScale方法中的错误还是我对Rounding的期望是错误的.如何获得类似于0.141而不是0.140的舍入值?

BigDecimal bd=new BigDecimal("0.14049");
BigDecimal normalizedField = field.setScale(3, RoundingMode.HALF_UP);
System.out.println(normalizedField);
// Output = 0.140
Run Code Online (Sandbox Code Playgroud)

java math rounding bigdecimal

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