2月9日-备孕春招40天-第28天
①leetcode
复习111-120
数组中出现一次的数字(异或)
https://leetcode-cn.com/problems/single-number/submissions/
找数组中出现三次的数字(32位分别%3,或数电)
https://leetcode-cn.com/problems/single-number-ii/submissions/
复制带random的链表
https://leetcode-cn.com/problems/copy-list-with-random-pointer/submissions/
单词拆分判断:(dp)
https://leetcode-cn.com/problems/word-break/
单词拆分:(回溯,题目有错误,正常回溯应该超时,正解:使用判断然后再使用dp拆分)
https://leetcode-cn.com/problems/word-break-ii/submissions/
②spring
动态代理:字节码随用随创建,随用随加载 作用:不修改源码的基础上对方法增强
分类:基于接口的动态代理,基于子类的动态代理 基于接口的动态代理: 涉及的类:Proxy 提供者:JDK官方 如何创建代理对象? 使用Proxy类中的newProxyInstance方法 创建代理对象的要求: 被代理类最少实现一个接口,如果没有则不能使用 newProxyInstance方法的参数: ClassLoader:类加载器:用于加载代理对象的字节码,和被代理对象使用相同的类加载器,固定写法 Class[]:字节码数组,让代理对象和被代理对象有相同的方法,固定写法 InvocationHandler:写如何代理,一般都是写一个该接口的实现类,通常情况下都是匿名的内部类,但不是必须的 InvocaHandler作用:执行被代理对象的任何接口方法都会经过该方法 参数含义: proxy:代理对象的引用 method:当前执行的方法 args:当前执行方法所需的参数 和代理对象有相同的返回值
基于子类的动态代理: 涉及的类:Enhancer 提供者:第三方cgLib库 如何创建代理对象? 使用Enhancer类中的create方法 创建代理对象的要求: 被代理类不能是最终类 create方法的参数: Class:字节码:用于指定被代理对象的字节码 Callback:写如何代理,一般都是写一个该接口的实现类,通常情况下都是匿名的内部类,但不是必须的 一般写的都是该接口的子接口实现类:MethodInterceptor