1.linux怎么查看虚拟内存?
2.为什么java中要用final 这个机制不是和java的继承相矛盾吗?
3.hibernate为什么要用变量绑定?有什么优势?
4.java虚拟机怎么加载1个类的2个版本?如果能加载?怎么加载?
就是一个类 生成jar包后 然后改动这个类再生成一个jar包 能同时加载吗?这2个类吗 ?
5.struts能实现设计人员和开发人员负责模块分离吗?
6.为什么要用连接池?
为了避免每次访问数据库的时候都需要重新建立新的连接而影响运行速度,在实际的项目中必须使用数据库连接池来提高数据库的访问效率。
在Web服务器端,建立连接池类DBConnPool,可以提供数据库的连接供其他的类使用,那么DBConnPool就应该在Web服务器启动的时候就被创建一个实例,然后等待别人来调用它,那么调用它的类如何在“内存”中找到这个唯一的DBConnPool实例呢?还有,怎样保证这个唯一的DBConnPool实例不被java的垃圾回收机制回收呢?
答案是这样的:一般在web服务器端的连接池程序都是在一个容器中的,所以可以被其他的对象见到,也就是其他对象和连接池对象是在一个进程中的,这样就可以被另外的对象引用了,而如何保持唯一性就可用上面的单子模式,返回引用就可以了。而为什么不被回收是因为有引用在上面,而引用为什么一直有效,该类对象是在web服务器初始化时有的,所以直到web服务器关闭才消失。
单子模式: public class DBConnPool {
private static DBConnPool db ;
private DBConnPool(){}
public static void getInstance() {
return db;
}
}
JDBC数据库连接池的实现及原理如下:
1.前言 2.连接池技术背景 ![]() 应用在获取数据库连接时,需要以URL的方式指定是那种类型的Driver,在获得特定的连接后,可按照固定的接口操作不同类型的数据库,如: 分别获取Statement、执行SQL获得ResultSet等,如下面的例子 : import java.sql.*; …some data source operation in here rs.close(); 在完成数据操作后,还一定要关闭所有涉及到的数据库资源。这虽然对应用程序的逻辑没有任何影响,但是关键的操作。上面是个简单的例子,如果搀和众多的if-else、exception,资源的管理也难免百密一疏。如同C中的内存泄漏问题,Java系统也同样会面临崩溃的恶运。所以数据库资源的管理依赖于应用系统本身,是不安全、不稳定的一种隐患。 2.2 JDBC连接池 JDBC最常用的资源有三类: 分别存在以下的关系 :
2.3 连接池(ConnectionPool)与资源管理 (并发物理连接数)×(每个连接可提供的Statement数量) 例如某种数据库可同时建立的物理连接数为 200个,每个连接可同时提供250个Statement,那么ConnectionPool最终为应用提供的并发Statement总数为: 200 × 250 = 50,000个。这是个并发数字,很少有系统会突破这个量级。所以在本节的开始,指出资源的耗尽与应用程序直接管理有关。 3.简单JDBC连接池的实现 图中所示,通过实现JDBC的部分资源对象接口( Connection, Statement, ResultSet ),在 Snap-ConnectionPool内部分别产生三种逻辑资源对象: PooledConnection, PooledStatement和 PooledResultSet。它们也是连接池主要的管理操作对象,并且继承了JDBC中相应的从属关系。这样的体系有以下几个特点: 3.2 连接池集中管理ConnectionManager 通过ConnectionManager,可以同时管理多个不同的连接池,提供通一的管理界面。在应用系统中通过 ConnectionManager和相关的配置文件,可以将凌乱散落在各自应用程序中的数据库配置信息(包括:数据库名、用户、密码等信息),集中在一个文件中。便于系统的维护工作。 3.3 连接池使用范例 对2.1的标准JDBC的使用范例,改为使用连接池,结果如下: import java.sql.*; 在例子中,Snap-ConnectionPool封装了应用对Connection的管理。只要改变JDBC获取Connection的方法,为获取连接池(ConnectionPool)(粗体部分),其他的数据操作都可以不做修改。按照这样的方式,Snap- ConnectionPool可帮助应用有效地管理数据库资源。如果应用忽视了最后资源的释放: rs.close() 和 st.close(),连接池会通过超时(time-out)机制,自动回收。 4.小结 无论是Snap-ConnectionPool还是其他的数据库连接池,都应当具备一下基本功能: -对源数据库资源的保护 -充分利用发挥数据库的有效资源 -简化应用的数据库接口,封闭资源管理。 -对应用遗留资源的自动回收和整理,提高资源的再次利用率。 在这个前提下,应用程序才能投入更多的精力于各自的业务逻辑中。数据库资源也不再成为系统的瓶颈。 |
7.tomcat5.0和6.0区别?
8.uoin 和 uoin all区别?
9. web service?简单简述下?
10. 抽象类不是实体类和接口中间层吗?为什么还有存在?不是可去掉吗?为什么抽象类还存在?