tomcat
context.xml在/conf下和/conf/catalina/{hostName}下和再下一级的/${webappName}.xml
JDK
volatile在汇编中插入内存屏蔽指令是的读直接读主内存、写的话,马上刷新主内存,读写原子性。
线程池拒绝策略有:一、抛异常二、丢弃三、丢弃队列中待最久的任务四、交给调用者线程处理
并发集合:linkedhashmap按插入有序,或最近使用、concurrentskiplisthashmap有序
class.forName加载、并初始化,classLoader.loadClass加载
自旋锁:占用CPU时间,不引发线程状态变化、适用竞争不激烈的状况
公平锁/非公平锁:unsafe类
ClassPath:查找user classes, 能够每一个应用定义不一样,查找tool.jar、lib目录
加载器:启动类加载器(rt.jar)->扩展类加载器(ext/)->应用类加载器(根据classpath)
数据库
事务隔离级别:Read uncommitted、Read committed(Oracle)避免脏读、Repeatable read(Mysql)、Serializable避免幻读
spirng
事务传播:required加入事务(若是已经有),requiredNew建立新事务
ioc
做用域:singleton、prototype、request、session、global-session
<bean id="xxx" class="yyyy">
<constructor-arg ref="zzz"/>
<constructor-arg value="aaa"/>
</bean>
<bean id="xxx" class="yyyy">
<property name="zzzz" ref="aaaa" />
</bean>
另外还有静态工厂和实例工厂
AOP
before、afterReturning、afterThrowing、after、 around
匹配表达式
java.lang.String 匹配String类型;
java.*.String 匹配java包下的任何“一级子包”下的String类型;
如匹配java.lang.String,但不匹配java.lang.ss.String
java..* 匹配java包及任何子包下的任何类型;
如匹配java.lang.String、java.lang.annotation.Annotation
java.lang.*ing 匹配任何java.lang包下的以ing结尾的类型;
java.lang.Number+ 匹配java.lang包下的任何Number的自类型;
如匹配java.lang.Integer,也匹配java.math.BigInteger
<aop:config>
<aop:pointcut id="yyy" expression="execution(public * com.invicme.apps.aop.advisor.ArithmeticCalculateImpl.*(..))"/>
<aop:advisor advice-ref="xxxx" pointcut-ref="yyy" />
</aop:config>
<aop:config>
<aop:aspect ref="xxx">
<aop:before pointcut="execution(** com.invicme.apps.aop.advisor.perform(..))" method="yyy"/>
</aop:aspect>
</aop:config>
DispatcheServlet
FrameworkServelet.doGet->processRequest->DispatcheServlet.doSerivice->doDispatch->getHandler、getHadndlerAdapter->前拦截器链->调用handler获得ModelAndView->后拦截器链
Mybatis
#和$的局别,#是加引号,有效防止sql注入
JVM
GC root:方法运行时,方法引用的对象,类静态变量引用的对象,类中经常使用引用的对象,native方法中引用的对象
活动的thread引用的变量,系统类(好比java.util.*)
分析内存快照:jmap导出,jhat、Visual VM、MAT查看
设计模式
责任链模式:要么本身处理,要么给下一个处理
模板方法模式:定义模板方法,具体方法,钩子方法。应用:HTTPServlet,service为模板方法
订阅、发布模式:事件注册,通知