小编Bas*_*ass的帖子

如何使用java.nio.Files创建软符号链接

我正在使用如下命令在Windows上创建符号链接:

cmd /c mklink /J "${linkName.canonicalPath}" "${targetFolder.canonicalPath}"
Run Code Online (Sandbox Code Playgroud)

从Groovy并使用Runtime.getRuntime().exec()方法

它工作正常,但我想使用java.nio.Files.createSymbolicLink()方法做同样的事情.但我总是得到相同的错误信息:

java.nio.file.FileSystemException: A required privilege is not held by the client.
Run Code Online (Sandbox Code Playgroud)

mklink/J命令适用于当前用户,我想避免提升权限

java windows groovy nio

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

如果存在嵌套的输入元素,则替换标签的文本

更改标签的文字似乎很简单:

var /**HTMLLabelElement*/ label = ...;
label.innerHTML = "...";
Run Code Online (Sandbox Code Playgroud)

或者,使用jQuery:

var /**HTMLLabelElement*/ label = ...;
$(label).text("...");
Run Code Online (Sandbox Code Playgroud)

如果标签包装<input/>元素,则上述任何一种都无法正常工作:

<label><input type="checkbox">Text</label>
Run Code Online (Sandbox Code Playgroud)

- 在这种情况下,<input/>元素将与旧文本一起替换.

如何更改标签的文本,而不影响其子元素?

html javascript jquery label

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

Failing a unit test if an exception is thrown in another thread

Currently, whenever I need to fail a test in response to an exception thrown in another thread, I write something like this:

package com.example;

import java.util.ArrayList;
import java.util.List;
import org.testng.annotations.Test;

import static java.util.Arrays.asList;
import static java.util.Collections.synchronizedList;
import static org.testng.Assert.fail;

