小编Meq*_*rel的帖子

Scala单方法接口实现

Scala是否有任何语法糖来替换以下代码:

val thread = new Thread(new Runnable {
   def run() {
     println("hello world")
   }    
})
Run Code Online (Sandbox Code Playgroud)

更喜欢的东西:

val thread = new Thread(() => println("hello world"))
Run Code Online (Sandbox Code Playgroud)

在特征/接口只需要实现一种方法的情况下?如果没有,将来是否有机会在Scala中使用此功能?当处理Java类时,它特别有用.

我在三年前发现了类似的问题:通常使用Scala闭包实现Java Single-Abstract-Method接口?答案说我们应该在Scala 2.10中使用该功能.我找了单一抽象方法关键字,但我没有找到任何东西.这个功能发生了什么?

lambda scala interface syntactic-sugar traits

19
推荐指数
1
解决办法
6554
查看次数

使用akka-persistence的CQRS + Event Sourcing实现

我想使用akka-persistence事件采购功能,以便在我的新项目中实现CRQS +事件采购理念.问题是除了文档(http://doc.akka.io/docs/akka/snapshot/scala/persistence.html)之外,我找不到任何好的示例或指南如何处理它.该文档在解释体系结构的所有构建块(如处理器,视图,通道)方面非常出色,但没有解释如何将它们组合在一起.

所以问题是:如何在akka-persistence中将写模型与读模型连接起来?我想出了三个选择:

  • 直接连接Eventsourcedrocessor - > View,View直接从日志中接收所有事件.这似乎是最简单的解决方案,但我想知道我们是否可以使用这种方法在不同节点上分配处理器和视图.

  • Eventsourcedrocessor - > Channel - > View/normal Actor.与第一个选项有什么区别?如果这是正确的解决方案,为什么我们在akka-persistence构建块中有视图?我应该使用频道还是PersistentChannels?

  • Eventsourcedrocessor - >某种事件总线(例如context.system.eventStream) - > Views/Actors.

什么是最好的方法,为什么?

cqrs akka event-sourcing akka-persistence

12
推荐指数
1
解决办法
3195
查看次数

Angular.js和DAO模式

首先,我必须承认我对Angular.js很新,我之前没有使用像Backbone或Knockout这样的新一代js框架.我正在创建一个使用RESTful API与服务器通信的应用程序.我在角度文档和博客笔记中挖了很多,所以我能做得对.

我发现的例子主要是$ resource.它看起来很不错:许多内置方法,当你正确设计REST接口时,你甚至不需要再编写任何东西了.

但我(以及我的整个团队)更习惯于JavaEE思考模型层的方式:轻量级模型类(POJO等),DAO类持久化和获取模型以及DAO和控制器之间的可选服务层.另一方面,Angular $资源创建了更像活动记录的东西.

我已经提出了两种如何在Angular中实现DAO模式的方法:

  1. 从头开始编写所有内容,一直到$ http抽象级别.我将每个DAO方法实现为$ http调用,注意错误.
  2. 使用$ resource对象通常像轻量级模型类,并将它们传递给DAO,DAO是唯一负责调用.$ save()等操作的单元.当然我们无法阻止在不同的地方调用它,但是对于我来说这种约定的解决方案已经足够了.

由于重用现有代码,第二种方式对我来说看起来更好.$ resource具有promise对象的良好行为,如果我不必自己实现它,我会很高兴.

最后主要问题是:主动记录方法是在Angular,Backbone和其他类似工具中进行数据访问的唯一方法吗?也许有人已经尝试在他的代码中加入更类似于DAO的类似解决方案并且可以分享他对它的看法?

第二个问题:在处理错误,连接丢失和不同问题时,$ resource对象是否足够?是否值得使用$资源考虑到这一点,或者最好从较低级别的$ http开始.

我正处于项目的开始阶段,我知道这个决定可能会影响整个项目的生命,所以我想选择最好的.

javascript activerecord dao angularjs

9
推荐指数
1
解决办法
8027
查看次数

如何将scala Map转换为部分函数

目前我使用以下代码片段:

private val aMap = Map(
  "J" -> Journey,
  "T" -> Training
)

def partialFunction = {
  case x if aMap isDefinedAt x => aMap(x)
}
Run Code Online (Sandbox Code Playgroud)

在我看来,地图自然应该定义一个部分功能.Scala是否有任何标准/更简洁明确的方法将地图转换为部分功能?也许某种隐式转换?

scala map partialfunction

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

域事件与事件源和CQRS的因果依赖性

假设我们有一个生成两个事件的写模型(域):

  • CarrierAdded(...)
  • BusConnectionCreated(运营商,...)

Carrier和BusConnection类是(部分)单独的聚合.BusConnection被分配给Carrier并包含其CarrierId(单独的聚合仅由id引用).

在正常的命令和事件流中,写入模型和读取模型中的一切都很好,但是当我们想要从头开始重建/添加新的读取模型时会出现问题.

许多人建议(例如akka-persistence库)事件存储在事件存储中的每个聚合中.当反规范器要求回复事件时,他从每个聚合中获得两个独立的事件流.问题是来自上述示例中的不同聚合的某些事件需要按照它们添加到事件存储的相同顺序进行回复.这意味着我们需要某种因果依赖/部分排序.

最后我的问题:

  • 我应该重新考虑我的域名设计(糟糕的聚合边界?)或
  • 我是否只需要执行部分订购?

如果是后者,那么最有效的方法是什么?

  • 全球专柜?似乎不是可扩展的.
  • 某种矢量时钟?
  • 它们出现时会在非规范化程序中检测到这些问题吗?例如,我们得到了CarrierId,我们还没有带有此ID的CarrierAdded事件,所以我们先存储事件并等待预期的事件
  • 在重放模式下处理事件时引入一些顺序?例如,有关运营商的所有事件首先是BusConnection相关事件吗?

domain-driven-design causality cqrs event-sourcing akka-persistence

3
推荐指数
1
解决办法
997
查看次数