spring,线程 |
|
|
Spring配置文件里都会配置什么?(1)?g.springframework.jdbc.datasource.DriverManagerDataSource">ertyname="driverClassName">?com.mysql.jdbc.Driver ?jdbc:mysql://localhost /ssh?characterEncoding=utf-8?"username">?rootord">?123??(2)?hibernate3.LocalSessionFactoryBean"> ?ources">?com/ssh/pojo/User.hbm.xml? ?ey="hibernate.show_sql">true??? (3)?ramework.orm.hibernate3.HibernateTransactionManager">ame="sessionFactory">??< /bean>??ass="org.springframework.orm.hibernate3.HibernateTemplate">ertyname="sessionFactory">?rty>?(4)??h.dao.impl.UserDaoImpl">hibernateTemplate">?(5)?d="userService"class="com.ssh.service.impl.UserServiceImpl">opertyname="userDao"ref="userDao">??(5)?scope="prototype">>??(6)(不常用)?ss="com.ssh.pojo.User"scope="prototype"/>Spring如何实现分页查询 ?(1)每次翻页都修改SQL,向SQL传入相关参数去数据库实时查出该页的数据并显示。(2)查出数据库某张表的全部数据,再通过在 业务逻辑里面进行处理去取得某些数据并显示。数据库的存储过程存储过程(StoredProcedure)是一组为了完成特定功能的S QL语句集。经编译后存储在数据库中。存储过程是数据库中的一个重要对象,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参 数)来执行它。存储过程是由?流控制?和?SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中。存储过程?可由应用程序通 过一个调用来执行,而且允许用户声明变量。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。创建线程的方式 (1)继承Thread类(2)实现Runnable接口转发和重定向的区别(1)转发所涉及的各个web组件可以共享reques t对象(一次请求),而重定向所涉及的各个web组件不能共享request对象(两次请求)。request对象与respon se对象的生存时间是在一次请求与响应期间,当响应结束,服务器会立即销毁request和response对象。(2)转发的地址只能 是同一个应用内部的某个web组件,而重定向是任意的。(3)转发之后,浏览器地址栏的地址不变,而重定向会变。(4)重定向是两次请 求,转发是一次请求session和cookie区别(1)cookie数据存放在客户的浏览器上,session数据放在服务器上( 2)cookie不是很安全,可以分析存放在本地上的cookie半进行cookie欺骗考试到安全应当使用session(3)ses sion会在一定时间内保存在服务器上,当访问增多,会比较占用服务器的性能考虑到减轻服务器性能方面,应当使用cookie(4)单个 cookie保存的数据不能超过4k,很多浏览器都限制到一个站点最多保存20个cookie(5)登录信息重要信息放在sessio n,其他信息如需保留,放在cookie中Spring依赖注入的3种实现方式Set方法注入,构造器注入,接口注入hibernate 实体对象生命周期的三种状态1.Transient(瞬态):实体对象在内存是自由存在的,即与数据库中的数据没有任何关系.换句话说就 是:该实体从未与任何持久化上下文关联过,它没有持久化标识.2.Persistent(持久态):该实体对象处于Hibernate 框架所管理的状态,即这个实体对象与Session对象的实例相关联.3.Detached(游离态):对于Persistent对象, 当不再与它所对应的Session对象相关联时,这个对象就是游离态.9、Hibernate中load()和get()的区别hib ernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,就抛异常;而对 于get方法,hibernate一定要获取到真实的数据,否则返回null。10、什么是java序列化,如何实现java序列化?序 列化:就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于 网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。序列化的实现:将需要被序列化的类实现Serializable接口 ,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着使用 ObjectOutputStream对象的writeObject(Object?obj)方法就可以将参数为obj的对象写出(即保存 其状态),要恢复的话则用输入流ObjectInputStream。11、Hibernate中怎么实现类之间的关系?(如一对多,多对 多)类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置 文件中的many-to-one、one-to-many、many-to-many12、使用Spring框架的好处是什么?轻量:S pring是轻量的,基本的版本大约2MB。控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或 查找依赖的对象们。面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Sprin g包含并管理应用中对象的生命周期和配置。MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品 。事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。异常处理:Spring提 供方便的API把具体技术相关的异常(比如由JDBC,HibernateorJDO抛出的)转化为一致的unchecked异常。 13、说说AOP和IOC/DI的概念以及在spring中是如何应用的?AOP,AspectOrientedProgram,面向 (方面)切面的编程;IOC,InvertOfControl,控制反转。IOC就是其实就是依赖注入,对象的实例由容器自动生成,即 用接口编程,在程序中不出现new关键字,而是用接口来命名引用,然后通过某种方式把接口的某个实现类的实例注入到引用里,从而实现接口与 具体实现类的松耦合。AOPAdvice(AOP通知)分为:前置通知?后置通知?异常通知?环绕通知?15、Spring 的事物有几种方式?Spring框架的事务管理有哪些优点?你更倾向用那种事务管理类型?谈谈spring事物的隔离级别和传播行为?编 程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。声明式事务管理:这意味着你可以将业务代码和事务管理 分离,你只需用注解和XML配置来管理事务。它为不同的事务API?如JTA,JDBC,Hibernate,JPA和JDO,提供 一个不变的编程模式。?它为编程式事务管理提供了一套简单的API而不是一些复杂的事务API如?它支持声明式事务管理。?它和Sprin g各种数据访问抽象层很好得集成。大多数Spring框架的用户选择声明式事务管理,因为它对应用代码的影响最小,因此更符合一个无侵入的 轻量级容器的思想。声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。事务的 隔离级别:数据库系统提供了4种事务隔离级别,在这4种隔离级别中,Serializable的隔离级别最高,ReadUncommit ted的隔离级别最低;·ReadUncommitted?读未提交数据;(会出现脏读)·ReadCommitted? ??读已提交数据;·RepeatableRead???可重复读;事务的传播属性包括:·Required业务方法需要 在一个事务中运行,如果一个方法运行时已经处在一个事务中,那么加入到该事务,否则为自己创建一个新事务,80%的方法用到该传播属性; ·Not-Supported·Requiresnew·Mandatoky·Supports·Never·Nested1 6、解释Spring框架中bean的生命周期及Spring支持的几种作用域。Spring容器从XML文件中读取bean的定义 ,并实例化bean。Spring根据bean的定义填充所有的属性。如果bean实现了BeanNameAware接口,Spri ng传递bean的ID到setBeanName方法。如果Bean实现了BeanFactoryAware接口,Sp ring传递beanfactory给setBeanFactory方法。如果有任何与bean相关联的BeanPostProce ssors,Spring会在postProcesserBeforeInitialization()方法内调用它们。如果bean实 现IntializingBean了,调用它的afterPropertySet方法,如果bean声明了初始化方法,调用此初始化方法。 如果有BeanPostProcessors和bean关联,这些bean的postProcessAfterInitializa tion()方法将被调用。如果bean实现了DisposableBean,它将调用destroy()方法。Spring框架支 持以下五种bean的作用域:singleton:bean在每个Springioc容器中只有一个实例。prototype :一个bean的定义可以有多个实例。request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。session:在一个HTTPSession中,一个bean定义对应一个实例。 该作用域仅在基于web的SpringApplicationContext情形下有效。global-session:在一个全局的 HTTPSession中,一个bean定义对应一个实例。该作用域仅在基于web的SpringApplicationContext 情形下有效。17、Java创建对象有几种方式1.用new语句创建对象,这是最常见的创建对象的方法。2.运用反射手段,调用jav a.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 3.调用对象的clone()方法。4.运用反序列化手段,调用java.io.ObjectInputStream对象的read Object()方法。ArrayListlist=newArrayList(20),中的list扩充几次?默认ArrayLi st的长度是10个,所以如果你要往list里添加20个元素肯定要扩充一次(扩充为原来的1.5倍),扩充2次。19、常见的对称加密 算法。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:(1)DES(DataEncryptionStandard ):数据加密标准,速度较快,适用于加密大量数据的场合。(2)3DES(TripleDES):是基于DES,对一块数据用三个不同的 密钥进行三次加密,强度更高。(3)AES(AdvancedEncryptionStandard):高级加密标准,是下一代的加密 算法标准,速度快,安全级别高;java中接口的修饰符:abstract(1)接口只能包含抽象方法,抽象类可以包含普通方法。? (2)接口里不能定义静态方法,抽象类可以。?(3)接口只能定义静态常量属性不能定义普通属性,抽象类可以。?(4)接口不包含构造器, 抽象类可以(不是用于创建对象而是让子类完成初始化)。?(5)接口里不能包含初始化块,抽象类完全可以。?(6)接口多继承,抽象类但 继承(只能有一个直接父类)。总结:接口所有方法全是抽象方法只能?publicabstract修饰?(默认publicabstr act修饰?),属性默认publicstaticfinal修饰。????抽象类除了包含抽象方法外与普通类无区别。?21、获取 这个Class对象,有三种方式:1:通过每个对象都具备的方法getClass来获取。弊端:必须要创建该类对象,才可以调用getCl ass方法。2:每一个数据类型(基本数据类型和引用数据类型)都有一个静态的属性class。弊端:必须要先明确该类。?前两种方式不利 于程序的扩展,因为都需要在程序使用具体的类来完成。3:使用的Class类中的方法,静态的forName方法。?指定什么类名,就获取 什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可。//1.?根据给定的类名来获得?用于类加载String classname="cn.itcast.reflect.Person";//来自配置文件Classclazz=Cl ass.forName(classname);//此对象代表Person.class//2.?如果拿到了对象,不知道是什么类型??用于获得对象的类型Objectobj=newPerson();Classclazz1=obj.getClass();//获得对象具体的类型//3.?如果是明确地获得某个类的Class对象?主要用于传参Classclazz2=Person.class;?22、Mybatis是如何进行分页的?分页插件的原理是什么?答:Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。分页插件的基本原理:使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。举例:selectfromstudent,拦截sql后重写为:selectt.from(selectfromstudent)t?limit0,10 |
|
|
|
|
|
|
|