- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我真的认为在各种平台上安装了大约 200 次或更多的 Tomcat 之后,我已经准备好迎接任何挑战,但这个挑战很棘手。
我创建了一个普通的 Ubunutu 14_04 镜像,并在该系统上从 oracle 安装了 Java 8 TGZ。此外,我在游戏中添加了一个 tomcat 8。然后我开始安装 Vanilla 服务器。
在部署tomcat附带的默认应用程序后不久,我想知道那里发生了什么并做了一些线程转储。这是阻止tomcat启动的糟糕线程:
"localhost-startStop-1" #15 daemon prio=5 os_prio=0 tid=0x00007f37c8004800 nid=0x4d6 runnable [0x00007f37b38b3000]
java.lang.Thread.State: RUNNABLE
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:246)
at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedBytes(SeedGenerator.java:539)
at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:144)
at sun.security.provider.SecureRandom$SeederHolder.<clinit>(SecureRandom.java:192)
at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:210)
- locked <0x00000000f06e6ce8> (a sun.security.provider.SecureRandom)
at java.security.SecureRandom.nextBytes(SecureRandom.java:457)
- locked <0x00000000f06e71c0> (a java.security.SecureRandom)
at java.security.SecureRandom.next(SecureRandom.java:480)
at java.util.Random.nextInt(Random.java:329)
at org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom(SessionIdGeneratorBase.java:234)
经过更多的谷歌和 friend 之后,我发现 JDK 附带的 SeedGenerator
是我问题的根源。有趣的是,有时 SeedGenerator 会在几分钟后回来,有时它只是挂起(用完熵?...通过 cat/proc/sys/kernel/random/entropy_avail
检查)。经过更多研究,我发现 $JAVA_HOME$/lib/security/java.security
中名为 securerandom.source
的配置变量定义了 Random 的来源。在我的情况下,或者更好的是为 linux 安装的 oracle JDK 8,它是 /dev/random
。我不是 Linux 专家(我是 Java 开发人员),但我的理解是 /dev/random
可能会耗尽熵(无论这意味着什么),但也许这意味着它在某些时候无法生成任何更多的随机数)。我切换到 /dev/urandom
并且我的 tomcat 一切正常。
然后我检查了其他 JDK 安装在我的其他各种服务器上的样子,这些服务器是 OpenJDK 和较旧的 Oracle JDK 安装的狂野组合。至少 OpenJDK 总是使用 /dev/urandom
这可能是答案,为什么我以前从未遇到过问题。
现在我的问题:当存在操作系统无法生成更多数字的极端情况时,Oracle 依赖 /dev/random
是否明智?我的意思是像 Tomcat 和许多其他服务器这样的服务器依赖于 JDK 中的 SeedGenerator
并且调试这种错误非常先进。我花了 2 个小时才到达现在的位置。
最佳答案
我认为答案取决于此链接以获得 WebLogic 支持:https://docs.oracle.com/cd/E13209_01/wlcp/wlss30/configwlss/jvmrand.html他们提到“随机”更安全
以及 Oracle 错误评论(David 已经提到):http://bugs.java.com/view_bug.do?bug_id=4705093
特别注意这部分:
Because SHA1PRNG is a MessageDigest-based PRNG, it historically has always used /dev/random for initial seeding if seed data has not been provided by the application. Since all future values depend on the existing state of the MessageDigest, it's important to start with a strong initial seed.
Changing that behavior was troubling to the original developer. So he did created a new SecureRandom impl called NativePRNG, which does respect the java.security.egd value.
If you call:
new SecureRandom() on Linux and the default values are used, it will read from /dev/urandom and not block. (By default on Solaris, the PKCS11 SecureRandom is used, and also calls into /dev/urandom.)
SecureRandom.getInstance("SHA1PRNG") and do not specify a seed, OR new SecureRandom() but have specified an alternate java.security.egd besides "file:/dev/urandom", it will use the SHA1PRNG which calls into /dev/random and may potentially block.
SecureRandom.getInstance("NativePRNG"), it will depend on what java.security.egd is pointing to.
关于java - 适用于 Linux 和 RandomSource 的 Oracle Java 8 x64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26227344/
我在我的 Xcode 项目目录中输入了以下内容: keytool -genkey -v -keystore release.keystore -alias mykey -keyalg RSA \
假设我有一个像这样的 DataFrame(或 Series): Value 0 0.5 1 0.8 2 -0.2 3 None 4 None 5 None
我正在对一个 Pandas 系列进行相对繁重的应用。有什么方法可以返回一些打印反馈,说明每次调用函数时在函数内部进行打印还有多远? 最佳答案 您可以使用跟踪器包装您的函数。以下两个示例,一个基于完成的
我有一个 DataFrame,其中一列包含列表作为单元格内容,如下所示: import pandas as pd df = pd.DataFrame({ 'col_lists': [[1, 2
我想使用 Pandas df.apply 但仅限于某些行 作为一个例子,我想做这样的事情,但我的实际问题有点复杂: import pandas as pd import math z = pd.Dat
我有以下 Pandas 数据框 id dist ds 0 0 0 0 5 1 0 0 7 2 0 0
这发生在我尝试使用 Gradle 构建时。由于字符串是对象,因此似乎没有理由发生此错误: No signature of method: java.util.HashMap.getOrDefault(
您好,有人可以解释为什么在 remaining() 函数中的 Backbone 示例应用程序 ( http://backbonejs.org/examples/todos/index.html ) 中
我有两个域类:用户 class User { String username String password String email Date dateCreated
问题陈述: 一个 pandas dataframe 列系列,same_group 需要根据两个现有列 row 和 col 的值从 bool 值创建。如果两个值在字典 memberships 中具有相似
apporable 报告以下错误: error: unknown type name 'MKMapItem'; did you mean 'MKMapView'? MKMapItem* destina
我有一个带有地址列的大型 DataFrame: data addr 0 0.617964 IN,Krishnagiri,635115 1 0.635428 IN,Chennai
我有一个列表list,里面有这样的项目 ElementA: Number=1, Version=1 ElementB: Number=1, Version=2 ElementC: Number=1,
我正在编译我的源代码,它只是在没有运行应用程序的情况下终止。这是我得到的日志: Build/android-armeabi-debug/com.app4u.portaldorugby/PortalDo
我正在尝试根据另一个单元格的值更改单元格值(颜色“红色”或“绿色”)。我运行以下命令: df.loc[0, 'Colour'] = df.loc[0, 'Count'].apply(lambda x:
我想弄清楚如何使用 StateT结合两个 State基于对我的 Scalaz state monad examples 的评论的状态转换器回答。 看来我已经很接近了,但是在尝试申请 sequence
如果我已经为它绑定(bind)了集合,我该如何添加 RibbonLibrary 默认的快速访问项容器。当我从 UI 添加快速访问工具项时,它会抛出 Operation is not valid whi
在我学习期间Typoclassopedia我遇到了这个证明,但我不确定我的证明是否正确。问题是: One might imagine a variant of the interchange law
我是一名优秀的程序员,十分优秀!