小编Seb*_*iot的帖子

如何使用"implicit"作为apply()参数?

我想做这个:

abstract class Context {
    def getInt(id: Int): Int
}

abstract class Dependency[+T]
(val name: String, val id: Int)
extends Function1[Context,T]

class IntDependency(name: String, id: Int)
extends Dependency[Int](name, id) {
    def apply(implicit context: Context): Int =
        context.getInt(id)
}
Run Code Online (Sandbox Code Playgroud)

但后来我得到一个这样的错误信息:

class IntDependency needs to be abstract, since method apply in trait
Function1 of type (v1: Context)Long is not defined (Note that T1 does
not match Context)
Run Code Online (Sandbox Code Playgroud)

我理解implicits通常应该是第二个参数列表的一部分,但我无法弄清楚如何编码它以便编译,并给出我想要的结果.

说明:我正在尝试创建一个框架,其中可以定义"Function"对象,该对象可以依赖于其他函数来计算它们的值.所有函数应该只接受一个Context参数.上下文知道其他函数的"结果".函数实例应该是不可变的,状态驻留在上下文中.我希望函数在创建时创建"依赖"字段,隐式获取上下文,并返回该上下文中依赖项的值,以便访问apply方法内部的依赖关系"感觉"访问参数或字段,即没有明确地将上下文作为参数提供给依赖项.

scala implicit apply

5
推荐指数
1
解决办法
1784
查看次数

Scala泛型:Int不符合Comparable?

以下Scala声明是可以的:

trait Base[B <: Base[B,M,ID], M <: Meta[B,M,ID], ID <: Comparable[ID]] {
    // ...
}

trait Meta[B <: Base[B,M,ID], M <: Meta[B,M,ID], ID <: Comparable[ID]] extends Ordered[Meta[_,_,_]] {
    // ...
}

trait BaseWithID[B <: BaseWithID[B,M,ID], M <: Meta[B,M,ID], ID <: Comparable[ID]] extends Base[B,M,ID] with Ordered[B] {
    // ...
}


trait BaseWithIntID[B <: BaseWithIntID[B,M,ID], M <: MetaWithIntID[B,M,ID], ID <: Comparable[ID]] extends BaseWithID[B,M,ID] {
    // ...
}

