小编Xia*_*ong的帖子

如何根据日期而不是时间来比较两个Instant

我想有一个简单的解决方案来比较Java中的两个Instant对象.比较规则应基于日期而不是时间.

public boolean isAfterBasedOnDate(Instant instant, Instant compareTo) {
//TODO
}
Run Code Online (Sandbox Code Playgroud)

例如,

  • 时间:2013-01-03T00:00:00Z
  • 即时(比较):2013-01-03T15:00:00Z
  • isAfterBasedOnDate返回false

  • 时间:2013-01-03T15:00:00Z
  • 即时(比较):2013-01-30T00:00:00Z
  • isAfterBasedOnDate返回true

有没有简单的方法呢?

java

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

模糊隐含值是我们想要在编译时存在错误的唯一方法

trait Foo

trait Bar extends Foo

def doStuff[T <: Foo](x: T)(implicit ev: T =!:= Foo) = x

doStuff(new Foo{}) //ambiguous implicit value
doStuff(new Bar)// successful
Run Code Online (Sandbox Code Playgroud)

隐式解决方案正在编译时发生,所以在这里我认为可能有两个隐式值具有完全相同的类型来触发模糊的东西.

现在,我将在团队中引入无形的,我的同事们认为这种含糊不清的暗示并不理想,我对此没有强烈的争论.这是实现它的唯一方法,以便在scala中使类型安全.如果是,我该怎么做才能自定义错误消息?

编辑:

在无形状中,我想使2 NAT的总和不等于7,我可以像这样编码使编译失败.

def typeSafeSum[T <: Nat, W <: Nat, R <: Nat](x: T, y: W)
         (implicit sum: Sum.Aux[T, W, R], error: R =:!= _7) = x

typeSafeSum(_3, _4)
Run Code Online (Sandbox Code Playgroud)

但错误信息是含糊不清的隐含值,如何自定义错误信息?

scala type-safety shapeless

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

为什么TypeTag没有方法runtimeClass但Manifest和ClassTag没有

我有这个代码一般将String转换为Dto,如果我使用Manifest和ClassTag,我可以使用方法runtimeClass来获取运行时类,但是TypeTag没有这个方法

class ObjectMapper[T] {

  def readValue(x: String, t: Class[T]): T = ???
}

class Reader {
  def read[W: Manifest](x: String): W = {
    val mapper = new ObjectMapper[W]
    mapper.readValue(x, implicitly[Manifest[W]].runtimeClass.asInstanceOf[Class[W]])
  }

}
Run Code Online (Sandbox Code Playgroud)

我可以知道为什么TypeTag没有方法runtimeClass

提前谢谢了

scala

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

如何在Finch中将RequestReader绑定到Route

我想知道如何在Finch中将RequestReader和Route绑定在一起.我没有找到一个完整的例子.

这个例子来自finch github,它运行正常.

import io.finch.route._
import com.twitter.finagle.Httpx

val api: Router[String] = get("hello") { "Hello, World!" }

Httpx.serve(":3000", api.toService)
Run Code Online (Sandbox Code Playgroud)

我明白这段代码将获得路径"hello"并将返回响应"hello world"

然后我想将RequestHeader绑定到它.

  val doSomethingWithRequest: RequestReader[String] =
    for {
      foo <- param("foo")
      bar <- param("bar")
    } yield "u got me"

  val api: Router[RequestReader[String]] = Get / "hello" /> doSomethingWithRequest

  val server = Httpx.serve(":3000", api.toService)
Run Code Online (Sandbox Code Playgroud)

我认为这段代码意味着如果网址是" http:// localhost:3000/hello?foo = 3 ",它将返回"你找我"的回复.但是,响应状态为404.

我认为我对Route和RequestHeader之间的组合做错了.

也许有人可以帮助我这个,也就是说,分享一些关于这个芬奇的好文章会更好.该版本频繁出现,文档已过时https://finagle.github.io/blog/2014/12/10/rest-apis-with-finch/

scala finch

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

如何使用react redux单独连接数组的每个元素

目前的做法是将整个书单连接成书单组件。但是,仅通过更改状态中的几个字段来渲染巨大的组件并不是很有效。我不知道如何将每个 book 组件连接到每个单独的 Book state

该项目正在使用redux。应用程序全局状态是这样的

