小编Chr*_*ord的帖子

有没有办法在Scaladoc中包含一些外部HTTP URL的超链接?

使用Scaladoc,有没有办法包含一些外部HTTP URL的超链接?

使用Javadoc这很容易..但我无法搞清楚Scaladoc的语法.我看了这里:https://wiki.scala-lang.org/display/SW/Writing+Documentation,但是干了.

假设我想在我的文档中链接到这样的外部资源> https://en.wikipedia.org/wiki/Aardvark <.我应该使用什么标记?

url scala scaladoc

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

当在ubuntu上使用intellij运行双显示器时,如何获取菜单以获取菜单弹出窗口而不是回到第一个窗口?

我在ubuntu linux w/2监视器上使用了想法.我经常拉出2个项目,所以我可以把东西从一个复制到另一个,我在一个监视器屏幕上的窗口中有一个项目,在第二个屏幕上有另一个项目.

我的问题是这样的:当我在"非主要"监视器屏幕中打开第二个项目时,我点击顶级菜单栏中的项目,主监视器屏幕上显示的菜单弹出显示...而不是次要监视器屏幕...如果我将辅助监视器窗口中的项目最大化或者没有...无关紧要...弹出窗口只会漂移到主监视器屏幕上.

这不是一个致命的错误..我可以将鼠标移动到第一个监视器窗口,然后单击我想要的子菜单..

但它太烦人了.我想知道这是不是一个bug,或者可能有一个解决方法?

也发布在IntelliJ用户社区板上.如果他们回答,我会在这里发布回复.

intellij-idea

9
推荐指数
1
解决办法
2061
查看次数

为了使groovy闭包修改委托范围中定义的变量,您是否需要显式指定delegate.theVariableName?

我偶然发现Groovy关闭和代表的事情,我不确定是该语言的官方部分,甚至可能是一个错误.

基本上我定义了一个闭包,我将其作为来自外部源的字符串读入,并且类中定义闭包的变量之一需要由闭包修改.我写了一个简单的例子,展示了我发现的东西,什么不起作用.

如果查看下面的测试代码,您将看到一个定义变量的类

animal = "cat"
Run Code Online (Sandbox Code Playgroud)

和动态定义的两个闭包试图修改动物变量.

这工作>

String code = "{ ->   delegate.animal = 'bear';   return name + 'xx' ; }"
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

String code = "{ ->   animal = 'bear';   return name + 'xx' ; }"
Run Code Online (Sandbox Code Playgroud)

看来我需要使用'delegate'明确限定我的待修改变量.为此工作.(我想我也可以在封闭类中定义一个setter,以便闭包调用以修改值.)

所以....我已经找到了如何使这项工作,但我有兴趣,如果有人可以指向我一些groovy doc解释其背后的规则.

具体来说....为什么简单的任务

animal = 'bear' 
Run Code Online (Sandbox Code Playgroud)

影响原始变量?是否有阴影副本在这里制作?

import org.junit.Test

/*
 * Author: cbedford
 * Date: 8/30/12
 * Time: 1:16 PM
 */

class GroovyTest {
    String animal = "cat"
    String name = "fred"

