我正在使用Hibernate对我的数据库进行一些大查询,我有时会遇到超时.我想避免在每个Query或者手动设置超时Criteria.
我可以给我的任何属性是否Query会为我运行的所有查询设置一个可接受的默认值?
如果没有,我如何在Hibernate查询上设置默认超时值?
我有一个服务器组件,我正在尝试加载测试.与服务器的所有连接都使用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) 我用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的TLS实现SSLEngine.
我们看到,首先,每个新连接都会有很长的延迟(30-40秒).我们将其缩小以反转DNS查找超时.我们通过将所有IP放入HOSTS文件中来解决这个问题.
现在,问题是我们将逐步扩大我们的用户群,我不想编辑该HOSTS文件,特别是因为我们无法保证他们将拥有静态IP.
有没有办法在Java的SSL/TLS中禁用反向DNS查找步骤?
我想将此作为可配置参数,以便我们可以在开发期间将其关闭.
我们决定从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)
那么正确的查询是什么?
我试图查询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)
那么,为什么那个过滤器不起作用?我怎么能让它工作?
我有一个Swing窗口,其中包含敏感信息,我想阻止用户截取屏幕截图,或者在截取屏幕截图时使用窗口隐藏.
我怎样才能做到这一点?
我看到Jetty和Jasper有JSP编译器支持JSP中的JSF.但是,我也有兴趣编译Facelets.是否有可用的工具将其编译为Java代码或字节码?
我试图找到我的所有记录,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)
那我该怎么做呢?
编辑添加示例
我一直无法使用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) 我正在编写一个简单的查找,总是以某种方式失败.进一步调查,我发现了一些我无法解释的事情:似乎虽然我的字符串是相同的,但它们并没有得到相同的哈希码.
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干扰?
环境:
java ×8
hibernate ×2
postgresql ×2
ssl ×2
blob ×1
compilation ×1
cryptography ×1
data.table ×1
dns ×1
facelets ×1
hashcode ×1
jndi ×1
jpa ×1
jsf ×1
ldap ×1
memory-leaks ×1
oid ×1
r ×1
rsa ×1
scala ×1
screenshot ×1
swing ×1
timeout ×1