1.interceptor加载bean
interceptor没有被Spring容器管理,只有都在容器中的对象,才能使用注解获取。
实现ApplicationContextAware接口:这个类可以方便获得ApplicationContext中的所有Bean。这个类可以直接获取Spring配置文件中,所有有引用到的bean对象。
一定要让继承ApplicationContextAware接口的bean被Spring上下文管理,在springmvc配置文件中定义对应的bean标签,或者使用@Component标注。
2.23种设计模式
简单工厂模式、单例模式、代理模式、责任链设计模式、观察者设计模式
3.jvm原理
方法区:类信息、常量、静态变量,运行时常量池
堆区:对象
栈区:基础数据类型+对象引用
4.gc回收机制
1. 垃圾回收机制回收JVM堆内存里的对象空间,不负责回收栈内存数据。
2.垃圾回收机制回收任何对象之前,总会先调用它的finalize方法
3.可以通过System.gc()通知系统进行垃圾回收
4.java自动回收机制中的gc线程执行的优先级最低,当cpu空闲时,才会轮到gc线程执行;当jvm堆内存不足时,gc会自动执行,清理过期对象和垃圾,释放内存空间。当一次清理之后,内存仍然不足时,gc会重复执行。
5.mysql填优关键字
MySQL提供了Explain,用于显示SQL执行的详细信息,可以进行索引的优化。
sql语句优化:
主要原则就是应尽量避免全表扫描,应该考虑在where及order by 涉及的列上建立索引。
使用alter table语句来为表中的字段添加索引的基本语法是:
ALTER TABLE <表名> ADD INDEX (<字段>);
6.String new String 区别
String 常量 是在 方法区 new String() 栈区放引用,堆区放对象
7.Spring包扫描
<context:component-scan base-package>
注解自动扫描
8.hashcode的作用
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2.如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3.两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
10.@bean @component 的区别
@Component注解表明一个类会作为组件类,并告知Spring要为这个类创建bean。
@Bean注解告诉Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。通常方法体中包含了最终产生bean实例的逻辑。
11.线程安全
final Object o=new Object();
synchronized(o){
o.wait();
o.notify();
}