中软JAVA面试_第1页
中软JAVA面试_第2页
中软JAVA面试_第3页
中软JAVA面试_第4页
中软JAVA面试_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中软 JAVA 面试方法 2 server.transfer 速度快,只需要一次 postback ,然而他必 是在同一个站点下,因 它是 server 的一个方法。另外,他能 登 。你能 写个小程序 : 一个由 面一到 面二的跳 ,但要 入到 面二需要登 , forms ,但如果跳 句使用 tr ansfer的 ,那就可不能 出登 面了。 那个方法的重定向要求是 生在服 器端,因此 瞄器的url 地址仍旧保留的是原 面的地址!方法 3 sever.execute 那个方法要 是用在 面 上面, 而且他必 是跳 同一站点下的 面。那个方法是需要将一个 面的 出 果插入到另一个 aspx 面的

2、候使用,大部分是在表格中,将某一个 面 似于嵌套的方式存在于另一 面。 (此方法成效 似于 JSP中的 成效) :当需要把用 跳 到另一台服 器上的 面的 候使用 redirect当需要把用 跳 到非aspx 面 候,如 html 使用 redirect需要把 字符串作 url 一部分的 候保留 服 器的 候,因 其他 2 种方法不能做到 2 次 postback,把数据先 回服 器使用 redirect 需要 aspx 面 的 (不涉及登 ) 使用 transfer当需要把 aspx 面的 出 果插入到另一个aspx 面的 候使用execute 方法。所以,不 得了 有一个超 接!所以那个就

3、不需要 太多了。他是在当需要用 来决定什么 候跳 面,就使用超 接。 便提一下,如何使用redirect 方法在 字符串中使用 字,因 常的情形是显现乱码,缘故是url 不支持汉字。那个时候需要转换:string message =server.urlencode( 欢迎来到赛跑专栏 );先转换,再使用查询字符串response.redirect(webform2.aspx? msg=+message);各位 javaeye的朋友们,我那个地点有个咨询题要求你们的帮忙,感谢。我期望能够配置 spring 治理 hibernate 事务,当一个 service 调用多 dao 的时候,全部 sa

4、ve成功才 commit,能够如何实现?这是配置文件Java代码 PROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIRED/*/ PROPAGATION_REQUIRED PROPAGATION_REQUIREDPROPAGATION_REQUIRED/*/sevice 就没写了Java代 publicclassAccountManagerImplimplementsAccountManagerpublicSyncResponseInfo saveKnSyncData() /1dao.saveObject2(object1);/2

5、dao.saveObject1(object2);Springio第一想 IoC(Inversion of Control ,操 倒 )。 是 spring 的核心, 穿始 。所 IoC,关于 spring 框架来 ,确 是由spring 来 操 象的生命周期和 象 的关系。 是什么意思呢, 个 的例子,我 是如何找女朋友的?常 的情形是,我 到 去看哪里有 得漂亮身材又好的 mm,然后打听她 的 好 好、 qq 号、 号、ip 号、iq 号,想方法 她 ,投其所好送其所要,然后嘿嘿那个 程是复 深奥的,我 必 自己 和面 每个 。 的程序开 也是如此,在一个 象中,如果要使用另外的 象,就必

6、 得到它(自己new 一个,或者从 JNDI 中 一个),使用完之后 要将 象 (例如 Connection 等), 象始 会和其他的接口或 藕合起来。IoC 的一个重点是在系 运行中, 的向某个 象提供它所需要的其他 象。 一点是通 DI( Dependency Injection ,依靠注入)来 的。例如 象 A 需要操作数据 ,往常我 是要在 A 中自己 写代 来 得一个 Connection 象,有了 spring 我 就只需要告 spring, A 中需要一个 Connection,至于那个 Connection 如何构造,何 构造, A 不需要明白。在系 运行 , spring 会

7、在适当的 候制造一个 Connection,然后像打 一 ,注射到 A 当中,如此就完成了 各个 象之 关系的操 。A 需要依靠 Connection才能正常运行,而那个 Connection是由 spring 注入到 A 中的,依靠注入的名字就 么来的。 那么 DI 是如何 的呢? Java 1.3 之后一个重要特点是反射( reflection),它承 程序在运行的 候 的生成 象、 行 象的方法、改 象的属性, spring 确 是通 反射来 注入的。关于反射的有关 料 java doc。懂得了 IoC 和 DI 的概念后,一切都将 得 明了,剩下的工作只是在 spring 的框架中堆

