小编sem*_*ema的帖子

在Apache Storm中为每个群集节点配置多个工作线的原因是什么?

在下文中,我将参考这篇文章:Michael G. Noll 理解风暴拓扑的并行性

在我看来,工作进程可以托管任意数量的执行程序(线程)来运行任意数量的任务(拓扑组件的实例).为什么我应该为每个群集节点配置多个工作线程?

我看到的唯一原因是工作者只能运行最多一个拓扑的子集.因此,如果我想在同一个集群上运行多个拓扑,我需要为每个集群节点配置与要运行的拓扑数相同的工作数. (示例:这是因为我希望在某些群集节点发生故障时保持灵活性.例如,如果只剩下一个群集节点,我至少需要与该群集上运行的拓扑一样多的工作进程,以保持所有拓扑运行.)

还有其他原因吗?特别是,如果只运行一个拓扑,是否有任何理由为每个群集节点配置多个工作线程?(更好的失败安全等)

parallel-processing stream apache-storm

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

Eclipse 4.2(Juno)在Ubuntu 12.04上崩溃(精确)

问题描述

我在Ubuntu 12.04 x86_64上安装了Eclipse 4.2 Java,每次打开自动完成上下文菜单时它都会崩溃.它崩溃而没有任何错误消息,只是关闭Eclipse窗口.有趣的是,当我点击Edit-> Content Assist中的一个菜单点时它也崩溃了当我点击菜单点General-> Web Browser上的Window-> Preferences时它崩溃了.(我经历过这一点,因为我想关闭自动完成功能.)

最后,我关闭了自动完成功能,但错误,如上所述,只是不那么频繁和随机.在每次崩溃时,它只关闭窗口,每5分钟没有任何错误消息.这绝对是不可接受的.

有没有人知道什么是错的?我可以提供您需要的任何信息,只需告诉我您的需求即可.我还可以执行可能对您有所帮助的步骤并报告结果.

附加信息

我尝试过不同版本的Java JDK,例如openjdk-6-jdk,openjdk-7-jdk,oracle-6-jdk,oracle-7-jdk和不同版本的eclipse,例如eclipse 3.7(Indigo)和eclipse 4.2(朱诺).什么都没有成功,但也许我做错了因为我必须手动安装Oracle JDK.

$ java -version
java version "1.7.0_15"
OpenJDK Runtime Environment (IcedTea7 2.3.7) (7u15-2.3.7-0ubuntu1~12.04.1)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

$ javac -version
javac 1.7.0_15
Run Code Online (Sandbox Code Playgroud)

eclipse installation autocomplete ubuntu-12.04 dart-editor

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

将Scala强制转换为通用类型(用于通用数值函数)

我正在尝试实现包装数学Java函数的泛型函数。为简单起见,我们可以假定Java函数(Java 7)接受一个参数并返回结果,均为java.lang.Double类型。当然,包装器函数应该带有一个参数和一个结果,它们都是通用类型但为数字类型A。问题是我无法在包装器函数中将结果强制转换回类型A。问题出在哪里/什么地方?

注意:(我是Scala的新手,并使用以下参考资料来解决该问题。)

变体A

package test

object mytest {
  def f[A](x: A)(implicit num: Numeric[A]): A = {
    val result = new java.lang.Double(num.toDouble(x))
    result.asInstanceOf[A]
  }

  def main(args: Array[String]) {
    // 'Some code'
  }
}
Run Code Online (Sandbox Code Playgroud)

“某些代码” A1

result val result = f(3)
Run Code Online (Sandbox Code Playgroud)

输出:

Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
    at scala.runtime.BoxesRunTime.unboxToInt(BoxesRunTime.java:105)
    at test.mytest$.main(test.scala:10)
    at test.mytest.main(test.scala)
Run Code Online (Sandbox Code Playgroud)

“某些代码” A2

println(f(3))
Run Code Online (Sandbox Code Playgroud)

输出:

3.0
Run Code Online (Sandbox Code Playgroud)

“某些代码” A3

println(f(3).getClass)
Run Code Online (Sandbox Code Playgroud)

输出:

int
Run Code Online (Sandbox Code Playgroud)

变体B

package test …
Run Code Online (Sandbox Code Playgroud)

generics casting scala scala-java-interop

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