小编Dra*_*max的帖子

Windows 7是否回收进程ID(PID)号?

我有这个小测试程序跟踪PID的创建和关闭.我正在调查我的程序已找到的问题,并想问你这个问题,以便更好地了解正在发生的事情.

当一个Windows进程启动时,它会获得一个PID,但是当进程关闭时,PID是否会退役(就像一个明星篮球运动员的球衣号码),或者是否有可能在该发布的情况下创建一个新的,完全不相关的进程PID?

谢谢

windows pid process recycle

14
推荐指数
3
解决办法
7690
查看次数

从批处理文件设置错误级别

我正在研究这个复杂的(对我来说......)自动化,其中一部分是从另一个开始(未调用)的批处理脚本。

现在,这一切都在进行中,我希望能够用一个简单的指令替换 Started 批处理脚本,该指令将执行以下操作,以便启动脚本在启动子脚本后具有:
%ERRORLEVEL% EQU 1(然后我可以处理错误处理方面和测试内容)

但也有一些不错的东西不会使系统处于不自然的状态(我可能会根据这种糟糕的状态编写脚本,并想知道为什么事情不会发生)当我把它全部组装起来时就行不通了)。
所以,“格式 C -q”不起作用!;)

谢谢

testing error-handling scripting unit-testing batch-file

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

Java:Extensions Class Loader在Java 13中从哪里获取类?

我已经找到的所有文档都提到了“ jre / lib / ext”文件夹,但是在我的JRE 13安装中不存在。

我猜在Java 8(可以在jre / lib / ext中看到罐子)和Java 13之间的某个地方,它们移动了,但是我无法确定何时以及如何完成。

有人可以根据扩展类当前所在的位置来详细说明新JRE的情况吗?

java classloader dynamic-class-loaders classloading java-13

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

如何在Java中分割包含多个“行”的字节数组?

假设我们有一个像这样的文件:

one 
two 
three
Run Code Online (Sandbox Code Playgroud)

(但是这个文件被加密了)

我的加密方法以 byte[] 类型返回内存中的整个文件。
我知道字节数组没有“行”的概念,这是扫描仪(例如)可以拥有的概念。

我想遍历每一行,将其转换为字符串并对其执行操作,但我不知道如何:

  1. 查找字节数组中的行
  2. 将原始字节数组切片为“行”(我会将这些切片转换为字符串,以发送到我的其他方法)
  3. 正确遍历字节数组,其中每次迭代都是一个新的“行”

另外:我是否需要考虑文件可能组成的不同操作系统?我知道 Windows 和 Linux 中的新行之间存在一些差异,我不希望我的方法仅适用于一种格式。

编辑:根据此处答案的一些提示,我能够编写一些代码来完成工作。我仍然想知道这段代码是否值得保留,或者我正在做的事情将来可能会失败:

byte[] decryptedBytes = doMyCrypto(fileName, accessKey);
ByteArrayInputStream byteArrInStrm = new ByteArrayInputStream(decryptedBytes);
InputStreamReader inStrmReader = new InputStreamReader(byteArrInStrm);
BufferedReader buffReader = new BufferedReader(inStrmReader);

String delimRegex = ",";
String line;
String[] values = null;

while ((line = buffReader.readLine()) != null) {
    values = line.split(delimRegex);
    if (Objects.equals(values[0], tableKey)) {
        return values;
    }
}
System.out.println(String.format("No entry with key %s in %s", tableKey, fileName));
return values;
Run Code Online (Sandbox Code Playgroud)

特别是,我被建议显式设置编码,但我无法确切地看到在哪里?

java arrays loops newline line

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

如何在新的(未弃用的)SSLSocketFactory 中加载私钥密码?

我当前的 TCP 客户端正在使用org.apache.http.conn.ssl.SSLSocketFactory
我正在迁移到构建套接字import javax.net.ssl.SSLSocketFactory; 但是,我不确定如何加载存储在我已经拥有的 .p12 文件中的客户端证书的私钥,作为新 SSLSocketFactory 的上下文?

这是我现有的代码,使用已弃用的 SSLSocketFactory:

import org.apache.http.ssl.SSLContexts;
import org.apache.http.conn.ssl.SSLSocketFactory;

String ksPassphrase = "myKSpass";
String pkPassphrase = "myPKpass";
// Get a keystore instance of type PKCS12:
KeyStore keystore = KeyStore.getInstance("PKCS12");
// Load keystore file and password:
keystore.load(new FileInputStream("myFile.p12"), ksPassphrase.toCharArray());
// Create HTTPS connection socket factory context:
SSLContext context = SSLContexts.custom()
    .loadKeyMaterial(keystore, pkPassphrase.toCharArray())
    .build();

