小编KNe*_*jad的帖子

为什么Java类用空行编译不同?

我有以下Java类

public class HelloWorld {
  public static void main(String []args) {
  }
}
Run Code Online (Sandbox Code Playgroud)

当我编译这个文件并在生成的类文件上运行sha256时,我得到了

9c8d09e27ea78319ddb85fcf4f8085aa7762b0ab36dc5ba5fd000dccb63960ff  HelloWorld.class
Run Code Online (Sandbox Code Playgroud)

接下来我修改了类并添加了一个如下所示的空白行:

public class HelloWorld {

  public static void main(String []args) {
  }
}
Run Code Online (Sandbox Code Playgroud)

我再次在输出上运行sha256,期望得到相同的结果,但我得到了

11f7ad3ad03eb9e0bb7bfa3b97bbe0f17d31194d8d92cc683cfbd7852e2d189f  HelloWorld.class
Run Code Online (Sandbox Code Playgroud)

我已阅读此TutorialsPoint文章:

只包含空格的行(可能带有注释)称为空行,Java完全忽略它.

所以我的问题是,由于Java忽略空行,为什么两个程序的编译字节码都不同?

即在该差HelloWorld.class一个0x03字节是由替换0x04字节.

java bytecode compilation javac

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

Ruby 3 IRB 主端和 ctrl-u 不工作

我最近开始更多地使用 Ruby 3,似乎 home 键(将我带到行首)、end 键(行尾)和 ctrl-u(清除行)不起作用。

我正在使用 Ruby 3.1.1p18 和 zsh shell 运行 Arch Linux。这些键在 Ruby 2.7 上工作正常。我尝试过 Alacritty 和 xfce4-terminal,两者都有相同的问题。我没有使用 Tmux 或类似的东西。

几年前有一个类似的问题,但那是针对 Windows 的,解决方案没有帮助:Backspace and arrow key isn't work in IRB(Git Bash console) on windows machine

ruby irb ruby-3

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

如何使用“OR”子句控制 ActiveRecord 查询上的括号位置

我想使用 ActiveRecord for Rails 生成以下 SQL 查询:

SELECT * FROM users WHERE (((1 IS NULL) OR (10 > 20)) AND (2 IS NULL OR (10 > 1)));
Run Code Online (Sandbox Code Playgroud)

所以我写了以下范围:

where('1 IS NULL')
  .or(where('10 > 20'))
  .where('2 IS NULL')
  .or(where('10 > 1'))

Run Code Online (Sandbox Code Playgroud)

但是我得到了一个稍微不同的查询:

SELECT * FROM users WHERE (((1 IS NULL) OR (10 > 20)) AND 2 IS NULL OR (10 > 1));
Run Code Online (Sandbox Code Playgroud)

请注意,第一个没有括号围绕AND在第一个之后的所有内容。这会影响我得到的结果(第一个查询评估为假而第二个为真)。

如何使用 ActiveRecord 编写第二个查询?

这个问题看起来非常相似:如何通过使用 Arel 向带有“or”和“and”子句的 SQL 查询正确添加括号?Arel 现在是 Rails 的一部分,所以任何答案都应该是相关的。

不同之处在于两个查询是相同的,这导致了关于如何使其更清晰的讨论,其次是针对旧版本的 Rails,因此答案似乎不起作用。

我也不想为此需要一个新的 …

ruby sql ruby-on-rails

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

标签 统计

ruby ×2

bytecode ×1

compilation ×1

irb ×1

java ×1

javac ×1

ruby-3 ×1

ruby-on-rails ×1

sql ×1