java学习日记1-复习向

总结java动态代理:

  1. 实现InvocationHandler接口,里面有一个invoke方法,这是实现代理的关键,从这里开始就和反射有关系了,反射的目的是为了在运行时知道要使用的这个类的信息,可以获得类的加载器,方法,接口等,其中method方法里也有一个invoke方法,这个方法是用来调用方法的。在InvocationHandler里的那个invoke要使用的方法,正是通过反射获得了我们所需要调用对象里的方法才可以在调用这个方法的基础上对其代理实现一个代码增强的功能,这也是代理模式所做的事情,增强原有的代码功能

总结cglib代理:

  1. java代理的局限性之一在于代理的对象必须是一个接口对象如果是普通类则无法代理,而cglib代理,他们的目的相同但他更加的强大,而且解决了这个问题。
  2. 他们的区别是java动态代理基于的是java的反射机制,在生成类上更加的高效。Cglib使用的是ASM框架对字节码进行操作,在类的执行过程中更加高效

总结SpringIOC:

  1. SpringIOC的名字叫做控制反转,通常的类创建方式是我们通过new一个对象,这是我们自动创建一个对象的过程,而控制反转就是要我们将创建对象的控制权交由Spring容器。
  2. 依赖注入的方式有:1.构造器注入2.setter注入3.依赖注入4.静态工厂注入5.工厂注入

总结Spring的优点:

  1. spring属于低侵入式设计,代码污染度极低。Spring里的AOP技术,可以将一些通用的任务,安全管理方面的代码集中管理。对主流框架提供了集成支持。

BeanFactory和ApplicationContext的区别:

  1. BeanFactory是Spring的底层接口,实现了对bean的加载实例化,控制bean的生命周期,ApplicationContext继承了BeanFactory的接口除了实现BeanFactory的功能外,还提供了更完整的框架功能。
  2. BeanFactory采用的是延迟加载的形式注入Bean,这样的坏处在于只有在加载这个bean的时候我们才会发现错误。ApplicationContext是在容器启动的时候一次性创建所有的Bean,这样就避免了配置的错误,有利于对系统进行检测。而且一开始被载入的单例也避免了后面在真正使用的时候才创建。

Lucene全文检索技术:

  1. 倒排索引的含义是,比如说mysql里我们要搜一个词,我们会通过Like模糊查询,但这个模糊查询是我们通过要找的关键字对整个表的那个字段进行判断,但这个判断是判断这个这整个句子是否包含这个关键字,从这里出发可以知道,这个表有多少数据就要比对多少次,这就是正向查找,而倒排索引就是反过来通过词来找包含这个词的文档。
  2. 倒排索引主要由词典,倒排表组成,倒排表是链表的结构,词典结构比较重要,有很多词典结构,Lucene采用的是FST结构,这既考虑到了速度,也考虑到了不能将所有的索引存入内存中,因为一个搜索系统里的数据量太大了,所以采用了是共享前缀的方式,前缀索引放内存,后缀此块放磁盘。

Spring Aop:

  1. 面向切面,目的是降低系统的耦合度,因为像日志记录这类代码,如果采用常规的方式,应该是在每个方法执行后调用相应的代码对日志进行记录,虽然日志记录代码可以封装,但还是会写入大量的调用代码,而面向切面就是为了解决这个问题,通过对切入点的匹配,根据通知构建代理对象,这样通过一处的代码就实现了一整个切入点的日志记录。
  2. 实现的原理是基于代理机制,如果有实现接口采用的是Java的动态代理,如果没有会自动采用cglib代理。在Spring Aop中使用到了适配器模式和代理模式。在使用方面,基本的概念是切面,连接点,通知,切入点,AOP代理。使用场景有日志记录,权限管理(用Spring Security即可)。
发布了12 篇原创文章 · 获赞 8 · 访问量 3638
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览