小编Kev*_*ith的帖子

Mongo 最大索引大小

Mongo Docs讨论了最大索引大小。

Index Key
The total size of an indexed value must be less than 1024 bytes. 
MongoDB will not add that value to an index if it is longer than 1024 bytes.
Run Code Online (Sandbox Code Playgroud)

使用db.collection.stats(),我可以看到我的平均文档大小为 5 MB。如果我在占文档 50% 的字段上建立索引,这是否意味着索引大小将是50% * 5 MB = 2.5 MB

我对如何为单个文档计算索引大小感到困惑。

indexing mongodb

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

具有多线程的Scala Singleton对象

使用play,我的控制器调用Foo服务,一个对象.此对象仅使用val's' immutable data structures,将由多个客户端调用.

当我的Controller调用Foo.doQuery()多个线程时,会发生什么?

如果客户端1拨打电话,Foo.doQuery()客户2的呼叫是否Foo.doQuery()必须等待?

我很好奇我是否应该简单地为每个实例创建一个新类Foo,但是我想知道val在多线程环境中使用Scala单例时会发生什么.

singleton multithreading scala playframework

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

X类采用类型参数

通过这篇关于Parser Combinators的信息性很好的文章阅读,我看到了这段代码:

class DisParser[+A](left: Parser[A], right: Parser[A]) extends Parser[A] {
  def apply(s: Stream[Character]) = left(s) match {
    case res: Success => res
    case _: Failure => right(s)
  }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此代码时,我得到:

Parser.scala:19: error: class Success takes type parameters
    case res: Success => res
              ^
one error found
Run Code Online (Sandbox Code Playgroud)

鉴于签名Parser:

case class Success[+A](value: A, rem: Stream[Character]) extends Result[A]
Run Code Online (Sandbox Code Playgroud)

如何更改case res: Success => res线条以提供Success正确的类型参数?

scala parser-generator

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

实现List#flatMap

有更好的功能性写作方式flatMap吗?

def flatMap[A,B](list: List[A])(f: A => List[B]): List[B] =
    list.map(x => f(x)).flatten
Run Code Online (Sandbox Code Playgroud)

从概念上讲,我理解flatMap的是flatten.

functional-programming scala

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

为没有字段的Java Enum创建读/写

借助Play框架的JSON库,我怎么可以创建一个ReadsWrites对于没有领域一个Java枚举?

public enum EnumNoFields { RED, WHITE, BLUE }

implicit val EnumNoFieldsReads: Reads[EnumNoFields] = ?
implicit val EnumNoFieldsWrites: Writes[EnumNoFields] = ?
Run Code Online (Sandbox Code Playgroud)

enums json scala playframework

6
推荐指数
2
解决办法
1085
查看次数

使用AngularJS在HTML中添加换行符

我正在尝试让AngularJS和/或HTML在2行中打印出以下内容:

FOO
BAR
Run Code Online (Sandbox Code Playgroud)

但是尽管我换行了,但我下面的HTML和JS在同一行上显示了它\n

的HTML

<div ng-controller="MyCtrl">
  {{name}}!
</div>
Run Code Online (Sandbox Code Playgroud)

的JavaScript

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.name = 'FOO \n BAR';
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

JSFiddle

html newline angularjs

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

键入构造函数作为返回类型

在Scala中,我可以定义代数数据类型:

scala> sealed trait Maybe[A]
defined trait Maybe

scala> case class Just[A](x: A) extends Maybe[A]
defined class Just

scala> case object NothingHere extends Maybe[Nothing]
defined object NothingHere
Run Code Online (Sandbox Code Playgroud)

可以返回一个函数,f返回类型为Maybe[A].

scala> def f[A](x: A): Maybe[A] = Just(x)
f: [A](x: A)Maybe[A]
Run Code Online (Sandbox Code Playgroud)

但是,也可以指定Just[A]返回a.

scala> def f[A](x: A): Just[A] = Just(x)
f: [A](x: A)Just[A]
Run Code Online (Sandbox Code Playgroud)

现在我将在Haskell中进行类似的练习:

Prelude> data Option a = None | Some a deriving Show
Prelude> let f x = Some x :: Option Int
Prelude> …
Run Code Online (Sandbox Code Playgroud)

haskell scala

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

理解类型投影

取自typelevel/kind-projector,它们之间的区别是什么:

// partially-applied type named "IntOrA"
type IntOrA[A] = Either[Int, A]
Run Code Online (Sandbox Code Playgroud)

// type projection implementing the same type anonymously (without a name).
({type L[A] = Either[Int, A]})#L
Run Code Online (Sandbox Code Playgroud)

?

它们是等价的吗?

scala partial-application type-constructor kind-projector

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

'A>的含义:Null`?

我尝试编写一个函数,如果null传递则不会编译:

$scala
Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_101).
Type in expressions for evaluation. Or try :help.

scala> :t null
Null

scala> def f[A >: Null](x: A):A = x
f: [A >: Null](x: A)A
Run Code Online (Sandbox Code Playgroud)

但是,它没有像我预期的那样工作:

scala> f( null )
res1: Null = null
Run Code Online (Sandbox Code Playgroud)

scala

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

解码具有标记类型的案例类

鉴于:

鉴于以下关于亚扪人:

@ import $ivy.`io.circe::circe-core:0.9.0` 

@ import $ivy.`io.circe::circe-generic:0.9.0`                   

@ import $ivy.`com.chuusai::shapeless:2.3.3` 

@ import shapeless.tag 
import shapeless.tag

@ trait Foo 
defined trait Foo

@ import io.circe._, io.circe.generic.semiauto._ 
import io.circe._, io.circe.generic.semiauto._

@ import shapeless.tag.@@ 
import shapeless.tag.@@

@ implicit def taggedTypeDecoder[A, B](implicit ev: Decoder[A]): Decoder[A @@ B] = 
    ev.map(tag[B][A](_)) 
defined function taggedTypeDecoder
Run Code Online (Sandbox Code Playgroud)

鉴于Foo:

@ case class F(x: String @@ Foo)  
defined class F
Run Code Online (Sandbox Code Playgroud)

我可以召唤一个Decoder[String @@ Foo]:

@ Decoder[String @@ Foo] 
res17: Decoder[String @@ Foo] = io.circe.Decoder$$anon$21@16b32e49
Run Code Online (Sandbox Code Playgroud)

但不是F: …

scala shapeless circe

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