拦截器和过滤器的区别: https://www.cnblogs.com/panxuejun/p/7715917.html.
联合主键:
通信socket:
、故障现象
java常见异常: java.util.ConcurrentModificationException
2、导致原因
并发争抢修改导致,一个人正在写入,另外一个同学过来抢夺,导致数据不一致异常。并发修改异常。
3、解决方案
3.1 new vector<>()
3.2 Collections.synchronizedList(new ArrayList<>())
3.3 CopyOnWriteArrayList()<>
写时复制、读写分离的思想
4、优化建议
List和Set优化方法一致
、、、、Map不用CopyOnWrite(),有专门的并发 ConcurrentHashMap()
Collection 和 Collections
Collection:接口
Collections:集合类
CopyOnWrite容器是写时复制的容器。往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前的容器进行copy,复制出一个新的容器,然后在新的容器中添加元素,添加完元素之后,再将原容器的引用指向新的容器;这样做的好处是可以对copyonwrite容器进行并发的读,而不需要加锁,因为当前容器不会添加任何元素。所以copyonwrite容器也是一种读写分离的思想,读和写不同的容器。
public boolean add(E e) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
Object[] elements = getArray();
int len = elements.length;
Object[] newElements = Arrays.copyOf(elements, len + 1);
newElements[len] = e;
setArray(newElements);
return true;
} finally {
lock.unlock();
}
}