在Java中,为了保证多线程读写数据时保证数据的一致性,可以采用两种方式:
同步
如用synchronized关键字,或者使用锁对象.
volatile
使用volatile关键字
用一句话概括volatile,它能够使变量在值发生改变时能尽快地让其他线程知道,volatile的作用就是使它修饰的变量的读写操作都必须在内存中进行!
hashmap和hashtable
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,
最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步(Collections.synchronizedMap)。
一般大家都知道ArrayList和LinkedList的大致区别:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
4,在末尾插入数据,arraylist的速度比linkedlist的速度反而要快
5,在末尾删除数据,arraylist的速度比linkedlist的速度反而要快
怎么防止重复提交
1,前台js控制,当表单提交时候,立马设置提交按钮失效,设置成灰色,不可点击
2,后台控制,在session中存放一个特殊标志。当表单页面被请求时,生成一个特殊的字符标志串,存在session中,同时放在表单的隐藏域里。接受处理表单数据时,检查标识字串是否存在,并立即从session中删除它,然后正常处理数据。