小编dpr*_*dpr的帖子

哪个是Java应用程序的密钥库/信任库的默认位置?

我正在编写一个使用SSL的应用程序.因此,我有一个虚拟密钥库和一个我想要提供给客户的虚拟信任库.是否有任何默认文件夹将它们放入我的发行版中?例如docs,lib,bin等.通常将密钥库放在服务器上的位置通常是客户端放置的信任库?

谢谢

java ssl keystore

40
推荐指数
2
解决办法
13万
查看次数

为什么Collection不被简单地视为Collection <?>

请考虑以下来自Shiro org.apache.shiro.subject.PrincipalCollection界面的API方法,但可能也存在于其他库中:

Collection fromRealm(String realmName);
Run Code Online (Sandbox Code Playgroud)

是的,即使是现在,仍然有一些库使用原始类型,可能是为了保留Java 1.5之前的兼容性?

如果我现在想将此方法与流或类似的可选项一起使用:

principals.fromRealm(realmName).stream().collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

我收到有关未经检查的转换和使用原始类型的警告,我应该更喜欢使用参数化类型。

日食:

类型安全:方法collect(Collector)属于原始类型Stream。泛型类型Stream <T>的引用应参数化

javac:

注意:GenericsTest.java使用未经检查或不安全的操作。

由于我无法更改API方法的签名来摆脱此警告,因此我可以使用以下注释@SuppressWarnings("unchecked")或将其强制转换为Collection<?>

((Collection<?>) principals.fromRealm(realmName)).stream().collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)

由于这种转换当然总是有效,所以我想知道为什么编译器不只是简单地将其Collection视为Collection<?>而是警告这种情况。添加注释或强制转换不会单单提高代码,但会降低可读性,甚至可能掩盖有关使用非参数类型的实际有效警告。

java generics

40
推荐指数
3
解决办法
3108
查看次数

初始化2D矢量

这两种声明2D矢量的方式有什么区别.

vector< vector<int>> a(M,N);
Run Code Online (Sandbox Code Playgroud)

vector< vector<int>> a(M, vector<int> (N));
Run Code Online (Sandbox Code Playgroud)

我尝试过,但我觉得第一个容易理解.

c++ stl vector

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

WSSE - XML SOAP安全性和密钥加密和存储(EncryptedData/EncryptedKey)

我现在花了几天时间找到关于这个的文档..

我需要通过带有WSSE安全头的SOAP发送XML,但不知道如何加密和存储加密的密钥

