posts - 11, comments - 0, trackbacks - 0, articles - 0

2011年4月29日

  1.  1、set linesize 100;  设置长度  
  2.  2、set pagesize 30;   设置每页显示数目  
  3.  3、ed a.sql  打开记事本    
  4.  4、@ a 执行文件a中的代码,可指定文件的路径 @d:a.txt  
  5.  5、conn 用户名/密码  根据用户名和密码连接数据库 如果连接超级管理员(sys) 则应加上as sysdba;  
  6.  6、show user; 显示当前连接的用户  
  7.  7、select * from tab;  得到当前用户下的所有表  
  8.  8、desc temp; 查看表结构  
  9.  9、/  继续执行上一个查询语句  
  10.     clear scr;  清屏  
  11.   
  12. 字符函数  
  13. 10、select upper('coolszy'from dual; 将小写字母转换成大写,dual 为一虚表  
  14. 11、select lower('KUKA'from dual; 将大写字母转换成小写  
  15. 12、select initcap('kuka'from dual; 将首字母大写   
  16. 13、select concat('Hello',' world'from dual; 连接字符串,但没有||好用select concat('Hello','world'from dual;  
  17. 14、select substr('hello',1,3) from dual; 截取字符串  
  18. 15、select length('hello'from dual; 求字符串长度  
  19. 16、select replace('hello','l','x'from dual; 替换字符串   
  20. 17、select substr('hello',-3,3) from dual; 截取后三位  
  21.   
  22. 数值函数  
  23. 18、select round(789.536) from dual; 四舍五入,舍去小数  
  24. 19、select round(789.536,2) from dual; 保留两位小数  
  25. 20、select round(789.536,-1) from dual; 对整数进行四舍五入  
  26. 21、select trunc(789.536) from dual; 舍去小数,但不进位  
  27. 22、select trunc(789.536,2) from dual;  
  28. 23、select trunc(789.536,-2) from dual;  
  29. 24、select mod(10,3) from dual; 返回10%3的结果  
  30.   
  31. 日期函数  
  32. 25、select sysdate from dual; 返回当前日期  
  33. 26、select months_between(sysdate,'16-6月 -08'from dual; 返回之间的月数  
  34. 27、select add_months(sysdate,4) from dual; 在日期上加上月数  
  35. 28、select next_day(sysdate,'星期一'from dual; 求下一个星期一  
  36. 29、select last_day(sysdate) from dual; 求本月的最后一天  
  37.   
  38.   
  39. 转换函数  
  40. 30、select to_char(sysdate,'yyyy'year,to_char(sysdate,'mm'),to_char(sysdate,'dd'from dual;  
  41. 31、select to_char(sysdate,'yyyy-mm-dd'from dual;  
  42. 32、select to_char(sysdate,'fmyyyy-mm-dd'from dual; 取消月 日 前面的0  
  43. 33、select to_char('20394','99,999'from dual; 分割钱 9表示格式  
  44. 34、select to_char('2034','L99,999'from dual; 加上钱币符号  
  45. 35、select to_number('123')*to_number('2'from dual;  
  46. 36、select to_date('1988-07-04','yyyy-mm-dd'from dual;   
  47.   
  48. 通用函数  
  49. 37、select nvl(null,0) from dual; 如果为null,则用0代替  
  50. 38、select decode(1,1,'内容是1',2,'内容是2',3,'内容是3'from dual; 类似于 switch...case...  
  51.   
  52. 事务处理  
  53. 39、commit;  提交事务  
  54. 40、rollback; 回滚事务  
  55.   
  56.   
  57. 41、select rownum from table; 在没一列前面显示行号  
  58. 42、drop table 表名 cascade constraint   
  59.     on delete casecade 当父表中的内容被删除后,子表中的内容也被删除  
  60.   
  61. 43、desc表名 显示表的结构  
  62. 44、create user [username] identified by [password] 创建新的用户  
  63. 45、grant 权限1、权限2...to 用户  给创建用户权限  
  64.  ex:grant create session to [username] 此时只能连接到数据库  
  65.     grant connect,resource to [username] 此时权限能满足要求  
  66. 46、alter user [username] identified by [password] 修改用户密码  
  67. 47、alter user [username] password expired 下次登录时提示修改密码  
  68. 48、alter user [username] account lock  锁住用户  
  69. 49、alter user [username] account unlock  解锁锁用户  
  70. 50、grant select,delete on scott.emp to [username] 把scott下emp表的两个权限给用户  
  71. 51、revoke select ,delete on scott.emo from [username] 回收权限 

posted @ 2011-04-29 10:02 HsiangYu 阅读(141) | 评论 (0)编辑 收藏

如果你已经是一名优秀的Web开发人员,那请路过即可。如果你还是一个准备入行或刚入行的菜鸟,那本文倒值得一读。要成为一名优秀的Web开发人员,没有捷径可走,本文就是为那些还在苦苦寻找学习目标的人编写的。

第一步:学好HTML

HTML(超文本标记语言)是网页的核心,因此你首先应该学好它,不要害怕,HTML很容易学习的,但也很容易误用,学懂容易要学精还得费点功夫,但学好HTML是成为Web开发人员的基本条件。(注:随着HTML 5规范出炉日期将近,了解HTML 5也将成为Web开发人员的必修课)

学习资源:

HTML Dog (http://htmldog.com/

HTML入门指南 (http://www.w3.org/MarkUp/Guide/

W3C HTML学习教程 (http://www.w3schools.com/html/

第二步:学好服务器端脚本语言

服务器端脚本编程也是Web开发人员的基本功之一,你只需挑选一个服务器端脚本语言,然后学好它,目前流行的服务器脚本语言有:

PHP (http://php.net/

Python (http://www.python.org/

Ruby (http://www.ruby-lang.org/en/

第三步:学好SQL

要构建动态页面就必须使用到数据库,但这么多数据库产品,该如何是好呢?别担心,它们都会遵循标准的SQL原则,学习SQL的资源包括:

W3C SQL学习教程 (http://www.w3schools.com/SQl/default.asp

MySQL主页 (http://www.mysql.com/

SQL维基百科 (http://en.wikipedia.org/wiki/SQL

第四步:学好CSS

涉及到网页外观时,就需要学习CSS了,它可以帮你把网页做得更美观。

学习资源:

HTML Dog  (http://htmldog.com/

CSS禅意花园 (http://www.csszengarden.com/)已有中文版图书。

第五步:学好JavaScript

今天大部分Web开发人员都喜欢使用jQuery(http://jquery.com/),学习JavaScript的基本语法,以及如何使用JavaScript编程将会提高你的技能。

学习资源:

webmonkey.com上的JavaScript学习资源 (http://www.webmonkey.com/tutorial/JavaScript_Tutorial

W3C JavaScript学习教程 (http://www.w3schools.com/JS/default.asp

第六步:学好正则表达式

虽然它并不像其它知识那么重要,但学习了正则表达式后,如果使用得当将会节省你很多时间,从验证到高亮显示它够能帮到你。

第七步:学习一点Unix和Linux的基本知识

这并不是必须的,但知道一点Linux命令不会伤害到你,或许你还不知道,大部分Web服务器都运行在Unix和Linux平台上,如果我是你,我会去学习一些基本的Linux命令的。

第八步:了解Web服务器

你不必在这上面花太多精力,但对Apache的基本配置,.htaccess配置技巧有一些掌握的话,将来必定受益,而且这方面的知识学起来也相对容易,不会花多长时间。

第九步:熟悉版本控制系统的用法

熟悉使用一种优秀的版本控制系统将很有用处,你在实际工作中就会发现精通一种版本控制系统是多么幸福。

第十步:学好Web框架

当你掌握了HTML,服务器端脚本语言,CSS和JavaScript后,就应该找一个Web框架加快你的Web开发速度,使用框架可以节约你很多时间,如果你使用PHP,可选的框架有CakePHP,CodeIgniter,Zend等,Python程序员喜欢使用Django和 webpy,Ruby程序员喜欢使用RoR。

怎么样,从最简单的HTML到Web框架,内容还是不少吧,要想精通这里的每一样技术,都得下苦功夫才行。

posted @ 2011-04-29 09:57 HsiangYu 阅读(147) | 评论 (0)编辑 收藏

很多人应聘不上去,不是由于自己不够优秀,而是这个人从头到尾锲而不舍的自杀所致。  

很多人应聘不上去,不是由于自己不够优秀,而是这个人从头到尾锲而不舍的自杀所致。这样的人大概占到了人数的40%到50%!

摘录一些最简单的自杀式问题,希望有帮助。

珍爱面试,远离自杀!

1.自杀式一:奋不顾身

请简单介绍一下你自己:

我是一个很普通的人……

给你一个机会,就是让你证明自己的优秀的!每一个都有闪光点,关键是你如何寻找。但是这样的回答让人觉得你连想都不想。

请简单介绍一下你自己:

我今天准备得不太好…… 你的意思是:我还可以更好的。面试官听到的意思是:没准备好还来干嘛,太不尊重我啦!(当年在新东方培训教师的时候,每当我听到这句话,我们就说:那请你准备好再来,不要浪费大家的时间……)

2.自杀式二:天花乱坠

说说你的优点:

(用一种熟练无比的不过大脑的声调)我团结同学、尊重老师、热爱生活、兴趣多样,积极主动……

中国教育很多要求就是变态的,比如严肃活泼,在我看来就是典型的精神分裂。我自己在面试期间,最郁闷的就是看到那些云集了中华文明5000年所有传统文化的人。优点不是越多越好,而是越真实和独特越好。很难想象一个人如何可以“团结同学”同时“独立研究,刻苦钻研”还要“积极投身社团”。

什么优点都有的人 = 没有优点

3.自杀式之三:我要学习

你希望通过这份工作获得什么呢?

我希望通过这份工作锻炼自己,提升自己的能力。

同学,公司又不是学校,是希望你过来干活的,学习的目的也是更好的工作。你居然准备拿我们的工作机会练手和锻炼自己?我们还是找一些更靠谱的人吧。

4.自杀式之四:前途钱途

你还有什么问题么?

我想问一下工资大概是多少?还能高些么?

一般来说,工资完全可以在公司的网站、一般的行业网站找到。或者私下沟通。在大公司面试的时候问这个问题不太合适。因为很多HR会认为,就业是一种双向选择,你还没有展示你的能力呢?我凭什么买你?

建议可以在基本意向确定以后再问。当然,就这个问题,有不同意见。有人还建议说当场问显得自己很有信心。在职人士的话,一定要谈薪酬。

5.自杀式之五:我会努力!

你会如何面对你的新工作?

(眼神坚定,满脸通红)我会认真努力,尽全力做好。

商业社会,态度不等于能力。不管你是全力以赴还是认真努力,没有达到目标,也是无用。不管你是心不在焉还是,只要最后达到了公司要的结果,那就是好员工。

你可以尝试提供你准备的具体的行动步骤和目标,否则这个问题基本等于没有回答。

6.自杀式之六:我应该

如果你给一份……的任务,你会怎么做?

我应该能够做好……

我应该能够做好,反过来说就是:做不好也不怪我吧!

企业是用结果说话的,应该做好…… 那还有应该做不好地方怎么办?这是一个责任心的测试。但是“应该”者失败了。

你可以尝试谈谈,你会怎么做。如果做到你会怎么样,如果做不到,你会如何调整。保证在DEADLINE前获得底线结果。

posted @ 2011-04-29 09:52 HsiangYu 阅读(162) | 评论 (0)编辑 收藏

2011年4月28日

1.struts
Action是不是线程安全的?如果不是,有什么方式可以保证Action的线程安全?如果是,说明原因

2.MVC,分析一下struts是如何实现MVC的

3.struts中的几个关键对象的作用(说说几个关键对象的作用)

4.spring
说说AOP和IOC的概念以及在spring中是如何应用的

5.Hibernate有哪几种查询数据的方式

6.load()和get()的区别

回答:
1.Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。
Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

2.struts是用一组类,servlet 和jsp规范实现mvc的

3.ActionFrom ActionServlet Action struts-config.xml

4.spring的核心就是IOC,通过指定对象的创建办法,描述对象与服务之间的关系,而不生成对象

5.3种,hql 条件查询() 原生sql

6.load()方法认为该数据一定存在,可以放心的使用代理来延时加载 ,如果使用过程中发现了问题,就抛出异常;
get()方法一定要获取到真实的数据,否则返回null

一些Spring和Hibernate的面试题(附答案)

HibernateJava/J2EESpring

1、 简述你对IoC(Inversion of Control)的理解,描述一下Spring中实现DI(Dependency Injection)的几种方式。

2、 Spring的Bean有多种作用域,包括:

singleton、prototype、request、session、global session、application、自定义

3、 简单描述Spring framework与Struts的不同之处,整合Spring与Struts有哪些方法,哪种最好,为什么?

4、 Hibernate中的update()和saveOrUpdate()的区别

5、 Spring对多种ORM框架提供了很好的支持,简单描述在Spring中使用Hibernate的方法,并结合事务管理。

答案:

1、好莱坞原则€€€€不要打电话找我,我会打给你的。IoC将创建的职责从应用程序代码搬到了框架中。Spring对Setter注入和构造方法注入提供支持。(详见http://martinfowler.com/articles/injection.html,以及http: //www.redsaga.com/spring_ref/2.0/html/beans.html#beans-factory- collaborators)

2、 除application(详见Spring framework 2.0 Reference的3.4节bean的作用域)

3、 Spring是完整的一站式框架,而Struts仅是MVC框架,且着重于MVC中的C。Spring有三种方式整合Struts:使用 Spring 的 ActionSupport 类整合 Struts;使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor;将 Struts Action 管理委托给 Spring 框架,动作委托最好。(详见使用Spring 更好地处理Struts 动作)

Spring 2.0新增一种方式:AutowiringRequestProcessor。(详见http://www.iteye.com/topic/24239)

4、 saveOrUpdate()方法可以实现update()的功能,但会多些步骤,具体如下:

如果对象在该session中已经被持久化,不进行操作;

对象的标识符属性(identifier property)在数据库中不存在或者是个暂时的值,调用save()方法保存它;

如果session中的另一个对象有相同的标识符抛出一个异常;

以上皆不符合则调用update()更新之。

5、在context中定义DataSource,创建SessionFactoy,设置参数;DAO类继承HibernateDaoSupport,实现具体接口,从中获得HibernateTemplate进行具体操作。

在使用中如果遇到OpenSessionInView的问题,可以添加OpenSessionInViewFilter或OpenSessionInViewInterceptor。(详见Spring framework 2.0 Reference的12.2节Hibernate)

声明式事务需声明事务管理器,在context中设置指定属性,用确定和。

请你谈谈SSH整合

HibernateJava/J2EESpringStruts

SSH:
Struts(表示层)+Spring(业务层)+Hibernate(持久层)
Struts:
Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。
在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)
Hibernate:
Hibernate是一个持久层框架,它只负责与关系数据库的操作。
Spring:
Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。

Spring如何创建一个数据连接池

Java/J2EESpring

<bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource”>
<property name=”driver”>
<value>${db.driver}</value>
</property>
<property name=”url”>
<value>${db.url}</value>
</property>
<property name=”username”>
<value>${db.username}</value>
</property>
<property name=”password”>
<value>${db.password}</value>
</property>
</bean>

Spring如何获取Bean

Java/J2EESpring

通过xml配置文件

bean配置在xml里面,spring提供多种方式读取配置文件得到ApplicationContext.

第一种方式:FileSystemXmlApplicationContext

通过程序在初始化的时候,导入Bean配置文件,然后得到Bean实例:
ApplicationContext ac = new FileSystemXmlApplicationContext(”applicationContext.xml”)
ac.getBean(”beanName”);

第二种方式:WebApplicationContextUtil

在B/S系统中,通常在web.xml初始化bean的配置文件,然后由WebAppliCationContextUtil得到ApplicationContext.例如:
ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);
ApplicationContext ctx =   WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);

其中 servletContext sc 可以具体 换成 servlet.getServletContext()或者 this.getServletContext() 或者 request.getSession().getServletContext();

另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出WebApplicationContext 对象:

WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);

Spring框架有哪几部分组成?

Java/J2EESpring

Spring框架有七个模块组成组成,这7个模块(或组件)均可以单独存在,也可以与其它一个或多个模块联合使用,主要功能表现如下:

 Spring 核心容器(Core):提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,她是工厂模式的实现。BeanFactory使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际的应用代码程序分开。

 Spring AOP通过配置管理特性,Spring AOP模块直接面向方面的编程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何对象支持 AOP。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。通过使用Spring AOP,不用依赖于EJB组件,就可以将声明性事务管理集成到应用程序中。

 Spring ORMSpring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。所有这些都遵从Spring的通用事务和DAO异常层结构。

 Spring DAOJDBC DAO抽象层提供了有意义的异常层次的结构,可用该结构来管理异常处理和不同数据供应商抛出的异常错误信息。异常层次结构简化了错误处理,并且大大的降低了需要编写的异常代码数量(例如,打开和关系连接)。Spring DAO的面向JDBC的异常遵从通用的DAO异常层结构。

 Spring WEBWeb上下文模块建立在上下文模块(Context)的基础之上,为基于Web服务的应用程序提供了上下文的服务。所以Spring框架支持 Jakarta Struts的集成。Web模块还简化了处理多部分请求及将请求参数绑定到域对象的工作。

 Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化校验和调度功能。

 Spring MVCSpring的MVC框架是一个全功能的构建Web应用程序的MVC实现。通过策略接口,MVC框架变成为高度可配置的,MVC容纳的大量视图技术,包括JSP、Velocity、Tiles、iText和Pol

用Spring有什么好处

Java/J2EESpring

◆Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题,。

◆Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。
◆Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读Javadoc乃至源编码吗?有了Spring,你可很简单地看到类的JavaBean属性。倒置控制的使用(在下面讨论)帮助完成这种简化。
◆Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。
◆Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。
◆使用Spring构建的应用程序易于单元测试。
◆Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。
◆Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适于许多web应用。例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。
■Spring为数据存取提供了一致的框架,不论是使用JDBC或O/R mapping产品(如Hibernate)。
Spring确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。
总结起来,Spring有如下优点:
◆低侵入式设计,代码污染极低
◆ 独立于各种应用服务器,可以真正实现Write Once,Run Anywhere的承诺
◆Spring的DI机制降低了业务对象替换的复杂性
◆Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部

Spring面试:什么是Spring, 它有什么特点

Java/J2EESpring

Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。

控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。

posted @ 2011-04-28 10:55 HsiangYu 阅读(286) | 评论 (0)编辑 收藏

Hibernate工作原理及为什么要用?   
原理:     
1.读取并解析配置文件     
2.读取并解析映射信息,创建SessionFactory     
3.打开Sesssion     
4.创建事务Transation     
5.持久化操作     
6.提交事务     
7.关闭Session     
8.关闭SesstionFactory     
  
为什么要用:     
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。     
2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作     
3. hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。     
4. hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。     
  
2. Hibernate是如何延迟加载?     
1. Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)     
2. Hibernate3 提供了属性的延迟加载功能;当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。     
3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)     
类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、     
  
4. 说下Hibernate的缓存机制     
1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存     
2. 二级缓存:     
a) 应用及缓存     
b) 分布式缓存     
条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非 关键数据     
c) 第三方缓存的实现     
  
5. Hibernate的查询方式     
Sql、Criteria,object comptosition     
Hql:     
1、 属性查询     
2、 参数查询、命名参数查询     
3、 关联查询     
4、 分页查询     
5、 统计函数     
  
6. 如何优化Hibernate?     
1.使用双向一对多关联,不使用单向一对多     
2.灵活使用单向一对多关联     
3.不用一对一,用多对一取代     
4.配置对象缓存,不使用集合缓存     
5.一对多集合使用Bag,多对多集合使用Set     
6. 继承类使用显式多态     
7. 表字段要少,表关联不要怕多,有二级缓存撑腰     
  
  
7. Struts工作机制?为什么要使用Struts?     
工作机制:     
Struts的工作流程:     
在web应用启动时就会加载初始化ActionServlet,ActionServlet从     
struts-config.xml文件中读取配置信息,把它们存放到各种配置对象     
当ActionServlet接收到一个客户请求时,将执行如下流程.     
  -(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;     
  -(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;     
  -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;     
  -(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;     
  -(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;     
  -(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;     
  -(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;     
  
为什么要用:     
JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。     
基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件     
  
8. Struts的validate框架是如何验证的?     
在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。     
  
9. 说下Struts的设计模式     
MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。     
  
10. spring工作机制及为什么要用?     
1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。     
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.     
3.DispatcherServlet请请求提交到目标Controller     
4.Controller进行业务逻辑处理后,会返回一个ModelAndView     
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象     
6.视图对象负责渲染返回给客户端。     
  
为什么用:     
{AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务 (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。     
  IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。     
Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。}  

posted @ 2011-04-28 10:47 HsiangYu 阅读(198) | 评论 (0)编辑 收藏

2011年3月25日

Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行 
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
Alt+↑ 当前行和上面一行交互位置(同上)
Alt+← 前一个编辑的页面
Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)
Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性
Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)
Shift+Ctrl+Enter 在当前行插入空行(原理同上条)
Ctrl+Q 定位到最后编辑的地方
Ctrl+L 定位在某行 (对于程序超过100的人就有福音了)
Ctrl+M 最大化当前的Edit或View (再按则反之)
Ctrl+/ 注释当前行,再按则取消注释
Ctrl+O 快速显示 OutLine
Ctrl+T 快速显示当前类的继承结构
Ctrl+W 关闭当前Editer
Ctrl+K 参照选中的Word快速定位到下一个
Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)
Ctrl+/(小键盘) 折叠当前类中的所有代码
Ctrl+×(小键盘) 展开当前类中的所有代码
Ctrl+Space 代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)
Ctrl+Shift+E 显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)
Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)
Ctrl+Shift+J 反向增量查找(和上条相同,只不过是从后往前查)
Ctrl+Shift+F4 关闭所有打开的Editer
Ctrl+Shift+X 把当前选中的文本全部变味小写
Ctrl+Shift+Y 把当前选中的文本全部变为小写
Ctrl+Shift+F 格式化当前代码
Ctrl+Shift+P 定位到对于的匹配符(譬如{}) (从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)

下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)
Alt+Shift+R 重命名 (是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)
Alt+Shift+M 抽取方法 (这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Alt+Shift+L 抽取本地变量( 可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)
Alt+Shift+F 把Class中的local变量变为field变量 (比较实用的功能)
Alt+Shift+I 合并变量(可能这样说有点不妥Inline)
Alt+Shift+V 移动函数和变量(不怎么常用)
Alt+Shift+Z 重构的后悔药(Undo)

编辑
作用域 功能 快捷键 
全局 查找并替换 Ctrl+F 
文本编辑器 查找上一个 Ctrl+Shift+K 
文本编辑器 查找下一个 Ctrl+K 
全局 撤销 Ctrl+Z 
全局 复制 Ctrl+C 
全局 恢复上一个选择 Alt+Shift+↓ 
全局 剪切 Ctrl+X 
全局 快速修正 Ctrl1+1 
全局 内容辅助 Alt+/ 
全局 全部选中 Ctrl+A 
全局 删除 Delete 
全局 上下文信息 Alt+?
Alt+Shift+?
Ctrl+Shift+Space 
Java编辑器 显示工具提示描述 F2 
Java编辑器 选择封装元素 Alt+Shift+↑ 
Java编辑器 选择上一个元素 Alt+Shift+← 
Java编辑器 选择下一个元素 Alt+Shift+→ 
文本编辑器 增量查找 Ctrl+J 
文本编辑器 增量逆向查找 Ctrl+Shift+J 
全局 粘贴 Ctrl+V 
全局 重做 Ctrl+Y 

 
查看
作用域 功能 快捷键 
全局 放大 Ctrl+= 
全局 缩小 Ctrl+- 

 
窗口
作用域 功能 快捷键 
全局 激活编辑器 F12 
全局 切换编辑器 Ctrl+Shift+W 
全局 上一个编辑器 Ctrl+Shift+F6 
全局 上一个视图 Ctrl+Shift+F7 
全局 上一个透视图 Ctrl+Shift+F8 
全局 下一个编辑器 Ctrl+F6 
全局 下一个视图 Ctrl+F7 
全局 下一个透视图 Ctrl+F8 
文本编辑器 显示标尺上下文菜单 Ctrl+W 
全局 显示视图菜单 Ctrl+F10 
全局 显示系统菜单 Alt+- 

 
导航
作用域 功能 快捷键 
Java编辑器 打开结构 Ctrl+F3 
全局 打开类型 Ctrl+Shift+T 
全局 打开类型层次结构 F4 
全局 打开声明 F3 
全局 打开外部javadoc Shift+F2 
全局 打开资源 Ctrl+Shift+R 
全局 后退历史记录 Alt+← 
全局 前进历史记录 Alt+→ 
全局 上一个 Ctrl+, 
全局 下一个 Ctrl+. 
Java编辑器 显示大纲 Ctrl+O 
全局 在层次结构中打开类型 Ctrl+Shift+H 
全局 转至匹配的括号 Ctrl+Shift+P 
全局 转至上一个编辑位置 Ctrl+Q 
Java编辑器 转至上一个成员 Ctrl+Shift+↑ 
Java编辑器 转至下一个成员 Ctrl+Shift+↓ 
文本编辑器 转至行 Ctrl+L 

 
搜索
作用域 功能 快捷键 
全局 出现在文件中 Ctrl+Shift+U 
全局 打开搜索对话框 Ctrl+H 
全局 工作区中的声明 Ctrl+G 
全局 工作区中的引用 Ctrl+Shift+G 

 
文本编辑
作用域 功能 快捷键 
文本编辑器 改写切换 Insert 
文本编辑器 上滚行 Ctrl+↑ 
文本编辑器 下滚行 Ctrl+↓ 

 
文件
作用域 功能 快捷键 
全局 保存 Ctrl+X 
Ctrl+S 
全局 打印 Ctrl+P 
全局 关闭 Ctrl+F4 
全局 全部保存 Ctrl+Shift+S 
全局 全部关闭 Ctrl+Shift+F4 
全局 属性 Alt+Enter 
全局 新建 Ctrl+N 

 
项目
作用域 功能 快捷键 
全局 全部构建 Ctrl+B 

 
源代码
作用域 功能 快捷键 
Java编辑器 格式化 Ctrl+Shift+F 
Java编辑器 取消注释 Ctrl+\ 
Java编辑器 注释 Ctrl+/ 
Java编辑器 添加导入 Ctrl+Shift+M 
Java编辑器 组织导入 Ctrl+Shift+O 
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。
也可以使用Ctrl+1自动修正。 

 
运行
作用域 功能 快捷键 
全局 单步返回 F7 
全局 单步跳过 F6 
全局 单步跳入 F5 
全局 单步跳入选择 Ctrl+F5 
全局 调试上次启动 F11 
全局 继续 F8 
全局 使用过滤器单步执行 Shift+F5 
全局 添加/去除断点 Ctrl+Shift+B 
全局 显示 Ctrl+D 
全局 运行上次启动 Ctrl+F11 
全局 运行至行 Ctrl+R 
全局 执行 Ctrl+U 

 
重构
作用域 功能 快捷键 
全局 撤销重构 Alt+Shift+Z 
全局 抽取方法 Alt+Shift+M 
全局 抽取局部变量 Alt+Shift+L 
全局 内联 Alt+Shift+I 
全局 移动 Alt+Shift+V 
全局 重命名 Alt+Shift+R 
全局 重做 Alt+Shift+Y

posted @ 2011-03-25 16:56 HsiangYu 阅读(156) | 评论 (0)编辑 收藏

2011年3月21日

     摘要:     为什么要使用hibernate?举一个例子:如果你的表中有100个字段,使用JDBC去插入记录、更新记录…这是非常恐怖的。如果插入或更新记录出错了呢?一个一个字段的对?想都不敢想,如果以后数据库字段要全部添加后缀名呢!~~哇哇哇,受不了了。Ok,hibernate可以很好的解决JDBC的“漏洞”。   ...  阅读全文

posted @ 2011-03-21 20:42 HsiangYu 阅读(217) | 评论 (0)编辑 收藏

2011年3月15日

     摘要:      一、为什么要使用Struts          在之前的学习过程中,我们编写的练习程序有以下特点。 1. 使用 MVC 设计模式     1). 原则: 所有的请求...  阅读全文

posted @ 2011-03-15 22:56 HsiangYu 阅读(191) | 评论 (0)编辑 收藏

2011年3月14日

     摘要: 一、JSP自定义标签 我们知道,JSP在被访问时会被JSP引擎翻译为Servlet程序,即JSP就是Servlet程序。我们可以在JSP中插入Java代码,但是在JSP页面中使用<%...%>嵌入JAVA代码,使用页面编写起来十分混乱,更不利于以后的维护。因为,JSP自定义标签可以优雅的解决这一问题。JSTL也正是SUN为些开发的一个标签库,接下来让我们来编写自己的自定义标签。 ...  阅读全文

posted @ 2011-03-14 22:44 HsiangYu 阅读(592) | 评论 (0)编辑 收藏

2011年3月5日

     摘要: 一、Merge语句 根据条件在表中执行修改或插入数据的功能,如果插入的数据行在目的表中存在就执行UPDATE,如果是不存在则执行INSERT: -避免了单独的修改 -增强性能和应用性                 它的功能就是将,...  阅读全文

posted @ 2011-03-05 15:15 HsiangYu 阅读(223) | 评论 (0)编辑 收藏