我有一个小的Akka应用程序,它在其actor之间传递许多消息,每个actor对它接收的数据进行一些计算.我想要的是分析这个应用程序,以查看代码的哪些部分占用大部分时间等等.
我试过VisualVM,但我真的不明白发生了什么.我添加了一个探查器输出的图片.
我的问题是

我有一些类型的项目,并希望生成其权力集.
我搜索了网络,找不到任何解决此特定任务的Scala代码.
这就是我提出的.它允许您限制length参数生成的集合的基数.
def power[T](set: Set[T], length: Int) = {
var res = Set[Set[T]]()
res ++= set.map(Set(_))
for (i <- 1 until length)
res = res.map(x => set.map(x + _)).flatten
res
}
Run Code Online (Sandbox Code Playgroud)
这不包括空集.要完成此操作,您必须将方法的最后一行简单地更改为res + Set()
有什么建议如何以更实用的方式实现这一目标?
一般情况是我们有一组服务器,我们希望使用Docker在其上设置虚拟集群.
为此,我们为不同的服务(Hadoop,Spark等)创建了Dockerfiles.
但是,关于Hadoop HDFS服务,我们的情况是docker容器可用的磁盘空间等于服务器可用的磁盘空间.我们希望限制每个容器的可用磁盘空间,以便我们可以动态生成一个具有一定存储大小的额外datanode,以便为HDFS文件系统做出贡献.
我们有想法使用用ext4格式化的环回文件,并将它们安装在我们用作docker容器中的卷的目录中.但是,这意味着大量的性能损失.
我发现了另一个关于SO的问题(限制磁盘大小和Docker容器的带宽),但答案差不多已有1.5年了 - 关于docker的开发速度 - 很古老.
哪种方式或存储后端将允许我们
我经常使用拆分编辑器窗口,我在左窗口中有一些文件,右边有一些文件.如何只使用键盘轻松切换这些窗口?
Ctrl + Tab上有一个映射,用于调用切换器.但是,如果您在两个窗口中的每个窗口中只打开一个文件,则此方法才有效.如果你有多个开放的Intellj Idea也想在打开的标签之间切换.
运行分布式应用程序时,我在服务器和工作节点上都会遇到很多错误:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4f8c800000, 549453824, 2097152, 0) failed; error='Cannot allocate memory' (errno=12)
Run Code Online (Sandbox Code Playgroud)
大多数情况下,流程会按预期继续并完成,但有时流程也会失败.
我正在调用我的应用程序 java -Xms512M -Xmx50G -cp myjar.jar myclass.Main
节点有128 GB的RAM,大约120 GB是免费的.
我正在使用Oracle JVM:
$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)
这些消息意味着什么,我怎么能摆脱它们?
我写了一个接受Seq [String]所有子类的对象的方法.不幸的是,它不会接受Array [String]类型的对象.Array [String]不是Seq [String]的子类吗?
scala> def test[T <: Seq[String]](x: T) = {}
test: [T <: Seq[String]](x: T)Unit
scala> val data = "This is a test string"
data: java.lang.String = This is a test string
scala> test(data.split(" "))
<console>:10: error: inferred type arguments [Array[java.lang.String]] do not conform to method test's type parameter bounds [T <: Seq[String]]
test(data.split(" "))
Run Code Online (Sandbox Code Playgroud) 我有一个多部分表单,它应该上传一个文件以及一些参数.它看起来像这样:
<form id="upload" action="http://localhost:9998/test" method="post" enctype="multipart/form-data">
<input name="inputfile" type="file" size="50" accept="application/octet-stream">
<input name="someparameter" type="text" size="10">
<input type="submit" value="Go!">
</form>
Run Code Online (Sandbox Code Playgroud)
Web服务看起来像这样:
@Path("/test")
public class ServiceInterface {
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void execute(@FormParam(value="someparameter") String param) {
System.out.println(param);
}
}
Run Code Online (Sandbox Code Playgroud)
提交表单时,"someparameter"的值始终报告为null,尽管在我输入的值的形式中.
我的问题是:
我正在使用Jersey 1.10.
我使用Java 1.7开发了一个Play应用程序.现在我需要针对1.6版编译它,因为它将在另一个仍然使用1.6的主机上执行(我无法改变它)
所以我将启动脚本play复制到play-1.6并以某种方式更改它以便它使用JDK版本1.6(我已将其存储在计算机上的目录中)
在任何目录中执行此修改后的脚本时,我会获得所需的信息行
play! 2.1.0 (using Java 1.6.0_38 and Scala 2.10.0), http://www.playframework.org
Run Code Online (Sandbox Code Playgroud)
当我在项目目录中执行相同的脚本时,我得到了这一行
play! 2.1.0 (using Java 1.7.0_09 and Scala 2.10.0), http://www.playframework.org
Run Code Online (Sandbox Code Playgroud)
该项目使用1.7版本存储的信息在哪里?如何强制它针对1.6进行编译?
更新1
Maxime Calmels建议执行清理以最终删除已编译的配置文件.不幸的是,这没有帮助.
更新2
当我在播放控制台中键入java-home时,我收到了消息
[info] None
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个文件build.sbt并添加了内容
javaHome := Some(file("/usr/java/jdk1.6.0_38"))
Run Code Online (Sandbox Code Playgroud)
当启动播放控制台并输入java-home时,我得到了该行
[info] Some(/usr/java/jdk1.6.0_38)
Run Code Online (Sandbox Code Playgroud)
但是游戏仍然会针对1.7版进行编译,所以也没有运气.
更新3
我得到它的工作...... 但只有将Play和我的项目复制到应该运行项目的主机并在那里编译它.不是一个非常优雅的解决方案,我仍然想知道如何在我的机器上本地完成它.
在我实际将其写入项目之前,我经常使用Scala控制台来评估和测试代码.如果我想知道变量的内容,我可以输入它并且scala对它进行求值.但是还有一种方法可以显示我输入的方法代码吗?
我知道有UP键显示单行,但我要搜索的是立即显示整个代码.
我试图进入2013年ScalaDays上展示的新Scala Pickling图书馆:Scala Pickling
我真正缺少的是一些简单的例子如何使用库.
我知道我可以像这样腌制一些物体再次破坏它:
import scala.pickling._
val pckl = List(1, 2, 3, 4).pickle
val lst = pckl.unpickle[List[Int]]
Run Code Online (Sandbox Code Playgroud)
在这个例子中,pckl是Pickle类型.究竟什么是这种类型的使用,我怎样才能获得它的数组[字节]?
我有一个大的SQL文件,其中没有引用标识符.IntelliJ IDEA建议打算"引用标识符".我可以逐个做到这一点,但这非常麻烦,因为我有很多不同的标识符(数据库名称,表名,字段).
使用"按名称分析/运行检查"命令,我可以选择" 标识符应该引用 "分析到我的整个文件.但是这种分析并没有因某种未知原因而产生任何结果.分析结果是"没有发现可疑代码".
我还定义了我想要应用意图的文件的确切范围,但它没有帮助 - 相同的结果.
如何一次多次实现意图的应用?