`

面试题总结

 
阅读更多

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、页面使用过哪些标签

分享到:
评论

相关推荐

    阿里 面试题 总结

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

    机构应届毕业生-java企业面试题总结

    机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----java企业面试题总结机构应届毕业生----...

    2019年_BATJ大厂面试题总结.7z

    《2019年BATJ大厂面试题总结》是一份综合性的Java互联网核心资料,主要针对准备在大型互联网公司(如百度、阿里巴巴、腾讯、京东等,简称BATJ)求职的开发者。这份资料旨在帮助求职者掌握必备的Java基础知识和架构...

    牛客大数据面试题集锦+答案,共523道,46W+字 面试题总结一网打尽

    面试题总结是一个长期工作,面试不停,这份面试题总结就不会停。以后会慢慢把Java相关的面试题、计算机网络等都加进来,其实这不仅仅是一份面试题,更是一份面试参考,让你熟悉面试题各种提问情况,当然,项目部分,...

    【大厂面试题总结】JavaSE面试题总结详细教程

    【大厂面试题总结】JavaSE面试题总结详细教程: 目录: 递归算法之输出某个目录下所有文件和子目录列表 泛型中extends和super的区别 内部类的理解 深入理解Java的反射机制 深入理解Java异常体系 谈谈NIO的理解 谈一...

    java面试题总结资料

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

    java面试题总结 下载

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

    分布式面试题总结总结总结总结

    "分布式面试题总结" 本资源总结了分布式面试题的知识点,涵盖了分布式系统的基础概念、集群、分布式、SOA、微服务的概念及区别、CAP 理论、BASE 理论、数据一致性模型等。 一、分布式系统基础概念 分布式系统是指...

    android常见面试题总结

    以下是对"android常见面试题总结"的详尽解析,涵盖了核心概念、系统架构、UI设计、性能优化等多个方面。 一、Android基础知识 Android是一个开源的操作系统,基于Linux内核,主要用于移动设备。面试中常问的基础...

    2022护网面试题总结

    2022护网面试题总结

    Unity3d 面试题 总结

    Unity3d 面试题总结 Unity3d 作为一个功能强大且广泛应用的游戏引擎,在面试中,常常会被问到一些基础知识和高频问题。本文总结了一些 Unity3d 高频面试题目,涵盖了渲染管道、内存优化、协同程序、插件、碰撞器、...

    华为java面试题总结

    【华为Java面试题总结】 在Java开发者的眼中,华为无疑是中国IT行业的巨头,其面试流程严谨,技术要求高。这份“华为Java面试题总结”旨在为准备进入华为的Java工程师提供一些关键知识点的梳理和复习指导。以下是对...

    2023最新前端面试题总结

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

    百度面试题总结

    "百度面试题总结"这个资料包很可能包含了百度在招聘过程中对C++程序员的考察点,帮助应聘者更好地准备面试。 C++的基础知识点包括: 1. **基本语法**:C++的基础始于了解变量、数据类型、运算符、流程控制(如if...

    C语言面试题总结

    C语言面试题总结,内容很详细,而且还有答案,很好的面试资料!

    面试题总结.xmind

    面试题总结.xmind

    阿里面试题总结

    根据给定文件的信息,我们可以将其中涉及的知识点归纳总结如下: ### 一、项目经验 - **面试官关注点**:面试者对于自己所参与项目的理解程度,包括项目的背景、功能、技术...希望以上总结能够帮助你更好地准备面试。

    【大厂面试题总结】JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释

    【大厂面试题总结】JavaSE面试题合集及其答案,基本包括javaSE所有知识点和详细解释 。 JavaSE面试题总结详细教程: 目录: 递归算法之输出某个目录下所有文件和子目录列表 泛型中extends和super的区别 内部类的理解...

    面试题总结实用.pdf

    在面试题总结实用.pdf文件中,提出了实现atoi()函数的问题,这是C++标准库函数用于字符串转整数的函数,但标准库函数的使用通常不作为面试的重点,面试官更倾向于考核应聘者能否自行实现这一功能。 在提供的答案中...

    Linux驱动面试题总结

    Linux驱动面试题总结涉及的知识点 Linux操作系统是当今世界上使用最广泛的开源操作系统之一,它在服务器、嵌入式设备和个人计算机等多个领域都有广泛的应用。Linux驱动程序的开发是操作系统领域的核心技术之一,...

Global site tag (gtag.js) - Google Analytics