这是一个例子

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" soap:mustUnderstand="1">
            <xenc:EncryptedKey xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="EK-1B758D26C51BFCD86614340101135741">
                <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/>
                <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                    <wsse:SecurityTokenReference>
                        <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3">MIIDODCCAiCgAwIBAgIGAU0FlCVCMA0GCSqGSIb3DQEBCwUAMFoxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxCYW5rIENvbm5lY3QxFTATBgNVBAsTDEJhbmsgQ29ubmVjdDEdMBsGA1UEAxMUQmFuayBDb25uZWN0IElBLXRlc3QwHhcNMTUwNDI5MTQyODI0WhcNMTgwNDI5MTQyODI0WjAcMRowGAYDVQQDExFiYW5rIGNvbm5lY3QtdGVzdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI23KdtaRKPTFTe/A1PnsF9dpSlTiXurKmio0OCgTP9wClHwync3JsInRwGTooA20P9zWobUnEFbEiAgRVYCxuYoldRE6NLhSC854/YTjMBeevH1TNa38lpavGiI4UwFhg70U9/JuYs21hoFyzVfaWlVfOkAMm1U/n4wHq6FZW461S5PY4A/UI1Mr8WgeIHU9GqMBtFvjynzq3SLenOPgdmKtyJ3V8EOU+DlgwKmDbxMVMtYNDZtoQvOWnuvlJ6ICDcqcW7OUkmwCKodjxxPvrdaPxyZDhT7h4FgRtrAOS8qR6L7x9D4ZIoxOMPudGvr99OSb4KVtaAEt/R7hKxG3OsCAwEAAaNCMEAwHwYDVR0jBBgwFoAU680YSkZnx1IaJAmI49LlTGiia0wwHQYDVR0OBBYEFMaWOY7Vf/iB3WVA96j5kRtbF8prMA0GCSqGSIb3DQEBCwUAA4IBAQAJ+bssSFWE6KsYT7HSDKag4Eot7yNGMY4Don/MilDnOREdu20QUS131DKrSkpBQiCXbyRUQjUoun4yue0EG+rlG3QUIlNNdJ4KZJB+dTYdLUV7XTYJNPimKAmoZ+PFNvT1eGgWcMT+MbTfpk0mw0V8IprYGa8UPchd6vtSVwpbTcPc/F4bgUTlm/V+FG4bQS61gF0koj0DEZjzat7CBHpozRgfRlXgwu26vnhWGc99uKH4GAKN4JpqPi/6Yz+7iQNJUC3yeezgBxFrIXuLpkBZSP4zunf9VxsICnxkFUXOTuYBdcbhPNzqMknD5ijFcFRZITwdv7x3uJGLkM7iUfBp</wsse:KeyIdentifier>
                    </wsse:SecurityTokenReference>
                </ds:KeyInfo>
                <xenc:CipherData>
                    <xenc:CipherValue>af9+FhA91ytLwjeRvTYJsRCkhjHmAQGwqYwMBoNZBn7BZhF/a6EUpM9ByarVhx1SRCpjW5fb8tBVuJO1ZkjfTUZ5EAh/oDLbkmwPdSAAVzmAURHwCq3XQgMZV3lAczlLnPamxjjZBCGqxvAmBo1CvFFPC4AcBedqY92mP8XGyVHpS7JYKOxqXK2vUA1by7371x+Mu0aoS2zJPyPLa1IPwOYgR9qicmWz1RNPiEVA8ZBCN0NRyg7FLJxdUcE81z+1SjButBo2j3qcwkNcecHzZAnweY+LSWp3H5JA3WNzUHUuvFHEaPzT5jd7fUI16xo8NLK8/Rd8Eq/zDD+T3baeVQ==</xenc:CipherValue>
                </xenc:CipherData>
                <xenc:ReferenceList>
                    <xenc:DataReference URI="#ED-1B758D26C51BFCD86614340101135852"/>
                </xenc:ReferenceList>
            </xenc:EncryptedKey>
        </wsse:Security>
        <technicalAddress xmlns="http://example.com/schema/2014" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"/>
        <activationHeader xmlns="http://example.com/schema/2014" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
            <organisationIdentification>
                <mainRegistrationNumber>8079</mainRegistrationNumber>
                <isoCountryCode>DK</isoCountryCode>
            </organisationIdentification>
            <functionIdentification>112233445566778899</functionIdentification>
            <erpInformation/>
            <endToEndMessageId>d28b6a7dad414014a59029ef1a7e84d4</endToEndMessageId>
            <createDateTime>2015-06-11T10:08:33.258+02:00</createDateTime>
        </activationHeader>
    </soap:Header>
    <soap:Body>
        <xenc:EncryptedData xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" Id="ED-1B758D26C51BFCD86614340101135852" Type="http://www.w3.org/2001/04/xmlenc#Content">
            <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
            <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                <wsse:SecurityTokenReference xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" wsse11:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey">
                    <wsse:Reference URI="#EK-1B758D26C51BFCD86614340101135741"/>
                </wsse:SecurityTokenReference>
            </ds:KeyInfo>
            <xenc:CipherData>
                <xenc:CipherValue>dTSVuEJ90OYguQOsOz2ZtcE2mybwuvVl19pp7/e5yuvNygx3w5v+prpEvbjYLauiIAB3lrVDK2astJeYJGnDbaVJVeU0YqH5ItYVn7Wz36jJM52KB+UNbYo8EdTKYjsZuADzH+tAoA+pwYxGBXMEQctNI+C711HgP2hbpHNYOG7nAMOIrP/0B3FCy+st+9CbYlwAEENreTYunEEA41hciFnWCsIx0el7OeuiA6V51fAmvrF19RPNKwaptvbvmVdKj//RQ/0U1kRny16mDnFfX92bI3HBQm4XJA0nEfSvio7EUAAdhe77GMfu7+JELqXNowPGPLlvrbCFYnQhxGRITHtTIEbtJA6MKtBzHgjtw5pt7oWxKgGUnaJTfOPOSv43RLFGggkT/+gTjnZOagu8hhXp0x5HXJuZzw90aIS3jAfSPDc2ivct4WhWk0wcuQyC2rAh4I7gtiR+LqJJGqvucw4S+NR95FunKHKEW4yasKW1oU31/rRbp4Bmwo6BPsQlxnaSHPtk68IVkYDBslz1A5gOP+M/Iam2WI02y6sE/7aAH1ruN3pZlVuYFc3JDNHOPOvevP110d60lroknGdc9vxcFfj48OCKw/8Ed6tiXtAvk0Qu9Qt4ZyLUoPKIWEqjdLjwVadTDJQFAxRptNgiCos7s0czadUu7FNCRxfndjDxhA7trvys44ufEyK++YzZIgNu3r4dywNI22Nm+JZtLj+rX8ARE6FTPlxGBD0SSdXsfCfY2N1ytBBHQRnPsVaHK1p7KOhwQVbqEupcGyvaRolnymOzDLGFdS06OGYFrYXdgIbuqYtZP8QerXtUl0sWNAvvqHSPCQcpKecpMEecar+FUVwLEA+H1wzOprCMbRR+EgIboeDqQ7GxXqugkuFyvnlLDgxnaWhEhQb/5kAcQmnyUZ57MhDcUJqqQ4Cdmwrcxho1P+YqWY9yn0E86F+hl5976a/gH5KBobB84OWmgcX42eAmqpJf+8c8SuBv+7NctbQOk21aYlFEpkwSme/kG1/edtyoHQH/hF0RB1cT8g+u9S9AK2rs3s2G+Ap0U5oyY8pqJalGdZSBudE0sU4mhOV8trtx0FrN9A7pNkTcGPH25nCtyIz6rzR+DP8Mtgw5385s5ivVlDb+z74Wbh6iu7ZkVAogNTpUYU/1BxDXWJqFMkFmfziNxQ5AQqm1vGlBzXifoQkUFX1riutNphmu0Hs+7KMmMLvtW2cXmQDpkHFKVheeN4w7pBCEZ8KhZ0VTOwRZcdvrNcpYfXM13/QdTHQmCqqwgS/VvlUFz7PDn0/OKo6moUic8W6b1iEvd3kfc7QkunxoOUoJr4RwJ+PqCzN6PxQivAFA2tmDPc8qEa1PAdxTeNFoR/6dNQRojouuJq3C1LrbmGf6lQPvKi3KeKHXyjmDr7Tve+al2tcWJVr+1qEM3/XuthoiZbuTDxYUjZ2nf2fhHrmNcfvrfNxSNHVdQPp2R9Rf3eGxlRJsmRpef66VbYhOpmiH4xmq45EWiyBZmYm+tZtjsP51EDMIvdFbVRSGO/hMqURrDSsJXJeot27Iup2s0P2n/6a9k0c4SVvf/WXNN5x9JNvjU97bQNDQRfonJmo9pRYYHl1tSqNIYBK7KsMH+qr1vmiJuhrXUuL/RtOKvE9KXQ8kGoC9oF5rFn21z40ElxG5XRTASg==</xenc:CipherValue>
            </xenc:CipherData>
        </xenc:EncryptedData>
    </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

