如何知道与SQL服务器的JDBC连接是否安全(即使用SSL)?
例如,从URL中可以看出这一点.是否所有JDBC驱动程序都支持与数据库服务器的SSL连接,或者SSL的使用是否仅取决于特定的数据库供应商?
在X509证书的DN 的公共名称字段中,如OID"2.5.4.3"的ASN.1表示法中所定义,允许的值是多少?
我知道限制最多64个字符,但是所有字符都允许吗?数字?
例如是.允许的吗?IP地址(xxxx)是ASN定义的有效序列吗?
是否允许域名?
我对Java-NSS库感兴趣,而且我正在阅读Sun的P11指南.我对以下内容感到困惑:
使用PKCS12密钥库和PKCS11密钥库有什么区别?
密钥库只是一个密钥库,对吧?有什么不同吗?它们可以在任何方面互换使用吗?
我正在阅读有关KMP字符串匹配的内容.
它需要通过构建前缀表来预处理模式.
例如,对于字符串ababaca,前缀表是: P = [0, 0, 1, 2, 3, 0, 1]
但我不清楚数字显示的是什么.我读到它有助于在模式转换时找到模式的匹配但我无法将此信息与表中的数字相关联.
可能是我分裂头发,但我想知道以下情况:
String newString = a + b + c; //case 1
String newString = a.concat(b).concat(c); //case 2
StringBuilder newString = new StringBuilder(); //case 3
newString.append(a);
newString.append(b);
newString.append(c);
Run Code Online (Sandbox Code Playgroud)
哪个最好用?
我最好的意思是任何方式.
阅读这些,其他帖子说案例3不是最佳表现明智,其他案例1案例1将最终在案例3等.
更具体.
例如,将所有设置放在一边,如果你必须维护他的代码,那么哪种风格更适合从另一个程序员那里看到它?
或者您认为哪种编程效率更高?
或者你会认为更快等等.
我不知道怎么表达这个.
像案例3这样的答案可能会更快,但绝大多数程序员更喜欢案例1,因为如果它在某种程度上得到了很好的阐述,它也是最可读的
我正在查看HashMap的来源.
一HashMap implements Serializable.
好的,它可以作为对象进行存储/传输.
但是我看到哈希表本身被标记为transient.
我不明白你this.If其标记为短暂的,不这意味着它应该不被序列化?
但是所有数据都在表格中.所以为什么呢transient?
也许我对如何Serializable运作感到困惑?
我无法理解ASN.1的基本概念.
如果类型是OID,相应的数字是否实际编码在二进制数据中?
例如,在这个定义中:
id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 }
Run Code Online (Sandbox Code Playgroud)
相应的1.3.6.1.5.5.7.48.1是否完全像这样编码在二进制文件中?
我问这个是因为我试图理解我在DER文件(证书)中看到的特定值,即04020500,我不知道如何解释它.
以下代码:
//used Bouncy Castle provider for keyStore
keyStore.setKeyEntry(alias, (Key)keyPair.getPrivate(), pwd, certChain);
Run Code Online (Sandbox Code Playgroud)
certChain持有结束证书和颁发者证书(即两个证书)
的情况下,如果keyStore是一个实例,则不会将发行者证书保存为保存到文件系统密钥库文件中的链的一部分PKCS12.
如果密钥库类型是,它确实保存两个证书PKCS12-3DES-3DES.为什么是这样?PKCS12是否假设两个证书都是链的一部分?
编辑:这是一个SSCCE.这很好用"JKS",失败的原因是"PKCS12":只有链中的第一个证书可以访问getCertificateChain(String).可以打开保存的文件,同时openssl pkcs12显示两个证书.
public void testKeyStore() {
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
Certificate[] outChain = { createCertificate("CN=CA", publicKey, privateKey), createCertificate("CN=Client", publicKey, privateKey) };
KeyStore outStore = KeyStore.getInstance("PKCS12");
outStore.load(null, "secret".toCharArray());
outStore.setKeyEntry("mykey", privateKey, "secret".toCharArray(), outChain);
OutputStream outputStream = new FileOutputStream("c:/outstore.pkcs12");
outStore.store(outputStream, …Run Code Online (Sandbox Code Playgroud) 我正在阅读JVM调优,我发现JVM在执行GC时会继续移动对象.但Java对象之间相互引用,人们认为它们是作为指针实现的,但每次移动对象后,JVM都不可能遍历整个堆,并更新所有引用; 肯定会永远.那么它如何解析引用,如果引用没有改变,但对象的物理位置呢?
我已经阅读了很多关于JVM的内容,但在任何地方都没有解释,甚至暗示过.
[编辑]我的观点是,引用是单向的.从指针到指向是"瞬时",但反过来需要完整的堆扫描.虽然有可能,但似乎不太可能.如果10K对象在次要集合中存活,那么执行完整堆扫描需要多长时间才能更新对这些对象的引用10K次?必须使用某种优化的算法或结构.
我已经读过可以使用最长公共前缀(LCP)来查找字符串中模式的出现次数.
具体来说,您只需要创建文本的后缀数组,对其进行排序,然后不进行二进制搜索以找到范围,以便您可以计算出现次数,只需计算每个连续条目的LCP即可.后缀数组.
虽然使用二进制搜索来查找模式的出现次数是显而易见的,但我无法弄清楚LCP如何帮助找到这里出现的次数.
例如,对于此后缀数组banana:
LCP Suffix entry
N/A a
1 ana
3 anana
0 banana
0 na
2 nana
Run Code Online (Sandbox Code Playgroud)
LCP如何帮助找到像"banana"或"na"这样的子字符串的出现次数对我来说并不明显.
有什么帮助搞清楚LCP如何帮助吗?
java algorithm pattern-matching suffix-array data-structures
java ×7
security ×5
algorithm ×2
asn.1 ×2
ssl ×2
string ×2
binary ×1
bouncycastle ×1
coding-style ×1
collections ×1
dictionary ×1
encoding ×1
encryption ×1
hashmap ×1
heap ×1
jvm ×1
nss ×1
performance ×1
pkcs#11 ×1
pkcs12 ×1
suffix-array ×1
x509 ×1