public final class T {
  @Test
  public void testFailureFromLambda() throws Throwable {
    final List<Throwable> errors = synchronizedList(new ArrayList<>());

    asList("0", "1", "2").parallelStream().forEach(s -> {
      try {
        /*
         * The actual code under test here.
         */
        throw new Exception("Error " + s);
      } …
Run Code Online (Sandbox Code Playgroud)

junit testng unit-testing hamcrest assertj

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

在 VACUUM ANALYZE 之后vacuum_count 和analyze_count 都为零

我写了一个单元测试,修改一个表(INSERT年代和DELETE然后手动的)VACUUM的和ANALYZE的,然后我查询pg_stat_user_tables,以确保VACUUMANALYZE也有一定的效果。

我使用以下 SQL:

select
  tbl.relid,
  tbl.schemaname,
  tbl.n_tup_del,
  tbl.n_live_tup,
  tbl.n_dead_tup,
  tbl.n_mod_since_analyze,
  tbl.vacuum_count,
  tbl.analyze_count
from
  pg_stat_user_tables tbl
where
  tbl.relname = lower('...')
  and schemaname = current_schema();
Run Code Online (Sandbox Code Playgroud)

对于普通表和

select
  tbl.relid,
  tbl.schemaname,
  tbl.n_tup_del,
  tbl.n_live_tup,
  tbl.n_dead_tup,
  tbl.n_mod_since_analyze,
  tbl.vacuum_count,
  tbl.analyze_count
from
  pg_stat_user_tables tbl
join
  pg_namespace nsp
on
  tbl.schemaname = nsp.nspname
where
  tbl.relname = lower('...')
  and nsp.oid = pg_my_temp_schema();
Run Code Online (Sandbox Code Playgroud)

对于临时的。

尽管如此,当我运行我的示例时,我观察到vacuum_countanalyze_count都为零,并且该表包含许多死元组,例如:

relid = 913896
schemaname = pg_temp_20
n_tup_del = 10000 …
Run Code Online (Sandbox Code Playgroud)

java postgresql jdbc pg-jdbc

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

Java中CRTP的替代方案

CRTP模式允许模仿所谓的自我类型Java的,例如:

abstract class AbstractFoo<SELF extends AbstractFoo<SELF>> implements Comparable<SELF> {
    @Override
    public final int compareTo(final SELF o) {
        // ...
    }
}

final class C1 extends AbstractFoo<C1> {
    // ...
}

final class C2 extends AbstractFoo<C2> {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码(Comparable为了清楚起见选择了界面;当然还有其他用例),我可以轻松地比较两个实例C1:

new C1().compareTo(new C1());
Run Code Online (Sandbox Code Playgroud)

但不是AbstractFoo具体类型不同的后代:

new C1().compareTo(new C2()); // compilation error
Run Code Online (Sandbox Code Playgroud)

但是,滥用模式很容易:

final class C3 extends AbstractFoo<C1> {
    // ...
}

// ...

new C3().compareTo(new C1()); // compiles cleanly …
Run Code Online (Sandbox Code Playgroud)

java generics crtp

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

支持 NIO.2 中区分大小写的 Windows 目录

最近的 Windows 10 版本能够通过以下方式将单个 NTFS 目录(而不是整个文件系统)标记为区分大小写fsutil.exe

如果我想从 Java 应用程序中查询给定目录的区分大小写的标志,我目前唯一的选择是调用

fsutil.exe file queryCaseSensitiveInfo ...
Run Code Online (Sandbox Code Playgroud)

在每个目录的基础上,这意味着可能会产生多个进程,这很昂贵。

在较新的 Java 版本 (11+) 中是否有针对区分大小写的 NTFS 和/或 WSL 文件系统的计划中的 NIO.2 API 扩展?

java ntfs fsutil nio2 windows-subsystem-for-linux

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

从多个线程对 Kotlin var 进行线程安全访问

考虑以下 Kotlin 代码:

import kotlin.concurrent.thread

fun main() {
    println("Press <Enter> to terminate.")

    var interrupted = false

    val worker = thread {
        while (!interrupted) {
            println("Working...")
            Thread.sleep(1000L)
        }
    }

    System.`in`.read()

    println("Terminating...")
    interrupted = true

    worker.join()

    println("Terminated.")
}
Run Code Online (Sandbox Code Playgroud)

以及使用协程重写的相同示例:

import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking

fun main() = runBlocking {
    println("Press <Enter> to terminate.")

    var interrupted = false

    val worker = launch(Dispatchers.IO) {
        while (!interrupted) {
            println("Working...")
            delay(1000L)
        }
    }

    System.`in`.read()

    println("Terminating...")
    interrupted = true

    worker.join()

    println("Terminated.")
}
Run Code Online (Sandbox Code Playgroud)

这两个示例在大多数情况下都可以工作,但都被破坏了,因为在字节码级别,boolean …

concurrency multithreading kotlin safe-publication kotlin-coroutines

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

使用main()创建共享库

glibc(以及我相信的EGLIBC)中,libc.so库有一个main()方法:

$ /lib/i386-linux-gnu/libc.so.6
GNU C Library (Debian GLIBC 2.19-18+deb8u1) stable release version 2.19, by Roland McGrath et al.
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.8.4.
Compiled on a Linux 3.16.7 system on 2015-08-30.
Available extensions:
        crypt add-on version 2.1 by Michael Glad …
Run Code Online (Sandbox Code Playgroud)

c linux linker shared-libraries

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

可空元素的二维非null数组

在Java 8中,我应该在哪里放置@Nullable/ @NonNulltype注释以声明可以null空的元素的二维非数组?

声明类型(如方法签名)时,两者都有

@Nullable Object @NonNull[][]
Run Code Online (Sandbox Code Playgroud)

@Nullable Object @NonNull[]@NonNull[]
Run Code Online (Sandbox Code Playgroud)

在语法上是有效的.

同样,在定义值(零长度数组)时,我可以使用其中任何一个

new @Nullable Object @NonNull[0][]
Run Code Online (Sandbox Code Playgroud)

要么

new @Nullable Object @NonNull[0]@NonNull[]
Run Code Online (Sandbox Code Playgroud)

哪个版本是正确的?

java annotations nullable java-8 type-annotation

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

在“cygwin”终端下未处理的转义序列

我有一个 Java 应用程序,它使用ANSI 转义序列来显示颜色、定位光标等。

它在常规 Unices 下xterm以及在和mintty(在Cygwin 中)下都可以正常工作,但是我在cygwin终端下运行它时遇到了问题(即bash从 启动cmd.exe)。

正如您从屏幕截图中看到的:

在此处输入图片说明

转义序列“按原样”输出,无需处理。另一方面,我可以轻松地运行 smth 之类的echo -e '\033[1;31mTest'- 并且彩色文本就在那里。

同时,如果我从Midnight Commander子shell启动完全相同的应用程序,应用程序生成的转义序列将被正确解释:

在此处输入图片说明

此外,如果我使用 SSH 登录到我的 Windows 机器(即用远程连接替换本地连接,但保留相同的cygwin终端),同样,转义序列处理得很好。

看起来当创建某种类型的子外壳(mcssh)时,终端会被置于其他模式。但是玩与stty没有帮助,也没有 export'ing TERM=ansi

任何人都可以请提出任何解决方案吗?

我在跑

CYGWIN_NT-6.3 UNIT-725 2.5.1(0.297/5/3) 2016-04-21 22:14 x86_64 Cygwin
Run Code Online (Sandbox Code Playgroud)

和 Windows 8.1。

java windows cygwin ansi-escape

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