小编par*_*tic的帖子

用于分布式系统的Java框架

我正在寻找一个库(或库的组合)来构建一个java分布式系统,由几个应用程序组成,通过几个成对连接(没有mapreduce)交换数据.目前我对现有的库进行了解释,我只能丢弃我发现的内容.这是我的要求:

  • 在运行时轻松发现系统(可能通过中央服务器/目录)
  • 轻量级和低延迟消息(无CORBA,RMI,SOAP等)
  • 分散的通信(没有像LINDA那样)
  • 易于使用和学习(没有JXTA)
  • 兼容GPL许可证(所以GPL,BSD等)

你有什么建议吗?提前致谢

java performance distributed

11
推荐指数
2
解决办法
2459
查看次数

演员信息应该扩展一个共同的特征吗?

在正确使用scala(和akka)actor框架的大多数示例中,人们倾向于从单个特征中获取每条消息.例如:

trait Message
object Ping extends Message
object Pong extends Message
Run Code Online (Sandbox Code Playgroud)

但是,在Scala和Akka中,消息接收都没有输入.有没有理由实施共同特征?

scala actor akka

11
推荐指数
2
解决办法
1000
查看次数

如何用scalaz组成应用程序的功能

学习Scalaz 6时,我正在尝试编写类型安全的读者返回验证.这是我的新类型:

type ValidReader[S,X] = (S) => Validation[NonEmptyList[String],X]
type MapReader[X] = ValidReader[Map[String,String],X]
Run Code Online (Sandbox Code Playgroud)

我有两个函数为int和字符串(*)创建地图阅读器:

def readInt( k: String ): MapReader[Int] = ...
def readString( k: String ): MapReader[String] = ...
Run Code Online (Sandbox Code Playgroud)

给出以下地图:

val data = Map( "name" -> "Paul", "age" -> "8" )
Run Code Online (Sandbox Code Playgroud)

我可以写两个读者来检索姓名和年龄:

val name = readString( "name" )
val age = readInt( "age" )

println( name(data) ) //=> Success("Paul")
println( age(data) )  //=> Success(8)
Run Code Online (Sandbox Code Playgroud)

一切正常,但现在我想组成两个读者来构建一个Boy实例:

case class Boy( name: String, age: Int )
Run Code Online (Sandbox Code Playgroud)

我最好的看法是:

  val boy …
Run Code Online (Sandbox Code Playgroud)

validation scala scalaz applicative

11
推荐指数
1
解决办法
1348
查看次数

Akka远程actor服务器发现

我想在集群上部署一个用akka制作的远程演员软件.该系统由多个工作节点和一个主节点组成.问题是我无法预先知道群集节点的IP地址(但我知道它们都是同一子网的一部分).因此,我需要一种很好的方法来在启动后发现每个人的IP地址,在每个节点上创建正确的actor refs.

我正在寻找在任何免费软件许可下分发的轻量级解决方案(我只需要初始设置).

java scala actor akka

10
推荐指数
1
解决办法
3552
查看次数

如何取消ConsoleReader.readLine()

首先,我正在学习scala和java世界的新手.我想创建一个控制台并将此控制台作为可以启动和停止的服务运行.我能够将ConsoleReader运行到Actor中,但我不知道如何正确地停止ConsoleReader.这是代码:

import eu.badmood.util.trace
import scala.actors.Actor._

import tools.jline.console.ConsoleReader

object Main {

  def main(args:Array[String]){
    //start the console
    Console.start(message => {
      //handle console inputs
      message match {
        case "exit" => Console.stop()
        case _ => trace(message)
      }
    })

    //try to stop the console after a time delay
    Thread.sleep(2000)
    Console.stop()

  }

}

object Console {

  private val consoleReader = new ConsoleReader()

  private var running = false

  def start(handler:(String)=>Unit){
    running = true
    actor{
      while (running){
        handler(consoleReader.readLine("\33[32m> \33[0m"))
      }
    }
  }

