小编mal*_*ere的帖子

Hibernate:设置默认查询超时?

我正在使用Hibernate对我的数据库进行一些大查询,我有时会遇到超时.我想避免在每个Query或者手动设置超时Criteria.

我可以给我的任何属性是否Query会为我运行的所有查询设置一个可接受的默认值?

如果没有,我如何在Hibernate查询上设置默认超时值?

java configuration hibernate timeout jpa

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

Sun的Java SSL实现是否泄漏内存?

我有一个服务器组件,我正在尝试加载测试.与服务器的所有连接都使用TLS 1.0.我有一个简单的测试程序,基本上可以在我想要的多个线程上执行此操作:

Full TLS handshake to the server
send a request
read reply
close connection
repeat ad nauseam
Run Code Online (Sandbox Code Playgroud)

我的虚拟机如下:

Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Server VM (build 14.2-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)

我有内存泄漏.当我大量测试我的服务器时,我的内存占用每秒增加大约1兆,这使得它在15-20分钟后就会阻塞OutOfMemoryException.

我在Netbean的分析器中运行它,它表明内存的增加深入TLS API.

有没有人经历过类似的事情?我可以在我的级别实施任何解决方法吗?

编辑.根据要求,这里是分析调用跟踪,它生成了很多这些byte []:

.java.io.ByteArrayOutputStream.<init>(int)
..com.sun.net.ssl.internal.ssl.OutputRecord.<init>(byte, int)
...com.sun.net.ssl.internal.ssl.OutputRecord.<init>(byte)
....com.sun.net.ssl.internal.ssl.AppOutputStream.<init>(com.sun.net.ssl.internal.ssl.SSLSocketImpl)
.....com.sun.net.ssl.internal.ssl.SSLSocketImpl.init(com.sun.net.ssl.internal.ssl.SSLContextImpl, boolean)
......com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(com.sun.net.ssl.internal.ssl.SSLContextImpl, java.net.Socket, String, int, boolean)
.......com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(java.net.Socket, String, int, boolean)
<my code>
Run Code Online (Sandbox Code Playgroud)

还有更多我能说的......这会很长.我会告诉你分析器给我的切入点:

....com.sun.net.ssl.internal.ssl.AppOutputStream.<init>(com.sun.net.ssl.internal.ssl.SSLSocketImpl)
....com.sun.net.ssl.internal.ssl.HandshakeOutStream.<init>(com.sun.net.ssl.internal.ssl.ProtocolVersion, com.sun.net.ssl.internal.ssl.ProtocolVersion, com.sun.net.ssl.internal.ssl.HandshakeHash, com.sun.net.ssl.internal.ssl.SSLSocketImpl)
....com.sun.net.ssl.internal.ssl.SSLSocketImpl.sendAlert(byte, byte)
..com.sun.net.ssl.internal.ssl.AppInputStream.<init>(com.sun.net.ssl.internal.ssl.SSLSocketImpl)
..com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake()
..com.sun.net.ssl.internal.ssl.HandshakeInStream.<init>(com.sun.net.ssl.internal.ssl.HandshakeHash)
Run Code Online (Sandbox Code Playgroud)

java ssl memory-leaks

11
推荐指数
2
解决办法
7747
查看次数

PostgreSQL:BYTEA与OID +大对象?

我用Hibernate 3.2和PostgreSQL 8.4开始了一个应用程序.我有一些byte[]字段映射为@Basic(= PG bytea),其他字段映射为@Lob(= PG大对象).为什么不一致?因为我是一个Hibernate菜鸟.

现在,这些字段最大为4 Kb(但平均为2-3 kb).PostgreSQL文档提到当字段很大时LO很好,但我没有看到"大"意味着什么.

我已经使用Hibernate 3.6升级到PostgreSQL 9.0,我不得不将注释更改为@Type(type="org.hibernate.type.PrimitiveByteArrayBlobType").这个bug带来了潜在的兼容性问题,我最终发现,与普通字段相比,Large Objects是一个很难处理的问题.

所以我想把它全部改成bytea.但我担心bytea字段是用Hex编码的,因此在编码和解码时会有一些开销,这会损害性能.

关于这两者的表现是否有良好的基准?有人做过切换并看到了不同之处吗?

java postgresql hibernate blob

11
推荐指数
2
解决办法
6287
查看次数

如何禁用Java的SSL反向DNS查找

我有一个正在开发的服务器和一些连接到它的开发人员.该服务器使用Java的TLS实现SSLEngine.

我们看到,首先,每个新连接都会有很长的延迟(30-40秒).我们将其缩小以反转DNS查找超时.我们通过将所有IP放入HOSTS文件中来解决这个问题.

现在,问题是我们将逐步扩大我们的用户群,我不想编辑该HOSTS文件,特别是因为我们无法保证他们将拥有静态IP.

有没有办法在Java的SSL/TLS中禁用反向DNS查找步骤?

我想将此作为可配置参数,以便我们可以在开发期间将其关闭.

java dns ssl

7
推荐指数
2
解决办法
7972
查看次数

PostgreSQL:从OID到Bytea

我们决定从OIDPostgreSQL 9.0数据库中的转移到,而改用bytea列。我正在尝试将数据从一列复制到另一列,但是我找不到正确的查询。这是我最近得到的:

update user as thistable set pkcs_as_bytea = (select array_agg(mylargeobject.data) from 
  (select * from pg_largeobject where loid = thistable.pkcs12_as_oid order by pageno) as mylargeobject) where thistable.pkcs12 is not null
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误信息:

ERROR:  column "pkcs_as_bytea" is of type bytea but expression is of type bytea[]
Run Code Online (Sandbox Code Playgroud)

那么正确的查询是什么?

postgresql oid

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

LDAP:使用过滤器来避免Active Directory中的子CN

我试图查询Active Directory中的几乎所有用户.我的普通用户在各种OU中,我想要检索它们.但我的系统用户存储在用户CN中,我不想检索它们.

它看起来很像另一个问题,但他们的回答并没有帮助我.我正在使用这里提供的提示,但它也没有帮助.

我正在使用JNDI在Active Directory中查询.我的查询是:

(&(objectClass=user)(!(cn:dn:=Users)))
Run Code Online (Sandbox Code Playgroud)

这意味着类的所有对象user,它们不在Users子树中.然而,这个查询仍返回如下内容:

CN=__vmware__,CN=Users,DC=SIREDRM,DC=com
Run Code Online (Sandbox Code Playgroud)

那么,为什么那个过滤器不起作用?我怎么能让它工作?

java jndi ldap active-directory

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

禁用我的Swing窗口的屏幕截图

我有一个Swing窗口,其中包含敏感信息,我想阻止用户截取屏幕截图,或者在截取屏幕截图时使用窗口隐藏.

我怎样才能做到这一点?

java swing screenshot

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

将Facelets编译为Java代码

我看到Jetty和Jasper有JSP编译器支持JSP中的JSF.但是,我也有兴趣编译Facelets.是否有可用的工具将其编译为Java代码或字节码?

jsf compilation facelets

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

R data.table过滤组大小

我试图找到我的所有记录,data.table其中有多个行在字段f中具有值v.

例如,我们可以使用这些数据:

dt <- data.table(f1=c(1,2,3,4,5), f2=c(1,1,2,3,3))
Run Code Online (Sandbox Code Playgroud)

如果在现场寻找那个属性f2,我们会得到(注意没有(3,2)元组)

    f1 f2
1:  1  1
2:  2  1
3:  4  3
4:  5  3  
Run Code Online (Sandbox Code Playgroud)

我的第一个猜测是dt[.N>2,list(.N),by=f2],但这实际上保留了条目.N==1.

dt[.N>2,list(.N),by=f2]
   f2 N
1:  1 2
2:  2 1
3:  3 2
Run Code Online (Sandbox Code Playgroud)

另一个简单的猜测,dt[duplicated(dt$f2)]并没有做到这一点,因为它保留了结果之一的"重复".

dt[duplicated(dt$f2)]
   f1 f2
1:  2  1
2:  5  3
Run Code Online (Sandbox Code Playgroud)

那我该怎么做呢?

编辑添加示例

r data.table

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

Java RSA加密不可重复?

我一直无法使用RSA公钥加密.以下是重现问题的示例JUnit代码:

public class CryptoTests {

private static KeyPair keys;

@BeforeClass
public static void init() throws NoSuchAlgorithmException{
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
    SecureRandom random = CryptoUtils.getSecureRandom();
    keyGen.initialize(2176, random);
    keys = keyGen.generateKeyPair();
}
@Test
public void testRepeatabilityPlainRSAPublic() throws EdrmCryptoException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException{
    byte[] plaintext = new byte [10];
    Random r = new Random();
    r.nextBytes(plaintext);

    Cipher rsa = Cipher.getInstance("RSA");
    rsa.init(Cipher.ENCRYPT_MODE, keys.getPublic());
    byte[] encrypted1 =  rsa.doFinal(plaintext);

    rsa = Cipher.getInstance("RSA");
    rsa.init(Cipher.ENCRYPT_MODE, keys.getPublic());
    byte[] encrypted2 =  rsa.doFinal(plaintext);

    rsa = Cipher.getInstance("RSA");
    rsa.init(Cipher.ENCRYPT_MODE, keys.getPublic());
    byte[] encrypted3 = …
Run Code Online (Sandbox Code Playgroud)

java cryptography rsa

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

相同的字符串,不同的哈希码

我正在编写一个简单的查找,总是以某种方式失败.进一步调查,我发现了一些我无法解释的事情:似乎虽然我的字符串是相同的,但它们并没有得到相同的哈希码.

fr.unice.i3s.modalis.jSeduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A536564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash code: 1515256474
fr.unice.i3s.modalis.jseduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A736564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash Code: 2099127532
Run Code Online (Sandbox Code Playgroud)

使用Java 6重复实验,我遇到了类似的问题.请注意,无论哪种方式,事情都不是常数:

fr.unice.i3s.modalis.jSeduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A536564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash code: 1515256474
fr.unice.i3s.modalis.jseduite.technical.restaurant.CourseFinder Hex: 66722E756E6963652E6933732E6D6F64616C69732E6A736564756974652E746563686E6963616C2E72657374617572616E742E436F7572736546696E646572 Hash Code:  - 1772912571
Run Code Online (Sandbox Code Playgroud)

我的代码依赖于这个匹配,我不想运行.equals(),因为它可能太慢了.

根据我的理解,对于相同的字符串,哈希码应该是相同的.这是JVM中的错误吗?是否涉及一些神奇的Scala干扰?

环境:

  • 斯卡拉2.10
  • 64位Oracle Java 1.7.0_17和Oracle Java 1.6.0_43
  • IntelliJ IDEA(最新社区版)

java scala hashcode

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