首先,我从来没有使用过SOAP,所以我做错事的可能性很大:)

在这里找到了一些东西,但我需要更多细节https://www.w3.org/TR/2002/REC-xmlenc-core-20021210/Overview.html#aes256-cbc

如何iv …

php xml encryption soap

17
推荐指数
2
解决办法
1086
查看次数

将属性传递给复合视图中的子视图

我正在尝试创建一个复合视图,我可以在XML中设置属性并将它们传递给复合视图中的子项.在下面的代码中,我想设置android:text并将其传递给EditText.

这可以在不必将每个属性设置为自定义属性的情况下实现吗?

Activity.xml:

<FrameLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"/>
        <com.app.CustomLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:text="child_view_text" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

custom_view.xml:

<merge xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/textInputLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </android.support.design.widget.TextInputLayout>
</merge>
Run Code Online (Sandbox Code Playgroud)

CustomView.java:

public ValidationTextInputLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context, attrs);
}

private void init(Context context, AttributeSet attrs) {
    View v = inflate(context, R.layout.custom_view, this);

    mEditText = (EditText) v.findViewById(R.id.editText);
    mTextInputLayout = (TextInputLayout) findViewById(R.id.textInputLayout);
}
Run Code Online (Sandbox Code Playgroud)

android android-custom-view android-support-library

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

已建立的连接被主机tomcat jackson中的软件中止

下面是我的休息服务尝试获取大型数据集时得到的堆栈跟踪(数据库和tomcat在我的本地计算机上,因此一切都是本地的).它适用于较小的,但在某些情况下,用户需要大量数据.我检查了这里发布的类似问题,但似乎没有像我这样的问题.

我的问题是
1.为什么它没有显示回复?
2. tomcat的响应大小是否有限?也许有超时或类似的东西?
也许杰克逊没有做好自己的工作.如果是jackson - 可以由@JsonBackReference和@JsonManagedReference等注释引起吗?
4.我该怎么做才能解决它?

ClientAbortException:  java.io.IOException: An established connection was aborted by the software in your host machine
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:413)
    at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:480)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:366)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:438)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:426)
    at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:91)
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator._flushBuffer(UTF8JsonGenerator.java:1862)
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator._writeBytes(UTF8JsonGenerator.java:1132)
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator._writeFieldName(UTF8JsonGenerator.java:270)
    at com.fasterxml.jackson.core.json.UTF8JsonGenerator.writeFieldName(UTF8JsonGenerator.java:249)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:539)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:644)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:117)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:23)
    at com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:183)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:541)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:644)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:117)
    at com.fasterxml.jackson.databind.ser.std.CollectionSerializer.serializeContents(CollectionSerializer.java:23)
    at com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase.serialize(AsArraySerializerBase.java:183)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:541)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:644)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:152)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:114)
    at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1837)
    at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.writeInternal(MappingJackson2HttpMessageConverter.java:253)
    at …
