No.1

  • request.getAttribute()方法返回request范围内存在的对象,getAttribute是返回对象
  • 而request.getParameter()方法是获取http提交过来的数据,getParameter返回字符串。

No.2

  • CopyOnWriteArrayList适用于读多写少的并发场景
  • ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥,
    读与读之间可以并发执行。在读多写少的情况下可以提高效率
  • ConcurrentHashMap是同步的HashMap,写操作不需要加锁,读操作需要加锁
  • volatile只保证多线程操作的可见性,不保证原子性

No.3
  hashMap在单线程中使用大大提高效率,在多线程的情况下使用hashTable来确保安全。hashTable中使用synchronized关键字来实现安全机制,但是synchronized是对整张hash表进行锁定即让线程独享整张hash表,在安全同时造成了浪费。concurrentHashMap采用分段加锁的机制来确保安全。
  SimpleDateFormat对象是线程不安全的。。

No.4
Arrays.asList() :
  将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

No.5
  finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的。
  如果try语句里有return,那么代码的行为如下:

  1. 如果有返回值,就把返回值保存到局部变量中
  2. 执行jsr指令跳到finally语句里执行
  3. 执行完finally语句后,返回之前保存在局部变量表里的值

  如果try,finally语句里均有return,忽略try的return,而使用finally的return.

No.6
依赖注入目的是减少组件之间的耦合度,使开发变得简单。

No.7

  • byte的取值范围是-128—127
  • long和float,正常定义需要加l和f,但是long和float属于基本类型,不加l、f会进行转化,所以不会报出异常
  • boolean类型不能和任何类型进行转换,会报出类型异常错误。

No.8

  • Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition1的await()、signal()这种方式实现线程间协作更加安全和高效。因此通常来说比较推荐使用Condition.
  • Condition是个接口,基本的方法就是await()和signal()方法;
  • Condition依赖于Lock接口,生成一个Condition的基本代码是lock.newCondition()
  • 调用Condition的await()和signal()方法,都必须在lock保护之内,就是说必须在lock.lock()和lock.unlock之间才可以使用Conditon中的await()对应Object的wait();
  • Condition中的signal()对应Object的notify();
  • Condition中的signalAll()对应Object的notifyAll()

No.9
  java的编译过程先是java源程序扩展名为java的文件,由java编译程序将java字节码文件,就是class文件然后在java虚拟机中执行。机器码是由CPU来执行的。Java编译后是字节码, 电脑只能运行机器码。Java在运行的时候把字节码变成机器码。C/C++在编译的时候直接编译成机器码。

No.10
关于类方法的使用,有如下一些限制:

  1. 在类方法中不能引用对象变量。
  2. 在类方法中不能使用super、this关键字。
  3. 类方法不能调用类中的对象方法。
  4. 类方法是可以调用其他类的static方法的。
  5. 可以在类方法中生成实例对象再调用实例方法

与类方法相比,实例方法几乎没有什么限制:
6. 实例方法可以引用对象变量(这是显然的),也可以引用类变量。
7. 实例方法中可以使用super、this关键字。
8. 实例方法中可以调用类方法。

No.11
Java程序的种类有:
(a)内嵌于Web文件中,由浏览器来观看的_Applet
(b)可独立运行的 Application
(c)服务器端的 Servlets

No.12
在java中,我们可以用违例(Exception)来抛出一些并非错误的消息,但这样比直接从函数返回一个结果要更大的系统开销。

No.13
大写表示“非”,d表示digit数字。非数字就是\D, w表示word,非单词就是\W

No.14
GenericServlet类的实现接口中包括了ServletConfig接口,但是它自身的init(ServletConfig config)方法又需要外界给它传递一个实现ServletConfig的对象,就是说GenericServlet和ServletConfig的依赖关系既是继承关系,也是一种关联关系。

No.15

  • true、false、null都不是关键字
  • goto、const是保留的关键字

No.16
静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。