因为StringBuffer不需要重复创建String对象,但是其实也不是这样。比如Strings="a"+"b"+"c"操作编译器会优化,变成Strings="abc"Strings=s1+s2+s3编译器也会优化,变成Strin...
生命周期:类加载、实例化(构造对象),初始化(init),服务(service),销毁(destroy)。CGI:commongatewayinterface,通用网关接口,Perl语言编写,每个请求创建一个CGI对象。Servlet:只需要实例化、初始化一次,多线程。
Error和Exception都是Throwable的子类,RuntimeException是Exception的子类。Error用于指示合理应用程序不应该试图捕获的错误。Exception指出合理的应用程序需要捕获的条件。分为已检查异常和未检查异常。RuntimeException是未检查异常,不需要tryc...
OutOfMemoryError:1.PerGernSpace程序中使用了大量jar或class,使Java虚拟机装载类空间不够。解决方案:调参XX:PermSize和XX:MaxPermSize、减少jar包,减少类的重复加载2.JavaHeapSpaceJava虚拟机创建了太多的对象。解决方案:调参Xms(...
CopyOnWriteArrayList是ArrayList的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。相比较于ArrayList它的写操作要慢一些,因为它需要实例的快照。CopyOnWriteArrayList中写操作需要大面积复制数组,所以性能肯定...
●ListIterator有add()方法,可以向List中添加对象,而Iterator不能。●ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍...
LinkedList和ArrayList是另个不同变量列表的实现。ArrayList的优势在于动态的增长数组,非常适合初始时总长度未知的情况下使用。LinkedList的优势在于在中间位置插入和删除操作,速度是最快的。LinkedList实现了List接口,允许null元素。此外LinkedList提供额外的g...
在问题2中我们看到ConcurrentHashMap被作为故障安全迭代器的一个实例,它允许完整的并发检索和更新。当有大量的并发更新时,ConcurrentHashMap此时可以被使用。这非常类似于Hashtable,但ConcurrentHashMap不锁定整个表来提供并发,所以从这点上ConcurrentHa...
快速失败的Java迭代器可能会引发ConcurrentModifcationException在底层集合迭代过程中被修改。故障安全作为发生在实例中的一个副本迭代是不会抛出任何异常的。快速失败的故障安全范例定义了当遭遇故障时系统是如何反应的。例如,用于失败的快速迭代器ArrayList和用于故障安全的迭代器Con...
HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值。HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获...