小编Rob*_*een的帖子

使用Enumerator编写函数

是否可以使用Enumerator或EnumeratorM组成任意函数,以便通过应用函数首先对推送到iteratee中的每个单独的数据项进行预处理?

scala scalaz iterate

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

撤消快速合并

我合并失败,直到将其推送到GitHub之前,我才知道这是合并失败,现在我不知道如何撤消/还原它。

故事是这样的:

我打开了两个不同的分支,并对这些分支进行了一些更改。过了一会儿,我决定将那些分支合并回master分支,并$ git merge branch_name用于此目的。我合并了第一个分支,然后检查了master分支的日志:该分支上的所有提交都在master上。然后,我用同一命令进行第二个分支的合并。然后,我再次检查了master的日志,在这里我看到了合并分支上的提交,包括带有以下注释的提交:“合并分支branch_name”。当我合并另一个分支时,不包括这样的注释。

长话短说,问题在于git将第一个分支的提交合并到master了,就像它们已经是master的提交一样。当您检查来自“ GitHub”的网络图或来自“ gitg”的图时,没有留下第一个分支的痕迹,但是其提交显示为master分支的提交。第二个分支没有问题:单独显示该分支,并按预期进行合并。还要注意,在运行merge命令之后$ git branch -d branch_name,不幸的是,我继续通过删除分支,就像这是最紧迫的事情。

现在,我想回到两次连续合并之前的位置。任何帮助表示赞赏。如果您评论发生这种情况的原因,那也将是令人愉快的。

git github git-merge

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

有没有办法证明程序没有错误?

我在想我们可以证明一个程序有错误.我们可以对其进行测试,以评估它是否或多或少具有抗虫性.

但有没有办法(甚至在理论上)证明程序没有错误?

对于简单的程序,例如"Hello World",我想我们应该能够做到.但是大型项目呢?

formal-verification proof proof-of-correctness

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

记录Play 2中的所有请求

如何以与Apache日志(即包括URL和客户端IP)的方式类似的方式记录进入Play 2应用程序的所有请求?

scala playframework-2.0

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

创建一个通用的Json序列化函数

是否可以使用Play Framework 2.2在Scala中创建一个通用函数,它将任意对象序列化为JSON,而不必提供编写器或格式化程序?

例如,这个非通用代码将为Customer创建一个JSON响应:

import play.api.libs.json._
import play.api.libs.functional.syntax._

case class Customer(id: Int, name: String)

object scratch {
  val p = Customer(1, "n")                        
  //> p  : Customer = Customer(1,n)

  def createJsonResponseCustomer(data: Customer) = {
    implicit val formatter = Json.format[Customer]
    Json.obj("success" -> true, "data" -> Json.toJson[Customer](data))
  }

  createJsonResponseCustomer(p)                   
  //> res0: play.api.libs.json.JsObject = {"success":true,"data":{"id":1,"name":"n"}}
}
Run Code Online (Sandbox Code Playgroud)

为了避免为每个不同的对象定义格式化程序,我想创建一个这样的通用函数:

def createJsonResponse[T](data: T) = {
  implicit val formatter = Json.format[T]
  Json.obj("success" -> true, "data" -> Json.toJson[T](data))
}
Run Code Online (Sandbox Code Playgroud)

但是,这种尝试产生错误No unapply function foundJson.format[T].

换句话说,这有效:

def …
Run Code Online (Sandbox Code Playgroud)

generics json scala playframework playframework-2.2

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

Java:通过2D float(float [] [])数组减少内存消耗

我有Java应用程序,它集中使用2D浮点数组(float [] []数组),实际上在黑色背景上保存图像.两个维度都是等于(正方形)并且是2的幂(大多数是256,512,1024),因此在大多数情况下,靠近边界的区域具有零.

大小等于2的功率以提高性能(存在一些FFT)并且降低了那些阵列上的操作的复杂性,例如旋转等.最近我在6Gb的机器上面临这个应用程序的堆缺乏.通过我的计算 - 这个应用程序的内存消耗应该高达2-3Gb,而它达到4-5Gb(在Windows任务管理器中查看).我使用了"YourKit"分析器,它显示那些浮点数阵列确实占用了大部分内存,但是,这些浮点数组的总粗略大小应该是1.3Gb(嗯,我知道由JVM决定如何存储数据,但是我没想到内存消耗会有2-3倍的差异.

我试图使用Snappy压缩器动态压缩/解压缩数据(并且内存消耗降至3.5Gb),但性能下降了几次,这是不可接受的.此外,我在BufferedImage替换那些浮动[] []时测试性能,但性能非常差.

因此,还有两种方法可以减少内存消耗:1)为float [] []数组写包装器以保存"零"元素(有很多"空"行和列)2 )远离"2的力量"

这两种方式都需要相当多的编码/重构,所以当我想"成为或不成为"时 - 你可能对这个问题有更好的线索,伙计们?

谢谢!

java arrays fft out-of-memory memory-optimization

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

并发概述

由于Scala提供了一个处理并发性的很好的套件(Akka,并行集合,期货等),它也让我有些困惑.有什么样的指导线何时使用?某种最佳做法?

concurrency scala akka

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

我应该声明java.util.concurrent.ConcurrentLinkedQueue引用volatile吗?

我正在使用一个java.util.concurrent.ConcurrentLinkedQueue对象在线程之间传递数据.

我应该申报我的推荐信volatile吗?

java concurrency volatile thread-safety

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

getopts - 如果标志为空 getopts 使用下一个标志

我正在尝试将 getopts 用于 bash 脚本。该脚本可以有标志,所有这些标志都是强制性的,并且需要包含一个值。当应该包含值的强制标志之一为空时,getopts 使用下一个行标志作为其内容。我该如何防止这种情况?

这是我的例子:

#!/bin/bash

while getopts "A:B:" OPTION
do
        case $OPTION in
        A)
        GILIA="$GILIA $OPTARG"
        echo GILIA $GILIA
        ;;
        B)
        GILIB="$GILIB $OPTARG"
        echo GILIB $GILIB
        ;;
        esac
done
Run Code Online (Sandbox Code Playgroud)

当使用两个带有值的标志时:

./test_opt2 -A aaa -B bbb
GILIA aaa
GILIB bbb
Run Code Online (Sandbox Code Playgroud)

当使用“-A”标志为空时:

./test_opt2 -A  -B bbb
GILIA -B
Run Code Online (Sandbox Code Playgroud)

我知道这是 getopts 的正常/典型行为,并且我确信有一种方法可以解决这个问题......

有任何想法吗?

bash getopts

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

当测试报告显示没有测试失败时,为什么 Gradle 会说“有失败的测试”?

我以前也遇到过类似的问题,但上次至少有一些测试类无法初始化或类似的问题。这一次,Gradle 说

Task :foo-bar:liveTest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':foo-bar:liveTest'.
> There were failing tests. See the report at: file:///C:/Users/...
Run Code Online (Sandbox Code Playgroud)

但 CI 服务器 TeamCity 并未显示此构建的测试失败。甚至当我在本地计算机上重新运行失败的 Gradle 任务以查看该报告时,JUnit 报告也没有显示任何测试失败或错误!测试中也没有在错误级别记录任何内容,也没有在我不希望看到的警告级别记录任何内容。

可能是什么问题呢?我该如何调试这个?

java junit gradle

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