小编Bjö*_*obs的帖子

如何推荐Akka应用程序?

我有一个小的Akka应用程序,它在其actor之间传递许多消息,每个actor对它接收的数据进行一些计算.我想要的是分析这个应用程序,以查看代码的哪些部分占用大部分时间等等.

我试过VisualVM,但我真的不明白发生了什么.我添加了一个探查器输出的图片.

我的问题是

  • 例如,第一行是什么,为什么需要花费这么多时间?(scala.concurrent.forkjoin.ForkJoinPool.scan())
  • Akka应用程序可以因为它们的异步行为而被描述得很好吗?
  • 例如,我可以看到一个特定的actor(-type)对它收到的一个特定消息(-type)的工作时间有多长?
  • 是否还有其他最佳实践来分析Akka应用程序?

探查

profiling scala akka

22
推荐指数
3
解决办法
4113
查看次数

如何在Scala中生成集的幂集

我有一些类型的项目,并希望生成其权力集.

我搜索了网络,找不到任何解决此特定任务的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()

有什么建议如何以更实用的方式实现这一目标?

scala set powerset

18
推荐指数
4
解决办法
9501
查看次数

如何限制容器可用的Docker文件系统空间

一般情况是我们有一组服务器,我们希望使用Docker在其上设置虚拟集群.

为此,我们为不同的服务(Hadoop,Spark等)创建了Dockerfiles.

但是,关于Hadoop HDFS服务,我们的情况是docker容器可用的磁盘空间等于服务器可用的磁盘空间.我们希望限制每个容器的可用磁盘空间,以便我们可以动态生成一个具有一定存储大小的额外datanode,以便为HDFS文件系统做出贡献.

我们有想法使用用ext4格式化的环回文件,并将它们安装在我们用作docker容器中的卷的目录中.但是,这意味着大量的性能损失.

我发现了另一个关于SO的问题(限制磁盘大小和Docker容器的带宽),但答案差不多已有1.5年了 - 关于docker的开发速度 - 很古老.

哪种方式或存储后端将允许我们

  • 限制每个容器的存储
  • 接近裸机性能
  • 不需要重新分区服务器驱动器

storage limit docker

18
推荐指数
1
解决办法
3万
查看次数

如何在拆分模式下仅在编辑器窗口(而不是选项卡)之间切换

我经常使用拆分编辑器窗口,我在左窗口中有一些文件,右边有一些文件.如何只使用键盘轻松切换这些窗口?

Ctrl + Tab上有一个映射,用于调用切换器.但是,如果您在两个窗口中的每个窗口中只打开一个文件,则此方法才有效.如果你有多个开放的Intellj Idea也想在打开的标签之间切换.

keymapping intellij-idea

16
推荐指数
1
解决办法
5548
查看次数

'Java应用程序运行时期间无法分配内存'(errno = 12)'错误

运行分布式应用程序时,我在服务器和工作节点上都会遇到很多错误:

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)

这些消息意味着什么,我怎么能摆脱它们?

java memory memory-management

11
推荐指数
1
解决办法
2万
查看次数

Array [String]不是Scala中Seq [String]的子类吗?

我写了一个接受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)

arrays scala seq scala-collections

9
推荐指数
2
解决办法
886
查看次数

在Java REST Web服务中访问multipart/form-data post请求的各个部分

我有一个多部分表单,它应该上传一个文件以及一些参数.它看起来像这样:

<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,尽管在我输入的值的形式中.

我的问题是:

  1. 上面的代码有什么问题?
  2. 我如何访问与表单一起传输的文件?

我正在使用Jersey 1.10.

java rest file-upload jersey

7
推荐指数
1
解决办法
2万
查看次数

如何强制Play 2.1编译其他Java版本

我使用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和我的项目复制到应该运行项目的主机并在那里编译它.不是一个非常优雅的解决方案,我仍然想知道如何在我的机器上本地完成它.

java scala compilation playframework playframework-2.1

7
推荐指数
1
解决办法
3784
查看次数

有没有快速的方法来显示Scala控制台中声明的方法的代码?

在我实际将其写入项目之前,我经常使用Scala控制台来评估和测试代码.如果我想知道变量的内容,我可以输入它并且scala对它进行求值.但是还有一种方法可以显示我输入的方法代码吗?

我知道有UP键显示单行,但我要搜索的是立即显示整个代码.

console scala read-eval-print-loop

6
推荐指数
1
解决办法
188
查看次数

Scala Pickling用法MyObject - > Array [Byte] - > MyObject

我试图进入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类型.究竟什么是这种类型的使用,我怎样才能获得它的数组[字节]?

scala scala-pickling

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

如何将意图应用于整个文件

我有一个大的SQL文件,其中没有引用标识符.IntelliJ IDEA建议打算"引用标识符".我可以逐个做到这一点,但这非常麻烦,因为我有很多不同的标识符(数据库名称,表名,字段).

使用"按名称分析/运行检查"命令,我可以选择" 标识符应该引用 "分析到我的整个文件.但是这种分析并没有因某种未知原因而产生任何结果.分析结果是"没有发现可疑代码".

我还定义了我想要应用意图的文件的确切范围,但它没有帮助 - 相同的结果.

如何一次多次实现意图的应用?

shortcut intellij-idea

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