总结

Day01:         2018-03-01:嘉美在线科技  

  1.Mybatis怎么做分页?   利用mb的拦截器,拦截每一个SQL,在需要分页的SQL加上分页的语句。首先拦截到这个SQL,判断这个SQL是否需要分页 需要的话将这个SQL转化为分页的SQL,这样的话就可以知道总页数了,然后拼上我们传入的分页数据,哪一页,每页多少条。就可以得到本页的返回了。

  2.JAVA创建对象的五种方式: NEW对象;使用class类的newInstance方法创建;使用constructor类newInstance方法创建(被class类的newInstance调用);使用clone方法,需实现cloneable接口;使用反序列化,实现serializable接口;

  3.final关键字有哪些用法:修饰类:类不能被继承;修饰方法:方法不能被重写;修饰变量:表示变量一次赋值以后值不能被修改

  4.多线程的三种方式:继承thread类;实现runnable接口,都需要实现run方法 ;实现callable接口

  5.Ajax的核心是JavaScript对象XmlHttpRequest。它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。通过XMLHttpRequest对象,Web开发人员可以在页面加载以后进行页面的局部更新。   

  AJAX最大的特点是可以实现动态不刷新(局部刷新)

  AJAX都有哪些优点和缺点?
    1、最大的一点是页面无刷新,用户的体验非常好。
    2、使用异步方式与服务器通信,具有更加迅速的响应能力。
    3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少冗余请求,和响应对服务器造成的负担。u 
    4、基于标准化的并被广泛支持的技术,不需要下载插件或者小程序。
  ajax的缺点
    1、ajax不支持浏览器back按钮。
    2、安全问题 AJAX暴露了与服务器交互的细节。
    3、对搜索引擎的支持比较弱。
    4、破坏了程序的异常机制。
    5、不容易调试。

  6.JSP九大内置对象:request;response;pageContext;session;application;out;config;page;exeption;

  7.JSP和servlet是什么关系:JSP本质上是servlet的一种简易形式,JSP更侧重于视图,servlet更侧重于控制逻辑;

  8.面向对象的三大特性:封装(把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口),继承(从已有类的得到继承信息创建新类的过程),多态(允许不同子类型对象对同一消息做出不同的响应)

  9.基本数据类型:int,short,byte,long,double,float,char,boolean 引用数据类型:类、接口类型、数组类型、枚举类型、注解类型。  

    区别:

      基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。

      引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

  10.  堆区:  一般由程序员分配释放,由 malloc 系列函数或 new 操作符分配的内存,其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束,由OS释放。其特点是使用灵活,空间比较大,但容易出错  

    栈区: 由编译器自动分配释放,保存局部变量,栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限

  11.构造器不能被继承,因为不能被重写,但可以被重载

  12.String类不可被继承

  13.String,stringbuffer,stringbuilder的区别;他们都可以存储和操作字符串,string是只读字符串,stringbuffer线程安全,stringbuilder效率高

  14.重载(发生在一个类里,同名的方法会不同的参数列表)和重写(子类父类之间,返回类型于父类相同,不能比父类被重写的方法声明更多的异常)的区别:他们都是实现多态的方式,重载是编译时多态性,重写是运行时多态性。

   15.JVM加载class文件的原理机制

  Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的类。

      Java类的加载是动态的,它并不会一次性将所有类全部加载后再运行,而是保证程序运行的基础类(像是基类)完全加载到jvm中,至于其他类,则在需要的时候才加载。这当然就是为了节省内存开销。

     Java的类加载器有三个,对应Java的三种类:

     Bootstrap Loader  // 负责加载系统类 (指的是内置类,像是String,对应于C#中的System类和C/C++标准库中的类)
            | 
          - - ExtClassLoader   // 负责加载扩展类(就是继承类和实现类)
                          | 
                      - - AppClassLoader   // 负责加载应用类(程序员自定义的类)

      三个加载器各自完成自己的工作,但它们是如何协调工作呢?哪一个类该由哪个类加载器完成呢?为了解决这个问题,Java采用了委托模型机制。

      委托模型机制的工作原理很简单:当类加载器需要加载类的时候,先请示其Parent(即上一层加载器)在其搜索路径载入,如果找不到,才在自己的搜索路径搜索该类。这样的顺序其实就是加载器层次上自顶而下的搜索,因为加载器必须保证基础类的加载。之所以是这种机制,还有一个安全上的考虑:如果某人将一个恶意的基础类加载到jvm,委托模型机制会搜索其父类加载器,显然是不可能找到的,自然就不会将该类加载进来。     

原理机制非常简单,就是下面几个步骤:

1.装载:查找和导入class文件;

2.连接:

      (1)检查:检查载入的class文件数据的正确性;

      (2)准备:为类的静态变量分配存储空间;

      (3)解析:将符号引用转换成直接引用(这一步是可选的)

3.初始化:初始化静态变量,静态代码块。

      这样的过程在程序调用类的静态成员的时候开始执行,所以静态方法main()才会成为一般程序的入口方法。类的构造器也会引发该动作。

  16.抽象类(抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板)和接口(接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情)的区别:

  第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
  第二点. 接口可以多继承,抽象类不行
  第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。
  第四点. 接口中基本数据类型为static 而抽类象不是的。

当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。

  17.JAVA内存泄露:理论上垃圾回收机制不会存在内存泄露问题,但在实际开发中,有可能会存在无用但可达的对象,这些对象不能被GC回收就会造成泄露问题。例如hibernate的session(一级缓存)中的对象属于持久态,GC不会回收这些,然而要是这些对象有无用的垃圾对象。如果不及时清空或关闭一级缓存就有可能会造成内存泄露。  

  18.

原文地址:https://www.cnblogs.com/gyc1996/p/8490557.html