小编Dzh*_*zhu的帖子

斯卡拉地图foreach

给定:

val m = Map[String, Int]("a" -> 1, "b" -> 2, "c" -> 3)
m.foreach((key: String, value: Int) => println(">>> key=" + key + ", value=" + value))
Run Code Online (Sandbox Code Playgroud)

为什么编译器会抱怨

error: type mismatch
found   : (String, Int) => Unit
required: (String, Int) => ?
Run Code Online (Sandbox Code Playgroud)

scala scala-collections

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

Scala逆变 - 现实生活中的例子

我理解scala中的协方差和逆变.协方差在现实世界中有很多应用,但除了相同的函数旧例子之外,我无法想到任何逆变量应用.

有人可以了解现实世界contravariance使用范例吗?

computer-science scala

30
推荐指数
3
解决办法
3992
查看次数

NodeJS + Mongodb性能问题

我有一个nodejs + mongodb应用程序连接如下:

var dbConfig = new mongo.Server(config.db.host, config.db.port, {auto_reconnect: true, poolSize: 20});

var db = new mongo.Db(config.db.name, dbConfig);
Run Code Online (Sandbox Code Playgroud)

在进行基准测试时(使用apache ab),发现当并发连接大于20时,它会挣扎(时间> = 1秒)(即使2个或更多并发连接似乎会线性增加时间):

[
    {
        "key": "mongoQuery1",
        "min": 2,
        "max": 598,
        "mean": 387.60683760683764,
        "sd": 134.56045668980255,
        "variance": 18106.51650456823
    },
    {
        "key": "mongoQuery2",
        "min": 8,
        "max": 149,
        "mean": 73.14120370370358,
        "sd": 25.141715811881994,
        "variance": 632.1058739654371
    },
    ...
]
Run Code Online (Sandbox Code Playgroud)

以上是我用于从节点应用程序捕获分析信息的分析服务器的输出.所以基本上,我已经把这样的东西分析应用程序:

var start = new Date().getTime();

db.collection('TheCollection', query, function(err, col) {
  col.find(query).toArray(function(err, items) {
    var elapsed = new Date().getTime() - start;
    profiler.send('mongoQuery1', elapsed);
  });
});
Run Code Online (Sandbox Code Playgroud)

请注意,集合大小最小(700条记录),并且集合都根据查询进行索引. …

mongodb node.js

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

在maven surefire下记录级别

我无法调整java logging的日志记录级别.我正在使用maven surefire(mvn test),并试图从默认的INFO调整为例如FINEST.

我在src/test/resources/logging.properties下有logging.properties文件

在编译之后,我在target/test-classes下看到,我看到一个带有预期配置的logging.properties文件:

java.util.logging.ConsoleHandler.level = FINEST

javax.enterprise.system.container.ejb.level = FINE

...

但是来自glassfish的控制台输出只有INFO/SEVERE级别的消息.

我哪里做错了?或者这是与maven屁股的另一个痛苦?

junit maven-2 surefire

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

Scala最终阻止关闭/刷新资源

有没有更好的方法来确保资源得到正确发布 - 更好的方法来编写以下代码?

        val out: Option[FileOutputStream] = try {
          Option(new FileOutputStream(path))
        } catch {
          case _ => None
        }


        if (out.isDefined) {

          try {
            Iterator.continually(in.read).takeWhile(-1 != _).foreach(out.get.write)
          } catch {
            case e => println(e.getMessage)
          } finally {
            in.close
            out.get.flush()
            out.get.close()
          }

        }
Run Code Online (Sandbox Code Playgroud)

scala

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

多用户数据源 - Spring + Hibernate

我正在编写一个支持多个用户的Web应用程序.每个用户都有自己的数据库 - 使用H2.所有数据库模式都是相同的.

我希望将Spring + Hibernate用于此应用程序.

所以我坚持如何将用户的数据库与该用户关联 - 可能在HTTPSession中关联它,并扩展spring的AbstractRoutingDataSource?但这不会影响Hibernate的缓存吗?另一种方法是使用每个数据源的SessionFactory,即使每个数据源的模式都相同......所以我认为这是一种浪费.

无论如何选择数据源都需要是动态的 - 它们不能在上下文文件中预先配置,因为每个新用户都将创建自己的数据库.有没有现有的框架/解决方案?

我不太了解Hibernate Shards,也许这有用吗?

java spring hibernate jdbc multi-tenant

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

重载方法的Scala类型推断

鉴于此代码:

class Rational(n: Int, d: Int) {
  require(d != 0)
  private val g = gcd(n.abs, d.abs)
  val numerator = n / g
  val denominator = d / g

  def this(n: Int) = this(n, 1)

  override def toString = numerator + "/" + denominator

  def +(r: Rational) = new Rational(numerator * r.denominator + r.numerator * denominator, denominator * r.denominator)

  def *(r: Rational) = new Rational(numerator * r.numerator, denominator * r.denominator)

  def +(i: Int) = new Rational(i) + this

  private def gcd(a: …
Run Code Online (Sandbox Code Playgroud)

scala type-inference

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

intellij创建方法存根的快捷方式

我最近切换到intellij进行scala开发.

我找不到以下快捷方式:

在eclipse中,我可以输入方法调用,例如

method("hello", 1)
Run Code Online (Sandbox Code Playgroud)

并按下<command>1让eclipse弹出一个建议,让我创建一个方法存根.

intellij中有这样的捷径吗?

intellij-idea

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

Scala反向字符串

我是scala的新手,我只是编写一个简单的函数来反转给定的字符串:

def reverse(s: String) : String
  for(i <- s.length - 1 to 0) yield s(i)
Run Code Online (Sandbox Code Playgroud)

yield返回一个scala.collection.immutable.IndexedSeq [Char],并且不能将它转换为String.(或者是别的什么?)

我该怎么写这个功能?

scala

10
推荐指数
4
解决办法
2万
查看次数

SBT常用构建设置

我有多个SBT项目都有一个共同的设置 - 例如多模块,publishTo设置等.

我如何提供一个常见的例如CommonBuild类,每个项目都可以从它扩展?例如:

trait CommonBuild {
  val publishSettings = Seq(
    publishTo := Some("", ""),
    credentials += ...
  )

  def module(name: String) (
    settings: Seq[Setting[_]],
    projectId: String = PROJECT + "-" + name,
    dirName: String = name,
    srcPath: String = PROJECT + name
    ) = Project(projectId, file(dirName), settings = (buildSettings ++ srcPathSetting(projectId, srcPath)) ++ publishSettings ++ settings)

}
Run Code Online (Sandbox Code Playgroud)

现在它可以被项目构建使用:

object ProjABuild extends CommonBuild {
   // use CommonBuild methods / vals
}

object ProjBBuild extends CommonBuild {
   // use CommonBuild methods …
Run Code Online (Sandbox Code Playgroud)

scala sbt

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