01 2021 档案
摘要:JDK就能实现动态代理,为什么还需要CGLib动态代理 CGLib动态代理不要求委托类实现接口,没有接口照样能实现代理业务 CGLib动态代理能够实现基于方法级别的拦截处理 CGLib动态代理执行方法,不是使用反射执行Method.invoke() CGLib可以针对同一个委托类的不同方法可以使用不
阅读全文
摘要:CGLib原理:动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势植入横切逻辑。 CGLib动态代理是利用ASM开源包,对代理对象类的class文件,通过修改其字节码生成子类来处理。核心是实现MethidIntercept
阅读全文
摘要:静态代理与动态代理的区别 静态代理在编译时就已经实现,编译完成后代理类是一个实际的class文件 动态代理是在运行时动态生成的,即编译完成之后没有实际的class文件,而是在运行时动态生成类字节码 ,并加载到JVM中 动态代理分为:JDK动态代理和CGLib动态代理 【二者具体的区别在后面章节进行介
阅读全文
摘要:代理模式是23种设计模式之一,提供了对目标对象额外的访问方式,即通过代理对象来访问目标对象,扩展业务功能,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能(满足开闭原则)。 简而言之,代理模式就是设置一个中间代理来控制访问原目标对象,以达到增强原对象的功能和简化访问方式。
阅读全文
摘要:1、需要实现接口:Serializable 2、当前类提供一个全局常量:serilaVersionUID 3、除了类要实现Serializable接口外,还必须保证其内部所有属性也必须是可序列化的。(默认情况下:基本数据类型可序列化) 4、ObjectOutputStream和ObjectInput
阅读全文
摘要:/** * The number of times this HashMap has been structurally modified * Structural modifications are those that change the number of mappings in * the
阅读全文
摘要:转载于: @Author 风一样的码农 @HomePageUrl http://www.cnblogs.com/chenpi/ 先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义; Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字
阅读全文
摘要:作者:安卓大叔 链接:https://www.jianshu.com/p/e136ec79235c 来源:简书 正文 红黑树也是二叉查找树,我们知道,二叉查找树这一数据结构并不难,而红黑树之所以难是难在它是自平衡的二叉查找树,在进行插入和删除等可能会破坏树的平衡的操作时,需要重新自处理达到平衡状态。
阅读全文
摘要:为什么要使用hashCode 参考 https://zhuanlan.zhihu.com/p/43001449 https://www.jianshu.com/p/eb9ab4211163 equals()用于判断两个对象是否相等 hashcode()被设计是用来使得哈希容器能高效的工作 为什么这么
阅读全文
摘要:线程池:三大方法、七大参数、4种拒绝策略 线程池的好处 1、降低资源的消耗 2、提高响应速度 3、方便管理 线程复用、可以控制最大并发数、管理线程 三大方法 ExecutorService threadPool = Executors.newSingleThreadExecutor(); //创建只
阅读全文
摘要:什么时候扩容 jdk 1.7 判断是否达到了阈值(0.75 × 数组长度) 同时这次put是否产生了Hash冲突 if ((size >= threshold) && (null != table[bucketIndex])) { resize(2 * table.length); //两倍扩容 h
阅读全文
摘要:在jdk中 哈希函数为 static int indexFor(int h,int length){ return h & (length-1); } 理由一:充分利用数组空间 假设长度不是2的幂次方 长度为基数 (假设长度为5) 01010101 01010101 01010101 0101011
阅读全文

浙公网安备 33010602011771号