以前一直用数据库、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();
}
分享到:
相关推荐
有关JDBC事务 JTA事务 传播特性 隔离级别等等
在JDBC中,打开一个连接对象Connection时,缺省是auto-commit模式,每个SQL语句都被当作一个事务,即每次执行一个语句,都会自动的得到事务确认。为了能将多个SQL语句组合成一个事务,要将auto-commit模式屏蔽掉。在...
javaEE 实验三 Spring JDBC与事务管理, 一、实验目的 1、掌握Spring JDBC的配置; 2、掌握JdbcTemplae类中增删改查方法的使用; 3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握...
JDBC事务管理,详细说明jdbc事务管理
JDBC驱动和测试代码
JDBC事务操作例子所需jar包JDBC事务操作例子所需jar包JDBC事务操作例子所需jar包JDBC事务操作例子所需jar包
JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试...
JDBC事务控制--讲述如何控制JDBC事务
Java(JDBC)事务处理
sqljdbc和测试jdbc连接类sqljdbc和测试jdbc连接类
jdbc——内嵌事务 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> ...
JDBC事务和JTA(XA)事务
JDBC对数据库进行操作的小例子,包括增、删、改、查。
(2) 在BookShopDao中添加一个purchase购书方法,其操作流程是获取书的单价->买书(更新库存)->更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常执行...
Sharding-JDBC分布式事务应用
对于Transaction 管理 为了实现数据一致性,对于数据库的JDBC编程通常需要在代码中显示的调用Connection方法的事务相关API来完成工作。
测试JDBC与数据库的连接以及SQL注入
1.事务(Transaction)的概念 2.MySQL数据库中操作事务命令 2.1.编写测试SQL脚本,如下: 2.2.开启事务(start transaction) 2.3.提交事务(commit) 2.4回滚事务(rollback) 3.JDBC中使用事务 3.1....
•隔离性(Isolation) 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。 A ------> B B ------> C •持久性(Durability...
JDBC连接oracle数据库的测试,每隔20s连接一次后断开,并将连接时间、耗时和连接结果输入一个txt文件。用于测试数据库的稳定性