`

面试题总结

 
阅读更多

1struts1struts2的区别,两者配置文件的区别,运行原理

struts1struts2的区别

1).Action实现类的对比:Struts1要求Action类继承一个抽象基类;Struts2Action类可以实现一个Action接口,也可以实现其他接口,增加了可扩展性。Struts2提供了一个ActionSupport基类去实现常用的接口,也就是Action接口可实现,可不实现

2).Servlet依赖的对比:Struts1 Action依赖于Servlet API,因为execute方法中有HttpServletRequestHttpServletRosposeStruts2不依赖Servlet API

3).封装请求参数对比:Struts1使用ActionForm对象封装用户的请求参数,ActionForm必须继承一个ActionForm基类,普通的JavaBean不能作为ActionForm Struts2可以直接使用Action的属性来封装用户请求参数,同时Struts2也提供了ModelDriven模式,可以使用Model对象来封装用户请求,但是该Model无需继承任何Struts2基类

4).表达式语言:Struts1能使用JSTLStruts2除了可以使用JSTL,还可以使用OGNL(Object Graph Notation Language)

5).绑定值到视图的对比:Struts1使用了标准的JSP机制把对象绑定到视图页面;Struts2使用了“ValueStack”值栈的技术,使标签库能够访问值,而不用把对象和视图绑定在一起

6).数据校验对比:Struts1 可以在ActionForm中重写validate方法,也能通过Commonsvalidate框架。Struts2也可以重写validate方法,同时还可以用Xwork框架

struts1struts2配置文件的区别

1).Struts1配置文件是struts-config.xml根标签也是struts-config,而Struts2的配置文件是struts.xml根标签是strutsweb.xmlStruts1的配置是使用的servlet的配置方式

    <servlet>

       <servlet-name>action</servlet-name>

       <servlet-class>

           org.apache.struts.action.ActionServlet

       </servlet-class>

       <init-param>

           <param-name>config</param-name>

           <param-value>/WEB-INF/struts-config.xml</param-value>

       </init-param>

       <load-on-startup>10load-on-startup>

</servlet>

    <servlet-mapping>

       <servlet-name>action</servlet-name>

       <url-pattern>*.do</url-pattern>

</servlet-mapping>

2).Struts1需要配Formbean实现数据映射传输,使用ActionMapping的方式将对象和视图映射起来。Struts2使用的值栈技术, 使标签库能够访问值。web.xmlStruts2的配置使用拦截器FilterDispatcher

  <filter>

    <filter-name>struts2</filter-name>

    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

  </filter>

  <filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

运行原理

Struts1

1).客户端发送请求(Http Request),被struts1的核心控件器ActionServlet接收,并根据配置决定是否进行表单验证,如果需要则调用ActionFormvalidate方法

2).表单验证成功,ActionServlet根据struts-config.xml里的ActionMapping 映射关系找到对应的Action,若找不到就返回500错误到JSP页面;若有,则调用Action里的 excute()方法

3).Action里的 excute()方法返回一个ActionForward对象,ActionServlet把用户请求转发给ActionForwar对象指向的jsp组件

4).jsp组件生成动态的页面

Struts2:

1).户端初始化一个指向Servlet容器(例如Tomcat)的请求; 
2).
经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin 
3).FilterDispatcher
被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 
4
如果ActionMapper决定需要调用某个ActionFilterDispatcher把请求的处理交给ActionProxy 
5 ActionProxy
通过Configuration Manager访问框架的配置文件,找到需要调用的Action 
6 ActionProxy
创建一个ActionInvocation的实例。 
7 ActionInvocation
实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 
8
一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 

2web.xml配置strutsspring的代码还有hibernate

   Struts1:

   <servlet>

       <servlet-name>action</servlet-name>

       <servlet-class>

           org.apache.struts.action.ActionServlet

       </servlet-class>

       <init-param>

           <param-name>config</param-name>

           <param-value>/WEB-INF/struts-config.xml</param-value>

       </init-param>

       <load-on-startup>10load-on-startup>

</servlet>

    <servlet-mapping>

       <servlet-name>action</servlet-name>

       <url-pattern>*.do</url-pattern>

</servlet-mapping>

  Struts2:

  <filter>

    <filter-name>struts2</filter-name>

    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

  </filter>

  <filter-mapping>

    <filter-name>struts2</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

  Spring:

  <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>classpath:applicationContext.xml</param-value>

  </context-param>

  <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 

  </listener>

  Hibernate:可以通过Spring整合

 <filter>
  <filter-name>OpenSessionInViewFilter</filter-name>
  <filter-class>
   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
  </filter-class>
  <init-param>
   <param-name>singleSession</param-name>
   <param-value>true</param-value>
  </init-param>
 </filter>

3springioc特征,springaop是怎么配置和实现的

IOCInversion of Control)就控制反转,意味着将你设计的类交给系统去控制,而不是在类的内部控制 ,说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。 
    DI
Dependency Injection,依赖注入):说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。 

AOP的配置如下: ApplicationContext.xml

<!--[if !supportLists]-->1.          <!--[endif]--><aop:config>  

<!--[if !supportLists]-->2.          <!--[endif]-->        <aop:aspect id="TestAspect" ref="aspectBean">  

<!--[if !supportLists]-->3.          <!--[endif]-->            <!--配置com.spring.service包下所有类或接口的所有方法-->  

<!--[if !supportLists]-->4.          <!--[endif]-->            <aop:pointcut id="businessService"  

<!--[if !supportLists]-->5.          <!--[endif]-->                expression="execution(* com.spring.service.*.*(..))" />  

<!--[if !supportLists]-->6.          <!--[endif]-->            <aop:before pointcut-ref="businessService" method="doBefore"/>  

<!--[if !supportLists]-->7.          <!--[endif]-->            <aop:after pointcut-ref="businessService" method="doAfter"/>  

<!--[if !supportLists]-->8.          <!--[endif]-->            <aop:around pointcut-ref="businessService" method="doAround"/>  

<!--[if !supportLists]-->9.          <!--[endif]-->            <aop:after-throwing pointcut-ref="businessService" method="doThrowing" throwing="ex"/>  

<!--[if !supportLists]-->10.       <!--[endif]-->        </aop:aspect>  

<!--[if !supportLists]-->11.       <!--[endif]-->    </aop:config>  

<!--[if !supportLists]-->12.       <!--[endif]-->      

<!--[if !supportLists]-->13.       <!--[endif]-->    <bean id="aspectBean" class="com.spring.aop.TestAspect" />  

<!--[if !supportLists]-->14.       <!--[endif]-->    <bean id="aService" class="com.spring.service.AServiceImpl"></bean>  

<!--[if !supportLists]-->15.       <!--[endif]-->    <bean id="bService" class="com.spring.service.BServiceImpl"></bean>  

 

4xml解析   

四种方式:SAXDOMJDOMDOM4J

SAX

SAX处理机制:SAX是一种基于事件驱动的API。利用SAX解析XML文档,牵涉到两个部分:解析器和事件处理器。解析器负责读取XML文档,并向事件处理器发生事件,如元素开始和元素结束事件;而事件处理器则负责对事件做出响应,对传递的XML数据进行处理。

DOM

DOM中的核心概念就是节点。DOM在分析XML文档时,将将组成XML文档的各个部分(元素、属性、文本、注释、处理指令等)映射为一个对象(节点)。在内存中,这些节点形成一课文档树。整棵树是一个节点,树中的每一个节点也是一棵树(子树),可以说,DOM就是对这棵树的一个对象描述,我们通过访问树中的节点来存取XML文档的内容。
PS:属性节点是附属于元素的,不能被看做是元素的子节点,更不能作为一个单独的节点

JDOM

JDOM利用了java语言的优秀特性,极大地简化了对XML文档的处理,相比DOM简单易用。JDOM也使用对象树来表示XML文档,JDOM使用SAXj解析器来分析XML文档,构建JDOM树。然而JOMD本身并没有提供解析器,它使用其他开发商提供的标准SAX解析器,JDOM默认通过JAXP来选择解析器,可以通过手动知道解析器的类名来设置。

首先要在工程中添加jdomjar包,这里使用jdom1.0.jar(见附件)

DOM4J:

dom4jJDOM一样,也是一种用于解析XML文档的开放源代码的XML框架,dom4j也应用于java平台,dom4j API使用了java集合框架并完全支持DOMSAXJAXP。与JDOM不同的是,dom4j使用接口和抽象类,虽然dom4jAPI相对复杂些,但它提供了比JDOM更好的灵活性。dom4j也使用SAX解析器来分析XML文档,创建dom4j树。此外dom4j也可以接收DOM格式的内容,并提供了从dom4j树到SAX事件流或W3C DOM树的输出机制。与JDOM不同,dom4j自带了一个SAX解析器Aelfred2,如果没有显示的设置SAX解析器,也没有通过系统属性org.xml.sax.driver设置解析器,dom3j将会使用JAXP来加载JAXP配置的解析器,如果创建解析器失败,那么最后才使用dom4j自带的Aelfred2解析器。
同样,首先要在工程中添加dom4jjar包,这里使用dom4j-1.6.1.jar(见附件)

5oracle登陆命令、导出命令以及其他常用命令

   conn scott/tiger@db_tom; 登陆

   select t.table_name from user_tables t; 查看用户下的表

“exp scott/tiger@db_tom file=D:\exp_fulldb_yyyymmdd.dmp

log=D:\exp_fulldb_yyyymmdd.log”

scott/tiger”表示企业总机数据库用户名/密码,@db_tom表示配置的数据库实例名称,“file=D:\exp_fulldb_yyyymmdd.dmp”表示备份文件所存放的路径和名称,“log=D:\exp_fulldb_yyyymmdd.log”表示日志文件存放的路径和名称。具体详细信息请输入“exp -help”查看。     导出数据库

6webservice实现方法,axis和?他们实现是遵循的什么协议?soap是什么?wsdl是什么?服务端是怎么运行的

   WebserviceAxisXfire

协议:HTTP-GETHTTP-POSTSOAPSimple Object Access Protocol)简单对象访问协议
   WSDL:(Web Services Description LanguageWeb服务描述语言.

7oracle游标的使用

   显式游标 

    当查询返回结果超过一行时,就需要一个显式游标,此时用户不能使用select into语句。PL/SQL管理隐式游标,当查询开始时隐式游标打开,查询结束时隐式游标自动关闭。显式游标在PL/SQL块的声明部分声明,在执行部分或异常处理部分打开,取数据,关闭。 

    使用游标 

    这里要做一个声明,我们所说的游标通常是指显式游标,因此从现在起没有特别指明的情况,我们所说的游标都是指显式游标。要在程序中使用游标,必须首先声明游标。 

CURSOR CR_EMP IS SELECT empno,ename,salary FROM emp WHERE salary>2000;

CURSOR CR_EMP(p_salary int) IS

SELECT empno,ename,salary

FROM emp

WHERE salary> p_salary;

 

OPEN CR_EMP(2000);
     FETCH
CR_EMP
         INTO v_
empno, v_ename, v_salary;
     WHILE
CR_EMP%FOUND LOOP
         v_
empnos   := v_empnos || v_empno || '-';
         v_
enames   := v_enames || v_ename || '-';
         v_
salarys  := v_salarys || v_salary || '-';
         FETCH
CR_EMP
              INTO v_
empno, v_ename, v_salary;
     END LOOP;
     CLOSE
CR_EMP;

 

8连接池,程序连接池、服务连接池

程序连接池:

dbcp方式的jndi连接池

c3p0 连接池,

proxool连接池,

 

服务连接池:

配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:

 <Resource name="jdbc/oracle"  

         auth="Container"      

         type="javax.sql.DataSource"      

         driverClassName="oracle.jdbc.driver.OracleDriver"      

         url=" jdbc:oracle:thin:@host:port:databse"      

         username=" user "      

         password="password"      

         maxActive="100"      

         maxIdle="30"      

         maxWait="10000" />  

配置你的应用下的web.xml中的之间加入

    <resource-ref>      

      <description>DB Connection</description>      

      <res-ref-name>jdbc/oracle</res-ref-name>      

      <res-type>javax.sql.DataSource</res-type>      

      <res-auth>Container</res-auth>      

</resource-ref> 

把连接数据库的第三方驱动放到common/lib下面就ok
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

9hibernate使用配置,对orm框架的理解

 <!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式-->
 
<?xml version='1.0' encoding='gb2312'?>
<!--表明解析本XML文件的DTD文档位置,DTDDocument Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性。hibernate.sourceforge.net/hibernate-configuration-3.0dtd可以在Hibernate3.1.3软件包中的src/org/hibernate目录中找到此文件-->
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

    <!--
声明Hibernate配置文件的开始-->      
  
  <hibernate-configuration>
    <!--
表明以下的配置是针对session-factory配置的,SessionFactoryHibernate中的一个类,这个类主要负责保存HIbernate的配置信息,以及对Session的操作-->
 
      <session-factory>    
      <!--配置数据库的驱动程序,Hibernate在连接数据库时,需要用到数据库的驱动程序-->
          
 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
       <!--
设置数据库的连接url:jdbc:mysql://localhost/hibernate,其中localhost表示mysql服务器名称,此处为本机,     hibernate是数据库名-->  
            
<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</hibernate>
    <!--
连接数据库是用户名-->
 
          <property name="hibernate.connection.username">root</property> 
          <!--
连接数据库是密码-->
       
    <property name="hibernate.connection.password">123456</property>         
          <!--
数据库连接池的大小-->
         
  <property name="hibernate.connection.pool.size">20</property>        
         <!--
是否在后台显示Hibernate用到的SQL语句,开发时设置为true,便于差错,程序运行时可以在Eclipse的控制台显示Hibernate的执行Sql语句。项目部署后可以设置为false,提高运行效率-->
         
<property name="hibernate.show_sql">true</property>
         <!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBCStatement中的记录条数。Fetch Size设的越大,读数据库的次数越少,速度越快,Fetch Size越小,读数据库的次数越多,速度越慢-->
         
<property name="jdbc.fetch_size">50</property>
         <!--jdbc.batch_size
是指Hibernate批量插入,删除和更新时每次操作的记录数。Batch Size越大,批量操作的向数据库发送Sql的次数越少,速度就越快,同样耗用内存就越大-->
        
 <property name="jdbc.batch_size">23</property>
         <!--jdbc.use_scrollable_resultset
是否允许HibernateJDBC的可滚动的结果集。对分页的结果集。对分页时的设置非常有帮助-->
       
  <property name="jdbc.use_scrollable_resultset">false</property>
         <!--connection.useUnicode连接数据库时是否使用Unicode编码-->
      
   <property name="Connection.useUnicode">true</property>
         <!--connection.characterEncoding连接数据库时数据的传输字符集编码方式,最好设置为gbk,用gb2312有的字符不全-->
  
  <property name="connection.characterEncoding">gbk</property>      
         
         <!--hibernate.dialect
只是Hibernate使用的数据库方言,就是要用Hibernate连接那种类型的数据库服务器。-->
      
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
         <!--指定映射文件为“hibernate/ch1/UserInfo.hbm.xml”-->         
       
    <mapping resource="org/mxg/UserInfo.hbm.xml">
  </session-factory>
  </hibernate-configuration>  

 

 

10linuxunix常用命令,比如查看硬盘,cpu等的

 查看硬盘:df(disk free)

查看CPUcat /proc/cpuinfo 显示CPU info的信息 

11、页面使用过哪些标签

分享到:
评论

相关推荐

    安卓2020面试题总结

    【安卓2020面试题总结】 在Android开发领域,面试是评估候选人技能和技术理解的重要环节。2020年的面试题集锦涵盖了各种核心概念和技术,这些知识点对于准备面试或者提升自身Android开发能力非常有帮助。以下是部分...

    c++面试题总结.zip

    这份"C++面试题总结.zip"文件显然是为准备C++职位面试者精心编排的资料集合,它涵盖了从基础到高级的诸多主题,旨在帮助程序员提升自己的技能,顺利通过大厂的选拔。下面我们将深入探讨其中可能涉及的知识点。 首先...

    Dubbo面试题总结

    【Dubbo面试题总结】 1. **Dubbo与Zookeeper的关系和故障处理** - 在Dubbo中,Zookeeper作为注册中心,它主要用于存储服务提供者的元数据信息。如果Zookeeper集群都挂掉,消费者已经从Zookeeper拉取了服务提供者的...

    Spring Boot面试题总结

    Spring Boot 面试题总结 本文对 Spring Boot 面试题进行了总结,涵盖了 Spring Boot 设计的配置文件格式、核心注解、开启 Spring Boot 特性、运行 Spring Boot 的方式、读取配置的方式、监视器、自动配置的原理、...

    阿里 面试题 总结

    阿里java后台开发面试题总结

    C++一些面试题总结.zip

    这份"C++一些面试题总结.zip"文件显然是为准备C++面试或提升C++技能的程序员精心准备的资料集。它涵盖了从基础到高级的各种知识点,旨在帮助开发者在面对大厂面试时能够得心应手。 一、C++面试常问题 C++面试通常会...

    VUE常见面试题总结篇

    VUE常见面试题总结篇 Vue.js 是一个前端JavaScript框架,用于构建用户界面和单页应用程序。以下是 Vue.js 面试题的总结: 1. Vue.js 的优点有哪些? 答案:Vue.js 的优点有轻量级框架、简单易学、双向数据绑定、...

    2023最新前端面试题总结

    "前端面试题总结" 以下是根据给定文件信息生成的相关知识点: 浏览器兼容性 在前端开发中,浏览器兼容性是一个非常重要的问题。不同的浏览器对 HTML、CSS、JavaScript 的解析和执行方式不同,这导致了同一个页面...

    mysql常见面试题总结

    mysql面试题总结如下,欢迎大家留言交流

    java面试题总结

    在Java面试中,面试官通常会考察应聘者的语法基础、数据结构与算法、多线程、集合框架、异常处理、IO流、网络编程、设计模式等多个方面的能力。以下是对这些关键知识点的详细阐述: 1. **Java语法基础**:Java的...

    面试题总结.xmind

    面试题总结.xmind

    java面试题总结 下载

    这份"java面试题总结资料"应该包含了作者精心整理的各类常见问题和解答,旨在帮助求职者更好地准备面试。 首先,让我们来看看Java基础部分。这部分通常会涉及变量、数据类型、运算符、流程控制语句、类与对象、封装...

    java面试题总结资料

    这份"java面试题总结资料"涵盖了多个Java核心领域的关键知识点,包括但不限于: 1. **基础语法**:理解基本的数据类型(如整型、浮点型、字符型和布尔型),变量的声明与使用,以及运算符的优先级。同时,要熟悉...

    Python面试题总结.pdf

    Python面试题总结知识点: 1. 单例模式的实现方法: Python中实现单例模式主要有两种方式。第一种是利用装饰器(decorator),创建一个全局的字典用于存储类的实例,并通过装饰器返回这个实例。如果在字典中不存在类...

    JAVA最新面试题总结

    本文将详细探讨Java面试中常遇到的知识点,包括Java的基础、与其他语言的比较、JVM的工作原理、Java的不同平台版本,以及JDK和JRE的区别。 首先,JavaSE(Java Platform, Standard Edition)是Java的基础,它提供了...

    前端面试题总结.docx

    前端面试题总结 在本节中,我们将总结前端面试题的知识点,涵盖 HTML、浏览器内核、JS 引擎、语义化、Doctype、H5、HTML5 新特性、Websocket 等方面。 一、浏览器内核 浏览器内核主要分成两部分:渲染引擎和 JS ...

    mysql面试题总结文本格式

    mysql面试题总结文本格式

    前端面试题总结.doc

    前端面试题总结 本文档总结了最近三年面试的经验,涵盖了从 Angular1 到 Angular2、Vue 等前端技术栈的知识点。除了框架之外,还涵盖了基础知识,包括 HTML、CSS、CSS3、一些前端的数据结构和高级 JavaScript 编程...

    蚂蚁面试题总结.doc

    【标题】:“蚂蚁面试题总结.doc” 【主要内容分析】: 面试题目涵盖了Java编程语言和Java虚拟机(JVM)在不同版本之间的变化,以及中间件的设计理念。以下是这些知识点的详细解析: 1. **JDK1.7到JDK1.8 Map的...

Global site tag (gtag.js) - Google Analytics