Tag Archives: Java

oracle数组接口性能测试

测试场景和结果: 向没有索引的表中插入20万条数据 PL/SQL测试结果:插入20万条记录,花费时间500ms左右 Jdbc批量操作(每50条一个batch)测试结果:插入20万条记录,花费时间1200ms左右。 表结构如下: CREATE TABLE INSERT_TEST( F1 NUMBER, F2 VARCHAR2(10), F3 VARCHAR2(10), F4 VARCHAR2(10), F5 VARCHAR2(10), F6 NUMBER, F7 NUMBER, F8 NUMBER, F9 NUMBER, F10 NUMBER ) 测试环境: AMD Athlon(tm) II X2 240 Processor 2G内存 单块7200rpm SATA硬盘 Linux 2.6.31-14-generic i686 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – Prod SYS@orcl>show parameter log_buffer NAME    [...]

使用jdbc时缓存PreparedStatement的简单测试

一、测试方案简单说明 1、无连接池 Class.forName(driverClass); conn = DriverManager.getConnection(jdbcUrl, user, password); 2、无连接池,使用oracle专有的缓存机制 ((oracle.jdbc.OracleConnection) conn).setImplicitCachingEnabled(true);((oracle.jdbc.OracleConnection) conn).setStatementCacheSize(10); 3、使用DBCP连接池,无缓存 4、使用DBCP连接池,带缓存 poolPreparedStatements=false maxOpenPreparedStatements=10 5:使用C3P0连接池,无缓存 6、使用C3P0连接池,带缓存 maxStatementsPerConnection=10 二、oracle中检查解析次数方法(测试期间数据库没有其他访问用户): select name, value from v$sysstatwhere name like ‘%parse%’; 三、测试结果: parse count (total) delta parse count test scenario excute time 63738 64043 296 DBCP without cached prepared statement 2110 64305 253 DBCP cached prepared statement 1547 [...]

oracle中row prefetch测试

效果总结:row prefetch一方面可以减少网络传输次数,降低响应时间,另一方面oracle可以把多个单块读转变合并为一次多块读,减少逻辑读的次数。 一、sqlplus的测试 说明:sqlplus默认arraysize=2 SYS@orcl>create table t1(id number(*,0)); SYS@orcl>begin 2 for i in 1..1000 loop 3 insert into t1 values(i); 4 end loop; 5 end; / SYS@orcl>set autotrace traceonly; SYS@orcl>select id from t1; 1000 rows selected. Elapsed: 00:00:00.04 Statistics ———————————————————- 0 recursive calls 0 db block gets 503 consistent gets 0 physical reads 0 redo size 74196 bytes sent [...]

File[]按拼音排序

先定义一个内部类 public static class PyComparator implements Comparator { public int compare(Object arg0, Object arg1) { Collator collator = Collator.getInstance(new Locale(“zh”)); return collator.compare(arg0.toString(), arg1.toString()); } } 然后这样排序: Arrays.sort(files, new PyComparator()); 比较奇怪的是OuterClass的静态方法中对非静态的内部对象实例化方法: new OuterClass().new InnerClass()

dir命令知多少

dir /b /a:d /s 以上命令行,可实现广度优先遍历输出文件夹的名称 以此纪念我写的java深度遍历的几行代码,以及运行这个程序花费的两个小时、遍历完的27.8万个文件夹。 public static void dir(File file, int level) { try { System.out.println(String.valueOf(level) + ” ” + file.getPath()); File[] files = file.listFiles(); if (files != null) { for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { dir(files[i], level + 1); } } } } catch (Exception e) [...]

java操作文件和调用windows命令的一个例子

