我试图使用HTTPie解析发送一些嵌套的JSON对象,但我找不到如何.很清楚如何发送JSON对象但不是嵌套的对象
{"user":{"name":"john""age":10}}
如何在JavaFX/ScalaFX应用程序中运行Akka actor?
(这是基于第一个答案的问题更新)
解决方案是共享相同的执行上下文吗?是否有基于JavaFx ExecutorService的Actors调度程序?(运行UI操作代码的那个)
这是否意味着一个代理将代表UI并能够操纵它?我的意思是因为如果在UI ExecutorService上有几个actor,建议如下,这是不是意味着在代理(对象是UI)之间共享一个状态?
2个演员可以在不同的执行器服务上进行通信吗?我问这个是因为根据下面的建议,一些代理将在UI Executor服务上,而其他代理不在.
最后,为什么使用akka,它的Executor上下文不同并使用Platform.runLater,可能会对UI的性能产生一些影响.我在同一个应用程序中提出了多个执行程序服务的问题:那是不是很糟糕?
我正在试图找出如何在使用actor系统时最好地处理数据库操作.事实上,当我们尝试不阻止AKKA时,数据库操作正在阻塞.
我在主文档中指出,处理这种情况的一种方法是在路由器后面创建一个actor池,可能在一个单独的executionContext上,它将处理数据库访问.
因此,我有以下问题:
1 - databaseActors是否始终保持连接打开状态?
2 - 它如何与许多数据库提供的连接池一起工作?
3 - 我们应该将两者结合起来,并让DatabaseActors在每次请求时从池请求一个新的连接.如果没有,是不是一直保持连接打开是一件坏事?
4 - 有人可以向我解释微妙的事情,使其成为一种避免线程饥饿的方法.例如,使用Play或spray,请求的处理是异步任务,但是如果该任务需要数据库访问并且我们向DatabaseActor发送请求,那么数据库Actor上的块(如果它发生)不会导致,异步任务中的一个块,导致可能的线程不足?
5 - 100%确定DB ACID属性确保多次读写的安全性,因此在关系之前发生.
6 - 我正在使用也称为三重存储的语义数据库,并在我的请求中大量使用语义推理功能.我还执行了很多写访问,任何建议,关于池和actor编号或专用执行上下文的调整参数?
最好,
中号
由于 Scala 开发人员正在学习 IO Monad,因此一般来说,在无法进行尾调用优化的情况下,对于递归来说是必需的 Trampoliing 技术细节,我想知道 Haskell 是如何在本机上避免它的。
我知道 Haskell 是一种懒惰的语言,但是我想知道是否有人可以进一步详细说明。
例如,为什么 ForeverM stackoverflow 在 Scala 中没有?嗯,我可以回答蹦床,我可以在库和博客中找到执行此操作的实际代码。我实际上自己实现了一个基本的蹦床来学习。
它是如何在 Haskell 中发生的?有没有办法稍微解开懒惰,给出一些指示,也许还有有助于更好地理解它的文档?
sealed trait IO[A] {
.....
def flatMap[B](f: A => IO[B]): IO[B] =
FlatMap[A,B](this, f) // we do not interpret the `flatMap` here, just return it as a value
def map[B](f: A => B): IO[B] =
flatMap[B](f andThen (Return(_)))
}
case class Return[A](a: A) extends IO[A]
case class Suspend[A](resume: () => A) extends IO[A]
case class FlatMap[A,B](sub: IO[A], k: A …
Run Code Online (Sandbox Code Playgroud) 有人可以清楚地解释这4种方法之间的区别吗?何时使用每一个更合适?一般来说这组方法的名称是什么?有更多方法可以完成同样的工作吗?链接到scaladoc也可以提供帮助.
-D-
scalatest和spock有何不同?每个的附加价值是多少?哪个更适合行为驱动开发(BDD)?请问您能就此事分享一些想法吗?
我想开始BDD,我想在两者之间选择一个,因此我想做出一个有根据的决定.因此,我首先得到最多的信息,特别是考虑到我是一名java程序员,scala似乎有一个重要的学习曲线.
任何建议或想法或经验回报都是受欢迎的.
非常感谢
在敏捷开发人员的基本技能方面,在需求与能力界面,第12章,我试图理解提出的主要解决方案,以应用作者在本章末尾提到的DEMETER法案.
简而言之.
我们从以下研究案例开始:
public class City {
public string name{};
public City twinCity{};
public Street[] streets{};
}
public class Street {
public string name{};
public House[] houses{};
}
public class House {
public int number{};
public Color color{};
}
Run Code Online (Sandbox Code Playgroud)
作者声明:
这样的模型鼓励我们揭露而不是封装.如果您的代码具有对特定城市实例的引用,例如一个映射西雅图的实例,并且您想要1374 Main Street的房子颜色,那么您可能会执行以下操作:
public Foo() {
Color c = Seattle.streets()["Main"].
houses()[1374].
color();
}
Run Code Online (Sandbox Code Playgroud)
如果这是作为一般实践完成的,那么问题在于系统在任何地方都会开发依赖关系,并且对此模型的任何部分的更改都可以在这些依赖关系的链中产生影响.这就是德米特定律,即"不要与陌生人交谈"的内容.这在对象系统中被形式化为函数/方法的得墨忒耳定律.对象O的方法M只能调用以下类型的对象的方法:
- O公司
- M的参数
- 在M中实例化的任何对象
- O的直接组件对象
- O可访问的任何全局变量
并建议在应用DEMTER法则时,我们应该瞄准类似的东西
public Foo() {
Color c = Seattle.ColorOfHouseInStreet("Main",1374);
}
Run Code Online (Sandbox Code Playgroud)
并迅速从以下警告:
虽然这最初似乎是一个明智的政策,但它很快就会失控,因为任何特定实体的界面都可以预期提供与其相关的字面意义.随着时间的推移,这些界面往往会膨胀,实际上,给定玻璃可能最终支持的公共方法的数量似乎几乎没有结束.
然后在快速绕道解释耦合和依赖的问题之后,他提到了通过服务接口分离客户端及其服务的重要性,并可能进一步将客户端"需求接口"与"服务能力"分开界面"通过使用适配器作为理想但不一定实用的东西;
他建议为了解决这个问题,我们可以将DEMETER的法则与需求/能力分离相结合,使用外观模式解释如下:
从原来的依赖
在应用demeter定律和需求/能力接口分离时,我们应该首先得到:
但鉴于从嘲讽的角度来看这是不切实际的,我们可以通过以下方式获得更简单的外观:
问题是我只是看不出这是如何解决不违反得墨忒耳法的问题.我认为它维护原始客户和原始服务之间的法律.但它只是在FACADE中移动了违规行为.
是否可以从IntelliJ IDEA中运行sbt-assembly?
另外,我在文档中读到可以在SBT工具窗口中添加任务.但我所看到的是,它只能帮助您查看项目而非任务?我不能在那里添加任何任务.工具窗口如何正常工作?
我有最新版本的IntelliJ IDEA.
我有一个简单的Sbt项目
name := "xxxx"
organization := "xxxxx"
version := "0.0.2-SNAPSHOT"
scalaVersion := "2.11.6"
resolvers += "spray repo" at "http://repo.spray.io"
scalacOptions in ThisBuild ++= Seq("-language:postfixOps", "-feature")
libraryDependencies ++=
Seq("io.spray" %% "spray-client" % "1.3.3",
"io.spray" %% "spray-json" % "1.3.2",
"com.typesafe.akka" %% "akka-actor" % "2.3.11",
"org.dspace" % "dspace-api" % "1.8.2",
"org.scalatest" %% "scalatest" % "2.2.4" % "test")
Run Code Online (Sandbox Code Playgroud)
当我执行publishLocal时,我的快照总是在Ivy中更新,但是当我执行publishM2时它不起作用.我检查.m2文件夹中的源jar,它永远不会更新.我必须在我的本地.m2文件夹中手动删除我的工件的文件夹,然后再次执行发布.
有没有办法让sbt使用PublishM2替换.m2文件夹中的jar?
为了快速清晰起见,对于那些想开始使用Scala FP库的人,他们正准备变得精通纯FP。
有人可以澄清一下Cats和Cats-Effects,Cats-Effects IO之间的区别/关系吗?最重要的是,Zio和Monix对此持何立场?最后,与ScalaZ 7/8有什么关系?
到目前为止,根据我所读的内容,可以根据可用的文档很好地结合使用的库,它们的作用是Cats,Cats-Effect和ZIO(可以与Cats-effects一起使用)?但是我不太清楚为什么,并且想为自己设定一条学习如何成为更好的FP程序员的良好途径,同时保持生产力,并且不必在开始选择之前完成“ Scala FP编程”。
scala ×5
akka ×2
sbt ×2
actor ×1
akka-stream ×1
bdd ×1
cats-effect ×1
haskell ×1
httpie ×1
javafx ×1
javafx-2 ×1
json ×1
maven ×1
recursion ×1
sbt-assembly ×1
scala-cats ×1
scalafx ×1
scalatest ×1
spock ×1
trampolines ×1
zio ×1