小编Run*_*oro的帖子

是否可以忽略异常?

在Java中,是否可以创建一个throws不检查语句的方法.

例如:

public class TestClass {
    public static void throwAnException() throws Exception {
        throw new Exception();
    }
    public static void makeNullPointer() {
        Object o = null;
        o.equals(0);//NullPointerException
    }
    public static void exceptionTest() {
        makeNullPointer(); //The compiler allows me not to check this
        throwAnException(); //I'm forced to handle the exception, but I don't want to
    }
}
Run Code Online (Sandbox Code Playgroud)

java exception-handling exception

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

基于标签的文件系统

现在存在的所有操作系统都在文件和文件夹中工作.我当时认为可能还有其他存储文件的方法.它是通过标签存储文件的更好方法,例如:

如果音乐是在2013年制作的,那么名为"music1"的文件可以有一个标签"2013"​​.同一个文件可以有另一个名为"Music"的标签,说该文件是音乐,另一个名为"video1"的文件可能有"2013"​​标签,但也有"视频"标签而不是"音乐"标签.这将非常有用,因为您可以搜索标签并生成所有文件的漂亮地图.

这是一个例子:

在此输入图像描述

在此示例中,文件为绿色.每个文件都有一些标签(蓝色)和一些特殊标签(红色).特殊标签包含用户之类的东西(只有标签中的用户可以看到标记为USER:Username的文件)和文件类型(而不是文件扩展名).黄色标签是系统文件类型,不需要程序来运行它们(如Windows中的.exe)

  • 黑线将标签链接到文件
  • 红线将特殊标签链接到文件
  • 蓝线链接文件类型(或文件)的打开方式.例如,音乐是ogg文件.它由OggViewer打开,它是由java打开的jar文件.Java由系统打开.

filesystems operating-system hard-drive

14
推荐指数
2
解决办法
3225
查看次数

为什么"inc dword [esp + ebx]"比"inc [esp]"更快?

我有以下NASM组装程序,运行时间约为9.5秒:

section .text
global _start

_start:
  mov eax, 0
  mov ebx, 8
  loop:
    inc dword [esp + ebx]
    inc eax
    cmp eax, 0xFFFFFFFF
    jne loop

  mov eax, 1
  mov ebx, 0
  int 0x80
Run Code Online (Sandbox Code Playgroud)

但是,如果我替换[esp + ebx][esp + 8](自ebx = 8以来相同的内存位置)或甚至只是[esp],它在10.1秒内运行...

这怎么可能?是不是[esp]为CPU比计算更容易[esp + ebx]

optimization x86 assembly

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

Java源代码中的"机械生成"java源文件

当我查看Java源代码时,我发现了一些不寻常的文件,这些文件大多与包中的ByteBuffers 有关,这些文件java.nio包含非常混乱的源代码并被标记This file was mechanically generated: Do not edit!.

这些文件还包含大部分空白行(有些甚至在javadocs中间(!!?)),可能是为了防止行号发生变化.我也看过一些java反编译器,例如procyon-decompiler,它们可以选择保留行号,但我怀疑是这种情况,因为在最终的奖励之前放空行不会改变.

以下是一些这些文件(我在网上找不到任何链接,并没有粘贴它们,因为我不想破坏任何版权,但你可以在src.zipJDK安装根目录下的文件夹中找到它们夹):

  • java.nio.ByteBuffer中
  • java.nio.DirectByteBufferR
  • java.nio.Bits
  • java.nio.BufferOverflowException

我很想知道:

  • 哪个工具生成了这些文件?
  • 为什么该工具保持行号相同?它是否使调试(堆栈跟踪)更容易?
  • 为什么会使用工具来生成它们,而所有其他类都是由人类编程的?
  • 为什么该工具会在括号内,最终荣誉之前,甚至在javadocs中随机放置空行?

java openjdk bytebuffer

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

在Java中,为什么断言关键字而不是方法?

为什么assertjava中有关键字,而不是方法?

方法断言可能如下所示:

public static void assert(boolean condition) {
    if(!condition) {
        throw new AssertionError();
    }
}
Run Code Online (Sandbox Code Playgroud)

java methods assert

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

我可以在IntelliJ中完成整个循环吗?

假设我在IntelliJ中调试以下代码:

for (SomeObject obj1 : iterable1) {
   doSomething(obj1); // <--- I am currently paused on this line
   for (SomeObject obj2 : iterable2) {
      doSomething(obj1, obj2);
   }
}
Run Code Online (Sandbox Code Playgroud)

我想跨过整个内循环来看看内循环如何影响obj1字段,但是"运行到游标"到第一个右大括号只运行内循环的第一次迭代,而"运行到游标"则在第二个右括号结束外循环的迭代,我不再有权访问obj1.

手动单步执行每个迭代都不是一个选项,因为可能有数千个项目,并且也没有在大括号之间添加一行,因为这是库的一部分.

有没有什么方法可以简单地在块的末尾跳过一个循环而不退出包含块?

java debugging intellij-idea

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

Java String.split(正则表达式)不起作用

我想在每次有一个字符串时拆分一个字符串|,但该split方法只接受一个正则表达式.正则表达式|在每个字母后分割字符串,这不是我想要的.使用\u007C也做同样的事情.

我试过用\|,但这只是给了我:Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ ).

java string

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

java中有两个同名的方法

我注意到,如果我有两个具有相同名称的方法,第一个接受SomeObject,第二个接受SomeObject在我调用方法时扩展的对象SomeOtherObject,它会自动使用只接受的方法SomeObject.如果我转换SomeOtherObjectSomeObject,SomeObject则使用接受的方法,即使该对象是instanceof SomeOtherObject.这意味着在编译时选择该方法.为什么?

java methods extends

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