1、调用windows命令 commandString = “cmd /c dir”; Runtime.getRuntime().exec(commandString); 如果命令后的参数有空格的话,务必要用引号把参数括起来。 不幸的是,如果参数有两个以上的空格,即使用了引号也会出错,真正执行命令的参数只会保留一个空格。变通的方法就是下面示例的创建批处理文件。 2、创建批处理文件 public static void createBatFile(String fileName) { File file; FileOutputStream fos = null; PrintWriter pw = null; try { file = new File(“d:\caclsbat.bat”); if (!file.exists()) { file.createNewFile(); } fos = new FileOutputStream(file); pw = new PrintWriter(fos); String command = “cacls “” + fileName + “””; pw.write(command.toCharArray()); [...]

搞清楚一个关于“SAXException 未找到外部实体”的问题

一个应用程序新发版后,无法正常使用,从系统日志中查看下面的错误: Caused by: org.xml.sax.SAXException: Fatal Error: URI=null Line=5: 未找到外部实体“http://ibatis.apache.org/dtd/sql-map-2.dtd”。 根据发版前后更改内容的对比,很快排查出原因可能出在新加的iBatis配置文件,原来的配置文件中DOCTYPE部分对应的:http://www.ibatis.com/dtd/sql-map-2.dtd,但具体原因是什么? 在使用SAX解析XML文件的时候,会根据DOCTYPE中的定义的DTD验证XML文件的合法性,但是iBatis的XML配置文件中DOCTYPE中DTD文件地址是个公网地址,那么对不能上互联网的情况下如何处理呢? 在IBM DW的这篇文章中有一个解决方案,可以在解析XML的时候设定自己的EntityResolver,将公网地址映射到本地地址。下面是iBatis 2.3中实现类关键代码: public class SqlMapClasspathEntityResolver implements EntityResolver { private static final String SQL_MAP_CONFIG_DTD = “com/ibatis/sqlmap/engine/builder/xml/sql-map-config-2.dtd”; private static final String SQL_MAP_DTD = “com/ibatis/sqlmap/engine/builder/xml/sql-map-2.dtd”; private static final Map doctypeMap = new HashMap(); static { doctypeMap.put(“http://www.ibatis.com/dtd/sql-map-config-2.dtd”.toUpperCase(), SQL_MAP_CONFIG_DTD); doctypeMap.put(“http://ibatis.apache.org/dtd/sql-map-config-2.dtd”.toUpperCase(), SQL_MAP_CONFIG_DTD); doctypeMap.put(“-//iBATIS.com//DTD SQL Map Config 2.0//EN”.toUpperCase(), SQL_MAP_CONFIG_DTD); doctypeMap.put(“-//ibatis.apache.org//DTD [...]

用jxl读取Excel日期单元格内容

if (cell.getType() == CellType.DATE) { DateCell dateCell = (DateCell) cell; Date date = dateCell.getDate(); System.out.println(new SimpleDateFormat("yyyy/MM/dd").format(date)); }

在Eclipse中设置自动换行

奇怪了,功能这么强大的IDE居然没有这个功能,还要安装插件,地址为http://ahtik.com/eclipse-update/,没想到啊。 相关链接:Eclipse中的换行

[转]基于Converter解决Struts无法处理日期类型的问题

原文地址:基于Converter解决Struts无法处理日期类型的问题 基于Struts做应用程序开发的时候,对日期数据的处理,这个是最常见的,由于Struts默认是不支持自动将网页POST的数据自动转化成Date型数据,所以,很多程序员就直接在ActionForm当中直接使用String,然后在Action当中再进行字符串跟日期数据的处理。那假如在ActionForm当中是使用Date类型呢?会出现什么问题?能用什么样的解决办法?我们先看一下在ActionForm当中会出现的问题先。首先,我们先创建一个新的Struts工程,创建一个新的ActionForm,取名叫UserForm,UserForm的实现代码如下: 程序代码 package zizz.struts; import java.util.Date; import org.apache.struts.action.ActionForm; /*** UserForm对应着提交页面的网页表单信息* @author chen yuzhe**/public class UserForm extends ActionForm{ /** * serialVersionUID */ private static final long serialVersionUID = -742922986494711669L; private int id; private String name; private int age; private String loginId; private Date birthday; public int getAge() { return age; } public void setAge(int age) [...]