小编Zot*_*tov的帖子

并行运行多个期货,在超时时返回默认值

我必须并行运行多个期货,程序不应该崩溃或挂起.

现在我一个接一个地等待期货,如果有TimeoutException则使用后备值.

val future1 = // start future1
val future2 = // start future2
val future3 = // start future3

// <- at this point all 3 futures are running

// waits for maximum of timeout1 seconds
val res1 = toFallback(future1, timeout1, Map[String, Int]())
// .. timeout2 seconds 
val res2 = toFallback(future2, timeout2, List[Int]())
// ... timeout3 seconds
val res3 = toFallback(future3, timeout3, Map[String, BigInt]()) 

def toFallback[T](f: Future[T], to: Int, default: T) = {
  Try(Await.result(f, to seconds))
    .recover { case …
Run Code Online (Sandbox Code Playgroud)

concurrency scala future

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

如果列表不为空或返回空列表,则返回尾部

从电子邮件列表中我得到2个值:

  • 列表头部的选项
  • 其余人的名单

在scala中对此进行编码的惯用方法是什么?到目前为止,我有:

val primaryEmail = emails.headOption
val conf = Map[String, Any](
  "email" -> primaryEmail,
  "additionalEmails" -> 
     primaryEmail.map(_ => emails.tail).getOrElse(List())
)
Run Code Online (Sandbox Code Playgroud)

编辑:至于为什么有Any:我们使用GSON进行json序列化,并在内部将所有集合转换为java集合并将它们传递给jsonSerializationContext.serialize,它们将java.lang.Object作为参数,所以很Any适合我们.

scala

8
推荐指数
2
解决办法
8340
查看次数

Maven dependencyManagement:从父级继承依赖版本

我想我的依赖dependencyManagement块继承从一个版本spring-boot-parentdependencyManagement块,但增加排斥它,这样我就不必指定每个儿童模块排除。

我的父 pom 继承自 spring-boot-parent:

  <artifactId>my-parent</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    <relativePath/>
  </parent>
  <dependencyManagement>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>???</version>
        <exclusions>
          <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
  </dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

子 pom 继承my-parent

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
  </dependencies>
Run Code Online (Sandbox Code Playgroud)

我尝试了几种方法:

  • 当我替换???为 时${parent.version},在子模块中,此版本被解析为my-parent's version: 1.0.0-SNAPSHOT,这是不正确的。

  • 当我用 替换???${parent.parent.version},maven 会中断,因为它不支持此类属性

  • 我可以修复???2.0.1.RELEASE,这将正常工作,但如果我更新春天启动的版本,我记得更新这种依赖性也的版本,这是不直观

  • 我无法提取2.0.1.RELEASE作为属性my-parent并将该属性用作父版本,因为 maven 不支持。

  • 我可以使用具有2.0.1.RELEASE …

maven-3 maven

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

哪些Scala功能性能较差

我最近在游荡:因为Scala在JVM上运行,而后者针对某些类型的操作进行了优化,是否存在在JVM上实现效率非常低的功能,因此应该不鼓励使用?你能解释为什么他们效率低下吗?

第一个候选者是函数式编程特性 - 我知道,函数是带apply方法的特殊类,与函数只是代码块的语言相比,这显然会产生额外的开销.

performance jvm scala

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

触发器以静默方式忽略/删除INSERT上的重复条目

我有下表:T(ID主键,A,B)

我希望对(A,B)唯一,但我不希望它们具有唯一的约束(A,B),因为它会在插入时产生错误.相反,我希望MySQL默默地忽略这些插入.

我不能使用"插入重复键忽略",因为我无法控制客户端的查询.

那么,我可以构建这样的触发器吗?或者可能存在一些允许无声忽略的约束?

编辑:我挖了一下,我想我想要像SQLite的"Raise Ignore"声明.

mysql triggers constraints duplicates

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

试图附加到Iterable [String]

我正在尝试将另一个字符串添加到Iterable [String]以便于连接,但结果并不是我所期望的.

scala> val s: Iterable[String] = "one string" :: "two string" :: Nil
s: Iterable[String] = List(one string, two string)

scala> s.mkString(";\n")
res3: String =
one string;
two string

scala> (s ++ "three").mkString(";\n")
res5: String =
one string;
two string;
t;
h;
r;
e;
e
Run Code Online (Sandbox Code Playgroud)

我应该如何重写此片段以在我的iterable中包含3个字符串?

编辑:我应该补充一下,应该保留项目的顺序

iterable scala

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

无法从命令行运行HelloWorld

好吧,我无法让java运行我的.class文件:我按照Oracle教程中的步骤操作并尝试运行此程序:

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
Run Code Online (Sandbox Code Playgroud)

编译确定:

PS C:\Users\Ztaz> javac .\HelloWorldApp.java
Run Code Online (Sandbox Code Playgroud)

但在我尝试运行它之后,我得到了这个:

PS C:\Users\Ztaz> java .\HelloWorldApp.class
Error: Could not find or load main class .\HelloWorldApp.class
Run Code Online (Sandbox Code Playgroud)

没有例外,没有.

这是我的PATH变量,如果它有帮助(分为行,为了便于阅读):

%JBOSS_HOME%;
%SYSTEMROOT%;
%M2%;
%JAVA_HOME%\bin;
...
Run Code Online (Sandbox Code Playgroud)

JAVA_HOME设置为"C:\ Program Files\Java\jdk1.7.0".我的问题听起来很像这个,但我在Java SE 6上也有这个问题,所以我决定发布单独的问题.

java

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

蟒蛇; 旧格式化程序参数列表末尾的逗号

只是一个简单的问题:以下语句中的逗号是做什么的:

    print "Average = %s" % (avg,)
Run Code Online (Sandbox Code Playgroud)

看来我只是找不到相关的文档.

python formatting

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

Thread.currentThread()中的文件长度不同.getContextClassLoader.getResource()

我试图在单元测试中测量文件长度并遇到问题.什么可能使这个测试失败?

val fileName = "filetypes/b.jpg"
val root = "C:/Users/Zotov/Work/project/target/test-classes/"
val lenAbsolute = new File(root + fileName).length()
val lenResource = Thread.currentThread().getContextClassLoader
  .getResource(fileName).getFile.length()
assertEquals(lenAbsolute, lenResource)
Run Code Online (Sandbox Code Playgroud)

lenAbsolute的值是文件系统报告的值

java unit-testing scala

0
推荐指数
1
解决办法
239
查看次数