- 浏览: 659305 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (345)
- java (63)
- Struts2 (11)
- Spring2.5 + (17)
- Hibernate (25)
- Struts2 Spring hibernate (5)
- log4j (3)
- apache tomcat (12)
- oracle (22)
- oracle_存储过程 (4)
- mysql (18)
- jquery (11)
- prototype (5)
- js (19)
- quartz (5)
- 设计模式 (6)
- eclipse/MyEclipse 注意事项 (9)
- eclipse (0)
- css (6)
- 正则表达式 (2)
- linux (18)
- PHP (6)
- 多线程 (20)
- XML (1)
- jstl (3)
- mongoDB (7)
- android (20)
- 反射 (1)
- IOS (46)
- SVN (3)
- C/C++ (4)
- 百度地图 (2)
- IO/SOCKET (3)
- 百度地图JS (1)
- 树莓派/香蕉派 (1)
最新评论
-
anny101:
想转发一下,不知道怎么转发。评论一下吧。方便查看。
fetch = FetchType.EAGER 作用 -
Navee:
果然我这也是是防火墙问题
解决 Linux 安装 httpd局域网无法访问 -
dhyang909:
...
oracle 10g+ 行列转换 -
国产希特勒:
真强,居然有人把公司的面试题挂到javaeye上了
锦江国际的一道面试题(很简单) -
tomfish88:
比如我要拦截不同业务的service类里面的方法 @Poi ...
Spring AOP annotation 拦截表达式 分析
用到 junit4
package com.bingfa; import java.sql.Connection; public final class JDBCUtils { private JDBCUtils() { } private static String url = "jdbc:mysql://localhost:3306/test"; private static String user = "root"; private static String password = "root"; static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user, password); } public static void freePs(ResultSet rs, PreparedStatement ps, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (ps != null) ps.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } public static void freeSt(ResultSet rs, Statement st, Connection conn) { try { if (rs != null) rs.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (st != null) st.close(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } }
更新表,里面有用Statement和PreparedStatement两种方式
package com.bingfa; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class UploadCC { public static void JDBCStatment() throws Exception { Connection conn = null; Statement st = null; ResultSet rs = null; try { conn = (Connection) JDBCUtils.getConnection(); conn.setAutoCommit(false); String sql = ""; sql = "SELECT cc FROM test WHERE id=1 "; st = conn.createStatement(); rs = st.executeQuery(sql); int c = 0; while (rs.next()) { c = rs.getInt(1); } c = c + 1; //用cc=cc+1,不会有并发问题,如果用c=c+1,则有问题 sql = "UPDATE test SET cc = cc+1 WHERE id =1 "; st=(Statement) conn.createStatement(); st.execute(sql); conn.commit(); } finally { JDBCUtils.freeSt(rs, st, conn); } } public static void JDBCPrepare() throws Exception { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = (Connection) JDBCUtils.getConnection(); conn.setAutoCommit(false); String sql = ""; sql = "SELECT cc FROM test WHERE id=1 "; ps = conn.prepareStatement(sql); rs = ps.executeQuery(); int c = 0; while (rs.next()) { c = rs.getInt(1); } c = c + 1; sql = "UPDATE test SET cc = ? WHERE id =1 "; ps = conn.prepareStatement(sql); ps.setInt(1, c); ps.execute(); conn.commit(); } finally { JDBCUtils.freePs(rs, ps, conn); } } }
测试类,注意,测试并发并不用直接使用此类
package test; import junit.framework.TestCase; public class UploadCCTest extends TestCase { public UploadCCTest(String name) { super(name); } @org.junit.Test public void testJdbcStatment() { try { UploadCC.JDBCStatment(); } catch (Exception e) { e.printStackTrace(); } } @org.junit.Test public void testJdbcPrepare() { try { UploadCC.JDBCPrepare(); } catch (Exception e) { e.printStackTrace(); } } }
用这个类进行并发测试
package test; import com.clarkware.junitperf.LoadTest; import com.clarkware.junitperf.TestMethodFactory; import junit.framework.Test; public class TestSuite { public static Test suite() { Test suite = new TestMethodFactory(UploadCCTest.class, "testJdbcStatment"); Test loadTest = new LoadTest(suite, 20, 10); //如果正常,cc的值应为200,但如果用c=c+1,值肯定小于200 return loadTest; } // public static Test suite() { // Test suite = new TestMethodFactory(UploadCCTest.class, "testJdbcPrepare"); // Test loadTest = new LoadTest(suite, 20, 10); // return loadTest; // } }
- junitperf-1.9.1.jar (34.8 KB)
- 下载次数: 1
发表评论
-
fastjson格式化日期 时间
2016-07-19 10:23 751@JSONField (format="HH ... -
将博客搬至CSDN
2014-11-24 10:03 18将博客搬至CSDN -
centos 安装 java7,tomcat7,mysql5.6,mongodb
2014-10-24 11:30 917chkconfig --list tomcat7 ... -
mongodb 分组 得到第一条数据
2014-10-06 13:52 2090业务逻辑: 控制器每分钟上报采集数据,现需得到每个控制器 ... -
2进制,10进制,16进制
2014-08-19 16:39 1017// 1个字节8位,最大可表示255 // 2进 ... -
Buffer的基本用法
2014-08-14 11:47 7331、对buffe.put(**)后,都要buffer.fl ... -
mongodb删除已处理过的数据,即非新增数据
2014-08-12 17:36 549/** * 删除已处理过的数据( ... -
编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC
2014-08-07 13:10 2324package test1; import j ... -
java 多线程 笔试题
2014-08-07 12:30 12591、4线程,2个对i加,2个对i减 2、实现孙线程 ... -
基于ArrayBlockingQueue的生产者和消费者
2014-08-06 23:02 741学习写的测试,可能有BUG。 有了ArrayBlocki ... -
每隔一秒打印一次日志,共16秒打印完,加4个线程修改程序,使之4秒打印完
2014-08-06 17:20 1166原来的程序: package test1; publ ... -
通过semaphore信号灯,开启多个线程,但只并发3个线程
2014-08-04 22:07 920package com.mhm.test1; ... -
用锁实现缓存机制
2014-08-01 14:11 824package test1; import java. ... -
用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程执行15次,如此反复5次
2014-08-01 13:50 857package test1; import java. ... -
用Lock和Condition,实现主线程执行5次,子线程再执行10次,孙线程执行15次,如此反复5次
2014-08-01 13:49 1package test1; import ja ... -
通过代码,解释ExecutorService基本用法
2014-07-29 17:49 596package test1; import ja ... -
4线程,2个对i加,2个对i减
2014-07-29 16:23 857package test1; /** * 设计 ... -
简单多线程卖票代码
2014-07-29 15:45 852public class Thread2 { pu ... -
通过代码,了解ThreadLocal
2014-07-29 14:06 539在看此代码时,先看http://www.iteye.com ... -
子线程先执行10次,主线程执行5次,子线程再执行10次,主线程再执行5次,如此反复3次
2014-07-28 22:21 790package com.mhm.test1; / ...
相关推荐
然而,在使用Spark与数据库交互时,尤其是使用JDBC(Java Database Connectivity)读取数据时,如果不优化并发度,很容易造成性能瓶颈。特别是在面对大规模数据集时,单线程任务过重会导致任务执行缓慢甚至挂起,...
为了更明确怎样开发出高并发程序,本人写了一个测试例子去体验下 C3P0 tomcatJdbc dbcp 他们的并发能力。采用乐观锁控制oracle数据并发访问。测试结果表明在 c3p0 和dbcp 都能执行完4800以下并发线程访问。c3p0 比较...
在JMeter中,JDBC请求采样器(JDBC Request Sampler)被用来模拟数据库查询、更新、删除和插入操作,从而评估数据库服务器的性能。 要进行JDBC测试,首先需要在JMeter的"测试计划"中添加"线程组",这代表一组并发...
2. 添加“JDBC Request”元件,指定SQL查询或操作,如读取数据、插入记录、更新或删除。 3. 可以添加“View Results Tree”监听器来查看请求的详细结果,包括执行时间、返回结果集等。 4. 设置线程组参数,如并发...
适合java自测 以及测试人员常见接口测试 解压即用 JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP...
Java-JDBC【源码】数据库连接池技术、常规操作与Durid对比、测试(20-200)不同连接数下,10万记录,1万并发,CPU磁盘占用情况 1.数据库连接池 2.Durid介绍(官方文档) 3.编码,问题,常规并发操作 3.1.JDBCUtil....
它能够模拟大量并发用户,以此来测试服务器的性能和稳定性。本文将详细介绍如何使用JMeter进行性能测试。 一、JMeter简介 JMeter是由Apache Software Foundation开发的Java应用程序,支持多线程和非图形界面...
学习这个代码包,你可以深入了解JDBC的实践应用,如何通过反射优化代码,以及如何利用线程池来提升数据库操作的并发性能。这对于任何Java开发人员,尤其是从事后端开发的工程师来说,都是宝贵的实战经验。同时,它也...
将`jdbc-sqljdbc41.jar`添加到JMeter的`lib`目录后,用户可以通过配置JDBC Connection Configuration元素来建立与SQL Server的连接,进而创建和运行SQL查询,验证数据库操作的正确性,或者模拟大量并发请求以评估...
* 使用 HiveServer 2.0,可以解决权限和并发问题。 HiveServer2 提供了强大的安全机制,能够确保用户身份的合法性和访问权限的控制。但是,在实际应用中,需要根据不同的测试环境和配置来进行调整和优化。 在本文...
本项目提供了对三种常用的Java数据库连接池——DBCP(BasicDataSource)、C3P0和Tomcat JDBC的性能及稳定性测试代码。下面将详细介绍这三个连接池的工作原理、特性以及如何进行性能测试。 1. **DBCP ...
8. **并发与多线程**:由于SQLite本身支持多线程访问,源码可能涉及到如何在多线程环境中安全地使用数据库连接。 9. **JDBC兼容性**:SQLite JDBC Driver必须遵循JDBC的兼容性规范,确保与其他JDBC驱动的一致性,这...
然而,C3P0在处理大量并发请求时可能会出现性能瓶颈,且其社区活跃度相对较低,更新维护相对较慢。 2. Proxool Proxool是另一个流行的JDBC连接池实现,它的设计目标是简单易用和高效。Proxool通过创建虚拟的连接池...
线程池可以提高应用程序的性能,减少创建和销毁线程的开销,同时管理并发访问数据库的多个请求。本实例中,我们将重点讨论如何使用C3P0这个开源的JDBC连接池工具包来实现这一功能。 C3P0是一个开源的JDBC连接池,它...
Clickhouse-JDBC是Java开发的一款用于连接Clickhouse数据库的驱动,它...在处理大规模数据时,Clickhouse的高性能和高并发能力使得它成为一个理想的选择,而通过JDBC驱动,我们可以无缝地将这些能力融入到Java应用中。
用户可以直接运行此可执行文件来创建、打开、查询、更新或管理SQLite数据库文件。此外,开发人员还可以在自动化脚本或测试环境中使用它,以执行数据库相关的任务。 2. sqlitejdbc-v056.jar:这是SQLiteJDBC驱动的库...
本文将重点介绍如何在JMeter中使用JDBC Request来执行多条SQL语句,包括查询与更新操作,并针对不同类型的SQL语句提供最佳实践。 #### 二、JDBC Request概述 JDBC Request是JMeter提供的一个用于执行数据库操作的...