小编pie*_*mes的帖子

为什么RISC-V没有计算执行指令?

我需要在RISC-V上处理bignum计算(加法和减法,但我将减法视为等同于有符号加法),情况有点复杂。我通过半个小时的互联网研究得到的信息:

  • RISC-V 操作不提供检查进位或溢出的方法
  • 这一决定的动机是,标志或其他处理方法给无序微架构增加了很多复杂性。
  • 相反,他们建议事后进行分支
    • 对于无符号加法,可以使用单个bltu.
    • 如果操作数之一的符号已知,则与有符号加法相同
    • 否则,需要执行两次检查(三个附加指令)
  • 互联网上的人们对此非常愤怒(我不会在这里链接)

据我所知,这些分支确实很好地涵盖了大多数场景,除了一个:(有符号)bignum 加法。因为在那里,我们遇到了热循环中最慢的检查路径。

我对 ISA 设计知之甚少,但为什么他们不包含计算(a + b) >> 32(实际上是执行)的指令?有点像乘法指令被分成mulmulh的方式。这将允许始终使用两条指令进行所需的计算。更强大的微架构甚至可以检测序列并且只进行一项加法。

我是否遗漏了一些会使该指令过时(或与其等效)的技巧?它有我需要监督的重大缺点吗?我没有找到关于这个一般主题的很多好的文档。

assembly instruction-set bignum riscv

10
推荐指数
1
解决办法
3704
查看次数

java中的Windows本机文件选择器

显然,Windows (10) 上有(至少?)两个不同的本机文件选择器。有一个,它被JFileChooser和其他程序使用:图片来自:http://stackoverflow.com/questions/10745198/how-to-use-the-default-file-chooser-for-the-operating-system-java

还有一个,例如 Chrome 使用的: 其他 Windows 本机文件选择器

我比第一个更喜欢它,因为:

  • 您可以直接在顶部输入您的文件路径
  • 您可以搜索文件夹
  • 左侧的直接访问包含整个文件树

我如何在 Java 中获取它?

java windows jfilechooser look-and-feel

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

Gradle 使用 `--add-exports` 运行

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)

java javafx controlsfx

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

Java将对象缓存到磁盘

我有一个相当大的对象(一个复杂的类,可以使其序列化)的集合以及对其进行操作的算法。该算法必须对每个对象多次处理,并且一次只需要集合中的几个对象。

为了节省RAM,如果内存不足,我想将算法暂时不使用的对象缓存到磁盘上。该算法需要知道哪些对象在磁盘上,以便可以尽可能长地避免它们。

我该如何实现?我必须自己实现还是已有库?

编辑:

自从我尽快丢弃这些对象以来,大概不会有几百个这些对象。每个对象(简化描述)都包含一个二维数组,最多包含256x256个元素。考虑主阵列的平均负载约为30%,子阵列在大多数情况下几乎都已满。数组中的每个对象都包含一些较小的数据:一些带有向量的数组列表,一个属性HashMap等。我通过实例化将大部分数据外包,因此它很小。

java serialization caching

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

将 URL 转换为 Path 而不抛出异常

我遇到的一个常见情况是,我想对项目中的本地资源进行一些 IO 操作。访问本地资源的最简单方法是getClass().getResource("path")返回一个 URL。* IO 内容的最简单方法是通过Files.XXX它需要java.nio.Path大部分时间。

将 URL 转换为路径很容易:Paths.get(url.toURI()). 可悲的是,这可能会抛出一个URISyntaxException我现在必须抓住的问题。我不明白为什么,这很烦人,很丑,我从来没有,我讨厌它。

现在真正的问题是:是否有其他方法可以将本地资源作为 Path 访问或将 URL 转换为 Path 而不会引发异常?


  • 我知道也有getResourceAsStream(),但一个简单的InputStream往往是不够的。

java url nio path

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

Rust 中的原始套接字

我在 C 中使用原始套接字。我想在 Rust 中做同样的事情。据我所知,标准库中没有这样的低级功能。无论如何,我怎样才能进行原始套接字调用?

sockets network-programming rust

2
推荐指数
1
解决办法
1万
查看次数

如何打开带有与 C 打开函数匹配的 i32 提供的标志的文件?

我需要打开一个文件,并且我有一个&Path和一个i32用于标志。我可以使用 打开文件File::open(path),但这不允许我设置选项。文档说我应该使用OpenOptions,但我没有看到任何方法可以OpenOptions从我的i32. 我的标志的内容定义为open(2).

我使用的标志是526338,如果你想自己测试一下。

libc rust

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