小编Der*_*Mok的帖子

有效的Java项目47:了解并使用您的库 - 有缺陷的随机整数方法示例

在Josh给出的有缺陷的随机方法的例子中,该方法产生具有给定上限的正随机数n,我不明白他陈述的两个缺陷.

书中的方法是:

private static final Random rnd = new Random();

//Common but deeply flawed
static int random(int n) {
    return Math.abs(rnd.nextInt()) % n;
}
Run Code Online (Sandbox Code Playgroud)
  • 他说,如果n是2的小幂,则生成的随机数序列将在短时间后重复出现.为什么会这样?对于文档Random.nextInt()说,Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence.所以它不应该是,如果n是小的整数,则顺序会重演,为什么这个只适用于2的幂?
  • 接下来他说,如果n不是2的幂,那么平均一些数字将比其他数字更频繁地返回.如果Random.nextInt()生成均匀分布的随机整数,为什么会发生这种情况?(他提供了一个代码片段,清楚地证明了这一点,但我不明白为什么会出现这种情况,以及这与n是2的权力有什么关系).

java random probability effective-java non-uniform-distribution

17
推荐指数
2
解决办法
1841
查看次数

如何访问和导出 WebSocketMessageBrokerStats 内部计数

我创建了一个支持 websocket 的 Spring Boot 应用程序,我想在 acuator 提供的 prometheus scrape 端点上公开 WebSocketMessageBrokerStats。

我可以通过自动装配/注入访问 WebSocketMessageBrokerStats 对象。但是,该对象仅将相关指标(连接的套接字数量、线程池大小等)公开为汇总字符串。

这不是很有用,因为我最终希望将这些指标导出到普罗米修斯实例。有没有办法以原始形式(例如,作为 int 或 long)访问 WebSocketMessageBroker 统计信息公开的统计信息。

spring-websocket prometheus-java

8
推荐指数
0
解决办法
627
查看次数