小编Ale*_*rov的帖子

最后块是否真的需要清理代码(如关闭流)?

我很困惑为什么我需要将清理代码放在一个finally块中关闭流.

我已经读过finally块中的代码无论如何都会运行(是否存在异常); 并且在finally块运行之后,该方法的其余部分继续.

我的问题是:如果方法的其余部分必须继续,那么为什么我不在函数中的try/catch块之后放入清理代码?

java exception-handling try-catch-finally

8
推荐指数
2
解决办法
2184
查看次数

如何使用ANTLR4构建AST?

我有一个ANTLR3语法,可以构建一个抽象语法树.我正在寻求升级到ANTLR4.但是,似乎ANTLR4只构建解析树而不是抽象语法树.例如,output=AST不再识别该选项.此外,"The Definitive ANTLR4 reference"的文本中既没有出现"AST"也没有出现"抽象语法".

我想知道我是否遗漏了什么.

我的应用程序目前知道如何爬行ANTLR3生成的AST.更改它以处理解析树并非不可能,但这将是一项工作.在我开始走这条路之前,我想确定它是必要的.

abstract-syntax-tree antlr4

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

如何在GoJS中动态添加节点数据和链接数据?

 myDiagram.model = new go.GraphLinksModel(
[

  { key: "Alpha", color: "lightblue" },
  { key: "Delta", color: "pink" }

],
[
  { from: "Alpha", to: "Alpha" },
  { from: "Delta", to: "Alpha" }
]);
Run Code Online (Sandbox Code Playgroud)

我需要动态添加更多值,我该怎么做?

javascript add gojs

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

如何正确地抑制"需要自动模块的传递指令"警告?

将Maven项目升级到Java 9并添加模块描述符后,javac抱怨自动模块传递依赖:

[警告] /.../scrc/main/java/module-info.java:[3,35] requires transitive自动模块指令

module-info.java重现问题的一个例子:

module com.example.mymodule {
    exports com.example.mymodule.myexportedpackage;
    requires transitive com.google.common;
}
Run Code Online (Sandbox Code Playgroud)

这个警告的含义是完全清楚的,这里有一些相关的链接:

问题是 - 如何在不修复实际问题的情况下抑制此警告,并且不禁用所有其他javac警告?

我尝试了以下选项,但它们都没有奏效:

  • @SuppressWarnings("module")module-info.java
  • @SuppressWarnings("all")module-info.java
  • -Xlint:all,-module 命令行选项

不幸的是,我无法修复实际问题(现在),因为"my"模块具有来自第三方(自动)模块(例如Guava)的返回类型和注释.因此,如果我使用"require com.google.common"(不带transitive),则会有不同的警告,例如:

[WARNING] .../MyClass.java:[25,20] com.google.common.collect.Table模块中的类com.google.common不是间接导出的requires transitive

当然,我无法为第三方库定义模块描述符(现在是自动模块).

我正在使用-Werror我想保留的,所以警告不仅仅是烦人的......


PS我不打算将我的工件发布到任何公共存储库.

java javac java-9 java-module

8
推荐指数
2
解决办法
968
查看次数

在php中创建1位位图(单色)

我正在寻找从这个内容的字符串写一个1位位图的可能性:

$str = "001011000111110000";
Run Code Online (Sandbox Code Playgroud)

零是白色,一个是黑色.BMP文件为18 x 1 px.

我不想要24位BMP,而是真正的1位BMP.

有谁知道PHP中的标题和转换方法?

php bitmap bit

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

在深度优先搜索中实现显式堆栈

我有一个特别大的图形,因为它使用了过多的内存,因此使用递归几乎不可能遍历.

下面是我的深度优先函数,使用递归:

public function find_all_paths($start, $path)
{
    $path[] = $start;
    if (count($path)==25) /* Only want a path of maximum 25 vertices*/ {
        $this->stacks[] = $path;
        return $path;

    }
    $paths = array();

    for($i = 0; $i < count($this->graph[$start])-1; $i++) {
        if (!in_array($this->graph[$start][$i], $path)) {
     $paths[] = $this->find_all_paths($this->graph[$start][$i], $path);

        }
    }


    return $paths;
}
Run Code Online (Sandbox Code Playgroud)

我想重写这个函数,所以它是非递归的.我假设我需要创建某种类型的队列,并使用array_shift()函数的哪个部分弹出值,以及如何确保排队的顶点被保留(以便最终路径启用$this->stacks)?

php algorithm recursion graph depth-first-search

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

antlr4:预计ATN版本2 3

当我尝试使用生成的语法和词法分析器时,我得到:

org.antlr.v4.runtime.atn.ATN; 无法使用版本2(预期3)反序列化ATN.

怎么了?

java antlr antlr4

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

如何比较两个json忽略数组属性中元素的顺序?

我需要比较两个表示json对象的字符串。为了进行测试,我需要一种比较这些字符串的方法,不仅要忽略子元素的顺序(这很常见),而且要忽略jsons数组属性中的元素顺序。即:

group: {
    id: 123,
    users: [
       {id: 234, name: John},
       {id: 345, name: Mike}
    ]
}
Run Code Online (Sandbox Code Playgroud)

应该等于:

group: {
    id: 123,
    users: [
       {id: 345, name: Mike},
       {id: 234, name: John}
    ]
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,我需要一些javascript lib,但是也欢迎使用其他方法。

javascript json compare equals jsonassert

6
推荐指数
2
解决办法
5733
查看次数

争论功能

我对这个定义为函数的参数感到困惑

int bind(int s, const struct sockaddr *name, int namelen)
Run Code Online (Sandbox Code Playgroud)

并称为

bind(sd, (struct sockaddr_in *) &addr, length);
Run Code Online (Sandbox Code Playgroud)

我无法解释struct sockaddr_in *这里的含义.

这会有用bind (sd, &addr, length);吗?

c pointers arguments structure function

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

ABBR HTML标记的标题和内容中的语言不同

假设我正在用HTML写一篇文章.这篇文章的语言是瑞典语,所以我有<html lang="sv">.现在我想在以下文本中正确标记缩写:

HTML kan användas till mycket.
Run Code Online (Sandbox Code Playgroud)

为此,我先做

<abbr title="HyperText Markup Language">HTML</abbr> kan användas till mycket.
Run Code Online (Sandbox Code Playgroud)

然而,仅此一点还不够好,因为该title属性的语言是Swedish(sv).除了是一个理论问题,这将使屏幕阅读器以极其尴尬的方式发布标题.为了解决这个问题,我能做到

<abbr title="HyperText Markup Language" lang="en">HTML</abbr> kan användas
  till mycket.
Run Code Online (Sandbox Code Playgroud)

但更糟糕的是,因为现在缩写'HTML'将在Enligsh中读取而不是瑞典语[因此从瑞典的角度来看,它听起来像"ejtsch-ti-emm-ell"而不是"hå-te" -emm-ELL"].

因此,缩写,或文本内容中的abbr节点,应在瑞典,但title属性应是英文的.标记这个的首选(HTML5)方式是什么?是吗

<abbr title="HyperText Markup Language" lang="en">
  <span lang="sv">HTML</span>
</abbr> kan användas till mycket.
Run Code Online (Sandbox Code Playgroud)

html html5 semantic-markup abbr lang

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