基础篇 - 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)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容