以前一直用数据库、JDBC、Hibernate。只知道事务有四个特性而没有深入探究一下
最近想测试一下他们到底是什么样的,还有各种各样的并发效果是什么样的。就自己搞了一个测试。
因为常规的JDBC插入数据、读取数据都基本上算是“瞬时”的,效果感觉很难扑捉,就想到了使用插入读取大对象(CLOB/BLOB)。并且使用 SocketInputStream 进行对象的“入库”(可以通过限制SocketInputStream 传输速度使一个JDBC事务延长到几秒、几十秒、等等)。 然后在“出库”时也进行了输入流的手动延阻。
最终效果什么的都实现了、 测试也挺不错。 但是这个 SocketInputStream 却遇到了好几个问题。。。
第一个就是代理了、 因为实验室的网使用了代理,需要使用Proxy
。这个很容易了
第二个就是网络主机的屏蔽网络爬虫
。。。 这个问题在我琢磨了之后,感觉网络主机理论上除了通过请求参数判断我是否是爬虫之外没有其他的办法屏蔽我的, 通过模仿火狐请求的头参数也顺利通过了
第三个就是网络主机返回的数据是压缩的gzip,刚开始没有注意,只见每次得到的数据都是乱码。后来查资料才明白是java不能解析gzip
格式而导致的。
第四个问题现在还不太明白, 就是测试多了之后,突然出现了网络主机给我500错误
, 我把请求参数更改之后问题问题又没了。。。。挺蛋疼的
/**
* 获取网络输入流、 异常随意抛了
**/
public static InputStream getInputStream() throws Exception {
final String CONN_URL = "http://www.iteye.com";
// 配置代理。。。
SocketAddress proxyAddress = new InetSocketAddress("172.20.92.22",3129);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress);
URL url = new URL(CONN_URL);
URLConnection conn = url.openConnection(proxy);
// 设置请求参数。如果没有参数,经常会被主机服务器当做网络爬虫拒绝请求
conn.addRequestProperty("Host", "www.iteye.com");
conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0");
conn.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.addRequestProperty("Accept-Language", "zh-cn,zh;q=0.5");
// conn.addRequestProperty("Accept-Encoding", "gzip, deflate");
conn.addRequestProperty("Accept-Charset", "utf-8;q=0.7,*;q=0.7");
conn.addRequestProperty("Connection", "keep-alive");
return conn.getInputStream();
}
分享到:
相关推荐
此外,还有一些高级处理,如批处理更新、事务隔离和可滚动结果集等。 2. **javax.sql**:提供了一些高级接口和类,用于更复杂的数据库操作,如连接管理、分布式事务和旧有连接的改进等。主要包含以下对象和接口: ...
事务处理则确保了数据操作的原子性、一致性、隔离性和持久性;而存储过程调用则可以利用数据库服务器的处理能力,减少网络传输量,提高应用性能。 ### JDBC驱动程序类型 JDBC驱动程序根据其实现方式和与数据库的...
- Read Uncommitted(读未提交)级别下,事务隔离被屏蔽,可能导致脏读。 H2数据库通过设置系统属性和修改数据库URL来配置这些隔离级别。在分布式系统中,数据库操作需要确保数据的一致性和防止丢失更新,因此,H2...
Mycat是一种数据库中间件,用于解决高并发和海量数据存储场景下的数据库性能问题。在数据库架构设计中,分库分表是应对高并发和数据量增长的常见策略。Mycat可以实现数据库的水平切分和垂直切分,从而把数据分散存储...
文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...