  def stop(){
    //how to cancel an …
Run Code Online (Sandbox Code Playgroud)

scala jline actor

10
推荐指数
1
解决办法
2922
查看次数

DB插件未在Play 2.0中注册

我刚刚开始使用play,我修改了我正在进行SQL读取的方式,现在我收到以下错误:

[Exception: DB plugin is not registered.]
Run Code Online (Sandbox Code Playgroud)

我给这个类的代码是:

package models

import play.api.db._
import play.api.Play.current

import anorm._

case class Housing(id: Long, rent: String, address: String, street0: String, street1: String, neighbourhood: String)

object Housing {

  def all(): List[Housing] = DB.withConnection { implicit c =>
    SQL("select * from housing")().map { row =>
      Housing(row[Long]("id"), row[String]("rent"), row[String]("address"), row[String]("street0"),
        row[String]("street1"), row[String]("neighbourhood"))
    }.toList
  }

  def create(rent: String, address: String, street0: String, street1: String, neighbourhood: String) {}

  def delete(id: Long) {}

}
Run Code Online (Sandbox Code Playgroud)

我不确定这甚至是最好的方法,但使用〜链似乎我最终会复制一堆东西.

scala anorm playframework-2.0

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

我可以设置特定管道请求的超时和重试次数吗?

使用spray的流水线操作来发出这样的HTTP请求时:

val urlpipeline = sendReceive ~> unmarshal[String]
urlpipeline { Get(url) }
Run Code Online (Sandbox Code Playgroud)

有没有办法为请求指定超时以及它应该为该特定请求重试的次数?

我发现的所有文档只引用了一个配置(即便如此,我似乎无法让它工作).

谢谢

pipeline scala spray spray-client

10
推荐指数
1
解决办法
3850
查看次数

在scala中混合类型参数和抽象类型

我试图使用前面问题的答案来实现一个小图库.我们的想法是将图形视为一种选择,其中顶点包裹集合元素.

我想使用抽象类型来表示Vertex和Edge类型(因为类型安全),我想使用类型参数来表示集合元素的类型(因为我想在实例化时轻松定义它们).

但是,在尝试我能想到的最基本的例子时,我遇到了编译错误.这是一个例子:

package graph

abstract class GraphKind[T] {

  type V <: Vertex[T]
  type G <: Graph[T]

  def newGraph(): G

  abstract class Graph[T] extends Collection[T]{
    self: G =>
    def vertices(): List[V]
    def add(t: T): Unit
    def size(): Int
    def elements(): Iterator[T]
  }

  trait Vertex[T] {
    self: V =>
      def graph(): G
      def value(): T
  }

}
Run Code Online (Sandbox Code Playgroud)

这是基本的实现:

class SimpleGraphKind[T] extends GraphKind[T] {

  type G = GraphImpl[T]
  type V = VertexImpl[T]

  def newGraph() = new GraphImpl[T]

  class GraphImpl[T] extends …
Run Code Online (Sandbox Code Playgroud)

generics types scala abstract-type

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

更短的Scala脚本标题

可以通过以下方式启动文本文件来在Scala中编写shell脚本:

#!/bin/sh
exec scala "$0" "$@"
!#
Run Code Online (Sandbox Code Playgroud)

为了简化脚本创建,我想编写一个名为scalash(可能是BASH脚本)的可执行文件,允许将Scala脚本标题缩短为一行:

#!/bin/scalash
Run Code Online (Sandbox Code Playgroud)

可能吗 ?如果我可以传递可选参数scalash,例如添加类路径依赖项,则需要额外的点数.

shell scripting scala scala-script

9
推荐指数
2
解决办法
1474
查看次数

什么是List [String~Int]?

在浏览play框架的scala文档(Play Docs)时,我看到了一种我从未见过的语法.

val populations:List[String~Int] = {
  SQL("select * from Country").as( str("name") ~ int("population") * ) 
}
Run Code Online (Sandbox Code Playgroud)

可能有人请告诉我这是什么"〜"List[String~Int]意思吗?

scala playframework playframework-2.0

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