{
  "books": [
    {
      "field1": "field1",
      "field2": "field2",
      "field3": "field3",
    } ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

在 Book List 组件中,我们使用 react redux 将 list 与它连接起来

export default connect(state => ({
  books: state.books
}))(BookListComponent);
Run Code Online (Sandbox Code Playgroud)

现在需求变了,书里的字段不会经常变了。问题是,如果更改了一个字段,它将更新整个 BookListComponent。这不是我期望的高性能组件。

我想将连接逻辑下推到单个 Book 组件以使用reselect

国家没有书的索引,我不知道如何编写connect来使它工作

export default connect(state => ({
  books[index]: state.books[index]
}))(BookListComponent);
Run Code Online (Sandbox Code Playgroud)

感谢提前,欢迎所有选项

reactjs redux react-redux reselect

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

验证:隐式scalaz.Bind未找到

我有scalaz验证的这个实现,似乎隐含scalaz.Bind不在范围内,所以表达式不起作用.这是代码:

import scalaz._
import Scalaz._

case class User(name: String, knowScala: Boolean, age: Int)

object PublicValidationSpec extends BasicValidation {
  def validate(user: User): Validation[String, String] = {
    for {
      b <- checkAge(user)
      c <- checkName(user)
    } yield s"Congrats, ${c.name}"
  }
}

trait BasicValidation {
  def checkName(user: User): Validation[String, User] = {
    if(user.name == "") "must have a name".fail else user.success
  }

  def checkAge(user: User): Validation[String, User] = {
    if(user.age < 3) "must be a valid age".fail else user.success
  }
}
Run Code Online (Sandbox Code Playgroud)

例外是

Error:(14, …
Run Code Online (Sandbox Code Playgroud)

validation scala scalaz

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

使用隐式作为类型约束

据我所知,有两种方法可以添加类型约束.

trait Dummy
Run Code Online (Sandbox Code Playgroud)

第一种方式

def doStuff[T <: Dummy](x: T) = x
Run Code Online (Sandbox Code Playgroud)

第二种方式

def doStuff[T](x: T)(implicit x: T <:< Dummy) = x
Run Code Online (Sandbox Code Playgroud)

两者都达到了相同的效果.

我只是想知道我应该直接使用上限或下限的哪种场景,或者我应该使用implicit来在类型上附加约束.

scala implicit

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

在使用无形类型不等式时,如何自定义Scala模糊隐式错误

def typeSafeSum[T <: Nat, W <: Nat, R <: Nat](x: T, y: W)
         (implicit sum: Sum.Aux[T, W, R], error: R =:!= _7) = x

typeSafeSum(_3, _4) //compilation error, ambiguous implicit found.
Run Code Online (Sandbox Code Playgroud)

我不认为错误信息"模糊隐含发现"是友好的,我怎么能自定义它说"2 NAT值的总和不应该等于7"

提前谢谢了

scala shapeless

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

尝试连接docker守护程序容器中的http服务器时拒绝连接

我正在使用boot2docker.我在守护进程模式下运行一个映像,它在端口3000启动grunt服务器.这是我用来启动它的命令.

该图像已经暴露了端口3000

docker run -d -P --name dummy image_name grunt server
docker ps
3af4ba19c539        image_name:latest   "grunt server"      54 minutes ago      Up 54 minutes       0.0.0.0:45000->3000/tcp   dummy
Run Code Online (Sandbox Code Playgroud)

然后进入同一容器"卷曲"Web服务器.

docker exec -it 3af4ba19c539 /bin/bash 
curl localhost:3000 
Run Code Online (Sandbox Code Playgroud)

它得到了HTML.

但是,当我尝试在我的mac pc中连接它时.它说"连接被拒绝了."

curl $(boot2docker ip):45000
//curl: (7) Failed connect to 192.168.59.103:45000; Connection refused
Run Code Online (Sandbox Code Playgroud)

我尝试使用VBoxManage来解决这个问题,但它也没有用

VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port45000,tcp,,45000,,45000"
Run Code Online (Sandbox Code Playgroud)

我可以知道如何解决这个问题.提前谢谢了

docker boot2docker

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

如果生产者端 ack 延迟非常高,应该监控哪些 Kafka 代理指标

如果生产者端的确认延迟非常高,我们是否可以使用一些代理指标来监控 Kafka 代理。

我们正在使用 datadog 来监控生产者和 Kafka 代理端。可以看出生产者的ack滞后超过10秒。但是,在broker方面,我觉得只用message.in.ratekafka.net.bytes_in.rate效率不高。最好我们可以在代理端有一些 LAG 指标来表明the broker is fully loaded to acknowledge back the producer.

此外,我们仅kafka.acks = 1用于分区领导。

我想知道是否有人对此有一些经验,欢迎提供任何建议。:) 提前致谢。

monitoring apache-kafka

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