我对这些高级并发范例很陌生,我已经开始使用scala RX绑定了.所以我试图理解RX与RabbitMQ或ZeroMQ等消息队列的区别?
他们似乎都使用订阅/发布范例.在某个地方,我看到一条关于RX在RabbitMQ上运行的推文.
有人可以解释RX和消息队列之间的差异吗?为什么我会选择一个而不是另一个?可以用一个替代另一个,还是互相排斥?它们在哪些区域重叠?
我一直在为RX Java使用scala绑定一段时间了,我正在考虑将它与Akka Actors结合起来.我想知道Observable在Akka Actors 之间传递RX是否安全/可能.例如,一个程序可以打印最多20个(每秒)整数的正方形:
/* producer creates an observable and sends it to the worker */
object Producer extends Actor {
val toTwenty : Observable[Int] = Observable.interval(1 second).take(20)
def receive = {
case o : Observable[Int] =>
o.subscribe( onNext => println )
}
worker ! toTwenty
}
/* worker which returns squares of even numbers */
object Worker extends Actor {
def receive = {
case o : Observable[Int] =>
sender ! o filter …Run Code Online (Sandbox Code Playgroud) 我正试图让zipline与非美国的日内数据一起使用,我已将其加载到pandas DataFrame中:
BARC HSBA LLOY STAN
Date
2014-07-01 08:30:00 321.250 894.55 112.105 1777.25
2014-07-01 08:32:00 321.150 894.70 112.095 1777.00
2014-07-01 08:34:00 321.075 894.80 112.140 1776.50
2014-07-01 08:36:00 321.725 894.80 112.255 1777.00
2014-07-01 08:38:00 321.675 894.70 112.290 1777.00
Run Code Online (Sandbox Code Playgroud)
我在这里遵循移动平均线教程,用我自己的符号代码替换"AAPL",用"1m"数据代替"1d"代替历史调用.
然后,我用做最后一次通知algo_obj.run(DataFrameSource(mydf)),其中mydf高于数据帧.
然而,与TradingEnvironment相关的各种问题都出现了.根据源代码:
# This module maintains a global variable, environment, which is
# subsequently referenced directly by zipline financial
# components. To set the environment, you can set the property on
# the module …Run Code Online (Sandbox Code Playgroud) 有许多可用的Jupyter 内核。我也知道一些项目用于运行嵌入在另一种语言中的一种语言,例如rpy2。但是,我很想知道是否有可能(或是否有计划)将不同的内核组合到一个笔记本中?
所以说我在 python 代码中有一个单元格,在 Scala 代码中有另一个单元格,就像我目前可以有一个代码单元格(按下y一个单元格)以及一个降价单元格一样m。
理想情况下,一个人应该能够来回传递变量,但是对于这个问题,我只是希望能够拥有两种不同的“代码单元”类型,而它们彼此不知道(所以我可以有例如python变量赋值x = 1和scala val x : Int = 2,他们不会知道彼此)。
关于 Haskell 中的递归方案,我最喜欢的事情之一是广义态射(gcata等),它允许使用 monad 转换器库将(共)monadic 计算与递归交错。例如,如这篇很棒的博客文章中所述。
但是,我遇到了一个问题;为了能够使用这些函数,我们需要(co-)monads 是(co-)可排序的。考虑一个类型签名gana:
gana : Monad m => (forall z . m (f z) -> f (m z)) -> (a -> f (m a)) -> a -> b
Run Code Online (Sandbox Code Playgroud)
第一个参数本质上说m必须有一个sequence运算符。
不幸的是,我发现在实践中,有些 monad不是分布式的。例如:
在这种情况下,仍然可以编写一个专门的递归方案来交错 monadic 执行;但是你失去了使用 monad 变压器融合它的能力。即,如果您想将此类非分配 monad 组合在一起,则不能使用转换器将它们与 f-(co) 代数中的 monad/comonad 融合。具体来说,我不能使用 monad 转换器将DBTransactionmonad 与 apomorphism ( ExceptT/EitherT)结合起来;我需要从头开始编写自定义递归方案。
我的问题是是否有人有解决此限制的建议。
我有一个 java 库方法需要一个类Void作为参数。例如,在com.mongodb.async.client.MongoCollection:
void insertOne(TDocument document, SingleResultCallback<Void> callback);
Run Code Online (Sandbox Code Playgroud)
我正在从 Scala 访问此方法。Scala 使用该类型Unit作为等价物Void(如果我错了请纠正我)
如何将 a SingleResultCallback[Unit](而不是SingleResultCallback[Void])传递给此方法?编译器不允许这样做。不应该捡这个吗?
我正在针对外部 API 进行编码,该 API 将似乎是 Windows 时区描述的内容返回为字符串,例如“浪漫标准时间”,我需要将它们解析为 javaZoneId或偏移量。此处提供了这些值的列表。
该java.time.ZoneId文件指出:
时区规则由政府定义并经常更改。有许多组织(此处称为组)监视时区更改并对其进行整理。默认组是 IANA 时区数据库 (TZDB)。其他组织包括 IATA(航空业机构)和微软。
所以我的问题是,是否存在java.time.zone.ZoneRulesProviderjavadoc 中提到的来自 Microsoft的公共实现?
我知道 Microsoft 时区和标准 IANA TZDB 之间存在关系,例如参见这个问题。但我想知道的是,是否存在ZoneRulesProvider我可以作为属性传入的标准实现,如 javadoc 中所述:
如果定义了系统属性 java.time.zone.DefaultZoneRulesProvider ,则它被视为要作为默认提供程序加载的具体 ZoneRulesProvider 类的完全限定名称,使用系统类加载器。