Mic*_*app 6 java random freeze jenkins secure-random
java 应用程序执行如下操作:
\nSecureRandom random = new SecureRandom();\nfor(int i=0;i<12;i++){\n random.nextInt(19);\n}\n
Run Code Online (Sandbox Code Playgroud)\n在 random.nextInt() 处,java 冻结了几分钟,似乎无限期地挂起。
\n奇怪的是,只有当我通过 Jenkins 运行它时,该行为才会出现,并且我 \xe2\x80\x99 无法在本地重现该问题。
\n在生产中代码也运行良好。
\njenkins 代理是 Ubuntu,但是如果我将其更改为 macOS 代理,它可以正常工作。
\n生产运行在 openSUSE 上。
\n这里有什么魔力?
ThreadLocalRandom.current().nextInt()
代替使用。
编辑:ThreadLocalRandom 不是“安全”。
\n仅当您的案例对安全不敏感时才使用此选项。
\nSecureRandom 符合 FIPS 140-2 标准,请参阅:
将 JVM 参数添加到运行程序:\n-Djava.security.egd=file:/dev/./urandom
所以这有点棘手。
\nSecureRandom
依赖于操作系统随机生成器,这是/dev/random
默认的。
\n/dev/random
依赖于环境噪音,例如鼠标输入。
\n如果环境噪音不够,/dev/random
则被设计阻挡。(实际上取决于 Linux 发行版)
\n繁荣!在本地,你总是有系统噪音,但在詹金斯代理上可能不会。
归档时间: |
|
查看次数: |
2445 次 |
最近记录: |