以前一直用数据库、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();
}
分享到:
相关推荐
在Java编程中,处理事务主要涉及JDBC(Java Database Connectivity)和JTA(Java Transaction API)。理解这些概念对于开发可靠的、高性能的数据库应用至关重要。 首先,让我们从事务的四大特性说起: 1. **原子性...
JDBC事务管理是数据库操作的重要组成部分,特别是在多用户并发访问数据库的环境中,保证数据的一致性和完整性至关重要。本文主要探讨了事务的基本概念、ACID原则、数据库并发问题以及解决方案。 首先,事务是数据库...
**四、异常处理与事务回滚** 在JDBC中,如果在事务处理过程中出现异常,通常会自动回滚事务,以防止数据不一致。但为了保险起见,可以在finally块中添加对事务的回滚操作,确保即使在异常情况下也能正确处理事务。 ...
"JDBC事务管理的简单实现" 在JDBC编程中,事务管理是非常重要的一部分。为了实现数据一致性,需要在代码中显示的调用Connection方法的事务相关API来完成工作。下面是关于JDBC事务管理的简单实现的知识点。 一、...
在压缩包文件`test_spring_jdbc`中,可能包含了示例代码或者测试用例,用于演示如何在Spring应用中配置和使用JDBC事务管理。通过对这些文件的分析和实践,可以加深对Spring JDBC事务管理的理解和应用。 总结来说,...
JDBC事务和JTA(XA)事务 JDBC事务和JTA(XA)事务是两种常见的数据库事务类型,它们都可以用来管理数据库事务,确保数据库的一致性和可靠性。 JDBC事务 JDBC事务是Java Database Connectivity(JDBC)的事务机制,它...
JDBC 支持四种不同的事务隔离级别,每种级别的隔离效果不同,可以根据具体的应用需求选择合适的级别: 1. **TRANSACTION_NONE**:不支持事务隔离。 2. **TRANSACTION_READ_UNCOMMITTED**:允许读取未提交的数据。 3...
在本例中,我们关注的是与MySQL数据库交互时使用JDBC进行事务处理所需的相关jar包。 首先,我们需要`mysql-connector-java.jar`,这是MySQL提供的驱动程序,用于建立Java应用程序与MySQL数据库之间的连接。这个jar...
在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的标准接口。它提供了连接、查询、更新和管理数据库的能力。本项目“JDBC事务管理项目”旨在教你如何在Java应用中使用JDBC来处理数据库...
javaEE 实验三 Spring JDBC与事务管理, 一、实验目的 1、掌握Spring JDBC的配置; 2、掌握JdbcTemplae类中增删改查方法的使用; 3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握...
在Java编程中,事务处理是确保数据库操作的原子性、一致性、隔离性和持久性的关键机制。JDBC(Java Database Connectivity)提供了对事务处理的基本支持,而JTA(Java Transaction API)则提供了更高级的事务管理...
JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试JDBC连接数据库测试...
### JDBC专题(六)-JDBC专题-事务的隔离级别 #### 一、事务的基本概念与特性 事务在数据库管理中扮演着极其重要的角色,尤其是在处理关键业务逻辑时,确保数据的一致性和完整性至关重要。根据提供的文件信息,我们...
《Sharding-JDBC分布式事务应用》是一篇关于Java领域中如何利用Sharding-JDBC实现分布式事务的专题讨论。Sharding-JDBC是阿里巴巴开源的一款轻量级数据库中间件,它为Java开发者提供了一种透明化的数据分片解决方案...
在Java编程中,JDBC(Java Database Connectivity)是Java应用程序与各种数据库进行交互的一种标准接口。`sqljdbc`通常指的是Microsoft提供的SQL Server JDBC驱动,它允许Java程序与Microsoft SQL Server数据库进行...
Java(JDBC)事务处理
然而,直接使用JDBC代码往往繁琐且易出错,因此引入了代理类(Proxy Class)的概念,它能为JDBC提供更高效、安全和灵活的解决方案。JDBC代理主要涉及两个技术领域:AOP(面向切面编程)和设计模式中的代理模式。 ...
本案例重点探讨了Spring如何与两种流行的数据访问技术——JDBC(Java Database Connectivity)和Hibernate——相结合,进行事务管理。事务控制是确保数据库操作一致性、完整性的关键,尤其在多步骤操作中,它能防止...
在IT领域,Spring框架是Java开发中的核心工具之一,它为构建高质量的、可维护的、松耦合的应用程序...在实践中,你可能会遇到的问题包括事务传播行为、异常回滚规则、事务隔离级别等,这些都是进一步学习和研究的方向。
"JDBC连接Oracle数据库测试"是一个关键的实践环节,确保应用程序能够稳定且高效地与数据库进行交互。在这个场景中,我们将详细探讨如何使用JDBC来实现对Oracle数据库的连接测试,以及如何每隔20秒执行一次连接并记录...