    @Test
    public void testDelegateWithModificationOfDelegateVariable() {
    String code = "{ -> …
Run Code Online (Sandbox Code Playgroud)

groovy closures scope

8
推荐指数
1
解决办法
4656
查看次数

如何在最小的linux安装上"停靠运行"shell会话并立即拆除容器?

我刚开始使用Docker,我非常喜欢它,但我有一个笨重的工作流程,我想简化.当我在我的Dockerfile脚本上进行迭代时,我会经常在构建之后通过启动bash会话,运行一些命令,发现这样的包没有正确安装,然后返回并调整我的Dockerfile来测试.

假设我已经构建了我的图像并将其标记为buildfoo,我会像这样运行它:

      $>  docker run -t -i  buildfoo 

              ... enter some bash commands.. then  ^D to exit
Run Code Online (Sandbox Code Playgroud)

然后我将有一个容器运行,我必须清理.通常我只是像这样对待一切:

docker rm --force `docker ps -qa`
Run Code Online (Sandbox Code Playgroud)

这对我来说没问题.但是,我宁愿不必手动删除容器.

感谢任何提示!


一些额外的小细节:

运行最小的centos 7图像并使用bash作为我的shell.

linux bash shell process docker

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

spark [dataframe].write.option("mode","overwrite").saveAsTable("foo") 如果 foo 存在,则失败并显示“已存在”

我想我在 spark 中看到了一个错误,其中不遵守“覆盖”模式,而是在尝试将 saveAsTable 执行到已经存在的表中时抛出异常(使用模式“覆盖”)。

下面是一个重现问题的小脚本。最后一条语句导致堆栈跟踪读数:

 org.apache.spark.sql.AnalysisException: Table `example` already exists.;
Run Code Online (Sandbox Code Playgroud)

任何建议非常感谢。

spark.sql("drop table if exists example ").show()
case class Person(first: String, last: String, age: Integer)
val df = List(
    Person("joe", "x", 9),
    Person("fred", "z", 9)).toDF()
df.write.option("mode","overwrite").saveAsTable("example")

val recover1 = spark.read.table("example")
recover1.show()


val df3 = List(
    Person("mouse", "x", 9),
    Person("golf", "z", 9)).toDF()

 df3.write.
    option("mode","overwrite").saveAsTable("example")      

val recover4 = spark.read.table("example")
recover4.show()     
Run Code Online (Sandbox Code Playgroud)

sql scala overwrite apache-spark

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

storm.yaml的supervisor.slots.ports和Config.setNumWorkers(#workers)方法调用之间的对应关系

其他Storm用户:

设置风暴群集的准则(https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster)表明supervisor.slots.ports配置属性设置为对每个工作者在一台机器上你分配一个单独的端口.

我的理解是每个worker都是一个JVM实例,它监听来自nimbus控制器的命令.所以每个人都听一个单独的端口是有道理的.

但是,backtype.storm.Config上还有一个方法,它似乎允许定义worker的数量.如果对setNumWorkers的调用尝试设置的工作数多于为端口配置的工作数,该怎么办?这似乎搞砸了.

对我来说唯一有意义的是yaml配置定义了worker数量的上限.每个拓扑可以请求为其分配一些worker.但是如果我提交了两个拓扑(对某个特定的集群),每个拓扑都会调用Config.setNumWorkers(2),那么我最好配置四个端口.

这是正确的想法吗?

在此先感谢.. -chris

apache-storm

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

如果没有恼人的伪参数来标记类型,Scala隐含的歧义就无法得到解决.

教程中学习了Scala高级类型的一些示例后,我开始讨论(a)implicits和(b)编写方法的技术,这些方法通常处理被定义为高级类型的特征的子类.我已经在(b)这里得到了一个很好的答案, 这让我更接近解决下面的问题:

我想创建一个工厂来创建单件容器(集合,列表,数组),它将我传入的项目包装到工厂函数中. [即使已经有一个Scala库可以做到这一点,我也是这样做的学习练习.但是,嘿......如果有的话,请告诉我!]

最终的结果应该让我这样做:

scala> var j: Set[String] =  wrapItemInContainer("foo")
j: Set[String] = Set(foo)

scala> var k: List[Int] =  wrapItemInContainer(9)
k: List[Int] = List(9)
Run Code Online (Sandbox Code Playgroud)

我想出的解决方案如下所示.我必须提供一个恼人的虚拟最终参数,以便我可以帮助编译器找出我想要的容器类型.这是有效的,但我感到困惑的是,我想将结果分配给(j,k..etc.)的变量的类型签名没有给编译器足够的信息来确定哪个隐式定义的ContainerFactory需要使用.

这个笨重的解决方案有效:

trait ContainerFactory[M[_]]  { def put[A](x: A): M[A]  }


implicit val factory = new ContainerFactory[List] { def put[A](x: A) = List(x)  }   // factory for List containers
implicit val factory2 = new ContainerFactory[Set] { def put[A](x: A) = Set(x)}    // factory for Set containers

def wrapItemInContainer[ M[A]: ContainerFactory, A](item: A, …
Run Code Online (Sandbox Code Playgroud)

functional-programming scala

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

在 Spark Streaming 中,我必须在 cache() 或 persist() 之后调用 count() 才能强制缓存/持久性真正发生吗?

观看关于 Spark 内部结构的这段非常好的视频,演示者说,除非在缓存 RDD 后对其执行操作,否则缓存不会真正发生。

我从未见过在任何其他情况下调用 count() 。所以,我猜测他只是在 cache() 之后调用 count() 来强制他给出的简单示例中的持久性。没有必要每次在代码中调用cache() 或persist() 时都执行此操作。这是正确的吗 ?

caching apache-spark rdd

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

如何确定Java堆是否使用压缩指针以及是否驻留在内存中的地址0?

我正在尝试跟进此博客中的一些技巧https://www.elastic.co/blog/a-heap-of-trouble#ref5,其中讨论了调整 Java 堆大小的好处,以便 (a) 压缩指针可以使用(对于 32GB 以下的堆)和 (b) 以便堆驻留在内存中的地址 0 处。本文详细介绍了压缩指针如何更有效地使用堆空间,并解释了当堆位于地址零时,这会减少解析指针地址所需的算术量。最后,文章说,如果我使用 JVM 选项-XX:+UnlockDiagnosticVMOptions-XX:+PrintCompressedOopsMode我将看到如下日志输出:

heap address: 0x000000011be00000, size: 27648 MB, zero based Compressed Oops

这表明启用了从零开始的压缩oops,或者像这样输出

heap address: 0x0000000118400000, size: 28672 MB, Compressed Oops with base: 0x00000001183ff000

这表明堆从零以外的地址开始,因此需要前面提到的增加算术处理量。

但是,当我尝试这些选项并通过我的应用程序(弹性搜索)日志目录进行 grep 查找时,我找不到此类消息。如果有人可以建议我如何强制记录从零开始(或非从零开始)的压缩指针的详细信息,我将非常感激。

解决:

很好的答案!..我接受了@apangin的,并将他提供的java程序包装在一个shell脚本中,只要你有java就可以运行..如果你正在查看Java堆,你应该这样做!这是脚本: https: //github.com/buildlackey/scripts/blob/master/verify_compressed_pointers_from_zero_offset.sh

java garbage-collection jvm heap-memory elasticsearch

5
推荐指数
2
解决办法
2757
查看次数

对于具有compileOnly依赖项的单元测试,如何避免在运行时重新声明可用性的依赖项?

我目前正在使用 Gradle 构建一个项目,它依赖于我在编译时需要的第三方组件,但该组件将在运行时提供。在 Maven 中,我将按照提供的方式声明此依赖项,在 Gradle 中,我将其声明如下:

  compileOnly group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.0.cloudera1'
Run Code Online (Sandbox Code Playgroud)

我依赖上面的火花工件这一事实与这个问题并没有真正的密切关系(我提供此信息是为了使示例更加具体。)

现在,假设我想为我的应用程序(或库,视情况而定)编写一些单元测试。使用 Gradle 时,我想出的唯一方法很笨拙:我将依赖项重新声明为 testCompile 依赖项,并且我的测试能够运行:

  compileOnly group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.0.cloudera1'
  testCompile group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.0.cloudera1'
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢两次声明我的依赖项的重复和混乱,我想知道是否有更好的方法在 Gradle 中做到这一点?

结论

Mike 的回答让我选择了我选择的解决方案,即将其放在我的多项目构建的顶层 gradle 文件中。

subprojects {

  sourceSets {
    test.compileClasspath += configurations.compileOnly
    test.runtimeClasspath += configurations.compileOnly
  }
}
Run Code Online (Sandbox Code Playgroud)

testing dependencies gradle

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