最近准备跳槽,又要好好复习基本知识了。过了个年,前面刚接触的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;
  }
……
}

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

Java知识复习(四)的更多相关文章

  1. Java基础复习(四)

    1.Integer与int的区别 int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默 ...

  2. 测试必备之Java知识(四)—— 线程相关

    线程相关 Java多线程实现方式 继承Thread,实现Runnable接口,实现Callable接口(能抛异常且有返回值,不常用) 为什么有了继承Thread方式还要有Runnable接口方式 实现 ...

  3. Java知识复习(三)

    Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?用contains来区分是否有重复的对象.还是都不用. 在比较时先调用hashCode方法, ...

  4. Java知识复习(二)

    如何格式化日期? SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date dat=new Da ...

  5. Java知识复习(一)

    Java面向对象的三大特性: 封装.继承.多态. super()与this()的区别? This():当前类的实例,一个类,如果继承了父类,那么通过this既可以访问当前类的属性和方法,也可以访问父类 ...

  6. Java知识复习回顾

    1.MVC 三层架构: M:Model 数据模型层 V:View 视图层 C:Controller控制器层 目的:解耦 2.Spring Spring:轻量级的Java开源框架,容器,目的是解决企业级 ...

  7. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  8. 九天学会Java,第四天,循环结构

    变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 这次我们讲Java的循环结构.循环结构在编程中广泛使 ...

  9. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

随机推荐

  1. Python数模笔记-Sklearn(5)支持向量机

    支持向量机(Support vector machine, SVM)是一种二分类模型,是按有监督学习方式对数据进行二元分类的广义线性分类器. 支持向量机经常应用于模式识别问题,如人像识别.文本分类.手 ...

  2. IOCP实现高并发以及与传统socke编程的对比

    前言 传统socket编程中服务端一般为每一个客户端创建一个线程(一对一).这样虽然可以使程序的结构简单明了并且方便对数据处理,但是这些都是建立在创建多个线程的基础上,也就是以牺牲线程为代价.一旦有大 ...

  3. Docker镜像讲解

    Docker镜像讲解 镜像是什么 镜像是一种轻量级的,可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件做需要的所有的内容,包括代码,运行时,库,环境变量和配置文件. ...

  4. TypeScript 中 Optional Chaining 和 Nullish Coalescing

    Optional Chaining 解决的问题是重复且无意义的判空,之所以说无意义,是对业务来说它不是必需的,但不判空,程序直接就挂了,比如: let x = foo.bar.baz();   这里的 ...

  5. jQ的显式迭代和隐式迭代

    jQ的显示迭代 隐式迭代 let lis = document.querySelector('li') lis.forEach(function (value, index) { value.styl ...

  6. openshift 3.11 安装部署

    openshift 3.11 安装部署 openshift安装部署 1 环境准备(所有节点) openshift 版本 v3.11 1.1 机器环境 ip cpu mem hostname OSsys ...

  7. 有没有一种组合字体,中文是宋体,英文是times new roman?

    有没有一种组合字体,中文是宋体,英文是times new roman? 由于日常科研工作书写需要,想问问各位大神有没有一种字体,中文是宋体,西文是times new roman,这样写论文好方便啊有没 ...

  8. 华为鲲鹏处理器实现商用,Arm服务器又添砝码

    华为鲲鹏处理器实现商用,Arm服务器又添砝码 鲲鹏920就是华为海思1620 鲲鹏920面向 服务器CPU就是 华为海思162064core 武汉华为PC不是海思1620是另一个cpu 深圳华为PC的 ...

  9. 统计行数、文件夹个数、文件个数的相关shell命令

    极客君最近做项目,刚好遇到需要统计一些sql文件数量的问题,用到一些实用的shell命令,记录下来,以后万一还能用上呢? 如果在终端不打开文件看到一共多少行,则可以使用wc命令来实现: wc -l [ ...

  10. Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)

    1.简介 千呼万唤始出来,这一篇感觉写了好久,总想写的清楚明白简洁,但是还是洋洋洒洒写了好多,希望大家喜欢吧!本来打算将这一篇文章是放在性能测试中讲解和分享的,但是有的童鞋或者小伙伴们私下问的太多了, ...