1 哈希函数满足什么条件?
计算简单/散列地址分布均匀。
3 System.gc() VS Runtime.gc()
java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写
提示JVM进行垃圾回收。但是不保证立即执行。
4 finalize() 什么时候调用?
在释放对象占用的内存之前,垃圾收集器会调用对象的finalize()方法,一般建议在该方法中释放对象持有的资源。
5 对象的引用设置为null,垃圾收集器是否立即释放对象占用的内存。
不会。在下个垃圾回收周期中,这个对象将是可被回收的。
6 JDBC
JDBC允许用户在不同的数据库之间做选择的一个抽象层。JDBC允许开发者用JAVA写数据库应用程序,而不关心底层数据库细节。
package interview; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCTest { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.driver"); } catch (ClassNotFoundException e) { System.out.println("找不到驱动程序类 ,加载驱动失败!"); } // JDBC连接的URL:协议:子协议:数据源标识 String url = "jdbc:mysql://localhost:3306/test?useUicode=true"; // 创建数据库连接 String username = "root"; String password = "root"; Connection con = null; try { con = DriverManager.getConnection(url, username, password); } catch (SQLException e) { System.out.println("数据库连接失败!"); e.printStackTrace(); } /* * 创建statement: 要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型: * 1、 执行静态SQL语句。通常通过Statement实例实现。 2、 * 执行动态SQL语句通常通过PreparedStatement实例实现。 3、 * 执行数据库存储过程。通常通过CallableStatement实例实现。 * 注意:在SQL中如果某些参数没有确定,如"select * from t1 where c1>? and c2<?",这种语句是静态SQL * ,不是动态SQL,虽然个别参数的值不知道,但整个SQL的结构已经确定,数据库是可以将它编译的,在执行阶段只需将个别参数的值补充进来即可 * 具体的实方式: */ Statement stmt = null; try { stmt = con.createStatement(); PreparedStatement pstmt = con.prepareStatement(sql); CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } /* * 执行SQL: Statement接口三种SQL方法:executeQuery, executeUpdate, execute * ResultSet executeQuery(String sql) : 查询,返回结果集。 Int * executeUpdate(String sql) : insert/update/delete, DDL(create table, * drop table) Execute(sql) : 返回多个结果集,多个更新计数或二者结合的语句。 */ ResultSet rs = stmt.executeQuery("xx"); int rows = stmt.executeUpdate("xx"); Boolean flag = stmt.execute("xxx"); // 处理结果: while (rs.next()) { String name = rs.getString("name"); // String pass = rs.getString(1); // 这个方法高效,列是从左到右,从1开始 } // 关闭JDBC对象 // 关闭记录集 ->关闭声明->关闭连接对象。 if (rs != null) { // 关闭记录集 try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (stmt != null) { // 关闭声明 try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if (con != null) { // 关闭连接对象 try { con.close(); } catch (SQLException e) { e.printStackTrace(); } } } }