2020面试内容整理(java)

springboot自动配置原理:

https://blog.csdn.net/C18298182575/article/details/101720550?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158524332819724847051425%2522%252C%2522scm%2522%253A%252220140713.130056874..%2522%257D&request_id=158524332819724847051425&biz_id=0&utm_source=distribute.pc_search_result.none-task

AOP和IOC:

AOP:
对于AOP的理解来说可以总结为一句话,就是把一些重复的操作给提取出来,统一的去解决了这些操作,减少代码量和人工,为的就是便捷快速方便。

IOC:
IOC (Inversion Of Control,控制倒转),是spring的核心,贯穿始终,所谓IOC ,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。所有的类都会在spring容器中登记,告诉spring你是个什么,你需要什么,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。
所有的类的创建、销毁都由spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。
对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。



AOP原理:
(一)aop称为是面向切面编程,那么对它最好的解释就是拦截器了,而他的aop原理呢就是:在执行某些代码之前执行另外的代码,是程序变的灵活,扩展性更灵活,可以随意的删除和添加某些功能!你可以参照filter过滤器,其实filter就是一个很好的对aop的解释
(二)AOP是代理模式的一种实现,你把代理模式理解了就不难了。代理模式是一种针对业务逻辑复合处理的一种强大的设计模式。生活中常常有这样的例子,比如你去拜访一位朋友,但是他却不在家,这时你会让他的家人通知他。但是这个通知的过程你并不清楚。如果你有礼貌,也许家人会夸奖你,如果你态度恶劣,说不定也会打你小报告。你所关注的只是通知朋友的事件,但此过程中间可能会发生其他的事情。放在程序中来说,进行一段业务处理的时候,会遇到额外要增加的业务逻辑,这段逻辑是已经封装好的。而本身的业务逻辑也是封装好的,两个模块间并不发生任何关系。这个时候就要用到代理模式了,下面简单提供一段示例代码阐述代理模式的基本思想。public class ProxyObject implements Object { Object obj; public ProxyObject() { System.out.println("这是代理类"); obj = new ObjectImpl(); } public void action() { System.out.println("代理开始"); obj.action(); System.out.println("代理结束"); }}public interface Object { void action();}public class ObjectImpl implements Object { public void action() { System.out.println("========"); System.out.println("========"); System.out.println("这是被代理的类"); System.out.println("========"); System.out.println("========"); }}public class Test { public static void main() { Object obj = new ProxyObject(); obj.action(); }}代理模式是一种间接调用的体现,上面示例代码中。如果直接调用Object实现类,也就是ObjectImpl中的方法,并不能调用新的业务逻辑,而如果实现一个代理类,在类中调用ObjectImpl,这样外部访问代理类时会间接调用ObjectImpl,并且此过程可以扩展而不用对源代码ObjectImpl进行修改。spring 中的AOP就是基于这种原理。AOP中会发生多个逻辑复合处理的情况,使用代理类能准确执行目标类中定义的逻辑单元并且扩展其他的逻辑单元。


aop动态代理:(不太能理解,空了再说吧)
https://blog.csdn.net/qq_21033663/article/details/78950714


kettle工具

实现数据库同步。
类似计划任务

单点登录场景

单点登录实现 方式:
后台实现
jwt 实现

java 概念整理

持久层:
什么是持久层?
持久是相对于瞬时来说的,* 持久层,可以理解成数据 保存在 数据库或者 硬盘一类可以保存很长时间的设备里面,不像放在内存中那样断电就消失了,也就是把数据存在持久化设备上* ,你想一下 内存中的数据 断电就没有了,硬盘的数据 是否会像内存中的数据一样断电消失么?
为什么要使用持久化框架?
企业应用中* 数据很重要(各种订单数据、客户数据、库存数据之类的),比应用程序本身更重要, 所以需要把数据持久化。持久化可以通过很多方式,写文件和数据库都可以。只是现在企业一般都会选择把数据持久化到数据库中,因为可以很方便的查询统计分析,但数据库的数据最终还是会写到磁盘上的。Java 程序员为了操作数据库, 最开始是使用JDBC* 来进行的,但是这种方式* 开发效率低 ,要写一堆重复代码,加上关系数据库和对象本身存在所谓的阻抗不匹配情况,所以 为了提高开发效率,有人发明了 ORM 即 对象关系映射框架* (Hibernate是其中的佼佼者),对于 Java 程序员来说,就可以通过操纵对象来操纵数据库了。

持久层框架有: 
- Hibernate 
- MyBatis 
- TopLink 
- Guzz 
- jOOQ 
- Spring Data 
- ActiveJDBC


业务层:
业务逻辑层中的模块包含了系统所需要的所有功能上的算法和计算过程,并与数据访问层和表现层交互。抽象的说,业务逻辑层就是处理与业务相关的部分,一般来说,业务层包含一系列的执行与数据的操作
业务层框架有:
- spring

表现层:
当一个请求到达系统时,系统必须能够理解请求中的需求是什么,然后调用适当的业务逻辑进行处理,最后返回响应结果。这就是表现层所需要实现的功能,简单的说就是需要满足处理请求,调用业务逻辑和派发视图的要求。
在实际系统中,视图层与命令和控制层的边界通常很模糊,因此这两个层统称为「表现层」。
表现层框架有:
- Spring mvc
- Struts2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值