Run Code Online (Sandbox Code Playgroud)

java rest tomcat servlets jackson

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

JavaScript版本控制:从FE管理版本

情景:

我试图找到一种方法来实现JS中的版本控制,它实现了两个前提:

  1. 缓存明智
  2. 很少(或没有理想情况下)调用后端

因此我提出了这个计划:

每当新版本可用时我都需要FE重新加载内容,所以实现这一目的的一个简单方法是向src链接添加一个版本标记:

<script type="text/javascript" src="myfile.js?15.6.0"></script>
Run Code Online (Sandbox Code Playgroud)

我可以添加一些模板,因此可以在别处定义版本号,例如:

<script type="text/javascript" src="myfile.js?$$RELEASE_ID$$"></script> 
Run Code Online (Sandbox Code Playgroud)

问题:

我需要调用后端,知道最新版本(后端将从pom.xml文件中读取,然后返回)

问题:

有什么方法可以使用,所以前端知道什么是最新版本?

谢谢.

javascript version-control version maven

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

为什么我无法在TestNG中调试代码

我正在使用TestNG和Java运行自动化测试。

这是我的代码的一部分:

private void testConnection(String URL1) throws IOException {

    try {
        URL url = new URL(URL1);
        HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
        urlConn.connect();

        assertEquals(HttpURLConnection.HTTP_OK, urlConn.getResponseCode());
    } catch (IOException e) {
        ConsoleLogger.error("*******************************");
        ConsoleLogger.error("Could NOT connect to the server");
        ConsoleLogger.error("Entire test is aborted!!!");
        ConsoleLogger.error("Please check port and IP again!");
        ConsoleLogger.error("*******************************");
        throw e;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我的测试失败了,因为我从URL中获取了一个异常。我可以在控制台中看到错误消息。在带有注释@BeforeSuite的方法中调用此方法。

为什么我不能调试此方法(不是try块也不是catch块)?

java debugging testng

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

如何抑制龙目岛警告

我有一个实体

@Builder
class MyEntity {
   private Set<OtherEntitiy> children = new HashSet<>()
}
Run Code Online (Sandbox Code Playgroud)

而且我收到龙目岛警告。

警告:@Builder将完全忽略初始化表达式。如果要将初始化表达式用作默认表达式,请添加@ Builder.Default。如果在构建期间不应设置该字段,请将该字段定为最终字段。设置=新的HashSet <>();

问题是:我该如何抑制龙目岛的警告?

也。我需要初始化子级,因为我想避免NullPointerException。我也不能将其标记为最终文件,因为它实际上不是最终文件。我无法标记为已归档,@Builder.Default因为我不仅要使用builder来创建该实体,而且想保存其他构造函数的默认值。

java lombok java-annotations

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

使用 gradle 中的 maven-publish 插件生成 SHA512 校验和文件

maven-publish默认情况下,该插件为所有工件生成 MD5 和 SHA1 校验和文件。但是有什么方法可以让插件生成安全的校验和文件(首选 SHA512)?

这很容易重现。我刚刚初始化了一个新java-library项目并添加了maven-publish插件及其配置

构建.gradle:

apply plugin: 'java'
apply plugin: 'maven-publish'

repositories {
  jcenter()
}

dependencies {
}

publishing {
  repositories {
    maven {
      url rootProject.buildDir.path + '/repo'
    }
  }
  publications {
    mavenJava(MavenPublication) {
      groupId = 'org.gradle.sample'
      artifactId = 'project1-sample'
      version = '1.1'

      from components.java
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经查阅了 gradle 文档和 javadoc,但根本找不到关于校验和文件的任何提示。我知道我可以使用这样的 ANT 校验和任务很容易地为工件生成校验和

doLast {
  ant.checksum(file: archivePath, algorithm: "SHA-512")
}
Run Code Online (Sandbox Code Playgroud)

但是我会以某种方式需要将它们“手动”放在正确的文件夹中,而不是实际的工件,这是我想避免的。


编辑
如果无法指定校验和算法,是否可以以某种方式挂钩publish任务并将自定义校验和文件添加到工件目标文件夹中?我不想将校验和文件本身添加为工件,因为校验和会有 MD5 和 SHA1 校验和,这是没有意义的。

java checksum sha512 gradle maven

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