小编Rob*_*ert的帖子

如何将域对象绑定到JavaFX TreeView?

如何将域对象绑定到JavaFX TreeView?ComboBox有getItems(),你可以添加一些东西到该集合.TreeView似乎没有这样的方法.我只能通过将TreeItems添加到TreeView的根目录然后使用getChildren().add(...)添加子项来手动构建树,但似乎没有办法只添加可观察的树结构.

域对象可以从文件中读取自身并将自身写入文件.它有修改其内容的方法.如何最好地将其与TreeView挂钩,以便用户可以添加和删除节点?

我不想在我的域对象中使用GUI代码(即JavaFX类).

我是否需要编写一个可以将我的域对象转换为JavaFX树的Adapter类?然后将监听器添加到树中并将更改映射回域对象?或者,还有更好的方法?

model-view-controller javafx

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

如何在没有 @Optional 注释的情况下在 Gradle 任务上指定可选输入?

我想使用可选输入(如果存在),如果不存在则继续。

当我运行时gradle -Dorg.gradle.warning.mode=all,我收到了仅指定输入的弃用警告:

任务“:addWorkingCopyInfo”的配置存在问题。通过 TaskInputs 和 TaskOutputs 方法注册无效的输入和输出已被弃用,并计划在 Gradle 5.0 中删除。- 为属性“$1”指定的文件“/Users/robert/test/special-build-tag”不存在。

这是构建脚本中的任务:

task addWorkingCopyInfo(type: Exec) {
    inputs.file file("tagFile")   // deprecated if the file does not exist
    outputs.file file("generated/taginfo")
    executable "perl" args "..."
}
Run Code Online (Sandbox Code Playgroud)

我已经看到,@Optional如果我有自定义任务类,我可以添加注释,但这里的情况并非如此。

我最好的解决方案是添加对文件的检查,并且仅将其作为输入(如果存在)。这似乎有效。

task addWorkingCopyInfo(type: Exec) {
    def tagFile = new File("tagFile");
    if (tagFile.exists()) {
        inputs.file tagFile
    }
    outputs.file file("generated/taginfo")
    executable "perl" args "..."
}
Run Code Online (Sandbox Code Playgroud)

有没有更好/更 Gradle 风格的方法来做到这一点?

gradle

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

Qt Creator IDE不支持多行正则表达式搜索

我使用“搜索结果”窗口搜索CMakeLists.txt的某些内容,然后选择了“使用正则表达式”,而正则表达式为

 (add_executable|add_library|target_link_libraries)\s*\(.*mylib.*\)
Run Code Online (Sandbox Code Playgroud)

但是正则表达式的“ \ s”与“ \ n”不匹配。我将“ \ s”更改为“。”,但不匹配。我在正则表达式的前面添加了“(^ m)”,但仍然不匹配。

这是Qt Creator IDE的错误吗?我可以使用支持多行搜索的其他工具或Qt Creator插件吗?

qt qt-creator

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

如何使用 JsonPath 向 Json 添加新节点?

我正在使用 JSON 并面临一些问题。

我想在 JSON 对象中插入/更新路径。在路径不存在的情况下,它将被创建,然后我插入一个新值。如果它退出,它将被一个新值更新

例如,我想添加这样的新路径:

val doc = JsonPath.parse(jsonString)
doc.add("$.user.name", "John")
Run Code Online (Sandbox Code Playgroud)

但我总是收到此错误,因为路径不存在:

com.jayway.jsonpath.PathNotFoundException 类:路径 $['user'] 中缺少属性

因此,如果它不存在,我想创建一个新路径。

这是我的代码,但jsonString不会改变:

var jsonString = "{}" val conf = Configuration.defaultConfiguration().addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL).addOptions(Option.SUPPRESS_EXCEPTIONS)
JsonPath.using(conf).parse(jsonString).set(JsonPath.compile("$.user.name"), "John") 
Log.d("TAG", "new json = $jsonString") 
Run Code Online (Sandbox Code Playgroud)

请给我你的建议。非常感谢!!

java json jsonpath

5
推荐指数
2
解决办法
9953
查看次数

并发I/O - 缓冲损坏,阻止设备驱动程序

我开发块分层设备驱动程序.因此,我拦截WRITE请求并加密数据,并在end_bio()例程中解密数据(在处理和READ请求期间).所以一切都在单流中正常工作.但是如果尝试同时从两个或多个进程执行I/O,我会得到缓冲区内容损坏.我没有缓冲区的本地存储空间.

我是否需要计算一个BIO在我的驱动程序中合并?

Linux I/O子系统是否有一些与并发I/O请求相关的要求?

是否有一些与堆栈使用或编译有关的技巧和窍门?

这是在内核4.15下.

