zoukankan      html  css  js  c++  java
  • 基础概念4

    1、加载驱动方法              2016-09-20

    1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");      调用方法 Class.forName
    2. DriverManager.registerDriver(new com.mysql.jdbc.Driver());            通过registerDriver方法注册

    3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");                             通过添加系统的jdbc.drivers属性

    2、接口中的数据类型和方法类型

    publicinterfaceIService {

                  String NAME="default";

         }   的默认数据类型等价于:public static final  String NAME=“default” ;

    接口中的变量默认是public static final 的,方法默认是public abstract 的

     

    3、equals和==的区别:

    public class Test{ 
        public String name="abc"; 
        public static void main(String[] args){ 
            Test test=new Test(); 
            Test testB=new Test(); 
            System.out.println(test.equals(testB)+","+test.name.equals(testB.name)); 
        } 
    }
    
    输出为:false和true
     
    解析:equals没重写时候和==一样,比较的是对象的地址,题中new 了两个对象,所以各自地址不一样,使用equals比较为false,但是string类型中的equals方法Java默认重写了,可以比较对象里的值;两个对象指向的同一个string成员变量里的值相同,所以eqauals比较也相同。
    即equals方法没重写之前也是比较地址,重写之后可以比较值是否相等。

     4、Java虚拟机JVM的功能:

    (1)通过 ClassLoader 寻找和装载 class 文件
    (2)解释字节码成为指令并执行,提供 class 文件的运行环境
    (3)进行运行期间垃圾回收
    (4)提供与硬件交互的平台

     

     

     

    5、会话跟踪技术:

    (1)Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端
    (2)关闭浏览器意味着会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期
    (3)在禁用Cookie时可以使用URL重写技术跟踪会话

    6、java 类加载器

    (1)引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
    (2)扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。
    (3)系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
    (4)tomcat 为每个 App 创建一个 Loader,里面保存着此 WebApp 的 ClassLoader。需要加载 WebApp 下的类时,就取出 ClassLoader 来使用

    7、以下代码输出结果为:(C)

    <span style="font-size:14px;">int i = 5;
    int j = 10;
    System.out.println(i + ~j);</span>

    A      Compilation error because”~”doesn’t operate on integers
    B      -5
    C      -6
    D     15

    解析:很有趣的一个符号,以前没有见过。。。。。。      涉及到补码等知识,公式:~j=-j-1

    8、标准输入输出流:

             一般用(System.in)创建InputStream对象,表示从标准输入中获取数据,用(System.out)创建OutputStream对象,表示输出到标准输出设备中。

    9、关于运算时的类型问题:

    byte b1=1,b2=2,b3,b6; 
    final byte b4=4,b5=6; 
    b6=b4+b5; 
    b3=(b1+b2); 
    System.out.println(b3+b6);


    以上的代码片段叙述正确的为(C)

    A       输出结果:13
    B      语句:b6=b4+b5编译出错
    C      语句:b3=b1+b2编译出错
    D      运行期抛出异常

    解析:

          被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了
    而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换
    Java中的byte,short,char进行计算时都会提升为int类型。

    10、HashMap解决哈希冲突的方法:

    HashMap通过开放地址法解决哈希冲突     

    解析:

            源码程序中用到了一个重要的内部接口:Map.Entry,每个 Map.Entry 其实就是一个 key-value 对。当系统决定存储 HashMap 中的 key-value 对时,完全没有考虑 Entry 中的 value,仅仅只是根据 key 来计算并决定每个 Entry 的存储位置。Entry是数组,数组中的每个元素上挂这个一条链表。
           链表法就是将相同hash值的对象组织成一个链表放在hash值对应的槽位;开放地址法是通过一个探测算法,当某个槽位已经被占据的情况下继续查找下一个可以使用的槽位。很显然我们使用的不是开放地址法。

     11、并发与并行的区别与联系:

           并发:在 操作系统 中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个 处理机 上运行。

           并行:在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特性;在多处理器系统中,进程不仅可以交替执行,而且可以重叠执行。在多处理器上的程序才可实现并行处理。从而可知,并行是针对多处理器而言的。并行是同时发生的多个并发事件,具有并发的含义,但并发不一定并行,也亦是说并发事件之间不一定要同一时刻发生。

    12、Struts1和Struts2的区别:

    从action类上分析:
    1.Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。 
    2. Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action对象。
    从Servlet 依赖分析: 
    3. Struts1 Action 依赖于Servlet API ,因为当一个Action被调用时HttpServletRequest 和 HttpServletResponse 被传递给execute方法。 
    4. Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试。如果需要,Struts2 Action仍然可以访问初始的request和response。但是,其他的元素减少或者消除了直接访问HttpServetRequest 和 HttpServletResponse的必要性。
    从action线程模式分析: 
    5. Struts1 Action是单例模式并且必须是线程安全的,因为仅有Action的一个实例来处理所有的请求。单例策略限制了Struts1 Action能作的事,并且要在开发时特别小心。Action资源必须是线程安全的或同步的。 
    6. Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题。(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)

    13、非线性数据结构和线性数据结构:             2016-10-07

    数据的逻辑结构分为线性结构和非线性结构。
    常用的线性结构有:线性表,栈,队列,双队列,数组,串。

    常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等),图。

     14、8中基本数据类型的默认初始值                    2016-10-08

     15、Java标识符:              2016-10-10

    标识符:
        用来表示变量名,方法名,类名,数组名和文件名的有效字符序列。
        也就是说,任何一个变量,常量,方法,对象和类都需要有名字,这些名字就是标识符。
    规定如下:
    (1)标识符可以由数字、字母、下划线或美元符号等组合而成。
    (2)必须以字母、下划线或者美元符号开头,不能以数字开头路。

    16、静态static方法竟然可以这么玩。。。

    以下程序能正确输出。

    public class TestClass {
       private static void testMethod(){
            System.out.println("testMethod");
       }
       public static void main(String[] args) {
            ((TestClass)null).testMethod();
       }
    }

    若testMethod( )方法为非静态方法,则报错:空指针异常。。。

     

     

     

     17、Java初始化顺序:                    10-12

    初始化过程: 
    1. 初始化父类中的静态成员变量和静态代码块 ; 
    2. 初始化子类中的静态成员变量和静态代码块 ; 
    3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
    4.初始化子类的普通成员变量和代码块,再执行子类的构造方法; 

     

     

     

    18、Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。

    (1)加载:容器通过类加载器使用servlet类对应的文件加载servlet
    (2)创建:通过调用servlet构造函数创建一个servlet对象
    (3)初始化:调用init方法初始化
    (4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求
    (5)卸载:调用destroy方法让servlet自己释放其占用的资源

     

     

     19、Java中的异常相关概念:            10-15

    throw用于在方法内抛出异常对象

    throws关键字用于在方法上抛出异常

    try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。

    finally语句块是不管有没有出现异常都要执行的内容。


     

    20、静态内部类和非静态内部类创建对象的区别:    10-17

     

  • 相关阅读:
    webpack的入门实践,看这篇就够了
    vue系列教程-15vuex的使用
    vue系列教程-14axios的使用
    vue系列教程-13vuecli初体验
    vue系列教程-12vue单文件组件开发
    vue系列教程-11vuerouter路由
    vue系列教程-10vue过滤器和自定义指令
    vue系列教程-09vue组件
    Spring Redis开启事务支持错误用法导致服务不可用
    MySQL主从数据库配置与原理
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6467268.html
Copyright © 2011-2022 走看看