主要内容

  1. spring:BeanFactory和ApplicationContext有什么区别?
  2. 算法:删除链表中重复的节点

BeanFactory和ApplicationContext有什么区别?

BeanFactory和ApplicationContext都是spring的核心接口,其中ApplicationContext是BeanFactory的子接口。

BeanFactory是spring中最底层的接口,包含了各种bean的定义,读取bean的配置文档,管理bean的加载,实例化控制bean的生命周期,维护bean之间的依赖关系。ApplicationContext接口除了提供BeanFacttory提供的功能之外,还提供了更加完备的框架功能:

  1. 继承MessageSource,支持国际化
  2. 统一的资源文件访问方式
  3. 同时加载多个配置文件
  4. 载入多个有继承关系的上下文,使得每个上下文都专注于特定的层次。

BeanFactory采用的是延迟加载的方式来注入Bean,即只有在使用某个bean的时候,才对bean进行加载实例化。而ApplicationContext是在容器启动时候,就一次性创建了所有的bean。

BeanFactory通常是一个编程的方式创建的,而ApplicationContext还能以声明的方式创建,如使用ClassLoader。

BeanFactory和ApplicationContext都支持BeanPostProessor、BeanfactoryPostProcess的使用,两者的区别在于BeanFactory需要手动注册,而ApplicationContext是自动注册。

算法:删除链表中重复的节点

题目:
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

分析:
这种题,一般画图就可以形象化,代码写起来就比较容易了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
ListNode tmpHead=new ListNode(Integer.MAX_VALUE);
tmpHead.next=pHead;
ListNode cur=tmpHead;
ListNode next;
ListNode cur2;
int len=0;
while (cur!=null){
next=cur.next;
cur2=next;
len=0;
while (next!=null&&cur2!=null&&next.val==cur2.val){
cur2=cur2.next;
len++;
}
if(len>1){
cur.next=cur2;
continue;
}
cur=cur.next;
}
return tmpHead.next;

}
}