trait MetaWithIntID[B <: BaseWithIntID[B,M,ID], M <: MetaWithIntID[B,M,ID], ID <: Comparable[ID]] extends Meta[B,M,ID] {
    // ... …
Run Code Online (Sandbox Code Playgroud)

generics int scala comparable

5
推荐指数
1
解决办法
3066
查看次数

什么样的数据库操作同时是"幂等的和可交换的"?

我正在研究Scala数据库框架/包装器,并在Twitter上遇到了Gizzard.虽然我一开始印象深刻,但在阅读限制时我冷却了.他们说你所做的所有数据库操作都必须是幂等的和可交换的.如果我理解得当,这基本上几乎没有留下任何东西.例如,如果我有一个带整数计数器的实体,则必须递增.我可以使用"增量"操作,也可以使用"设置"操作.但是增量不是幂等的(如果你运行它两次,你得到一个不同的结果然后运行一次),并且set不会是可交换的(设置前5然后2给出不同的结果然后设置前两个然后设置5).那么"插入 - 如果缺席"还有什么区别,这对大多数用例来说都不是很有用.分布式数据库框架有何局限性,以至于你基本上无法对它做任何有用的事情?我必须遗漏一些重要的东西.

[编辑]除了"insert-if-absent"(以及"delete-if-present")之外,我认为"compare-timestamp-and-set"既是幂等的又是可交换的,如果更改排队而不是丢弃,什么时候"以前的变化"仍然缺失.但我不知道是否有任何数据库实现了这一点.

database idempotent

5
推荐指数
2
解决办法
2880
查看次数

如何在OSGi Bundle中创建/初始化Javassist ClassPool?

我在Eclipse中创建了一个Bundle,并在"Overview"选项卡中使用了"Launch the Framework"链接.我在我的bundle中创建了一个接口(TestService),以及应该为它生成代理的代码(在Helper中).我在Bundle的Activator中调用此代码,并得到:

Caused by: javassist.NotFoundException: com.test.services.TestService
at javassist.ClassPool.get(ClassPool.java:436)
at com.test.services.Helper.get(Helper.java:46)
Run Code Online (Sandbox Code Playgroud)

它会在第一个ClassPool.get()中抛出:

ClassPool pool = ClassPool.getDefault();
CtClass result = pool.get(TestService.class.getName());
...
Run Code Online (Sandbox Code Playgroud)

TestService是公共的,在同一个包中,而Bundle是Helper,它生成Exception.显然,仅仅执行"ClassPool.getDefault()"并不够好.那么我需要做什么才能使ClassPool看到Bundle中的类?我是否必须导入自己的包裹?

osgi classpath

5
推荐指数
2
解决办法
7940
查看次数

Eclipse:错误(字节代码大纲)SOURCE FILE [在PROJECT中]不在其项目的构建路径上

我只是安装了ASM Eclipse插件(并重新启动),它提供了一个改进的字节码大纲,我可以将它用于JRE类,但是查看我自己的代码,我在标题中收到错误消息.

我的java项目是自动构建的,我的源文件没有错误,我可以看到项目属性的Java Build Path中定义的Default输出文件夹中的类文件.

eclipse java-bytecode-asm

5
推荐指数
1
解决办法
1908
查看次数

运行 JWS Swing 应用程序时出现“java.lang.UnsatisfiedLinkError:java.library.path 中没有 awt”

我们有时会从客户那里收到这个奇怪的错误(自动地,直到现在还没有填写用户报告),我们没有人能理解它。用户在 Win7 机器上启动我们的 Swing Java-Web-Start“胖客户端”,最终使用一些应该生成 PDF 文档的操作(使用古老的、修改过的 Apache FOP 版本),最终得到这个错误。到目前为止,它在我们这边是不可复制的。谷歌也没有帮助解决这个问题。

最大的问题是,当需要 awt dll 来激活导致错误的操作时,怎么会缺少 awt dll?

有什么东西可以卸载awt dll吗?堆栈跟踪几乎总是相同的,我们没有发现任何其他错误的证据。这可能是未记录的先前本机错误的结果吗?

编辑:PDF 生成在后台线程中运行,而阻塞的“等待”对话框可防止用户关闭或以其他方式操作 UI。

java.lang.UnsatisfiedLinkError: no awt in java.library.path
    at java.lang.ClassLoader.loadLibrary
    at java.lang.Runtime.loadLibrary0
    at java.lang.System.loadLibrary
    at sun.java2d.cmm.lcms.LCMS$1.run
    at java.security.AccessController.doPrivileged
    at sun.java2d.cmm.lcms.LCMS.getModule
    at sun.java2d.cmm.lcms.LcmsServiceProvider.getModule
    at sun.java2d.cmm.CMMServiceProvider.getColorManagementModule
    at sun.java2d.cmm.CMSManager.getModule
    at java.awt.color.ICC_Profile.getInstance
    at java.awt.color.ICC_Profile.getInstance
    at org.apache.fop.pdf.PDFICCBasedColorSpace.setupsRGBColorProfile
    at org.apache.fop.pdf.PDFICCBasedColorSpace.setupsRGBAsDefaultRGBColorSpace
    at org.apache.fop.render.pdf.PDFRenderingUtil.addsRGBColorSpace
    at org.apache.fop.render.pdf.PDFRenderingUtil.setupPDFDocument
    at org.apache.fop.render.pdf.PDFDocumentHandler.startDocument
    at org.apache.fop.render.intermediate.IFRenderer.startRenderer
    at org.apache.fop.area.RenderPagesModel
    at org.apache.fop.area.AreaTreeHandler.setupModel
    at org.apache.fop.area.AreaTreeHandler
    at org.apache.fop.render.RendererFactory.createFOEventHandler
    at org.apache.fop.fo.FOTreeBuilder
    at org.apache.fop.apps.Fop.createDefaultHandler
    at org.apache.fop.apps.Fop
    at org.apache.fop.apps.FopFactory.newFop
    at …
Run Code Online (Sandbox Code Playgroud)

java swing awt apache-fop

5
推荐指数
1
解决办法
5571
查看次数

如何"发布"CAF中的大量演员?

我刚刚了解了CAF,即C++ Actor Framework.

让我感到惊讶的一件事是,通过网络提供演员的方法是将其"发布"到特定的TCP端口.

这基本上意味着您可以发布的actor的数量受到您拥有的端口数量的限制(64k).由于你需要一个端口来发布一个actor和一个端口来访问一个远程actor,我假设两个进程每个最多可以共享大约32k个actor,而它们每个可能在商品服务器上拥有一百万个actor. .如果集群有10个节点,情况会更糟.

为了使发布可扩展,每个进程应该只需要为一个系统中的每个actor 打开1个端口,并打开1个连接到他们想要访问的每个actor系统.

有没有办法发布一个actor作为actor系统中所有actor 的代理(最好没有任何重大的性能损失)?

c++ distributed-computing actor c++-actor-framework

5
推荐指数
1
解决办法
425
查看次数

Scala:将Map [K,V]转换为IntMap [V]的最有效方法是什么?

假设我有一个带有toInt方法的Point类,并且Map[Point,V]对于某种类型我有一个不可变的V。在Scala中将其转换为an的最有效方法是IntMap[V]什么?这是我当前的实现:

def pointMap2IntMap[T](points: Map[Point,T]): IntMap[T] = {
    var result: IntMap[T] = IntMap.empty[T]
    for(t <- points) {
        result += (t._1.toInt, t._2)
    }
    result
}
Run Code Online (Sandbox Code Playgroud)

[编辑]我的意思主要是更快,但是即使它们显然不是更快,我也会对较短的版本感兴趣。

scala map

4
推荐指数
1
解决办法
761
查看次数

如何从Scala返回"原始Java char"?

如果我写:

def getShort(b: Array[Byte]): Short
Run Code Online (Sandbox Code Playgroud)

在Scala中,我在Java中获得了原始的简短,这很好.但如果我写:

def getChar(b:Array [Byte]):Char

我得到一个scala.Char对象,这不是很好.如果我写:

def getChar(b: Array[Byte]): Character
Run Code Online (Sandbox Code Playgroud)

我得到了一个java.lang.Character,这也不错.

如果Scala"Char"不是Java"char",而Scala"Character"不是Java"char",那还剩下什么?

java scala char

4
推荐指数
1
解决办法
1341
查看次数

UML状态机:如何退出正交子区域?

基于维基百科,我可以进行分层状态分解,其中我有多个正交区域,可以独立地改变状态.

该图显示了如何输入正交区域.我假设该条目在所有地区并行发生.我想知道的是,你如何表达出口?如果每个区域都有一个出口,那么当第一个子区域退出时,或者当它们全部退出时,全局父状态是否会退出?我想表示退出发生在他们全部退出时.那么你如何表达全球母国过渡到下一个全球国家,因为所有的儿童地区已经退出?这总是隐含的吗?

我的具体问题是我的FSM在Initializing global状态下启动.它以并行异步方式向多个外部系统发送多个查询.只有在收到每个查询的答案后,才能继续.因此,我将每个异步并行查询建模为全局初始化状态内的正交区域.每个子区域可以独立地改变状态.当所有儿童区域都达到最终状态时,我可以继续前进.

FSM将在Actor框架中实现,其中异步消息(事件)是唯一的通信方式.

理想情况下,我希望答案指向一个示例图像,因为这样的事情很难用文字表达.

uml state-machine

3
推荐指数
1
解决办法
2869
查看次数