2月10日-备孕春招40天-第29天
①leetcode
至今,按顺序刷到了140题,剩下的10天刷完top100,把时间转移到项目和八股文上。
快慢指针找链表环
https://leetcode-cn.com/problems/linked-list-cycle/submissions/
找入环节点证明
链表排序 O(n²)解法可以使用插入 本题要求O(NlogN)的解法,快排,归并,和堆是O(NlogN)的,使用快排。 可以从上往下递归,也可以从下往上,空间复杂度分别为O(N)和O(1)
https://leetcode-cn.com/problems/lru-cache/solution/shuang-xiang-lian-biao-shi-xian-lru-by-1-tvpd/
最大乘积
最小值栈
https://leetcode-cn.com/problems/min-stack/submissions/
②spring
面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。
5)AOP术语
Joinpoint(连接点):指那些被拦截的点(拦截住的方法不一定重写(增强)),spring中的连接点指的是方法。 Pointout(切入点):切入点指我们要对那些Joinpoint进行拦截。(指被增强的方法) 拦截到连接点后要做的事情就是通知: 四种通知类型: 前置通知、后置通知、异常通知、最终通知。 Target(目标对象):被代理的对象 Weaving(织入)把增强应用到目标对象来创建的代理对象的过程。 Proxy(代理对象):一个类被AOP织入增强后,就产生一个结果代理类。 Aspect(切面):切入点和通知的结合。
6)XML和注解的AOP配置
IOC部分:
spring中基于xml的aop配置:
1,通知bean交给spring来管理 2,使用aop:config标签表明开始AOP的配置 3,使用aop:aspect标签表明配置切面 id属性:切面的唯一标识 ref属性:通知类的bean的id 4,再aop:aspect标签内部使用对应的标签来配置通知类型 前置通知:aop:before 后置、异常、最终见下图。 method属性:指定logger类中那个方法是前置通知。 pointcut属性:指定切入点表达式,指明对业务层那些对象增强。 切入点表达式:访问修饰符 返回值 包名.类名.方法名(参数列表) 类似:public void com.yan.service.Impl.AccountServiceImpl.saveAccount() 修饰符可以省略,可以写通配符(“..”匹配包,.一个包。参数基础类型的直接写,引用类型:java.lang.String) 全通配写法: ...*(..)
四种通知xml写法:
pointcat的使用:
使用环绕通知实现前置、后置、异常、最终通知:
配置了环绕通知后,切入点方法没有执行,环绕通知方法执行了 分析:动态代理中的环绕通知使用了method.invoke()方法调用原来的方法。 环绕通知可以使用ProceedingJoinPoint接口,调用这个接口里的proceed()来调用切入点方法 这个接口可以作为环绕通知的方法参数,再程序运行时,spring会通过这个接口的实现类。 四种通知在环绕通知中的位置和动态代理一样。
注解配置AOP:
1,首先在xml中开启AOP注解支持:
2,在代理类里的写法如下:
这时间不够用了,要寄要寄!!!