我需要在RISC-V上处理bignum计算(加法和减法,但我将减法视为等同于有符号加法),情况有点复杂。我通过半个小时的互联网研究得到的信息:
bltu
.据我所知,这些分支确实很好地涵盖了大多数场景,除了一个:(有符号)bignum 加法。因为在那里,我们遇到了热循环中最慢的检查路径。
我对 ISA 设计知之甚少,但为什么他们不包含计算(a + b) >> 32
(实际上是执行)的指令?有点像乘法指令被分成mul
和mulh
的方式。这将允许始终使用两条指令进行所需的计算。更强大的微架构甚至可以检测序列并且只进行一项加法。
我是否遗漏了一些会使该指令过时(或与其等效)的技巧?它有我需要监督的重大缺点吗?我没有找到关于这个一般主题的很多好的文档。
java.lang.IllegalAccessError
因为com.sun.*
在 Java > 9中使用了一个类,所以我得到了一个。解决这个问题的方法是添加--add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls
. 我不知道如何将它添加到我的build.gradle
,但我把
run {
jvmArgs = ['--add-exports=javafx.base/com.sun.javafx.event=org.controlsfx.controls']
}
Run Code Online (Sandbox Code Playgroud)
进入它并没有帮助。这几乎是我遇到的问题。错误信息是:
java.lang.IllegalAccessError: class org.controlsfx.control.textfield.AutoCompletionBinding (in unnamed module @0x2d7444bc) cannot access class com.sun.javafx.event.EventHandlerManager (in module javafx.base) because module javafx.base does not export com.sun.javafx.event to unnamed module @0x2d7444bc
at org.controlsfx.control.textfield.AutoCompletionBinding.<init>(AutoCompletionBinding.java:522) ~[controlsfx-11.0.0.jar:11.0.0]
at impl.org.controlsfx.autocompletion.AutoCompletionTextFieldBinding.<init>(AutoCompletionTextFieldBinding.java:107) ~[controlsfx-11.0.0.jar:11.0.0]
at org.controlsfx.control.textfield.TextFields.bindAutoCompletion(TextFields.java:151) ~[controlsfx-11.0.0.jar:11.0.0]
[…]
at java.lang.Thread.run(Thread.java:835) [?:?]
Run Code Online (Sandbox Code Playgroud) 我有一个相当大的对象(一个复杂的类,可以使其序列化)的集合以及对其进行操作的算法。该算法必须对每个对象多次处理,并且一次只需要集合中的几个对象。
为了节省RAM,如果内存不足,我想将算法暂时不使用的对象缓存到磁盘上。该算法需要知道哪些对象在磁盘上,以便可以尽可能长地避免它们。
我该如何实现?我必须自己实现还是已有库?
编辑:
自从我尽快丢弃这些对象以来,大概不会有几百个这些对象。每个对象(简化描述)都包含一个二维数组,最多包含256x256个元素。考虑主阵列的平均负载约为30%,子阵列在大多数情况下几乎都已满。数组中的每个对象都包含一些较小的数据:一些带有向量的数组列表,一个属性HashMap等。我通过实例化将大部分数据外包,因此它很小。
我遇到的一个常见情况是,我想对项目中的本地资源进行一些 IO 操作。访问本地资源的最简单方法是getClass().getResource("path")
返回一个 URL。* IO 内容的最简单方法是通过Files.XXX
它需要java.nio.Path
大部分时间。
将 URL 转换为路径很容易:Paths.get(url.toURI())
. 可悲的是,这可能会抛出一个URISyntaxException
我现在必须抓住的问题。我不明白为什么,这很烦人,很丑,我从来没有,我讨厌它。
现在真正的问题是:是否有其他方法可以将本地资源作为 Path 访问或将 URL 转换为 Path 而不会引发异常?
getResourceAsStream()
,但一个简单的InputStream
往往是不够的。我在 C 中使用原始套接字。我想在 Rust 中做同样的事情。据我所知,标准库中没有这样的低级功能。无论如何,我怎样才能进行原始套接字调用?
我需要打开一个文件,并且我有一个&Path
和一个i32
用于标志。我可以使用 打开文件File::open(path)
,但这不允许我设置选项。文档说我应该使用OpenOptions
,但我没有看到任何方法可以OpenOptions
从我的i32
. 我的标志的内容定义为open(2)
.
我使用的标志是526338
,如果你想自己测试一下。