1.今日目标 做些基础题目 跟踪其中原理
秉哥 问一个问题 IN 命中索引?用EXISTS可以替代IN?
可以,
大表在外面,小表在里面用in
小表在外面,大表在里面用exists
死锁的原因:可以看出进程A和B不是因为竞争同一资源,而是在等待对方的资源导致死锁。
MDC.put(key, value); //会在日志的前面加一个value ,使用完后需要 MDC.clear(); 有效的观察区分日志
mshao:还可以使用 动态代理自己实现 定义自己的方式
在Proxy.newProxyInstance方法中,共有三个参数:http://rejoy.iteye.com/blog/1627405
动态代理个人理解就是自动定义一个内 实现InvocationHandler 重写代理方法:
/**
* 获取目标对象的代理对象
* @return 代理对象
*/
public Object getProxy() {
return Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
target.getClass().getInterfaces(),this);
}
最主要的就是执行目标方法,做一些自己的处理和实现(和面前切面有些类似可以说是一种特殊情况):
invoke(Object proxy, Method method, Object[] args)
反射法:优点:
(1)能够运行时动态获取类的实例,大大提高系统的灵活性和扩展性。
(2)与Java动态编译相结合,可以实现无比强大的功能
缺点:
(1)使用反射的性能较低
(2)使用反射相对来说不安全
(3)破坏了类的封装性,可以通过反射获取这个类的私有方法和属性