我有一个依赖项的类,我想热部署而不重新启动依赖项.该类有一个接口,但只有一个具体的实现.
最初我创建了一个包,导出了接口,并使用未导出的激活器和实现类注册了实现.但是,如果我更新捆绑包,则在调用PackageAdmin#refreshPackages时更新后会重新启动使用已注册服务的捆绑包(这在使用fileinstall时是自动的).
我通过创建一个单独的api包来解决这个问题.
这是实现这一目标的最佳方式吗?
你有没有一个捆绑导出它的api并包含在同一捆绑中的实现.据我所知,任何给出的bundle都会导出它的所有类或没有类.我错过了什么?
我们有一些代码需要运行得更快.它已经分析了,所以我们想要使用多个线程.通常我会设置一个内存队列,并有许多线程从事队列的工作并计算结果.对于共享数据,我将使用ConcurrentHashMap或类似的.
我真的不想再去那条路了.从我所看到的使用演员将导致更清晰的代码,如果我使用akka迁移到超过1 jvm应该更容易.真的吗?
但是,我不知道如何在演员中思考,所以我不知道从哪里开始.
为了更好地了解问题,这里有一些示例代码:
case class Trade(price:Double, volume:Int, stock:String) {
def value(priceCalculator:PriceCalculator) =
(priceCalculator.priceFor(stock)-> price)*volume
}
class PriceCalculator {
def priceFor(stock:String) = {
Thread.sleep(20)//a slow operation which can be cached
50.0
}
}
object ValueTrades {
def valueAll(trades:List[Trade],
priceCalculator:PriceCalculator):List[(Trade,Double)] = {
trades.map { trade => (trade,trade.value(priceCalculator)) }
}
def main(args:Array[String]) {
val trades = List(
Trade(30.5, 10, "Foo"),
Trade(30.5, 20, "Foo")
//usually much longer
)
val priceCalculator = new PriceCalculator
val values = valueAll(trades, priceCalculator)
}
}
Run Code Online (Sandbox Code Playgroud)
如果有经验的玩家可以建议如何映射演员,我会很感激.
我有一个简单的网站,它有点使用jquery但它不是必需的所以我想跳过jquery下载,如果用户连接速度慢.
理想情况下,我会检测到连接速度慢,但我认为检测到手机可能是合理的代理.
如果这是可能的,那么我将删除使用jquery的页面部分,并在加载jquery时动态添加它们.
我考虑的选项是:
但我不确定该说服哪个.
此外,我不能使用服务器端技巧,因为它是一个静态页面(以避免appengine冷启动问题).