我必须并行运行多个期货,程序不应该崩溃或挂起.
现在我一个接一个地等待期货,如果有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) 从电子邮件列表中我得到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适合我们.
我想我的依赖dependencyManagement块继承从一个版本spring-boot-parent的dependencyManagement块,但增加排斥它,这样我就不必指定每个儿童模块排除。
我的父 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 …
我最近在游荡:因为Scala在JVM上运行,而后者针对某些类型的操作进行了优化,是否存在在JVM上实现效率非常低的功能,因此应该不鼓励使用?你能解释为什么他们效率低下吗?
第一个候选者是函数式编程特性 - 我知道,函数是带apply方法的特殊类,与函数只是代码块的语言相比,这显然会产生额外的开销.
我有下表:T(ID主键,A,B)
我希望对(A,B)唯一,但我不希望它们具有唯一的约束(A,B),因为它会在插入时产生错误.相反,我希望MySQL默默地忽略这些插入.
我不能使用"插入重复键忽略",因为我无法控制客户端的查询.
那么,我可以构建这样的触发器吗?或者可能存在一些允许无声忽略的约束?
编辑:我挖了一下,我想我想要像SQLite的"Raise Ignore"声明.
我正在尝试将另一个字符串添加到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个字符串?
编辑:我应该补充一下,应该保留项目的顺序
好吧,我无法让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上也有这个问题,所以我决定发布单独的问题.
只是一个简单的问题:以下语句中的逗号是做什么的:
print "Average = %s" % (avg,)
Run Code Online (Sandbox Code Playgroud)
看来我只是找不到相关的文档.
我试图在单元测试中测量文件长度并遇到问题.什么可能使这个测试失败?
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的值是文件系统报告的值
scala ×5
java ×2
concurrency ×1
constraints ×1
duplicates ×1
formatting ×1
future ×1
iterable ×1
jvm ×1
maven ×1
maven-3 ×1
mysql ×1
performance ×1
python ×1
triggers ×1
unit-testing ×1