当时我使用下一个限制来运行磁盘扇区:

    /*
     * A portion of the bio_copy_data() ...
     */
    for (vcnt = 0, src_iter = src->bi_iter; ; vcnt++)
        {
        if ( !src_iter.bi_size)
            {
            if ( !(src = src->bi_next) )
                break;

            src_iter = src->bi_iter;
            }

        src_bv = bio_iter_iovec(src, src_iter);

        src_p = bv_page = kmap_atomic(src_bv.bv_page);
        src_p += src_bv.bv_offset;

        nlbn    = src_bv.bv_len512;
        for ( ; nlbn--; lbn++ , src_p += 512 )
                {
                {
                /* Simulate a processing of data …
Run Code Online (Sandbox Code Playgroud)

c linux linux-kernel

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

HttpClient 关闭连接

我想问一下执行后这段代码是否自动关闭连接。此外,如果它失败并崩溃,它还会关闭连接吗?

HttpClient.newHttpClient().send(
    HttpRequest.newBuilder()
        .uri(URI.create("url_website"))
        .timeout(Duration.ofSeconds(5))
        .GET()
        .build(),
    HttpResponse.BodyHandlers.ofString())
.body()
Run Code Online (Sandbox Code Playgroud)

java java-http-client java-11

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

为什么 pydantic 不将我的 bool 编码为 json?

我想让 Pydantic 将布尔值写为“y”或“n”。关于编码器的 Pydantic 文档建议我可以配置一种根据数据类型对值进行编码的方法(在我的例子中)bool

from pydantic import BaseModel

class MyStuff(BaseModel):
    do_it: bool = False

    class Config:
        json_encoders = {
            bool: lambda b: "y" if b else "n",
        }

ms = MyStuff()
print(ms.json(exclude_defaults=False))
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到

{“do_it”:假}

当我期待的时候

{“do_it”:“n”}

其他尝试:

  • 我是否指定默认值并不重要。

  • 我无法让它适用于其他基本数据类型,例如int,但它确实适用于pathlib.Path.

  • lambda如果我用这样的函数替换它也不起作用:

def convert_my_bool(b: bool) -> str:
    if b:
        return "y"
    return "n"

class MyStuff(BaseModel):
    do_it: bool

    class Config:
        json_encoders = {
            bool: convert_my_bool,
        }
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?我需要如何Config在模型中将布尔值写为“y”或“n”?

python pydantic

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

如何克服 InstaPy 中的 cookie 问题?

我正在尝试学习在 InstaPy 上编码。

首先,我们开始使用 Selenium,效果很好。

然后,在安装 InstaPy 后,事情开始变得忙碌:显然,Instagram 的 cookie 不是通用的,并且从一个国家到另一个国家都会发生变化。因此,绕过 cookie 页面的代码以相同的方式处理不同的问题。这就是我收到此错误的原因:

未找到 Cookie 文件,正在创建 Cookie...

使用 InstaPy 登录后,我收到此“接受 cookies”页面,然后收到前面提到的此错误。如果我手动单击“全部接受”,它就会起作用并继续工作流程。

所以我这里的问题是如何绕过这个问题:我应该修改库中的代码吗?(说实话,我很难理解 InstaPy 类的整个编码。)

或者我应该尝试手动完成所有事情?

"""
This template is written by @loopypanda

What does this quickstart script aim to do?
- My settings is for running InstaPY 24/7 with approximately 1400
follows/day - 1400 unfollows/day running follow until reaches 7500 and than switch to unfollow until reaches 0.
"""

from instapy import InstaPy
from instapy import smart_run

# get a …
Run Code Online (Sandbox Code Playgroud)

python cookies selenium instagram instapy

5
推荐指数
0
解决办法
1400
查看次数

Gradle:如何使任务依赖于环境变量?

例如:我生成一个包含构建信息(SVN 分支、修订版、构建日期)的文件,并将其包含在我的构建中。现在我想在该文件中包含环境变量的值,并让 Gradle 将该变量识别为依赖项。我怎样才能做到这一点?

我总是可以将变量写入文件并依赖它。有没有更简单的方法而不需要额外的文件?

gradle

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

Java尝试捕获,直到没有抛出异常

我试图使用扫描仪和无限循环从用户获取一个整数.我知道解决这个问题的解决方案,但我一直想知道为什么我的第一种方法不能正常工作?

Scanner myScanner = new Scanner(System.in);
int x = 0;
while(true){
    try{
        System.out.println("Insert a number: ");
        x = myScanner.nextInt();
        break;
    }catch(InputMismatchException e){
        System.out.println("Invalid, try again.");
        continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

它适用于第一次迭代,但它只是在屏幕上永远打印"无效,再试一次".

java exception

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