zoukankan      html  css  js  c++  java
  • Java知识复习(四)

    最近准备跳槽,又要好好复习基本知识了。过了个年,前面刚接触的springboot也只能先放放了。就先把自己复习了哪些罗列出来吧。

    Set里的元素是不能重复的那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?contains来区分是否有重复的对象。还是都不用。

    在比较时先调用hashCode方法,如果不相同,证明不相等。

    如果相同,再调用equals方法,如果equals方法相同,证明相等,不相同,证明不相等。

    ==:主要用在基本数据类型及引用

    Equals:主要是对象或对象引用的比较。

    集合中是否包含某一个元素用contains来判断。

    sleep() 和 wait() 有什么区别?

    — 拥有对象不同 

    — wait可以释放对象锁,sleep保留对象锁 

    — wait可以是任意对象来调用,sleep只能当前线程调用 

    — wait可以通过notify随时唤醒,sleep只能等待设定时间结束后自然唤醒,否则将引发异常 

    — wait必须在同步方法或同步块中进行调用,sleep可以在任意位置调用

    JSP的九大内置对象及方法

    Request  request表示HttpServletRequest对象。取客户端表单域信息及cookie, header, 和session

    response response表示HttpServletResponse对象,对客户端的响应返回文本、写cookies。

    out out 向客户端打印html文本.

    pageContext :当前jsp页面的上下文环境,可以得到session、request、application等内置对象,在自定义标签中使用的很多。

    session session表示一个请求的javax.servlet.http.HttpSession对象。Session一个用户多个页面共享同一变量。

    application applicaton 表示一个javax.servle.ServletContext对象。存放容器级的变量。

    config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。

    page page表示从该页面产生的一个servlet实例

    exception:异常,当iserrorpage=true表示为发生异常时显示的页面,正常页面中<%@page erropage="error.jsp"%>来指定发生异常跳转到哪个异常页面

    jdbc、hibernate、ibatis的区别

    jdbc:手动

    手动写sql

    delete、insert、update要将对象的值一个一个取出传到sql中,不能直接传入一个对象。

    select:返回的是一个resultset,要从ResultSet中一行一行、一个字段一个字段的取出,然后封装到一个对象中,不直接返回一个对象。

    ibatis的特点:半自动化

    sql要手动写

    delete、insert、update:直接传入一个对象

    select:直接返回一个对象

    hibernate:全自动

    不写sql,自动封装

    delete、insert、update:直接传入一个对象

    select:直接返回一个对象

    spring中的核心类有那些,各有什么作用?

    BeanFactory:产生一个新的实例,可以实现单例模式

    BeanWrapper:提供统一的get及set方法

    ApplicationContext:提供框架的实现,包括BeanFactory的所有功能

    Spring的 IOC和AOP指的是什么?

    IOC ,全称 (Inverse Of Control) ,中文意思为:控制反转, Spring 框架的核心基于控制反转原理。 
    控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术。 
    由容器控制程序之间的关系,而不是由代码直接控制 

    由于控制权由代码转向了容器,所以称为反转 

    AOP面向切面编程(AOP是Aspect Oriented Program的首字母缩写),就是一种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。

    Spring IOC的三种注入方式

    1.    接口注入

    2.    getter,setter方式注入

    3.    构造器注入

    1.接口注入

    public class ClassA {
      private InterfaceB clzB;
      public void doSomething() {
        Ojbect obj = Class.forName(Config.BImplementation).newInstance();
        clzB = (InterfaceB)obj;
        clzB.doIt(); 
      }
    ……
    }

    上面代码中,ClassA依赖于InterfaceB的实现,如何获得InterfaceB实现类的实例?传统的方法是在代码中创建 InterfaceB实现类的实例,并将赋予clzB.这样一来,ClassA在编译期即依赖于InterfaceB的实现.为了将调用者与实现者在编译 期分离,于是有了上面的代码.
    我们根据预先在配置文件中设定的实现类的类名(Config.BImplementation),动态加载实现类,并通过InterfaceB强制转型后为ClassA所用,这就是接口注入的一个最原始的雏形.

    public class ClassA {
      private InterfaceB clzB;
      public Object doSomething(InterfaceB b) {
        clzB = b;
        return clzB.doIt();
      }
    ……
    }

    上面代码中,加载接口实现并创建其实例的工作由容器完成.
    在运行期,InterfaceB实例将由容器提供.即使在IOC的概念尚未确立时,这样的方法也已经频繁出现在我们的代码中.

    public class MyServlet extends HttpServlet {
      public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
        ……
      }
    }

    HttpServletRequest和HttpServletResponse实例由Servlet Container在运行期动态注入.

    2.Setter设置注入
    基于设置模式的依赖注入机制更加直观,也更加自然.

    public class ClassA {
      private InterfaceB clzB;
      public void setClzB(InterfaceB clzB) {
        this.clzB = clzB;
      }
    ……
    }

    3.构造器注入

    public class DIByConstructor {
      private final DataSource dataSource;
      public DIByConstructor(DataSource ds) {
        this.dataSource = ds;
      }
    ……
    }

    构造器注入,即通过构造函数完成依赖关系的设定,容器通过调用类的构造方法将其所需的依赖关系注入其中.

  • 相关阅读:
    Using Repository and Unit of Work patterns with Entity Framework 4.0
    Accessing Your Model's Data from a Controller
    ASP.NET MVC 3 Internationalization
    Test your ASP.NET MVC or WebForms Application on IIS 7 in 30 seconds
    定时执行Web测试
    对包含HttpContext.Current.Cache的代码进行单元测试
    ASP.NET MVC判断基于Cookie的Session过期
    Selenium testing Iframe
    [Tips]: ASP.NET MVC得到controller的名字
    [Tips]:"RemoteOperationException: ERROR: wrong password for user" with Oracle 10g
  • 原文地址:https://www.cnblogs.com/timePasser-leoli/p/8480108.html
Copyright © 2011-2022 走看看