我有以下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
字节.
我最近开始更多地使用 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
我想使用 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,因此答案似乎不起作用。
我也不想为此需要一个新的 …