From c5e7fe45370761d6b2c13e807a7150b56265fb6c Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 6 Jun 2013 12:28:36 +0800 Subject: [PATCH] decrease memory used --- .../alibaba/druid/filter/FilterManager.java | 2 +- .../com/alibaba/druid/proxy/DruidDriver.java | 2 +- .../druid/proxy/jdbc/JdbcParameter.java | 60 ++------ .../druid/proxy/jdbc/JdbcParameterDate.java | 35 +++++ .../proxy/jdbc/JdbcParameterDecimal.java | 35 +++++ .../druid/proxy/jdbc/JdbcParameterImpl.java | 56 ++++++++ .../druid/proxy/jdbc/JdbcParameterInt.java | 34 +++++ .../druid/proxy/jdbc/JdbcParameterLong.java | 34 +++++ .../druid/proxy/jdbc/JdbcParameterNull.java | 33 +++++ .../druid/proxy/jdbc/JdbcParameterString.java | 34 +++++ .../proxy/jdbc/JdbcParameterTimestamp.java | 35 +++++ .../jdbc/PreparedStatementProxyImpl.java | 134 +++++++++--------- .../druid/stat/JdbcDataSourceStat.java | 2 +- .../druid/support/http/stat/WebAppStat.java | 2 +- .../ibatis/SqlMapClientImplWrapper.java | 2 +- .../druid/support/spring/stat/SpringStat.java | 2 +- .../com/alibaba/druid/wall/WallProvider.java | 4 +- 17 files changed, 380 insertions(+), 126 deletions(-) create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDate.java create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDecimal.java create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterImpl.java create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterInt.java create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterLong.java create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterNull.java create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java create mode 100644 src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterTimestamp.java diff --git a/src/main/java/com/alibaba/druid/filter/FilterManager.java b/src/main/java/com/alibaba/druid/filter/FilterManager.java index cfef0f755b..0aacf25f70 100644 --- a/src/main/java/com/alibaba/druid/filter/FilterManager.java +++ b/src/main/java/com/alibaba/druid/filter/FilterManager.java @@ -33,7 +33,7 @@ public class FilterManager { private final static Log LOG = LogFactory.getLog(FilterManager.class); - private static final ConcurrentHashMap aliasMap = new ConcurrentHashMap(); + private static final ConcurrentHashMap aliasMap = new ConcurrentHashMap(16, 0.75f, 1); static { try { diff --git a/src/main/java/com/alibaba/druid/proxy/DruidDriver.java b/src/main/java/com/alibaba/druid/proxy/DruidDriver.java index b2a77cb9e9..3472728d46 100644 --- a/src/main/java/com/alibaba/druid/proxy/DruidDriver.java +++ b/src/main/java/com/alibaba/druid/proxy/DruidDriver.java @@ -53,7 +53,7 @@ public class DruidDriver implements Driver, DruidDriverMBean { private final static DruidDriver instance = new DruidDriver(); - private final static ConcurrentMap proxyDataSources = new ConcurrentHashMap(); + private final static ConcurrentMap proxyDataSources = new ConcurrentHashMap(16, 0.75f, 1); private final static AtomicInteger dataSourceIdSeed = new AtomicInteger(0); private final static AtomicInteger sqlStatIdSeed = new AtomicInteger(0); diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameter.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameter.java index 1a77f9556a..a5c7aa1887 100644 --- a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameter.java +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameter.java @@ -20,7 +20,7 @@ import java.util.Calendar; /** * @author wenshao */ -public class JdbcParameter { +public interface JdbcParameter { public static final int BinaryInputStream = 10001; public static final int AsciiInputStream = 10002; @@ -28,56 +28,6 @@ public class JdbcParameter { public static final int NCharacterInputStream = 10004; public static final int URL = 10005; - private final int sqlType; - private final Object value; - private final long length; - private final Calendar calendar; - private final int scaleOrLength; - - public JdbcParameter(int sqlType, Object value, long length, Calendar calendar, int scaleOrLength){ - this.sqlType = sqlType; - this.value = value; - this.length = length; - this.calendar = calendar; - this.scaleOrLength = scaleOrLength; - } - - public JdbcParameter(int sqlType, Object value, long length, Calendar calendar){ - this(sqlType, value, -1, null, -1); - } - - public JdbcParameter(int sqlType, Object value){ - this(sqlType, value, -1, null); - } - - public JdbcParameter(int sqlType, Object value, long length){ - this(sqlType, value, length, null); - } - - public JdbcParameter(int sqlType, Object value, Calendar calendar){ - this(sqlType, value, -1, calendar); - } - - public int getScaleOrLength() { - return scaleOrLength; - } - - public Object getValue() { - return value; - } - - public long getLength() { - return length; - } - - public Calendar getCalendar() { - return calendar; - } - - public int getSqlType() { - return sqlType; - } - public static interface TYPE { public static final int BinaryInputStream = 10001; @@ -89,4 +39,12 @@ public class JdbcParameter { public static final int BYTES = 10007; } + + Object getValue(); + + long getLength(); + + Calendar getCalendar(); + + int getSqlType(); } diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDate.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDate.java new file mode 100644 index 0000000000..bc1e131637 --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDate.java @@ -0,0 +1,35 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.sql.Types; +import java.util.Calendar; +import java.util.Date; + +public class JdbcParameterDate implements JdbcParameter { + + private final Date value; + + public JdbcParameterDate(Date value){ + this.value = value; + } + + @Override + public Object getValue() { + return value; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public Calendar getCalendar() { + return null; + } + + @Override + public int getSqlType() { + return Types.DATE; + } + +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDecimal.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDecimal.java new file mode 100644 index 0000000000..248cea91a1 --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterDecimal.java @@ -0,0 +1,35 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.math.BigDecimal; +import java.sql.Types; +import java.util.Calendar; + +public class JdbcParameterDecimal implements JdbcParameter { + + private final BigDecimal value; + + public JdbcParameterDecimal(BigDecimal value){ + this.value = value; + } + + @Override + public Object getValue() { + return value; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public Calendar getCalendar() { + return null; + } + + @Override + public int getSqlType() { + return Types.DECIMAL; + } + +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterImpl.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterImpl.java new file mode 100644 index 0000000000..c68c7ea315 --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterImpl.java @@ -0,0 +1,56 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.util.Calendar; + +public class JdbcParameterImpl implements JdbcParameter { + + private final int sqlType; + private final Object value; + private final long length; + private final Calendar calendar; + private final int scaleOrLength; + + public JdbcParameterImpl(int sqlType, Object value, long length, Calendar calendar, int scaleOrLength){ + this.sqlType = sqlType; + this.value = value; + this.length = length; + this.calendar = calendar; + this.scaleOrLength = scaleOrLength; + } + + public JdbcParameterImpl(int sqlType, Object value, long length, Calendar calendar){ + this(sqlType, value, -1, null, -1); + } + + public JdbcParameterImpl(int sqlType, Object value){ + this(sqlType, value, -1, null); + } + + public JdbcParameterImpl(int sqlType, Object value, long length){ + this(sqlType, value, length, null); + } + + public JdbcParameterImpl(int sqlType, Object value, Calendar calendar){ + this(sqlType, value, -1, calendar); + } + + public int getScaleOrLength() { + return scaleOrLength; + } + + public Object getValue() { + return value; + } + + public long getLength() { + return length; + } + + public Calendar getCalendar() { + return calendar; + } + + public int getSqlType() { + return sqlType; + } +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterInt.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterInt.java new file mode 100644 index 0000000000..66ad97c403 --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterInt.java @@ -0,0 +1,34 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.sql.Types; +import java.util.Calendar; + +public class JdbcParameterInt implements JdbcParameter { + + private final int value; + + public JdbcParameterInt(int value){ + this.value = value; + } + + @Override + public Object getValue() { + return value; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public Calendar getCalendar() { + return null; + } + + @Override + public int getSqlType() { + return Types.INTEGER; + } + +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterLong.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterLong.java new file mode 100644 index 0000000000..7bd4bff3c9 --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterLong.java @@ -0,0 +1,34 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.sql.Types; +import java.util.Calendar; + +public class JdbcParameterLong implements JdbcParameter { + + private final long value; + + public JdbcParameterLong(long value){ + this.value = value; + } + + @Override + public Object getValue() { + return value; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public Calendar getCalendar() { + return null; + } + + @Override + public int getSqlType() { + return Types.BIGINT; + } + +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterNull.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterNull.java new file mode 100644 index 0000000000..9f3cf9f048 --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterNull.java @@ -0,0 +1,33 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.util.Calendar; + +public class JdbcParameterNull implements JdbcParameter { + + private final int sqlType; + + public JdbcParameterNull(int sqlType){ + this.sqlType = sqlType; + } + + @Override + public Object getValue() { + return null; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public Calendar getCalendar() { + return null; + } + + @Override + public int getSqlType() { + return sqlType; + } + +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java new file mode 100644 index 0000000000..56cdbbea0f --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterString.java @@ -0,0 +1,34 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.sql.Types; +import java.util.Calendar; + +public class JdbcParameterString implements JdbcParameter { + + private final String value; + + public JdbcParameterString(String value){ + this.value = value; + } + + @Override + public Object getValue() { + return value; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public Calendar getCalendar() { + return null; + } + + @Override + public int getSqlType() { + return Types.VARCHAR; + } + +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterTimestamp.java b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterTimestamp.java new file mode 100644 index 0000000000..2a83f3d7f6 --- /dev/null +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/JdbcParameterTimestamp.java @@ -0,0 +1,35 @@ +package com.alibaba.druid.proxy.jdbc; + +import java.sql.Types; +import java.util.Calendar; +import java.util.Date; + +public class JdbcParameterTimestamp implements JdbcParameter { + + private final Date value; + + public JdbcParameterTimestamp(Date value){ + this.value = value; + } + + @Override + public Object getValue() { + return value; + } + + @Override + public long getLength() { + return 0; + } + + @Override + public Calendar getCalendar() { + return null; + } + + @Override + public int getSqlType() { + return Types.TIMESTAMP; + } + +} diff --git a/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java b/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java index f3ce56b77c..b3e0aa0893 100644 --- a/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java +++ b/src/main/java/com/alibaba/druid/proxy/jdbc/PreparedStatementProxyImpl.java @@ -159,235 +159,235 @@ public class PreparedStatementProxyImpl extends StatementProxyImpl implements Pr @Override public void setArray(int parameterIndex, Array x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.ARRAY, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.ARRAY, x)); createChain().preparedStatement_setArray(this, parameterIndex, x); } @Override public void setAsciiStream(int parameterIndex, InputStream x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.AsciiInputStream, x)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.AsciiInputStream, x)); createChain().preparedStatement_setAsciiStream(this, parameterIndex, x); } @Override public void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.AsciiInputStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.AsciiInputStream, x, length)); createChain().preparedStatement_setAsciiStream(this, parameterIndex, x, length); } @Override public void setAsciiStream(int parameterIndex, InputStream x, long length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.AsciiInputStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.AsciiInputStream, x, length)); createChain().preparedStatement_setAsciiStream(this, parameterIndex, x, length); } @Override public void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.DECIMAL, x)); + setParameter(parameterIndex, new JdbcParameterDecimal(x)); createChain().preparedStatement_setBigDecimal(this, parameterIndex, x); } @Override public void setBinaryStream(int parameterIndex, InputStream x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.BinaryInputStream, x)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.BinaryInputStream, x)); createChain().preparedStatement_setBinaryStream(this, parameterIndex, x); } @Override public void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.BinaryInputStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.BinaryInputStream, x, length)); createChain().preparedStatement_setBinaryStream(this, parameterIndex, x, length); } @Override public void setBinaryStream(int parameterIndex, InputStream x, long length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.BinaryInputStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.BinaryInputStream, x, length)); createChain().preparedStatement_setBinaryStream(this, parameterIndex, x, length); } @Override public void setBlob(int parameterIndex, Blob x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.BLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.BLOB, x)); createChain().preparedStatement_setBlob(this, parameterIndex, x); } @Override public void setBlob(int parameterIndex, InputStream x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.BLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.BLOB, x)); createChain().preparedStatement_setBlob(this, parameterIndex, x); } @Override public void setBlob(int parameterIndex, InputStream x, long length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.BLOB, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.BLOB, x, length)); createChain().preparedStatement_setBlob(this, parameterIndex, x, length); } @Override public void setBoolean(int parameterIndex, boolean x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.BOOLEAN, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.BOOLEAN, x)); createChain().preparedStatement_setBoolean(this, parameterIndex, x); } @Override public void setByte(int parameterIndex, byte x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.TINYINT, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.TINYINT, x)); createChain().preparedStatement_setByte(this, parameterIndex, x); } @Override public void setBytes(int parameterIndex, byte[] x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.BYTES, x)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.BYTES, x)); createChain().preparedStatement_setBytes(this, parameterIndex, x); } @Override public void setCharacterStream(int parameterIndex, Reader x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.CharacterInputStream, x)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.CharacterInputStream, x)); createChain().preparedStatement_setCharacterStream(this, parameterIndex, x); } @Override public void setCharacterStream(int parameterIndex, Reader x, int length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.CharacterInputStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.CharacterInputStream, x, length)); createChain().preparedStatement_setCharacterStream(this, parameterIndex, x, length); } @Override public void setCharacterStream(int parameterIndex, Reader x, long length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.CharacterInputStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.CharacterInputStream, x, length)); createChain().preparedStatement_setCharacterStream(this, parameterIndex, x, length); } @Override public void setClob(int parameterIndex, Clob x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.CLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.CLOB, x)); createChain().preparedStatement_setClob(this, parameterIndex, x); } @Override public void setClob(int parameterIndex, Reader x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.CLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.CLOB, x)); createChain().preparedStatement_setClob(this, parameterIndex, x); } @Override public void setClob(int parameterIndex, Reader x, long length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.CLOB, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.CLOB, x, length)); createChain().preparedStatement_setClob(this, parameterIndex, x, length); } @Override public void setDate(int parameterIndex, Date x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.DATE, x)); + setParameter(parameterIndex, new JdbcParameterDate(x)); createChain().preparedStatement_setDate(this, parameterIndex, x); } @Override public void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.DATE, x, cal)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.DATE, x, cal)); createChain().preparedStatement_setDate(this, parameterIndex, x, cal); } @Override public void setDouble(int parameterIndex, double x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.DOUBLE, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.DOUBLE, x)); createChain().preparedStatement_setDouble(this, parameterIndex, x); } @Override public void setFloat(int parameterIndex, float x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.FLOAT, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.FLOAT, x)); createChain().preparedStatement_setFloat(this, parameterIndex, x); } @Override public void setInt(int parameterIndex, int x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.INTEGER, x)); + setParameter(parameterIndex, new JdbcParameterInt(x)); createChain().preparedStatement_setInt(this, parameterIndex, x); } @Override public void setLong(int parameterIndex, long x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.BIGINT, x)); + setParameter(parameterIndex, new JdbcParameterLong(x)); createChain().preparedStatement_setLong(this, parameterIndex, x); } @Override public void setNCharacterStream(int parameterIndex, Reader x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.NCharacterInputStream, x)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.NCharacterInputStream, x)); createChain().preparedStatement_setNCharacterStream(this, parameterIndex, x); } @Override public void setNCharacterStream(int parameterIndex, Reader x, long length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.NCharacterInputStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.NCharacterInputStream, x, length)); createChain().preparedStatement_setNCharacterStream(this, parameterIndex, x, length); } @Override public void setNClob(int parameterIndex, NClob x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.NCLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.NCLOB, x)); createChain().preparedStatement_setNClob(this, parameterIndex, x); } @Override public void setNClob(int parameterIndex, Reader x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.NCLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.NCLOB, x)); createChain().preparedStatement_setNClob(this, parameterIndex, x); } @Override public void setNClob(int parameterIndex, Reader x, long length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.NCLOB, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.NCLOB, x, length)); createChain().preparedStatement_setNClob(this, parameterIndex, x, length); } @Override public void setNString(int parameterIndex, String x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.NVARCHAR, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.NVARCHAR, x)); createChain().preparedStatement_setNString(this, parameterIndex, x); } @Override public void setNull(int parameterIndex, int sqlType) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(sqlType, null)); + setParameter(parameterIndex, new JdbcParameterNull(sqlType)); createChain().preparedStatement_setNull(this, parameterIndex, sqlType); } @Override public void setNull(int parameterIndex, int sqlType, String typeName) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(sqlType, null)); + setParameter(parameterIndex, new JdbcParameterNull(sqlType)); createChain().preparedStatement_setNull(this, parameterIndex, sqlType, typeName); } @@ -401,191 +401,191 @@ public class PreparedStatementProxyImpl extends StatementProxyImpl implements Pr private void setObjectParameter(int parameterIndex, Object x) { if (x == null) { - setParameter(parameterIndex, new JdbcParameter(Types.OTHER, null)); + setParameter(parameterIndex, new JdbcParameterNull(Types.OTHER)); return; } Class clazz = x.getClass(); if (clazz == Byte.class) { - setParameter(parameterIndex, new JdbcParameter(Types.TINYINT, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.TINYINT, x)); return; } if (clazz == Short.class) { - setParameter(parameterIndex, new JdbcParameter(Types.SMALLINT, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.SMALLINT, x)); return; } if (clazz == Integer.class) { - setParameter(parameterIndex, new JdbcParameter(Types.INTEGER, x)); + setParameter(parameterIndex, new JdbcParameterInt((Integer)x)); return; } if (clazz == Long.class) { - setParameter(parameterIndex, new JdbcParameter(Types.BIGINT, x)); + setParameter(parameterIndex, new JdbcParameterLong((Long) x)); return; } if (clazz == String.class) { - setParameter(parameterIndex, new JdbcParameter(Types.VARCHAR, x)); + setParameter(parameterIndex, new JdbcParameterString((String) x)); return; } if (clazz == BigDecimal.class) { - setParameter(parameterIndex, new JdbcParameter(Types.DECIMAL, x)); + setParameter(parameterIndex, new JdbcParameterDecimal((BigDecimal) x)); return; } if (clazz == Float.class) { - setParameter(parameterIndex, new JdbcParameter(Types.FLOAT, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.FLOAT, x)); return; } if (clazz == Double.class) { - setParameter(parameterIndex, new JdbcParameter(Types.DOUBLE, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.DOUBLE, x)); return; } if (clazz == java.sql.Date.class || clazz == java.util.Date.class) { - setParameter(parameterIndex, new JdbcParameter(Types.DATE, x)); + setParameter(parameterIndex, new JdbcParameterDate((java.util.Date) x)); return; } if (clazz == java.sql.Timestamp.class) { - setParameter(parameterIndex, new JdbcParameter(Types.TIMESTAMP, x)); + setParameter(parameterIndex, new JdbcParameterTimestamp((java.sql.Timestamp) x)); return; } if (clazz == java.sql.Time.class) { - setParameter(parameterIndex, new JdbcParameter(Types.TIME, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.TIME, x)); return; } if (clazz == Boolean.class) { - setParameter(parameterIndex, new JdbcParameter(Types.BOOLEAN, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.BOOLEAN, x)); return; } if (clazz == byte[].class) { - setParameter(parameterIndex, new JdbcParameter(TYPE.BYTES, x)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.BYTES, x)); return; } if (x instanceof InputStream) { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.BinaryInputStream, x)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.BinaryInputStream, x)); return; } if (x instanceof Reader) { - setParameter(parameterIndex, new JdbcParameter(JdbcParameter.TYPE.CharacterInputStream, x)); + setParameter(parameterIndex, new JdbcParameterImpl(JdbcParameter.TYPE.CharacterInputStream, x)); return; } if (x instanceof Clob) { - setParameter(parameterIndex, new JdbcParameter(Types.CLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.CLOB, x)); return; } if (x instanceof NClob) { - setParameter(parameterIndex, new JdbcParameter(Types.NCLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.NCLOB, x)); return; } if (x instanceof Blob) { - setParameter(parameterIndex, new JdbcParameter(Types.BLOB, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.BLOB, x)); return; } - setParameter(parameterIndex, new JdbcParameter(Types.OTHER, null)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.OTHER, null)); } @Override public void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(targetSqlType, x)); + setParameter(parameterIndex, new JdbcParameterImpl(targetSqlType, x)); createChain().preparedStatement_setObject(this, parameterIndex, x, targetSqlType); } @Override public void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(targetSqlType, x, -1, null, scaleOrLength)); + setParameter(parameterIndex, new JdbcParameterImpl(targetSqlType, x, -1, null, scaleOrLength)); createChain().preparedStatement_setObject(this, parameterIndex, x, targetSqlType, scaleOrLength); } @Override public void setRef(int parameterIndex, Ref x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.REF, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.REF, x)); createChain().preparedStatement_setRef(this, parameterIndex, x); } @Override public void setRowId(int parameterIndex, RowId x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.ROWID, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.ROWID, x)); createChain().preparedStatement_setRowId(this, parameterIndex, x); } @Override public void setSQLXML(int parameterIndex, SQLXML x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.SQLXML, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.SQLXML, x)); createChain().preparedStatement_setSQLXML(this, parameterIndex, x); } @Override public void setShort(int parameterIndex, short x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.SMALLINT, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.SMALLINT, x)); createChain().preparedStatement_setShort(this, parameterIndex, x); } @Override public void setString(int parameterIndex, String x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.VARCHAR, x)); + setParameter(parameterIndex, new JdbcParameterString(x)); createChain().preparedStatement_setString(this, parameterIndex, x); } @Override public void setTime(int parameterIndex, Time x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.TIME, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.TIME, x)); createChain().preparedStatement_setTime(this, parameterIndex, x); } @Override public void setTime(int parameterIndex, Time x, Calendar cal) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.TIME, x, cal)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.TIME, x, cal)); createChain().preparedStatement_setTime(this, parameterIndex, x, cal); } @Override public void setTimestamp(int parameterIndex, Timestamp x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.TIMESTAMP, x)); + setParameter(parameterIndex, new JdbcParameterTimestamp(x)); createChain().preparedStatement_setTimestamp(this, parameterIndex, x); } @Override public void setTimestamp(int parameterIndex, Timestamp x, Calendar cal) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(Types.TIMESTAMP, x)); + setParameter(parameterIndex, new JdbcParameterImpl(Types.TIMESTAMP, x)); createChain().preparedStatement_setTimestamp(this, parameterIndex, x, cal); } @Override public void setURL(int parameterIndex, URL x) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.URL, x)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.URL, x)); createChain().preparedStatement_setURL(this, parameterIndex, x); } @Override public void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException { - setParameter(parameterIndex, new JdbcParameter(TYPE.UnicodeStream, x, length)); + setParameter(parameterIndex, new JdbcParameterImpl(TYPE.UnicodeStream, x, length)); createChain().preparedStatement_setUnicodeStream(this, parameterIndex, x, length); } diff --git a/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java b/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java index 65a35b1782..f06d26a535 100644 --- a/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java +++ b/src/main/java/com/alibaba/druid/stat/JdbcDataSourceStat.java @@ -66,7 +66,7 @@ public class JdbcDataSourceStat implements JdbcDataSourceStatMBean { // }); - private final ConcurrentMap connections = new ConcurrentHashMap(); + private final ConcurrentMap connections = new ConcurrentHashMap(16, 0.75f, 1); private final AtomicLong clobOpenCount = new AtomicLong(); diff --git a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java index fef5588c3d..61daea15cb 100644 --- a/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java +++ b/src/main/java/com/alibaba/druid/support/http/stat/WebAppStat.java @@ -56,7 +56,7 @@ public class WebAppStat { private final AtomicLong jdbcCommitCount = new AtomicLong(); private final AtomicLong jdbcRollbackCount = new AtomicLong(); - private final ConcurrentMap uriStatMap = new ConcurrentHashMap(); + private final ConcurrentMap uriStatMap = new ConcurrentHashMap(16, 0.75f, 1); private final LRUCache sessionStatMap; private final ReadWriteLock sessionStatLock = new ReentrantReadWriteLock(); diff --git a/src/main/java/com/alibaba/druid/support/ibatis/SqlMapClientImplWrapper.java b/src/main/java/com/alibaba/druid/support/ibatis/SqlMapClientImplWrapper.java index ad7b8cb19d..e1b6f7d8e7 100644 --- a/src/main/java/com/alibaba/druid/support/ibatis/SqlMapClientImplWrapper.java +++ b/src/main/java/com/alibaba/druid/support/ibatis/SqlMapClientImplWrapper.java @@ -39,7 +39,7 @@ public class SqlMapClientImplWrapper extends SqlMapClientImpl { private static Method getLocalSqlMapSessionMethod = null; - private ConcurrentMap statementInfoMap = new ConcurrentHashMap(); + private ConcurrentMap statementInfoMap = new ConcurrentHashMap(16, 0.75f, 1); public SqlMapClientImplWrapper(SqlMapClientImpl raw) { super(raw.getDelegate()); diff --git a/src/main/java/com/alibaba/druid/support/spring/stat/SpringStat.java b/src/main/java/com/alibaba/druid/support/spring/stat/SpringStat.java index 5bc9b73472..7c6bd20358 100644 --- a/src/main/java/com/alibaba/druid/support/spring/stat/SpringStat.java +++ b/src/main/java/com/alibaba/druid/support/spring/stat/SpringStat.java @@ -23,7 +23,7 @@ import java.util.concurrent.ConcurrentMap; public class SpringStat { - private ConcurrentMap methodStats = new ConcurrentHashMap(); + private ConcurrentMap methodStats = new ConcurrentHashMap(16, 0.75f, 1); public SpringStat(){ diff --git a/src/main/java/com/alibaba/druid/wall/WallProvider.java b/src/main/java/com/alibaba/druid/wall/WallProvider.java index e0360277b1..d69a530dce 100644 --- a/src/main/java/com/alibaba/druid/wall/WallProvider.java +++ b/src/main/java/com/alibaba/druid/wall/WallProvider.java @@ -59,8 +59,8 @@ public abstract class WallProvider { private static final ThreadLocal privileged = new ThreadLocal(); - private final ConcurrentMap functionStats = new ConcurrentHashMap(); - private final ConcurrentMap tableStats = new ConcurrentHashMap(); + private final ConcurrentMap functionStats = new ConcurrentHashMap(16, 0.75f, 1); + private final ConcurrentMap tableStats = new ConcurrentHashMap(16, 0.75f, 1); public final WallDenyStat commentDeniedStat = new WallDenyStat();