使用Scaladoc,有没有办法包含一些外部HTTP URL的超链接?
使用Javadoc这很容易..但我无法搞清楚Scaladoc的语法.我看了这里:https://wiki.scala-lang.org/display/SW/Writing+Documentation,但是干了.
假设我想在我的文档中链接到这样的外部资源> https://en.wikipedia.org/wiki/Aardvark <.我应该使用什么标记?
我在ubuntu linux w/2监视器上使用了想法.我经常拉出2个项目,所以我可以把东西从一个复制到另一个,我在一个监视器屏幕上的窗口中有一个项目,在第二个屏幕上有另一个项目.
我的问题是这样的:当我在"非主要"监视器屏幕中打开第二个项目时,我点击顶级菜单栏中的项目,主监视器屏幕上显示的菜单弹出显示...而不是次要监视器屏幕...如果我将辅助监视器窗口中的项目最大化或者没有...无关紧要...弹出窗口只会漂移到主监视器屏幕上.
这不是一个致命的错误..我可以将鼠标移动到第一个监视器窗口,然后单击我想要的子菜单..
但它太烦人了.我想知道这是不是一个bug,或者可能有一个解决方法?
也发布在IntelliJ用户社区板上.如果他们回答,我会在这里发布回复.
我偶然发现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) 我刚开始使用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.
我想我在 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) 其他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
在本教程中学习了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) 观看关于 Spark 内部结构的这段非常好的视频,演示者说,除非在缓存 RDD 后对其执行操作,否则缓存不会真正发生。
我从未见过在任何其他情况下调用 count() 。所以,我猜测他只是在 cache() 之后调用 count() 来强制他给出的简单示例中的持久性。没有必要每次在代码中调用cache() 或persist() 时都执行此操作。这是正确的吗 ?
我正在尝试跟进此博客中的一些技巧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
我目前正在使用 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)