我正在寻找一个库(或库的组合)来构建一个java分布式系统,由几个应用程序组成,通过几个成对连接(没有mapreduce)交换数据.目前我对现有的库进行了解释,我只能丢弃我发现的内容.这是我的要求:
你有什么建议吗?提前致谢
在正确使用scala(和akka)actor框架的大多数示例中,人们倾向于从单个特征中获取每条消息.例如:
trait Message
object Ping extends Message
object Pong extends Message
Run Code Online (Sandbox Code Playgroud)
但是,在Scala和Akka中,消息接收都没有输入.有没有理由实施共同特征?
学习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) 我想在集群上部署一个用akka制作的远程演员软件.该系统由多个工作节点和一个主节点组成.问题是我无法预先知道群集节点的IP地址(但我知道它们都是同一子网的一部分).因此,我需要一种很好的方法来在启动后发现每个人的IP地址,在每个节点上创建正确的actor refs.
我正在寻找在任何免费软件许可下分发的轻量级解决方案(我只需要初始设置).
首先,我正在学习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) 我刚刚开始使用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)
我不确定这甚至是最好的方法,但使用〜链似乎我最终会复制一堆东西.
使用spray的流水线操作来发出这样的HTTP请求时:
val urlpipeline = sendReceive ~> unmarshal[String]
urlpipeline { Get(url) }
Run Code Online (Sandbox Code Playgroud)
有没有办法为请求指定超时以及它应该为该特定请求重试的次数?
我发现的所有文档只引用了一个配置(即便如此,我似乎无法让它工作).
谢谢
我试图使用前面问题的答案来实现一个小图库.我们的想法是将图形视为一种选择,其中顶点包裹集合元素.
我想使用抽象类型来表示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) 可以通过以下方式启动文本文件来在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,例如添加类路径依赖项,则需要额外的点数.
在浏览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 ×9
actor ×3
akka ×2
java ×2
anorm ×1
applicative ×1
distributed ×1
generics ×1
jline ×1
performance ×1
pipeline ×1
scala-script ×1
scalaz ×1
scripting ×1
shell ×1
spray ×1
spray-client ×1
types ×1
validation ×1