小编Md.*_*bib的帖子

如何在请求 URL 中添加参数(Java 11)?

我是java的绝对初学者。尝试使用内置的 java httpclient 发送一些 http 请求。

如何将请求参数添加到 URI 中,格式如下:

parameter = hi
url = "https://www.url.com?parameter=hi"
Run Code Online (Sandbox Code Playgroud)

通过我正在使用的代码,我只能设置标头,而不能设置请求参数

    var client = HttpClient.newHttpClient();
    var request = HttpRequest.newBuilder(URI.create(url))
            .GET()
            .build();
    var reponse = client.send(request, HttpResponse.BodyHandlers.ofString());
    return reponse.body();
Run Code Online (Sandbox Code Playgroud)

非常感谢!

java httpclient

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

Java 输入字节数组有错误的 4 字节结束单元

我正在尝试使用 X509 和 KeyFactory 将以下字符串转换为公钥。到目前为止我写的代码是:

public static void main(String args[]) throws Exception {
    String key = "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAidRWp1iB0s2LKnAyAxUKCMmsKK9bMTdRUItZVRcV4lB0RXGla0wRTNeR6r5oqNo6poHUJ+QGPjAHDCztMjAZdtuMSQ+Lohn+TjDMIEi2sUNeXhZuXchwEE+3QTgPpIOGhjJtv4wmTjXD5UaZbYWuydNpgvFEDsF4jf02xM8t8a7nOgQIriPi83fa4XHXcoCcG"
            + "EHDbpbtYUhVq12rJEBXUoVM1zi9LcDhEsgilpzRPlkT6zC+89SkgYHWTRtO2shLpJcnThkR1nyLqHU2Zgn1hSrNsy+T97bNL1Umhcs7e94WJ7WWO6PoSst4cknPIZhhRbeBHoJ9rdV+XLBoew7buDQSht2Jn"
            + "zAm6A6Pvi+XhLVRlIEMLOsG6Y92Lwhuc21oSKeqklv9yDfMznJm0aeCbm3TWZehAfPD9EKJ4LgvSVbT"
            + "tXSiOVvPS8JtzIedISqioSvPPP5v4qqdbqobGBv2uE0sdwYhXh+dTIFSO4WG+dQHMZpdZu38lFBec3y"
            + "EuZJuKpvtX5AvdYgCEwMioZxE3ph4X3SJEbcqfR1KuuGnYwg6nmSEwotDVg55pEtSsgu3j2KRgM8GA"
            + "7lkageikM4D6mq6vQ5fkedfzz8PuvQNe8BH3h2UZYmRjNvfKd8wt2bRKKFK7K4jCYT5riYo+5aEWS"
            + "SrWvL+ECAwEAAQ==";
    getKey(key);
      }
public static PublicKey getKey(String key){
    try{
        byte[] byteKey = Base64.getDecoder().decode(key.getBytes());    
        X509EncodedKeySpec X509publicKey = new X509EncodedKeySpec(byteKey);
        KeyFactory kf = KeyFactory.getInstance("RSA");

        return kf.generatePublic(X509publicKey);
    }
    catch(Exception e){
        e.printStackTrace();
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

我收到的错误如下:

java.lang.IllegalArgumentException: Input byte array has wrong 4-byte ending unit
at java.base/java.util.Base64$Decoder.decode0(Base64.java:781)
at java.base/java.util.Base64$Decoder.decode(Base64.java:567)
at WannaCry.getKey(WannaCry.java:46)
at WannaCry.main(WannaCry.java:27)
Run Code Online (Sandbox Code Playgroud)

我不确定我是否拿到了错误的钥匙,因为这是我的作业。这是我必须使用的密钥。

MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAidRWp1iB0s2LKnAyAxUKCMmsKK9bMTdRUItZ …
Run Code Online (Sandbox Code Playgroud)

java arrays cypher

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

为什么在 Java 中这种情况下原始数据类型比引用数据类型消耗更多内存?

我试图检查程序的内存消耗。在检查过程中,我注意到了一些有趣的事情。

我创建了一个 Load 类,其中包含一些字段。

class Load {
    String name;
    String title;
    long id;
}
Run Code Online (Sandbox Code Playgroud)

我创建了 500000 个 Load 对象并将它们添加到 ArrayList。我发现,它占用18 MB了内存。

然后,我修改了 Load 类并使用了referenceLong 类型。

class Load {
    String name;
    String title;
    Long id;
}
Run Code Online (Sandbox Code Playgroud)

再次创建了 500000 个 Load 对象并将它们添加到 ArrayList。有趣的是,这一次它占用的内存比前一次少。它的方式是 14 MB。

运行测试更改操作系统和 JVM 版本。找到以下结果。

OS: Windows 10 Pro 64 bit
JDK: 11 64bit
 
Object Created  | Load Object         | Memory | Load Object         | Memory  
------------------------------------------------------------------------------
1. 500000       | With primitive long | 18 …
Run Code Online (Sandbox Code Playgroud)

java memory jvm primitive-types

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

标签 统计

java ×3

arrays ×1

cypher ×1

httpclient ×1

jvm ×1

memory ×1

primitive-types ×1