-
Spring beanfactory与applicationcontext 的区别联系
BeanFactory:
是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了实例化对象和拿对象的功能;
ApplicationContext:
应用上下文,继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;
- 国际化(MessageSource)
- 访问资源,如URL和文件(ResourceLoader)
- 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层
4)消息发送、响应机制(ApplicationEventPublisher) - AOP(拦截器)
两者装载bean的区别
BeanFactory:
BeanFactory在启动的时候不会去实例化Bean,中有从容器中拿Bean的时候才会去实例化;
ApplicationContext:
ApplicationContext在启动的时候就把所有的Bean全部实例化了。它还可以为Bean配置lazy-init=true来让Bean延迟实例化;
我们该用BeanFactory还是ApplicationContent
延迟实例化的优点:(BeanFactory)
应用启动的时候占用资源很少;对资源要求较高的应用,比较有优势;
不延迟实例化的优点: (ApplicationContext)
- 所有的Bean在启动的时候都加载,系统运行的速度快;
- 在启动的时候所有的Bean都加载了,我们就能在系统启动的时候,尽早的发现系统中的配置问题
- 建议web应用,在启动的时候就把所有的Bean都加载了。(把费时的操作放到系统启动中完成)
-
Spring源码里有什么设计模式
-
如果实现代理模式,怎样实现?代理模式最核心的类是哪个?
-
项目中是否使用过设计模式?具体是怎么使用的?
-
SpringBoot 配置参数,除了在配置文件里配置,还有没有其他方式?
-
什么时候会触发类的加载?

总体来分 分为 加载 -> 连接 -> 初始化 三个过程 其中连接 又分为 验证-> 准备 -> 解析三个步骤
加载:读取class文件,将其转化为某种静态数据结构存放在方法区中,并在堆内生成一个便于用户调用的Java.lang.Class 类型对象的过程

连接中分为三个步骤 :
验证:进一步对这个类进行验证 元数据的验证,字节码的验证 进行语法和语义的分析

准备: 为该类中定义的静态变量赋零值 注意 仅仅是静态变量

解析: 将符号引用替换为直接引用
- 符号引用:A不知道B的直接地址,A只是用一个符号S 引用了B
- 直接引用:A中的符号被替换为B的实际地址,为直接引用,这里还涉及到动态解析,多态,知道运行过程中发生了调用,此时虚拟机调用栈中就会得到具体的类型信息,这时候再进行解析,就能得到明确的引用。这也是为什么解析阶段有时会发生在初始化之后,这就是动态解析,用它来实现动态绑定。
解析之后 外部加载的Java类已经成功引入到你的程序之中。
初始化阶段: 此时会判断代码中是否存在主动的资源初始化动作,如果有的话,那么执行,不是值得构造函数,而是class层面的,比如成员变量的赋值,静态变量的赋值,以及静态代码块的逻辑。而只有显示的调用new指令,才会执行类的构造函数进行对象的实例化。
-
双亲委派模型?有没有从上往下找的时候?
-
MySQL怎样避免主键冲突?datagrip中
INSERT INTO ...ON DUPLICATE KEY UPDATE
INSERT INTO table (column_list)
VALUES (value_list)
ON DUPLICATE KEY UPDATE
c1 = v1,
c2 = v2,
...;
它会先尝试把数据插入表,如果主键冲突的话那么更新字段。
-
innodb中写select是快照读还是当前读?
-
MVCC是在RC和RR隔离级别下工作?在这两个隔离级别下,MVCC有什么区别?
-
(a,b)联合索引,使用where b= ... and a = ... 会不会使用索引
-
MySQL在设计的时候是怎样避免数据丢失的? binlog?
-
阿里云在线上连接比较多的时候,可能延迟会比较高,这种时候该怎么处理?
5.7之后 多线程复制,可以主库并发高的问题,主库上记录事务发生的信息
主库不允许大事务 语句格式 行格式 均不允许大事务
现在主从复制是基于行格式
需要建主键,默认主键不会写到binlog里
-
Redis的主从复制过程?
-
Redis的发布订阅模式有没有用过?
-
多线程了解吗?信号量是怎么回事?是公平的还是非公平的?

-
lock 是公平的还是非公平的? synchronize呢?
-
公平锁,和非公平锁 有什么区别?
-
并发问题产生的源头是什么?
网友评论