every dog has its day
- lock和synchronized关键字,为什么有synchronized还需要lock
1.synchronized是Java语言的关键字,在jvm层面上,Lock是一个类
2.采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自动让线程释放对锁的占用;而Lock则必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象 - JVM内存模型
- 抽象类和接口区别
1.extends implements
2.抽象类可以有构造器,接口不能有构造器
3.抽象方法可以有main方法并且我们可以运行它 接口没有main方法,因此我们不能运行它。
4.抽象方法可以继承一个类和实现多个接口 接口只可以继承一个接口 - Spring MVC流程
- volatile和synchronized关键字
1.Synchronized保证内存可见性和操作的原子性
2.Volatile只能保证内存可见性
3.Volatile不需要加锁,比Synchronized更轻量级,并不会阻塞线程(volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。)
4.volatile标记的变量不会被编译器优化,而synchronized标记的变量可以被编译器优化(如编译器重排序的优化).
5.volatile是变量修饰符,仅能用于变量,而synchronized是一个方法或块的修饰符。 - JPA注解
- spring注解中 autowired和resource区别
autowired是spring的注解默认按类型,resource是j2ee的注解默认按名称
- 内存溢出和内存泄漏的区别
内存溢出:申请内存时没有足够的空间,out of memory
内存泄漏:申请内存后无法释放已经申请的内存,多次内存泄漏会导致 out of memory - Java中String, StringBuffer, StringBuilder 区别
- 静态代码块和代码块
- servlet生命周期