8、木而已。* Object 类的方法:*clone()equals()finalize()hashCode()toString()* 1、equals()方法:*equals 方法强调比较的值的是否相等*=强调对象的地址是否相同*s1和s2 的值都储存在对内存中*s3和s4 的值都储存在占内存的字符串缓冲池中 ,缓存池的分配原则是按值是否相同来分配。*如果值相同则分在一起, 指向他们的引用的hashCode()值也相同。如果不同,则不分在一起,也就不=了。*因此 s3 和 s4 是相同的两个引用,而 s5 和他们俩内存地址不同, hashCode值所以也不同了* 2、finalize() 方法:

9、*由于在 Object()类的以下所有子类中的对象差不多上在 java 的垃圾回收前自动调用此Object 类(父类 )的此 finalize 方法。*因此能够重写如此运行的过程能够看的更清晰。* 3、hashCode()方法 :*hashCode()方法的返回值调用它的对象的十进制哈希码*返回值,然而如果两个引用的值相同则(不同的对象必有不同的hashCode返回值相同,hashCode*因为引用不是对象, 不是new 出来的。 )*总结:两个对象或者引用的hashCode()是否相同,确实是看这些对象或引用的地址是否相同,*hashCode()方法只看地址。*Integer 类的静态方法t

10、oHexString方法作用是将十进制整型数转化成十六进制数* 4、toString()方法:*toString方法功能是以字符串形式返回当前对象的有关信息。*其返回值是调用它的对象的类名加十六进制哈希码。*/java 中的对象名例如 Stringss 确实是对象名它的值是个地址类似 C+的指针如果你用 =去判定 确实是判定它们的地址是不是一样用 equlas判定是判定对象的内容是否一样String s1=abc;String s2=new String(s1);s1.equals(s2) 是 trues1=s2是 false因为 它们对象的内容是一样的可不是同一个对象= 就表示判定它们是不是

11、同一个对象你有一本语文书我有一本语文书尽管内容一样 ,可我的书不是你的书这是两本书关 字 : lazy延 加 :延 加 机制是 了幸免一些无 的性能开 而提出来的,所 延 加 确 是当在真正需要数据的 候,才真正 行数据加 操作。 在 Hibernate 中提供了 体 象的延 加 以及 集合的延 加 ,另外在Hibernate3中 提供了 属性的延 加 。下面我 就分 介 些种 的延 加 的 。A、 体 象的延 加 :如果想 体 象使用延 加 ,必 要在 体的映射配置文件中 行相 的配置,如下所示:通 将 class 的 lazy 属性 置 true,来开启 体的延 加 特性。如果我 运行下面

