一个星期来,我经常花时间去研究数据库连接池,感觉有点吃力,没办法,java基础不好。
学习的开始,是从一篇关于数据库连接池的理论文章开始,地址如下:
《基于JDBC的数据库连接池技术研究与应用》
http://hi.baidu.com/tryonmind/blog/item/261ad4549d7e3859d109060f.html
里面有相当多的java关键字及其方法尚不知晓,只能一边查文档,以便学习了。记录如下:
1.Vector
声明方法:private Vector drivers = new Vector();
说明:Vector 类可以实现可增长的对象“数组”。优点:Vector 的大小可以根据需要增大或缩小,以适应创建 Vector
后进行添加或移除项的操作。此间涉及向量的操作。详细操作方法可以查阅 java5.0的API帮助文档。
这里遭遇的一个可能性问题是:你是jdk1.4还是在jdk5.0环境下编译,对Vecter声明使用有差异,5.0比较严格。
2.Hashtable 哈希表
声明方法:Hashtable ht = new Hashtable();
说明:哈希表是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存储地址,将结点存入计算得到存储地址所对应的存储单元。检索时采用检索关键码的方法。
现在哈希表有一套完整的算法来进行插入、删除和解决冲突。
在Java中哈希表用于“存储对象”,实现快速检索。
Hashtable 的实例有两个参数影响其性能:初始容量 和加载因子。容量 是哈希表中桶 的数量,初始容量 就是哈希表创建时的容量。
java的支持:java.util.Hashtable<K,V> 哈希表的操作也是很丰富。
3.Properties 属性列表
声明方法:Properties dbProps = new Properties();
public class Properties extends Hashtable<Object,Object>
说明:Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法,但强烈建议使用应该使用 setProperty 方法
Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。
例如连接池中读取属性文件的应用:
Properties dbProps = new Properties();
try
... {
dbProps.load( is );
}
catch ( Exception e )
... {
System.err.println( "不能读取属性文件" + "请确保db.properties在CLASSPATH指定的路径中" );
return;
}
主要方法有:
String getProperty(String key) 用指定的键在此属性列表中搜索属性。
getProperty(String key, String defaultValue)用指定的键在属性列表中搜索属性。
void list(PrintStream out) 将属性列表输出到指定的输出流。
list(PrintWriter out) 将属性列表输出到指定的输出流。
void load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。
void loadFromXML(InputStream in) 将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
Enumeration<?> propertyNames() 返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。
更详细的就不提,查文档
连接池应用:
String driverClasses = props.getProperty("drivers");读取到属性文件中drivers的值
4.Enumeration
说明:实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。连续调用 nextElement 方法将返回一系列的连续元素。
boolean hasMoreElements() 测试此枚举是否包含更多的元素。
E nextElement() 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素。
这些方法主要通过向量的元素、哈希表的键以及哈希表中的值进行枚举。枚举也用于将输入流指定到 SequenceInputStream 中。
连接池应用:
Enumeration propsNames = props.propertyNames(); //读取属性列表的值,用Enumeration进行标记和调用