Servlet的生命周期,以及数组类型的比较
首先是调用init()初始化,然后调用service()方法来处理客户端请求,之后调用destory()方法终止,最后servlet由jvm的垃圾回收器进行回收。
hashmap与Linkedhashmap
hashmap可以key与value 都为空,而linkedhashmap不可以。
hashmap输出是无序的,Linkedhashmap是有序的;
map如果是比较复杂并且要求效率高,使用Linkedhashmap ,若是多线程可能会造成不同步,可以使用Collections.synchronizedMap进行包装
Map<String String> map = Collections.synchronizedMap(new LinkedHashMap(<String String));
Collections.synchronizedMap()与ConcurrentHashMap两者都提供了线程同步的功能
1.Collections.synchronizedMap()和Hashtable一样,实现上在调用map所有方法时,都对整个map进行同步,而ConcurrentHashMap的实现却更加精细,它对map中的所有桶加了锁。所以,只要要有一个线程访问map,其他线程就无法进入map,而如果一个线程在访问ConcurrentHashMap某个桶时,其他线程,仍然可以对map执行某些操作.
hashmap与currenthashmap
在hashMap的基础上,ConcurrentHashMap将数据分为多个segment,默认16个(concurrency level),然后每次操作对一个segment加锁,避免多线程锁的几率,提高并发效率。
它引入了一个“分段锁”的概念,具体可以理解为把一个大的Map拆分成N个小的HashTable,根据key.hashCode()来决定把key放到哪个HashTable中。
collection框架有自己的接口和实现,主要分为Set接口,List接口和Queue接口。它们有各自的特点,Set的集合里不允许对象有重复的值,List允许有重复,它对集合中的对象进行索引,Queue的工作原理是FCFS算法(First Come, First Serve)。