继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

有关不懂的部分问题--田小江

third
关注TA
已关注
手记 14
粉丝 28
获赞 246

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%。

打开App,阅读手记
2人推荐
发表评论
随时随地看视频慕课网APP