版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. hashtable和hashmap有什么区别? HashMap 是Hashtable 的轻量级实现(非线程安全的实现),他们都完成了Map 接口,主要区别在于HashMap 允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。HashMap 允许将null 作为一个entry 的key 或者value,而Hashtable 不允许。HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey。因为contains 方法容易让人引起误解。Hashtable 继承自Dictionar
2、y 类,而HashMap 是Java1.2 引进的Map interface 的一个实现。最大的不同是,Hashtable 的方法是Synchronize 的,而HashMap 不是,在多个线程访问Hashtable 时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。Hashtable 和HashMap 采用的hash/rehash 算法都大概一样,所以性能不会有很大的差异。2. 你怎么理解mvc模式 MVC(模型Model-视图View-控制器Controller)是一种设计模式,M(Model)在Java Web里说的是JavaBean,在JavaBean中除了其属
3、性和字段,还可以有行为及其事件,JavaBean可以理解为普通Java对象。Java普通对象,就是符合Java规范的所有对象,这和实体类完全是两回事。业务逻辑和数据访问应该放在Model层,也就是V负责展示数据,Controler除了转发不做业务逻辑。真正的逻辑事务,数据访问,甚至算法都放到Model去。 Controller是控制器的意思,所谓控制器,就是将用户请求转发给模型层,经过处理后把结果返回到界面层展现的一个中间层,那么Controller到底管什么工作呢?先不说.先来看下在Java Web中这三个层一般的定义,一般在Java Web里,JSP充当V,Servlet充当C,JavaB
4、ean充当M,这里的Servlet管什么工作呢?接受输入,转到Model层去处理,处理结果保存后转发到JSP,然后展现数据。所以它的功能就是控制器的基本功能,它就管转发,在V和M之间转来转去。MVC没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是已实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。补充:SSH对应MVC哪些部分粗略的看 struts属于表示层 V,hibernate属于数据模型 M,spring属于业务控制
5、C但实际上真正的V是jsp 然后ssh三个框架内部本身也是有分层的 所以这个不能说的太细 只是粗略的这么看3. sqlserver中左联接查询用left join,oracle中用什么? 左连接:select(nvl(a.c,0)-nvl(b.c,0) from a,b where a.id(+)=b.id 右连接:select(nvl(a.c,0)-nvl(b.c,0) from a,b where a.id=b.id(+) 自连接:select(nvl(a.c,0)-n
6、vl(b.c,0) from a,b where a.id(+)=b.id(+) 说明:加号写在左就是左连接,写在右就是右连接,看加号的方法来定 4. sqlserver中的数据库,在oracle中对应的是什么? 表空间 5. 如果sqlserver中有两个数据库,那么让你把这两个数据库对应到oracle中,你应该怎么做? 在oracle中建一个用户,对应两个表空间 6. 有两个页面a.jsp和b.jsp,要从a.jsp传值到b.jsp有几种方法?分别是什么? a:最常用的方法是
7、用form中的text,,然后在b.jsp页面中这样获取 string username=request.getparameter("username"); b:直接在url地址栏里面输入第一个页面的地址,在后加问号,然后把要传的参数及值写在后面,如有多个用&隔开,然后在下一页面用 request.getparameter("参数名")来获取,例如: 在b.jsp中可用这样获取:string username=request.getparameter("
8、;username");string username=request.getparameter("password"); c:在form中放hidden,如:,获取方法同上 说明:传值的方法有很多种,以上是最常用最简单的几种方式,当然,如果传的值有中文的话,需另做处理 7. 有三个页面,a.jsp,b.jsp和c.jsp,流程是:a.jsp->b.jsp->c.jsp,其中a.jsp中提交的数据要在c.jsp中访问,用最简单的方法 怎么做?注意不能放在session里 用隐藏表单域,即在b
9、.jsp页面中用n个hidden把上一页面提交过来的信息保存下来,然后和当前一起提交,再到c.jsp里面获取 说明:尽量不要用session和少用session 8. jsp和servlet有什么区别? 1.jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpS
10、ervletResponse对象以及HttpServlet对象得到.Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。9. 映射是什么?你怎么理解映射? 映射即别名,通过别名可以访问 10. hibernate中:不看数据库,不看xml文件,不看查询语句,怎么样能知道表结构? 看表结构对应的类文件,比如userinfo表对应的userinfo.java文件 11.sqls
11、erver支持集群吗? 支持,但是是属于热备份类型,不能做负载平衡。不过符合你的条件。 首先系统做集群,数据库文件放到磁盘阵列里,双机或多机共同访问磁盘阵列,就可以了 iis可以做集群后负载平衡。 12. 为什么要用mvc?我从jsp页面直接访问数据库不是更简单吗,为什么非要先提交到控制再做处理? mvc各施其职,互不干涉 在mvc模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化, 就只需要更改相应的层中的代码而不会影响到其它层中的代码。 有利于开发中的分工
12、0; 在mvc模式中,由于按层把系统开,那么就能更好的实现开发中的分工。网页设计人员可以进行开发视图层中的jsp, 对业务熟悉的开发人员可开发业务层,而其它开发人员可开发控制层。 有利于组件的重用 分层后更有利于组件的重用。如控制层可独立成一个能用的组件,视图层也可做成通用的操作界面 说明:这个好处就太多了! 13. 在struts中,假设有一个对数据库中一张表的增删改查的操作,你是写一个action还是写多个action?为什么? 写一个action,让这个action继承
13、自dispatchaction,然后在struts-config.xml中给这个action映射加一参数,parameter="method" 这个在提交到这个action中时,会根据传来的参数中method的值来执行相应的action的方法,比如,http:/localhost:8080/login.do?method=dologin 这个提交到action的时会自动找方法名叫dologin的方法,参数返回值原来一样actionforward 14.struts中的actionform有什么好处?
14、;struts的actionform其实不好,里面有一堆属性,虽然可以自动填充,但是你会发现,在很多情况下(比如你用到hibernate) 你还要需要自动写一个数据库表的映射类,通常是domain.userinfo.java,这样就和strutsform中的属性重复,所以他很多余, struts1.1版本,保留了actionform,struts1.2中已经有了新的lazyvalidatorform,但仍然保留了原有的actionform, 而在struts 2.0中已经把actionform去掉了
15、0;下面是解决方法 a: 把actionform换成dynaactionform ,和原来不同的是在dynaactionform可以domain.userinfo.java的一个实例做为他的一个属性 这样你就不需要在里面写一堆的get,set方法,只是在页面上绑定稍有不同 b: 把actionform换成org.apache.struts.validator.lazyvalidatorform,这样你完全不用写你的actionform这个类,直接在xml里面做 相应配置,当然也
16、可以加上验证框架 警告:这个问题是陷阱,实际上struts的actionform很不好,非常麻烦,用久了你会发现他其实是多余的,所以这个问题你应该说他的坏处, 和怎么把actonform去掉15.用过hibernate吗,用它有什么好处? hibernate的最大的好处就是简化数据库的操作,允许你的代码以对象模式来访问数据库内容, 比如通常我们找一个user的资料需要select出所需要的资料,而通过hibnate我们可以把这个user的资料作为一个对象来看待 ,通过user.get
17、name或者user.getid等操作来获得,这样就完全统一了上层java或者c#等oo语言中对于数据库的非oo操作的不和谐了. 另外对于复杂的表和表之间的关联我们也不用去使用复杂的select等sql来操作,而使用对象可以方便获得, 比如多对多关系某用户属于的部门的名称,虽然底层数据库使用了3个表的主键关联操作, 但是我们可以通过user.getdep.getname来简单的获得,这个就是持久化对象的好处了 说明:好处太多,只能在用的过程中慢慢体会 只能说一个字:爽 16.通常所说的
18、web应用程序分3层,即mvc,如果我想分四层,应该怎么分? 加一个hibernate数据持久层17. 什么是Cookie?“Cookie是Web网站放在您的硬盘上的程序。它守在您的电脑里,搜集您的信息以及您在因特网上所做的任何事情,当Web站点需要的时候它能够下载所有这些搜集到的信息。” 问题是,它的定义犯了很大的错误。Cookie不是程序,而且它不能像程序一样地运行,所以它无法为自己搜集任何信息。它也不能从您的电脑上取得您的任何个人资料。 Cookie的比较确切的定义应该是这个样子: “Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web
19、站点在用户的电脑上保存信息并且随后再取回它。信息的片断以名/值对(name-value pairs)的形式储存。” 举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。 如果您使用IE浏览器访问Web,您会看到所有保存在您的硬盘上的Cookie。它们最常存放的地方是:c:windowscookies(在Win 2000中则是C:Documents and Settings您的用户名Cookies作者注)。在我的机器上共有165个文件。每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的Web站点的信息。
20、 在这个文件夹里的每个Cookie文件都是一个简单而又普通的文本文件。透过文件名,您可以看到是哪个Web站点在您的机器上放置了Cookie(当然站点信息在文件里也有保存)。您也能双击打开每一个Cookie文件。 Cookie英文意指饼干,不过在电脑术语中它可不像饼干那么简单。简单的说,Cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会先送一小段资料放在你的计算机上,Cookie 会帮你把在网页上所输入的文字或是一些选择,都记录下来。当下次你再光临同一个网站,Web服务器会先看看有没有它上次留下的Cookie资料,有的话,就会依
21、据Cookie里的内容来判断使用者,送出特定的网页内容给你。Cookie的使用很普遍,许多提供个人化服务的网站,都是利用Cookie来辨认使用者,以方便送出使用者量身定做的内容,像是Web接口的免费E-mail网站,都要用到 Cookie。Cookie中记载的资料相有限,Cookie是安全的。网站不可能经由Cookie获得你的E-mail地址或是其它私人资料,更没有办法透过Cookie来存取你的计算机。但是如果你实在不喜欢Web服务器乱丢饼干(Cookie)到你家,当然可以让浏览器拒绝网站存放Cookie到你的计算机。只要在IE的“工具”菜单下选择“Intertnet选项”的“安全”,按自定义
22、级别,将Cookie部分设为关闭,按确定,关闭浏览器,再重新启动浏览器即可。当你关闭Cookie之后,很多网站的个人化服务功能很可能也不能再使用了。在Windows98中Cookie的存放位置是在:C:WINDOWSTemporary Internet Files中,你可以直接删掉这里面的东西或是利用IE internet选项里的删除文件按钮来清除。18.application和session的区别application全局变量,session是会话变量,比如说:(1)session:声明一个session变量。打开一个网站,session就存在了,更换页,只要是这个网站的页,session始
23、终存在,当关闭这个网站的时候,session就结束了,这叫会话变量。(2)application:声明一个application变量。不关你前台有多少客户打开该网站的页,有多少客户关闭该网站的页,只要服务器端不关闭该网站,application始终存在。19. Hibernate Session是什么意思我以前回答过的比喻成HIBERNATE是 自然水公司SESSION 是从自然水公司到你家里的管道。要用水,你必须先造一个管道。如果延迟加载的话,记得把水龙头开着。项目中数据库优化和程序优化的经验?简单谈了一下数据库的优化几个点:索引,分区等;后来归结到索引上,问到什么情况下加索引,索引加到什么
24、列上?当然是索引要加到不是经常更新修改和删除的表上比较合适,因为表的更新意味索引同步更新,所以表如果是经常更新的话,最好不要添加索引。索引一般加到Where语句后面经常出现的列,当然要根据列的类型和实际情况添加相应的索引,还要注意的是避免使用类似于like “%word%”或者是隐式类型转换或者函数造成的索引失效。后来又谈了点程序中优化的例子,比如数据的批量操作共用一个连接,共用一个Commend,连接只打开一次【尤其是强类型Dataset自动生成的insert和update方法】等等,又谈到了连接池.20. Java中 forward 和redirect的区别使用forward的时候浏览器不
25、知道它所请求的具体资源来源,所以地址栏不会变;使用redirect,服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL。 forward,转发页面和转发到的页面可以共享request里面的数据. redirect,不能共享数据.21. 名词解释WEB,EJB,JNDI,JMS,JTA,JAF,RMI/IIOPweb容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供
26、的接口严格遵守J2EE规范中的WEB APPLICATION 标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。 EJB容器:Enterprise java bean 容器。更具有行业领域特色。他提供给运行在其中的组件EJB各种管理功能。只要满足J2EE规范的EJB放入该容器,马上就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理。 JNDI:(Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速
27、查找和定位分布式应用程序的功能。 JMS:(Java Message Service)JAVA消息服务。主要实现各个应用程序之间的通讯。包括点对点和广播。 JTA:(Java Transaction API)JAVA事务服务。提供各种分布式事务服务。应用程序只需调用其提供的接口即可。 JAF:(Java Action FrameWork)JAVA安全认证框架。提供一些安全控制方面的框架。让开发者通过各种部署和自定义实现自己的个性安全控制策略。 RMI/IIOP:(Remote Method Invocation /internet对象请求中介协议)他们主要用于通过远程调用服务。例如
28、,远程有一台计算机上运行一个程序,它提供股票分析服务,我们可以在本地计算机上实现对其直接调用。当然这是要通过一定的规范才能在异构的系统之间进行通信。RMI是JAVA特有的。22. 写一个singleton出来?Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。一般Singleton模式通常有以下两种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。01. public clas
29、s Singleton 02. /第一步,定义一个私有的构造函数03. private Singleton()04. /第二步,定义一个私有、静态的该类的实例变量,并调用构造函数初始化05. private static Singleton instance = new Singleton();06.
30、; /第三步,定义一个公有、静态的方法,用于供外部取得定义的实例变量07. public static Singleton getInstance() 08. /第四步,返回(return)实例变量09. return instance;10. 11.
31、 第二种形式01. public class Singleton 02. /第一步,定义一个私有、静态的该类的实例变量,并初始化为null03. private static Singleton instance = null;04. /第二步,定义一个公有、静态、线程安全的方法,用于供外部取得定义的实例变量05. public static s
32、ynchronized Singleton getInstance() 06. /第三步,判断是否是第一次调用(实例变量为空),第一次时需要创建对象07. if (instance = null) 08. instance =
33、new Singleton();09. 10. /第四步,返回(return)实例变量11. return instance;12. 13. 23. 抽象类和接口的区别简单来说,接口是公开的,里面不能有私
34、有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的,另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如Remote接口)和数据共享(里面的变量全是常量)的作用.24. 对象序列化的含义序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决
35、在对对象流进行读写操作时所引发的问题。 序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。 简单来说 序列化就是把Java对象储存在某一地方(硬盘、网络),以便于传输25. Servl
36、et中的dopost()和doget()方法的作用根据请求的类型(就是你form表单中method属性下面的那请求类型,默认为doget().)HTTPServlet类的excute方法会选择调用对应的方法。dopost()是比较安全的,在你的浏览器上不会出现发送的参数,比如你如果提交带有密码的表单发请求时一定要是dopost(),否则密码会这样被显示在浏览器上.jsp?pwd=kkk 26. 数据库中的锁包括什么?数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 顶山隧洞1标施组
- 五年级班级读书计划五年级下册语文读书计划
- XX中学九年级语文学期授课计划
- XX市国民经济和社会发展第十个五年计划纲要
- 幼儿园安全工作计划 幼儿园安全教育工作计划
- 学校防震减灾计划范文
- 幼儿园十一月工作计划表
- 社区居委会工作计划样本
- 学校教师教研工作计划范文
- 学校庆五一教职工活动计划
- 四年级语文上册句子整理复习统编课件ppt
- 香港联合交易所有限公司证券上市规则
- 爆破作业安全技术交底
- 院感科年终总结述职报告
- 中国传统民间工艺(陶瓷)(课堂PPT)
- 心灵的篝火--张海迪
- 经口鼻吸痰技术(课堂PPT)
- 毕业设计(论文)-助力式下肢外骨骼机器人的结构设计
- CA6140法兰盘工序卡片
- 监控系统维保方案
- 建筑结构(第四版)
评论
0/150
提交评论