1.hibernate中离线查询去除重复项怎么加条件?
dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
smtp:简单邮件传输协议端口25
3.编写程序,完成文件复制功能
4.Servlet创建过程及生命周期Servlet在容器中运行时,其实例的创建及销毁等是由容器进行控制。
Servlet的创建有两种方法。
1).客户端请求对应的Servlet时,创建Servlet实例;大部分Servlet都是这种Servlet。
2).通过在web.xml中设置load-on-startup来创建servlet实例,这种实例在Web应用启动时,立即创建Servlet实例
Servlet的运行都遵循如下生命周期:
1).创建Servlet实例。
2).Web容器调用Servlet的init()方法,对Servlet进行初始化。
3).Servlet初始化后,将一直存在于容器中,用于响应客户端请求。根据客户端的请求方式通过Servlet中service()方法去相应的doXXX()方法;
4).Web容器销毁Servlet时,调用Servlet的destroy()方法,通常在关闭Web容器之时销毁Servlet。
5.用sql语句分页:
Mysql数据库:
查询第3-5条记录
select*fromstulimit2,3;
(说明:limitn,m表示区间查询,N表示从第几条开始,M表示要返回的记录条数。第3-5条记录,是从第二条记录开如,故N为2;3-5之间有3条记录,所以是从第2要记录开始,返回3条记录,返回的正是3-5条记录。)
Sqlserver数据库:
SELECTTOP页大小*FROMtable1WHEREidNOTIN(SELECTTOP页大小*(页数-1)idFROMtable1ORDERBYid)ORDERBYid
selecttop3*fromTDJYXXwhererecidnotin(
selecttop((2-1)*3)recidfromTDJYXXorderbyrecid
)orderbyrecid
Oracle数据库:
在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。
截取ID的方法
select*fromempa,(selectempno,rownumasnumfromemp)bwherea.empno=b.empnoandb.numbetween5and7;
三层嵌套
SELECT*FROM(SELECTA.*,rownumrFROM(SELECT*FROMemp)AWHERErownum<=7)BWHEREr>5);
6.list.map.set的存储特点
List以特定次序来持有元素,可有重复元素.
Set无法拥有重复元素,内部排序.
Map保存key-value值,value可多值
7.final,finally,finaliz的区别
final—修饰符(关键字)
finally—再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
finalize—方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖;finalize()方法以整理系统资源或者执行其他清理工作finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
8.arraylist和vector的区别1).同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不是同步的
2).数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
9.说出ArrayList,Vector,LinkedList的存储性能和特性?
1).ArrayList采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦LinkedList采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引但是缺点就是查找非常麻烦要丛第一个索引开始
2).ArrayList和Vector都是用数组方式存储数据,此数组元素数要大于实际的存储空间以便进行元素增加和插入操作,他们都允许直接用序号索引元素,但是插入数据元素涉及到元素移动等内存操作,所以查询数据快而插入数据慢.
3).Vector使用了sychronized方法(线程安全),所以在性能上比ArrayList要差些.
4).LinkedList使用双向链表方式存储数据,按序号索引数据需要前向或后向遍历数据,所以查询数据慢,是插入数据时只需要记录前后项即可,所以插入的速度快.
10.HASHMAP,HASHTABLE区别
1.Hashtable是Dictionary的子类,HashMap是Map接口的一个实现类;
2.Hashtable中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。
3.在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。
11..描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
session工作原理
(1)当有Session启动时,服务器生成一个唯一值,称为SessionID(好像是通过取进程ID的方式取得的)。
(2)然后,服务器开辟一块内存,对应于该SessionID。
(3)服务器再将该SessionID写入浏览器的cookie。
(4)服务器内有一进程,监视所有Session的活动状况,如果有Session超时或是主动关闭,服务器就释放改内存块。
(5)当浏览器连入IIS时并请求的ASP内用到Session时,IIS就读浏览器Cookie中的SessionID。
(6)然后,服务检查该SessionID所对应的内存是否有效。
(7)如果有效,就读出内存中的值。
(8)如果无效,就建立新的Session。
12.String和stringbuffer进行字符串连接时的区别?
String对项内容是不可改变的,StringBuffer是可以改变的,且高效;
13.什么叫项目?
14..J2EEJ是什么意思?2是什么意思EE是什么意思?Struts的拦截器你是怎么做的,是独立开发的,能够独立开发的到。然后问有哪几种拦截?
Java2Platform,EnterpriseEdition
继承AbstractInterceptor类,覆盖intercept()方法
有struts自己的拦截器如timer,i18n,scop,servletconfig,token
还有自定义拦截器
15.简单介绍下java?Spring的AOP,IOC的讲述对struts2的了解,1,2的比较xml的了解J2ee的webserviced的协议?
SpringAOP:代理机制Spring提供的自动代理机制
Spring的IoC来实组件之间的依赖关系注入,使控制层与业务实现分离,即客户通过
调用业务委托接口来调用具体的业务组件的实例,避免控制层与业务层的藕合带来的维护
或升级困难。由Spring为DAO生成代理对象来为DAO添加事务服务,由IoC容器DAO的代理实例注入到业务组件中,业务组件通过DAO的委托接口调用DAO对象,使得上层组件不直接依赖于DAO的实现类,使得持久层更换或修改不影响上层组件。
16.Collections,collection的区别
Collection是个java.util下的接口,它是各种集合结构的父接口。Collections是个java.util下的普通类,它包含有各种有关集合操作的静态方法。Collections是针对集合类的一个帮助类,它提供一系列的静态方法实现对各种集合的搜索,排序,线程安全化等操作
17.如何释放过度使用的undo表空间
18.数据库里面游标,索引是怎么用的?在oracle数据库中,用get和load方法这2个方法来查没有的数据那么分别会反馈什么样的结果?
declarecurcursorkeysetfor
get返回null,loadclassnotfoundException
19..在Oracle中数据库中的一个表中,这个表没有主键id也没有特定标示来查数据,怎么查?
rowid
20.简述private、proteced、public、internal修饰符的访问权限
同一个类同一个包不同包的子类不同包非子类private*default**protected***public****
21.概述反射和序列化
Reflection是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过ReflectionAPIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public,static等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。本文借由实例,大面积示范ReflectionAPIs。
22.序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implementsSerializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Objectobj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流
23.ORACLE中not和and和or优先级由高到低?
notandor
24.java是如何进行异常处理的
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处理
25.struts2必备包
commons-fileupload-1.2.1.jar
freemarker-2.3.13.jar
ognl-2.6.11.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
26.dao是什么及作用
dao是数据访问对象DAO负责管理与数据源的连接来获取和储存其中的数据
27.ibatis中的#与$的区别
在Ibatis中我们使用SqlMap进行Sql查询时需要引用参数,在参数引用中遇到的符号#和$之间的区分为,#可以进行与编译,进行类型匹配,而$不进行数据类型匹配,例如:
select*fromtablewhereid=#id#,其中如果字段id为字符型,那么#id#表示的就是'id'类型,如果id为整型,那么#id#就是id类型。
select*fromtablewhereid=$id$,如果字段id为整型,Sql语句就不会出错,但是如果字段id为字符型,那么Sql语句应该写成select*fromtablewhereid='$id$'
28.struts的实现原理
1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMeshPlugin);
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper
29.简述spring的事务传播行为和隔离级别
spring的事务传播行为:Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:
PROPAGATION_REQUIRED:(propagation_required)如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS:(propagation_supports)支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY:(propagation_mandatory)使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW:(propagation_requires_new)新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED:(propagation_not_supported)以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER:(propagation_enver)以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED:(propagation_ensted)如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
Spring的隔离级别
1、Serializable:最严格的级别,事务串行执行,资源消耗最大;
2、REPEATABLEREAD:(repeatableread)保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
3、READCOMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。
4、ReadUncommitted:保证了读取过程中不会读取到非法数据。
30.写一段把本地文件formfile拷贝到本地文件tofile的程序
publicclassChangeJtdToJava{
publicstaticvoidmain(String[]args){
Filedir=newFile("f:/jtd");
//得到d:/jtd下的所有文件对象
File[]files=dir.listFiles();
for(Filefile:files){
StringfileName=file.getName();//得到文件名
intindex=fileName.indexOf(".");//.的索引位置
StringfileName2=fileName.substring(0,index);//不带后缀名的文件名
StringhouZui=fileName.substrinxg(index);
if(houZui.equals(".jtd")){
//"f:/java/"+fileName2+".java"
//要移到的地方
file.renameTo(newFile("f:/java/"+fileName2+".java"));
}
31.写出删除表中重复记录的语句oracle
deletefrompeople
wherepeopleIdin(selectpeopleIdfrompeoplegroupbypeopleIdhavingcount(peopleId)>1)androwidnotin(selectmin(rowid)frompeoplegroupby
32.java类实现序列化的方法(二种)?如在collection框架中,要实现什么样的接口
java.io.Serializable接口
Collection框架中实现比较要实现Comparable接口和Comparator接口
33.Struts2实现拦截器的原理?
实现原理:Struts2拦截器是在访问某个Action或Action的某个方法、字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现。当请求struts2的action时,Struts2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。
34.sleep()和wait()区别
35.Servlet的生命周期分为3个阶段:和CGI的区别?
Servlet的生命周期主要由3个过程组成。
(1)init()方法:服务器初始化servlet。
(2)service()方法:初始化完毕,servlet对象调用该方法响应客户的请求。
(3)destroy()方法:调用该方法消灭servlet对象。
其中,init()方法只在servlet第一次被请求加载的时候被调用一次,当有客户再请求servlet服务时,web服务器将启动一个新的线程,在该线程中,调用service方法响应客户的请求。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
36.forward与redirect的区别有哪些方式实现
1).
2).
37.多线程、同步实现方法?
1)实现线程有两种方法:继承Thread类或者实现Runnable接口
2)实现同步也有两种,一种是用同步方法,一种是用同步块..同步方法就是在方法返回类型后面加上synchronized,比如:
publicvoidsynchronizedadd(){...}
同步块就是直接写:synchronized(这里写需要同步的对象){...}
38.集合类有哪些?有哪些方法?
集合类ArrayListLinkedListHashSetHashMap
方法:add(),remove(),put(),addAll(),removeAll()
39.java中实现多态的机制是什么
重写,重载
方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
40.静态的多态和动态的多态的区别
静态的多态:即为重载;方法名相同,参数个数或类型不相同。(overloading)
动态的多态:即为重写;子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法实现接口的实例传与接口的引用调用的实现类的方法。
41.作用域Public,private,protected.以及不写时的区别
public整个java程序中都可以访问
protected在其他包中不可以访问
friendly只有当前包或当前内可以访问,其他都不行
private只有当前内可以访问
不写的话默认是protected
42.extends和implement的不同
43.join与leftjoin的区别:
innerjoin(等值连接)只返回两个表中联结字段相等的行
leftjoin(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录
rightjoin(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录
44.DAO设计模式与DELEGATE(delegate)模式
DAO(DataAccessObject)模式实际上是两个模式的组合,即DataAccessor模式和ActiveDomainObject模式,其中DataAccessor模式实现了数据访问和业务逻辑的分离,而ActiveDomainObject模式实现了业务数据的对象化封装,一般我们将这两个模式组合使用。
DAO模式通过对底层数据的封装,为业务层提供一个面向对象的接口,使得业务逻辑开发员可以面向业务中的实体进行编码。通过引入DAO模式,业务逻辑更加清晰,且富于形象性和描述性,这将为日后的维护带来极大的便利。试想,在业务曾通过Customer.getName方法获得客户姓名,相对于直接通过SQL语句访问数据库表并从ResultSet中获得某个字符型字段而言,哪种方式更加易于业务逻辑的形象化和简洁化?
BusinessDelegate起到客户端业务抽象化的作用。它抽象化,进而隐藏业务服务的实现。使用BusinessDelegate,可以降低表示层客户端和系统的业务服务之间的耦合程度。根据实现策略不同,BusinessDelegate可以在业务服务API的实现中,保护客户端不受可能的变动性影响。这样,在业务服务API或其底层实现变化时,可以潜在地减少必须修改表示层客户端代码的次数。
45.适配器模式与桥梁模式的区别
适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。又称为转换器模式、变压器模式、包装模式(把已有的一些类包装起来,使之能有满足需要的接口)。适配器模式的用意是将接口不同而功能相同或者相近的两个接口加以转换,包括适配器角色补充一些源角色没有但目标接口需要的方法。就像生活中电器插头是三相的,而电源插座是两相的,这时需要一个三相变两相的转换器来满足。
比如,在JavaI/O库中使用了适配器模式,象FileInputStream是一个适配器类,其继承了InputStrem类型,同时持有一个对FileDiscriptor的引用。这是将一个FileDiscriptor对象适配成InputStrem类型的对象形式的适配器模式。StringReader是一个适配器类,其继承了Reader类型,持有一个对String对象的引用。它将String的接口适配成Reader类型的接口。等等。
桥梁模式的用意是要把实现和它的接口分开,以便它们可以独立地变化。桥梁模式并不是用来把一个已有的对象接到不相匹配的接口上的。当一个客户端只知道一个特定的接口,但是又必须与具有不同接口的类打交道时,就应该使用桥梁模式。
比如,JDBC驱动器就是一个桥梁模式的应用,使用驱动程序的应用系统就是抽象化角色,而驱动器本身扮演实现化角色。应用系统和JDBC驱动器是相对独立的。应用系统动态地选择一个合适的驱动器,然后通过驱动器向数据库引擎发出指令就可以访问数据库中的数据。
工厂模式
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
46.开发中都用到了那些设计模式用在什么场合
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。
(1)MVC模式,在J2EE项目开发中主要用在表示层框架中,很好解决视图和流程控制。在项目中采用的Struts、WebWork等框架。
(2)DAO模式,在项目开发中主要用在数据层,封装数据的访问操作,为业务层提供数据服务。
(3)IoC模式,在项目开发中业务层有大量对象,他们之间存在依赖关系,可以使用IoC模式减少他们之间的代码耦合,提高系统的可扩展性。实际项目中使用的Spring框架来实现业务组件的装配。
(4)Observer模式,在Servlet的监听器中应用到了观察者模式。
(5)singleton单例模式和Factory工厂模式结合使用在项目中无需使用者了解过多的细节就可获取有关的对象实例。比如Hibernate项目中通过SessionFactory来获取Session。
(6)bridge模式,在项目中使用JDBC驱动访问数据库。
47.Hibernate中离线查询与在线查询的区别
Criteria和DetachedCriteria的主要区别在于创建的形式不一样,Criteria是在线的,所以它是由HibernateSession进行创建的;而DetachedCriteria是离线的,创建时无需Session,DetachedCriteria提供了2个静态方法forClass(Class)或forEntityName(Name)进行DetachedCriteria实例的创建。
48.C#数据类型有哪些?
int整型double双精度型string字符串型char字符型bool布尔型
49.抽象类能否被实例化?抽象类的作用是什么?
抽象类一般不能被实例化;
抽象类通常不是由程序员定义的,而是由项目经理或模块设计人设计抽象类的原因通常是为了规范方法名抽象类必须要继承,不然没法用,作为模块设计者,可以把让底层程序员直接用得方法直接调用,而一些需要让程序员覆盖后自己做得方法则定义称抽象方法
50.ASP.NET页面传递值的方式有哪些
1通过URL链接地址传递2通过post方式。3通过session4通过Application
5通过Server.Transfersend.aspx:
51.如何定义一个MDI(.NET技术)
定义MDI父窗口应该是设置窗体的MdiParent属性=true
52.WCF是什么?
53.常用的包,类,接口,各举5个。
类StringIntegerLongFileDate
包java.lang.*;java.io.*;java.util.*;java.swt.*;java.math.*;
接口:Comparable,Connection,Map,List,Runable,
54.网上购物系统的类图,用例图。
用例图:
类图:
55.给你一个整数类型的数组,按从小到大的顺序进行排列!
publicstaticvoidfun(int[]a,intc){
负责修改成绩的UpdateScoreServlet
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
Stringsid=request.getParameter("sid");
Stringscore=request.getParameter("score");
if(sid!=null&&!sid.equals("")&&score!=null&&!"".equals(score)){
Studentst=newStudent();
st.setSid(Integer.parseInt(sid));
st.setScore(Double.parseDouble(score));
dao.update(st);
response.getWriter().println("
95.用main涵数输出一到一百的和。
#include
intmain(){
printf("sum:%d\n",sum());
return0;
intsum(){
inti;
intsum=0;
for(i=1;i<=100;i++)
sum+=i;
returnsum;
96.查一下每门课程都大于80的学生姓名
学生表student分数表grade
selects.namefromstudentswheres.idnotin(selectg.studentidfromgradegwhereg.marks<=80)
或者
selects.namefromstudentswherenotexists(select1fromgradegwhereg.studentid=s.idandg.marks<=80)
97.LIUNIX如何查看CPU,IP,内存?
cat/proc/cpuinfo查看CPU
cat/proc/meminfo查看内存
/sbin/ifcong查看IP的
98.j2EE系统访问速度慢.从哪些方面可以优化
99.J2EE访问速度慢,怎么样优化
1使用缓冲标记对于代码逻辑复杂的页面,利用缓冲标记提高性能的效果比较明显;反之,效果可能略逊一筹。
2始终通过会话Bean访问实体Bean一些时候,使用实体Bean会导致程序性能不佳。如果实体Bean的惟一用途就是提取和更新数据,改成在会话Bean之内利用JDBC访问数据库可以得到更好的性能
3选择合适的引用机制
4在部署描述器中设置只读属性实体Bean的部署描述器允许把所有get方法设置成“只读”。当某个事务单元的工作只包含执行读取操作的方法时,设置只读属性有利于提高性能,因为容器不必再执行存储操作
5缓冲对EJBHome的访问
100.haShtable的原理
原理:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址
101.struts中的prepare怎么用?
prepare是在validate拦截器之前执行
在使用struts2checkboxlist,select绑定list时,有时候会出现以下异常
Therequestedlistkey'users'couldnotberesolvedasacollection/array/map/enumeration/iteratortype.Example:peopleorpeople.{name}-[unknownlocation]这样的错误。是因为list的值为空
解决办法是把初始化list的工作放到prepare拦截器中
publicclassRoleActionextendsActionSupportimplementsPreparable{
@Override
publicvoidprepare()throwsException{
//初始化list
}}
102.C#题目conetextmenu控件如何使用..listview
103.写一条SQL语句,查询姓张学生中平均成绩大于75的学生信息
select*fromstudentwherenamein(selectnamefromstudent
wherenamelike'张%'groupbynamehavingavg(score)>75)
104.从以下方面比较strut1和strut2:线程模式、依赖、可测性、表达式语言、捕获输入、绑钉值到页面、类型转换
线程模式:Struts1Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
Struts2Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)
Servlet依赖:
Struts1Action依赖于ServletAPI,因为当一个Action被调用时HttpServletRequest和HttpServletResponse被传递给execute方法。
Struts2Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest和HttpServletResponse的必要性。
可测性:
测试Struts1Action的一个主要问题是execute方法暴露了servletAPI(这使得测试要依赖于容器)。一个第三方扩展--StrutsTestCase--提供了一套Struts1的模拟对象(来进行测试)。
Struts2Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”支持也使测试更容易。
捕获输入:
Struts1使用ActionForm对象捕获输入。所有的ActionForm必须继承一个基类。因为其他JavaBean不能用作ActionForm,开发者经常创建多余的类捕获输入。动态Bean(DynaBeans)可以作为创建传统ActionForm的选择,但是,开发者可能是在重新描述(创建)已经存在的JavaBean(仍然会导致有冗余的javabean)。
Struts2直接使用Action属性作为输入属性,消除了对第二个输入对象的需求。输入属性可能是有自己(子)属性的rich对象类型。Action属性能够通过web页面上的taglibs访问。Struts2也支持ActionForm模式。rich对象类型,包括业务对象,能够用作输入/输出对象。这种ModelDriven特性简化了taglib对POJO输入对象的引用。
表达式语言:
Struts1整合了JSTL,因此使用JSTLEL。这种EL有基本对象图遍历,但是对集合和索引属性的支持很弱。
Struts2可以使用JSTL,但是也支持一个更强大和灵活的表达式语言--"ObjectGraphNotationLanguage"(OGNL).
绑定值到页面(view):
Struts1使用标准JSP机制把对象绑定到页面中来访问。
Struts2使用"ValueStack"技术,使taglib能够访问值而不需要把你的页面(view)和对象绑定起来。ValueStack策略允许通过一系列名称相同但类型不同的属性重用页面(view)。
类型转换:
Struts1ActionForm属性通常都是String类型。Struts1使用Commons-Beanutils进行类型转换。每个类一个转换器,对每一个实例来说是不可配置的。
Struts2使用OGNL进行类型转换。提供基本和常用对象的转换器。
105.struts的工作原理可分为如下8步。
1.读取配置(初始化ModuleConfig对象)Struts框架总控制器(ActionServlet)是一个Servlet,在web.xml中被配置成一个自动启动的Servlet。读取配置文件struts-config.xml的配置信息,为不同的Struts模块初始化相应的ModuleConfig对象。
2.用户请求用户提交表单或调用URL向WEB应用程序服务器提交一个请求,请求的数据用HTTP协议上传给WEB服务器。
3.填充FormBean(*.do请求)从ActionConfig中找出对应该请求的Action子类,如有对应的Action且这个Action又一个相应的ActionForm,ActionForm被实例化并用HTTP请求的数据填充其属性,并保存在ServletContext中,这样他们就可以被其它Action对象或JSP调用。如果没有对应的Action,控制器则直接转发给JSP或静态页面。
4.派发请求控制器根据配置信息ActionConfig将请求派发到具体的Action,相应的FormBean一并传给这个Action的execute()方法。
5.处理业务Action一般只包含一个execute方法,它负责执行相应的业务逻辑。执行完毕后返回一个ActionFoward对象,控制器通过该ActionFoward对象来进行转发工作。
6.返回响应Action根据业务处理的不同结果返回一个响应对象给总控制器,该目标响应对相对应一个具体的JSP页面或另一个Action。
7.查找响应总控制器根据业务功能Action返回的目标响应对象找到对应的资源对象,通常是一个具体的JSP页面。
8.响应用户JSP将结果展现给用户。
106.Spring工作原理
内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xmlSpring的配置文件来动态的创建对象,和调用对象里的方法的还有一个核心就是AOP这个就是面向切面编程,可以为某一类对象进行监督和控制(也就是在调用这类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。这些都是通过配置类达到的
Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置内部通过反射去动态的组装对象)要记住:Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能
107.Hibernate的初始化.
读取Hibernate的配置信息-〉创建SessionFactory
1)创建Configeration类的实例。
它的构造方法:将配置信息(Hibernateconfig.xml)读入到内存。
一个Configeration实例代表Hibernate所有Java类到Sql数据库映射的集合。
2)创建SessionFactory实例
把Configeration对象中的所有配置信息拷贝到SessionFactory的缓存中。
SessionFactory的实例代表一个数据库存储员源,创建后不再与Configeration对象关联。
缓存(cache):指Java对象的属性(通常是一些集合类型的属性--占用内存空间。
108.在main方法中将字符串中的。数字排序并输出STRINGA="56.89.5.3.75.98.98.26.15.44"
Strings=”56.89.5.3.75.98.98.26.15.44”;
Strings1[]=s.split(“.”);
Integerii[]=newInteger[s1.length];
For(inti=0;i ii[i]=Integer.parseInt(s1[i]); Arrays.sort(ii); for(Integero:ii){ System.out.println(o+”s”); 96Oracle冷备份的通常步骤 1正常关闭数据库2备份所有重要的文件到备份目录(数据文件、控制文件、重做日志文件等) 3完成备份后启动数据库用冷备份进行恢复时,只需要将所有文件恢复到原有位置,就可以启动数据库了 4关闭数据库SQL>shutdown5备份文件到备份的目录6然后启动数据库#sqlplus"/assysdba"SQL>startup冷备份完毕!! 109.servlet创建过程以及ruquest,response,session的生命周期? Servlet的创建过程: 第一步 publicclassAAAextendsHttpServlet{ 实现对应的doxxx方法 第二步: 在web.xml中配置 servlet的生命周期: servlet容器创建servlet的一个实例 容器调用该实例的init()方法 如果容器对该servlet有请求,则调用此实例的service()方法 容器在销毁本实例前调用它的destroy()方法 销毁并标记该实例以供作为垃圾收集 一旦请求了一个servlet,就没有办法阻止容器执行一个完整的生命周期。 容器在servlet首次被调用时创建它的一个实例,并保持该实例在内存中,让它对所有的请求进行处理。容器可以决定在任何时候把这个实例从内存中移走。在典型的模型中,容器为每个servlet创建一个单独的实例,容器并不会每接到一个请求就创建一个新线程,而是使用一个线程池来动态的将线程分配给到来的请求,但是这从servlet的观点来看,效果和为每个请求创建一个新线程的效果相同。 一旦请求提交给容器,容器会自动创建相应的request、response,一旦回应完毕则request、response自动销毁。客户端第一次请求时,容器会建立相应的会话,直到会话超时,会话随即销毁。 110.手写个单例模式?每个公司基本都考 publicclassdanli{ privatestaticdanlidl; privatedanli(){ System.out.println("单例模式"); publicstaticdanligetconnection() { if(dl==null) dl=newdanli(); returndl; 111.解释一下mvc以及熟悉的mvc框架 答:m代表模型层,v代表视图层,c代表控制层,也就是把一个整体分割成不同的模块,各负责自己的功能,分工明确,提高代码的重用性和方便维护。 在struts2.0,其中m是action,c是拦截器,v是jsp. 112.解释一下IOC,以及spring的举例 IOC称为控制反转,也叫依赖注入,ioc是Spring的核心组件,它通过配置文件,将需要创建的对象以池的方式管理,将实例注入到需要的对象中区,是对象依赖于注入而不依赖于实现,解决了各个组件的耦合度,使得项目在后期的维护和扩展上非常方便。如在ssh框架整合中,我们将datasource对象注入给sessionFactory,再将sessionFactory注入给dao组件,再将dao组件注入给struts的Action组件,在将action对象注入给struts的拦截器。 113.Oracle和Sqlserver的区别?数据库里面的语言符号表示? a)体系结构: ORACLE的文件体系结构为: 数据文件.DBF(真实数据)/日志文件.RDO/控制文件.CTL/参数文件.ORA SQLSERVER的文件体系结构为: .MDF(数据字典)/.NDF(数据文件)/.LDF(日志文件) b)存储结构: ORACLE存储结构:在ORACLE将存储单位分为块、区、段、表等;块的大小可设置(OLTP块和DSS块);将连续的块组成区,可动态分配区(区的分配可以是等额的也可以是自增长的)可减少空间分配次数;ORACLEl里表可以分为多个段,段由多个区组成,每个段可指定分配在哪个表空间里(段的类型分为:数据段、索引段、回滚段、临时段、CASH段。ORACLE里还可对表进行分区,可按照用户定义的业务规则、条件或规范,物理的分开磁盘上的数据。这样大大降低了磁盘争用的可能性。 SQLSERVER存储结构:以页为最小分配单位,每个页为8K(不可控制,缺乏对页的存储情况的分析机制),可将8个连续的页的组成一个‘扩展’,以进一步减少分配时所耗用的资源。(分配缺乏灵活性),在SQLSERVER里数据以表的方式存放,而表是存放在数据库里。真实数据与数据字典存放在一起。对系统参数信息无安全机制。 c)操作系统: Oracle可在所有主流平台上运行;但SQLSever只在Window平台上的表现很好; d)运行速度与安全性:Oracle高于SQLServer; e)价格:Oracle高于SQLServer; 114.浏览器页面与T0MCat的交互过程? 当一个JSP页面第一次被访问的时候,JSP引擎将执行以下步骤: (1)将JSP页面翻译成一个Servlet,这个Servlet是一个java文件,同时也是一个完整的java程序 (2)JSP引擎调用java编译器对这个Servlet进行编译,得到可执行文件class (3)JSP引擎调用java虚拟机来解释执行class文件,生成向客户端发送的应答,然后发送给客户端 以上三个步骤仅仅在JSP页面第一次被访问时才会执行,以后的访问速度会因为class文件已经生成而大大提高。当JSP引擎街道一个客户端的访问请求时,首先判断请求的JSP页面是否比对应的Servlet新,如果新,对应的JSP需要重新编译。 115.用C编写将一个100以内的自然数分解质因数 /*100以内素数*/ main() inti,j; for(i=2;i<100;i++) for(j=2;j if(i%j==0) break; if(i==j) printf("%d",i); /*分解质因数*/ intn,i; printf("pleaseinputanumber:\n"); scanf("%d",&n); printf("%d=",n); for(i=2;i<=n;i++) while(n!=i) if(n%i==0) printf("%d*",i); n=n/i; }else{break;} printf("%d",n); getch(); 116.用一个方法查出宜个数值类型数组的最大值,用递归方式实现 方法1 publicclassTest1{ publicstaticinta(int[]i,intj){ if(i.length-1>j){ if(i[j]>i[j+1]){ i[j+1]=i[j]; returna(i,j+1); returni[i.length-1]; 方法2--非递归 publicstaticinttest(int[]num){intx=0;intlog=num.Length;for(intt=0;t 方法3---递归不改变原数组中的元素 publicstaticintgetMax(int[]a,intindex,intmax){ intlen=a.length; if(len==1){ returna[len-1]; if(index==0){ max=a[index]; if(index==len){ returnmax;
functionfun1(){
window.showModalDialog("${pageContext.request.contextPath}/user.domethod=login","700");
window.dialogHeight=800;
functionfun(isd){
vartabIds=document.getElementById(isd);
if(tabIds.style.display=='none'){
tabIds.style.display='inline';
tabIds.style.display='none';
154.办公自动化系统用到的技术,分哪些层,有哪些包
使用技术:DWR+Struts+Hibernate+Spring+Ajax+JavaScript
系统架构分为:View层、WEB层、Serivce层、DAO层、持久层(po层)
155.解释下mvc,客户端的请求被发送到哪
.jsp是v层(视图层view)Servlet是c层(控制层,Control)BeanBin都是M层(后台类,Model)
m层(模型层)
156.使用了哪些数据库事务
BeginTransaction、Commit和Rollback
.
157.对数据库的访问是怎么实现的
将对持久层数据库的基本添加,修改,查找等操作提取到BaseDAO中,采用JavaBean对数据进行封装,以便对持久层的数据能够很好的处理,实现BaseDAO设计对数据库访问的便捷。业务组件通过DAO的委托接口调用DAO对象,使得上层组件不直接依赖于DAO的实现类.
140.接口与抽象类的区别
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否实现了接口。
158.数据库优化的方案
建立主键,为数据库创建索引,建立存储过程,触发器,可提高查询速度。
159.冒泡
publicstaticvoidBubble(inta[]){
for(intj=a.length-1;j>i;j--){