1.hashmap和hashtable?
首先,它们都实现了map接口。
但是,第一,hashmap的键值对(key-value)可以为null,hashtable不行;
第二,hashmap是非线程安全的,hashtable是线程安全的。
2.mybaties的#{}和${}传值有什么区别。
使用#{}可以有效防止sql注入,#{张三}在sql中等同于"张三",${}一般用在order by后的属性,例如根据name 排序。
3.什么是事务,SSM是如何通过注解的方式进行事务处理的?
首先事务具有原子性、一致性、隔离性和持久性。我目前了解和接触的DB事务处理,就是要么都执行,要么都不执行。举个例子就是数据库进行多条数据插入,前几条成功了,然后有一条失败了,这时候就需要进行rollback回滚数据库操作。
在SSM框架中,主要是使用注解的方式@Transanctional实现事务管理。
首先在spring-mybaties中加入事务管理的配置。
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
注意@Transactional只能被应用到public方法上
4.spring实例化对象的几种方式。
调用默认的构造函数
调用静态工厂方法
使用实例化工厂方式
1) 定义一个工厂类
2)通过factory-bean属性指定工厂类,通过factory-method属性指定该工厂类的非静态工厂方法
<bean id="helloWorldFactory" class="com.jxn.HelloWorldFactory" />
<bean id="HelloWorld" factory-bean="helloWorldFactory" factory-method="createInstance" />
注:相当于调用了 new HelloWorldFactory.createInstance();
public class HelloWorldFactory {
public HelloWorld createInstance(){
return new HelloWorld();
}
}
得到实例对象:HelloWorld helloWorld =(HelloWorld)context.getBean("helloWorld");
5.ArrayList和Vector。
List接口下一共实现了三个类:ArrayList,Vector,LinkedList。
LinkedList是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用.,主要用在保持数据的插入顺序的时候。
Vector是多线程下线程安全的,ArrayList是非线程安全的,但是vector类的方法中用了很多synchronized进行修饰,所以相对来说没有ArrayList效率高。
但当空间不足的情况下,增加方式不同,Vector增加为原来空间的一倍,ArrayList增加原来空间的50%。
共同学习,写下你的评论
评论加载中...
作者其他优质文章