小编Jur*_*nka的帖子

最大提交邮件大小

Git提交消息有任何大小限制吗?我通过网络搜索,但除了这个之外,找不到任何相关的提及.

但是,那个人没有回答我的问题.

git

41
推荐指数
3
解决办法
2万
查看次数

“摘要”模式下 Java 本机内存跟踪的开销是多少?

我想知道通过启用 NMT 时的真实/典型开销是多少\xe2\x80\x91XX:NativeMemoryTracking=summary(我之后的完整命令选项是-XX:+UnlockDiagnosticVMOptions \xe2\x80\x91XX:NativeMemoryTracking=summary \xe2\x80\x91XX:+PrintNMTStatistics

\n

我在任何地方都找不到太多信息 - 无论是在 SO、博客文章还是官方文档上。\n文档说:

\n
\n

注意:启用NMT会导致5%-10%的性能开销

\n
\n

但他们没有说明哪种模式预计会有这种性能开销(摘要详细信息?)\n以及这种开销到底是什么(CPU、内存……)。\n在本机内存跟踪指南中,他们声称:

\n
\n

启用 NMT 将导致 JVM 性能下降 5-10%,并且 NMT 的内存使用会向所有 malloc 内存添加 2 个机器字作为 malloc 标头。NMT 内存使用情况也会被 NMT 跟踪。

\n
\n

但同样,对于摘要模式详细模式来说都是如此吗?

\n

我所追求的基本上是为生产应用程序永久添加是否安全\xe2\x80\x91XX:NativeMemoryTracking=summary(类似于连续JFR 记录)以及潜在成本是多少。\n到目前为止,在我们的应用程序上测试这一点时,我没有发现差异但很难

\n

是否有包含有关此性能开销的更多详细信息的权威信息源?\n是否有人有为生产应用程序永久启用此功能的经验?

\n

java memory jvm

14
推荐指数
2
解决办法
2542
查看次数

在Java密钥库中存储PGP(公共)密钥 - Bouncycastle

我在实施SSO时使用bouncycastle(JAVA)进行签名,加密,解密和签名验证.我有原始的PGP公钥和私钥,我需要将它们存储在Java密钥库中.这些PGP公钥没有证书.

据我所知,对于公钥(根据Keystore的javadoc:http://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html),我必须创建证书.创建证书后,我可以将其作为KeyStore.TrustedCertificateEntry导入密钥库.但是,我无法为类型org.bouncycastle.openpgp.PGPPublicKey创建证书条目.

我在网上搜索过但找不到任何有效的例子:

  1. Bouncycastle文档:http://www.bouncycastle.org/wiki/display/JA1/X.509+Public+Key+Certificate+and+Certification+Request+Generation 为X.509密钥生成证书 -
  2. Bouncycastle示例 - org.bouncycastle.openpgp.examples.DirectKeySignature:将证书(PGPSignature类型的对象)直接添加到PGPPublicKey.总而言之 - 我签署了(认证的)PGPPublicKey但我无法将这种类型的密钥存储到java密钥库中.

    OutputStream out = new ByteArrayOutputStream();
    
    if (armor)
    {
        out = new ArmoredOutputStream(out);
    }
    
    PGPPrivateKey pgpPrivKey = secretKey.extractPrivateKey(secretKeyPass.toCharArray(), "BC");
    
    PGPSignatureGenerator       sGen = new PGPSignatureGenerator(secretKey.getPublicKey().getAlgorithm(), PGPUtil.SHA1, "BC");
    
    sGen.initSign(PGPSignature.DIRECT_KEY, pgpPrivKey);
    
    BCPGOutputStream            bOut = new BCPGOutputStream(out);
    
    sGen.generateOnePassVersion(false).encode(bOut);
    
    PGPSignatureSubpacketGenerator spGen = new PGPSignatureSubpacketGenerator();
    
    boolean isHumanReadable = true;
    
    spGen.setNotationData(true, isHumanReadable, notationName, notationValue);
    
    PGPSignatureSubpacketVector packetVector = spGen.generate();
    sGen.setHashedSubpackets(packetVector);
    
    bOut.flush();
    
    return PGPPublicKey.addCertification(keyToBeSigned, sGen.generate()).getEncoded();
    
    Run Code Online (Sandbox Code Playgroud)

我主要对编程解决方案(java源代码)感兴趣,但使用某些工具的示例也会有所帮助.

谢谢!

java bouncycastle pgp

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

Gradle无法从Nexus maven存储库下载工件 - 需要401授权

我已经配置了gradle build来使用我们公司的nexus repo,但maven似乎无法正确授权 - 我不断获得如erros

Failed to get resource: HEAD. [HTTP HTTP/1.1 401 Authorization Required:    https://maven.gooddata.com/nexus/content/repositories/gooddata/org/codehaus/groovy/groovy-all/2.0.4/groovy-all-2.0.4.pom]
Run Code Online (Sandbox Code Playgroud)

奇怪的是,部署到相同的nexus repo(通过mavenDeployer)可以无缝地工作.

以下是与maven repo配置相关的构建脚本的一部分(maven_user和maven_password在〜/ .gradle/gradle.properties中定义).

apply plugin: 'maven'

ext {
    repos = [
            my : "<my_repo_url>",
            my_snapshot : "<my_snapshots_repo_url>"
    ]

}


repositories {
    mavenLocal()

    maven {
        url repos.my
        credentials {
            username = maven_user
            password = maven_password
        }
    }
    maven {
        url repos.my_snapshot
        credentials {
            userName = maven_user
            password = maven_password
        }
    }

    mavenCentral()
    maven { url "http://repository.codehaus.org/" }
    maven { url "http://sardine.googlecode.com/svn/maven" }
    maven …
Run Code Online (Sandbox Code Playgroud)

gradle maven

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

运行使用 leiningen 构建的 uberjar 时默认启用 Clojure 应用程序中的断言

将 Clojure 应用程序作为 jar 运行时,是否应该默认启用断言?

我们使用 leiningen 构建一个 uberjar 然后java -jar ...运行它,我刚刚发现这*assert*是真的。

我找不到这个动态变量应该保持什么默认值,但我认为它是假的(并且只在 REPL 开发环境中设置为真)。

这导致了一个令人讨厌的问题,future其中前提条件断言错误导致未来线程死亡,我们不知道发生了什么(因为我们只捕获了Exceptionnot Throwable)。

我浏览了的源代码,clojure.lang.RT但我无法弄清楚*assert*var在哪里设置为 true。

我还发现选项:global-varsleinigen示例项目(这是在提到如何禁用Clojure的断言,包括先决条件?)。这看起来很合理,但我认为对于“生产”构建,我会*assert* false自动获得。

编辑:我错过了T用于*assert*RT.java. 但是,仍然很好奇为什么这是默认设置以及关闭断言的推荐方法是什么(如果甚至推荐的话)。

clojure

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

标签 统计

java ×2

bouncycastle ×1

clojure ×1

git ×1

gradle ×1

jvm ×1

maven ×1

memory ×1

pgp ×1