SSLSocketFactory sslScktFactory = new SSLSocketFactory(context);
Run Code Online (Sandbox Code Playgroud)

这是我可以从文档中管理的最佳代码:

import javax.net.ssl.*;

// not sure if this is the pass to KS or …
Run Code Online (Sandbox Code Playgroud)

java ssl keystore sslsocketfactory keystore-access

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

JUnit5-Jupiter:组合(=“元”)注释无法解析为注释定义

我定义了自己的 JUnit 注释:

@ParameterizedTest
@MethodSource("myorg.qa.ccrtesting.DataProviders#standardDataProvider")
@Tags({@Tag("ccr"), @Tag("standard")})
public @interface CcrStandardTest {
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以在测试中使用该注释:

@CcrStandardTest
public void E0010_contact_standard (String testData) {
...
Run Code Online (Sandbox Code Playgroud)
  • 我的运行配置:
    JVM 选项:-ea
    类:myorg.qa.ccrtesting.ccrstandardtests.CcrStanConTest- 这是 IDE 建议的(并经过验证指向正确的类,其中包含我的原型测试方法)

然而,这会导致:jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [java.lang.String arg0] in method [public void...

  • 我尝试String testData从测试方法签名中删除,但 JUnit 没有执行任何测试:No tests found

  • 当我在@Test原型测试方法上方添加时,它会执行但是:

    1. 似乎我定义的注释都没有@CcrStandardTest被应用
    2. IDE 建议suspicious combination @Test and parameterized source
      (我已经知道@ParameterizedTestimply @Test,只是不确定为什么 IDE 能够找到自定义注释,而 JUnit 却不能?)

java reflection annotations junit5 junit-jupiter

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

如何将 JUnit 注释组合成自定义注释?

(使用 OpenJDK-13 和 JUnit5-Jupiter)

问题是我的单元测试每个都使用了一个不小的 JUnit 注释系统,如下所示:

@ParameterizedTest
@MethodSource("myorg.ccrtest.testlogic.DataProviders#standardDataProvider")
@Tags({@Tag("ccr"), @Tag("standard")})
Run Code Online (Sandbox Code Playgroud)

这使得测试编写有点乏味,测试代码有点长,当然,当需要更改时,这是一件苦差事!

想知道我是否可以创建自己的 JUnit annotation: @CcrStandardTest,这意味着上面的所有注释?

我还尝试将类定义中的注释向上移动(希望它们随后适用于类的所有方法),但编译器说不:“@ParameterizedTest 不适用于类型”

java reflection annotations junit5 junit-jupiter

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

Java:为什么 java.util.Collections.list(Enumeration) 具有破坏性?

我有一个小程序,它依赖于从本地网络接口获取一些信息。然后,我需要添加一些功能,这又需要这些信息。我不想碰我经过测试和高度使用的方法。因此,迫于时间的压力,我决定重用该方法,有效地将 NetworkInterface Enumeration 转换为 ArrayList两次(这不是我最自豪的编码时刻!)。

经过测试,我发现它真的不起作用!

动作顺序:

  1. 我从操作系统中获取 NetworkInterface Enumeration 一次,进入一个类字段
  2. myMethod 将 NetworkInterface Enumeration 转换为 ArrayList,进行一些分析并返回一些信息,以执行某些操作
  3. myMethod 将 NetworkInterface Enumeration 转换为 ArrayList,进行一些分析并返回一些信息,以执行其他操作

我注意到,在第二次翻译中,结果为零!在调试中,我注意到我的枚举有一个字段“i”。该字段:第一次,它等于 55(我的 IF 的计数),第二次,它等于 0...

我提供了一小段代码,为了您的调试乐趣,应该重现它(我使用的是 Java 8):

import java.net.NetworkInterface;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;

public class CollectionsListDemo {
    public static void main(String[] args) {
        ArrayList<NetworkInterface> netFacesArList1;
        ArrayList<NetworkInterface> netFacesArList2;
        try {
            Enumeration<NetworkInterface> netFaces = NetworkInterface.getNetworkInterfaces();
            netFacesArList1 = Collections.list(netFaces);
            netFacesArList2 = Collections.list(netFaces);
        } catch (Exception e) {
            throw new RuntimeException("whatever");
        }

        System.out.println(netFacesArList1.size()); // 55, …
Run Code Online (Sandbox Code Playgroud)

java collections iterable list arraylist

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