12、的代 :User user=(User)session.load(User.class,”1”);(1)System.out.println(user.getName();(2)当运行到 (1) , Hibernate 并没有 起 数据的 ,如果我 在通 一些 工具 (例如 JBuilder2005 的 Debug 工具 ), 看 在 user 象的内存快照,我们会惊奇的发觉,现在返回的可能是User$EnhancerByCGLIB$bede8986类型的对象,而且其属性为 null,这是如何回事?还记得前面我曾讲过 session.load()方法,会返回实体对象的代理类对象, 那个地点所返

13、回的对象类型确实是User 对象的代理类对象。在Hibernate 中通过使用 CGLIB,来实现动态构造一个目标对象的代理类对象,同时在代理类对象中包含目标对象的所有属性和方法, 而且所有属性均被赋值为 null。通过调试器显示的内存快照,我们能够看出现在真正的 User 对象,是包含在代理对象的 CGLIB$CALBACK_0.target 属性中,当代码运行到( 2)处时,现在调用 user.getName()方法,这时通过 CGLIB 给予的回调机制,实际上调用 CGLIB $CALBACK_0.getName() 方法,当调用该方法时, Hibernate 会第一检查 CG LIB$

14、CALBACK_0.target 属性是否为 null ,如果不为空,则调用目标对象的getName方法,如果为空,则会发起数据库查询,生成类似如此的SQL 语句: select * from user where id= 1;来查询数据,并构造目标对象,同时将它赋值到 CGLIB$CALBACK_0.target 属性中。如此,通过一个中间代理对象, Hibernate 实现了实体的延迟加载,只有当用户真正发起获得实体对象属性的动作时,才真正会发起数据库查询操作。因此实体的延迟加载是用通过中间代理类完成的,因此只有session.load()方法才会利用实体延迟加载,因为只有 session

15、.load()方法才会返回实体类的代理类对象。B、集合类型的延迟加载:在 Hibernate的延迟加载机制中, 针对集合类型的应用, 意义是最为重大的,因为这有可能使性能得到大幅度的提升,为此 Hibernate 进行了大量的努力,其中包括对 JDK Collection 的独立实现,我们在一对多关联中,定义的用来容纳关联对象的 Set 集合,并不是 java.util.Set 类型或其子类型,而是 net.sf.hibernate.collection.Set类型,通过使用自定义集合类的实现, Hibernate实现了集合类型的延迟加载。为了对集合类型使用延迟加载,我们必须如下配置我们的实体

16、类的关于关联的部分:select S . 通 将 元素的 lazy 属性 置 true 来开启集合 型的延 加 特性。我 看下面的代 :User user=(User)session.load(User.class,”1”);Collection addset=user.getAddresses();(1)Iterator it=addset.iterator();(2)while(it.hasNext()Address address=(Address)it.next();System.out.println(address.getAddress();当程序 行到 (1) , 并可不能 起

17、关 数据的 来加 关 数据,只有运行到 (2) ,真正的数据 取操作才会开始, Hiberna te 会按照 存中符合条件的数据索引,来 找符合条件的 体 象。那个地点我 引入了一个全新的概念数据索引,下面我 第一将接一下什么是数据索引。 在 Hibernate中 集合 型 行 存 ,是分两部分 行 存的,第一 存集合中所有 体的id 列表,然后 存 体 象, 些 体 象的id 列表,确 是所 的数据索引。当 找数据索引 ,如果没有找到 的数据索引, 就会一条 selectSQL 的 行, 得符合条件的数据,并构造 体 象集合和数据索引,然后返回 体 象的集合,同 将 体 象和数据索引 入Hi

18、bernate 的 存之中。另一方面,如果找到 的数据索引, 从数据索引中取出id 列表,然后按照 id 在 存中 找 的 体,如果找到就从 存中返回,如果没有找到,在 起QL 。在那个地点我 看出了另外一个咨 ,那个咨 可能会 性能 生阻碍, 确 是集合 型的 存策略。如果我 如下配置集合 型: . 那个地点我 用了 配置,如果采 种策略来配置集合 型, Hibernate 将只会 数据索引 行 存,而可不能 集合中的 体 象 行 存。如上配置我 运行下面的代 :User user=(User)session.load(User.class,”1”);Collection addset=us

19、er.getAddresses();Iterator it=addset.iterator();while(it.hasNext()Address address=(Address)it.next();System.out.println(address.getAddress();System.out.println(“Second query” );User user2=(User)session.load(User.class,”1”);Collection it2=user2.getAddresses();while(it2.hasNext()Address address2=(Addr

20、ess)it2.next();System.out.println(address2.getAddress();运行 段代 ,会得到 似下面的 出:Select * from user where id= 1;Select * from address where user_id=1;TianjinDalianSecond querySelect * from address where id=1;Select * from address where id=2;TianjinDalian我 看到,当第二次 行 , 行了两条 address表的 操作,什么原因会如此? 是因 当第一次加 体后,

21、按照集合 型 存策略的配置,只 集合数据索引 行了 存,而并没有 集合中的 体 象 行 存,因此在第二次再次加 体 ,Hibernate 找到了 体的数据索引,然而按照数据索引,却无法在 存中找到 的 体,因此 Hiberna te 按照找到的数据索引 起了两条 select SQL 的 操作,那个地点造成了 性能的白 ,如何 才能幸免 种情形呢?我 必 集合 型中的 体也指定 存策略,因此我 要如下 集合 型 行配置: . 在 Hibernate 会 集合 型中的 体也 行 存,如果按照那个配置再次运行上面的代 ,将会得到 似如下的 出:Select * from user where id

22、= 1;Select * from address where user_id=1;TianjinDalianSecond queryTianjinDalian 将可不能再有按照数据索引 行 的SQL 句,因 在能 直截了当从 存中 得集合 型中存放的 体 象。C、属性延 加 :在 Hibernate3 中,引入了一种新的特性属性的延 加 ,那个机制又 取高性能 提供了有力的工具。在前面我 大数据 象 取 ,在 User 象中有一个 resume字段, 字段是一个 java.sql.Clob 类型,包含了用 的 信息,当我 加 象 ,我 不得不每一次都要加 那个字段,而不 我 是否确 需要它,而且 种大数据 象的 取本身会 来 大的性能开 。在 Hibernate2 中,我 只有通 我 前面 的面性能的粒度 分,来分解 User ,来解决那个咨 ( 参照那一 的 述),然而在 Hib

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论