基础篇 - 04

hashMap和hashTable有哪些区别?

hashMap(jdk1.8采用 数组+链表+红黑树,链表阈值长度超过8转为红黑树):
1.key-value存储,单链表超出阈值自增;
2.线程不安全,适用于单线程(多线程下可能会产生死锁),多线程建议使用concurrent并发包下的concurrentHashMap(分段锁);
3.可以有一个null的key,可以有多个null的value;(使用containsKey()方法进行判断是否存在某个键)
4.效率高

hashTable:
1.key-value存储,单链表超出阈值自增;
2.线程安全,适用于多线程,因为hashTable每个方法都加了Synchronize;
3.key不可为null,value不可为null;
4.效率低

简单说一下IOC和AOP?

IOC控制反转:将创建对象的权利交给核心容器(由容器来负责对象的生命周期和对象之间的关系)。
IOC主要实现方式有两种:依赖注入和控制反转(DI:就是IOC容器把当前对象所需要的外部资源动态注入给我们;四种注入方式:注解注入,set注入,构造器注入,静态工厂注入)
----当某个角色 需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中 创建被调用者的工作不再由调用者来完成,因此称为控制反转。创建被调用者的工作由spring来完成,然后注入调用者 因此也称为依赖注入。

AOP面向切面编程:可以说是OOP的补充和完善,OOP引入封装、继承和多态性等概念来建立一种对象层次结构。
实现AOP的技术,主要分为两大类:一是采用动态代理技术,二是采用静态织入的方式。
----这玩意我举个例子说下,比如你写了个方法用来做一些事情,但这个事情要求登录用户才能做,你就可以在这个方法执行前验证一下,执行后记录下操作日志,把前后的这些与业务逻辑无关的代码抽取出来放一个类里,这个类就是切面(Aspect),这个被环绕的方法就是切点(Pointcut),你所做的执行前执行后的这些方法统一叫做增强处理(Advice)。

你可能感兴趣的:(基础篇 - 04)