目录
1 Properties类
作为配置文件;
配置文件中不支持汉字,用的是Unicode,读取时会转为对应汉字。
2 类加载器:用于把类装载进JVM中
类加载器的加载先后顺序:无法看见的系统类加载器Bootstrap→平台类加载器PlatformClassLoader→应用程序加载器AppClassLoader→自定义类加载器
系统类中的类加载器都是根据CLASSPATH路径进行类加载的,而自定义的类加载器,就可以由开发者任意指派类的加载位置。
双亲委派模型:
如果一个类加载器需要加载类,那么首先它会把这个类请求委派给父类加载器去完成,每一层都是如此。一直递归到顶层,当父加载器无法完成这个请求时,子类才会尝试去加载。
采用双亲委派模式的是好处是Java类随着它的类加载器一起具备了一种带有优先级的层次关系,通过这种层级关可以避免类的重复加载。如Object类由启动类加载器加载,所以在程序的各种类加载器环境中都是同一个类。
//利用类加载器加载Properties类配置文件 public class Test { public static void main(String[] ardgs) { Properties p = new Properties(); //加载配置文件 Class<Test> c = Test.class; ClassLoader cl = c.getClassLoader(); //三层类加载器 InputStream is = c1.getResourceAsStream(""); p.load(is); System.out.println(p.get(key)); } } |
3 反射
常用方法: //获取属性 |
一个类在JVM中只会有一个Class实例,在Java中任意一个类都是由这个类本身和加载这个类的类加载器来确定这个类在JVM中的唯一性。
获取Class对象的方式:
Class clazz = String.class; //通过类的class属性获取,性能高
Class clazz = “java”.getClass(); //通过调用对象的getClass()方法
Class clazz = Class.forName("java.lang.String"); //通过Class类的静态方法,会抛出异常
4 JDBC
OracleUtils类:
import java.sql.Connection; public final class OracleUtils { |
并发问题:
脏读:读了更新却未被提交的字段
不可重复度:两次读取的字段值不同
幻读:两次读取同一张表,行数不同
隔离级别:
读未提交数据READ UNCOMMITTED
读已提交数据READ COMMITED
可重复读REPEATABLE READ
串行化SERIALIZABLE
5 事务
JDBC事务默认是关闭的
开启:conn.setAutoCommit(false);
提交:conn.commit();
回滚:conn.rollback();
事务的ACID(acid)属性:
① 原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
②一致性(Consistency)
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。
③ 隔离性(Isolation)
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
④持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响
6 批处理
stmt.addBatch(sql);
stmt.addBatch(sql);
7 数据库的优化方法
①选取最适合的字段属性。长度合适,尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库就不用比较NULL值。
②使用连接(JOIN)来代替子查询。因为使用连接MySQL不需要在内存中创建临时表来完成逻辑上需要两个步骤的查询工作。
③使用外键(保证数据的关联性),索引(提升数据库查询速度)。
④使用事务,保证数据中数据的一致性与完整性
8 JDBC的优化方法
①提升读取数据的性能,可以通过对结果集(ResultSet)对象调用setFetchSize()方法指定每次抓取的记录数(时间换空间策略)。Fetch相当于读缓存,默认FetchSize的值为10,即rs.next()的操作第一次会从数据库服务器读取10条记录存于内存,下一次rs.next()就直接到内存中读取。
②提升更新数据的性能可以使用PreparedStatement语句构建批处理,将若干SQL语句置于一个批处理中执行。