Java知识day04

Java知识day04,第1张

Java知识day04

一、HashMap和HashTable的区别?底层实现是什么?

区别:

(1) HashMap方法没有synchronized修饰,线程非安全,HashTable线程安全;

(2) HashMap允许key和value为null,而HashTable不允许

HashMap底层:数组+链表实现

ConcurrentHashMap锁一个segment(段)

二、如何实现一个IOC容器

1、配置文件配置包扫描路径

2、递归包扫描获取.class文件

3、反射、确定需要交给IOC管理的类

4、对需要注入的类进行依赖注入

三、Java类加载器有哪些

JDK自带有三个类加载器: bootstrap ClassLoader、ExtClassLoader、AppClassLoader。

BootStrapClassLoader是ExtClassLoader的父类加载器,默认负责加载%JAVA_HOME%lib 下的jar包和class文件。

ExtClassLoader是AppClassLoader的父类加载器,负责加载%)AVA_HOME%/lib/ext文件夹下的jiar包和class类。

AppClassLoader是白定义类加载器的父类,负责加载classpath下的类文件。系统类加载器、线程上下文加载器。

继承ClassLoader实现自定义类加载器

四、双亲委派模型

向上查找缓存,向下加载路径

好处:主要是为了安全性,避免用户自己编写的类动态替换Java的一些核心类,比如String。
            同时也避免了类的重复加载,因为JVM中区分不同类,不仅仅是根据类名,相同的class文件被不同的ClassLoader加载就是不同的两个类

五、Java中的异常体系

 Java中的所有异常都来自顶级父类Throwable。Throwable下有两个子类Exception和Error。
Error是程序无法处理的错读,—旦出现这个错误,则程序将被迫停止运行。例如OOM(内存溢出)。
Exception不会导致程序停止,又分为两个部分RunTimeException运行时异常CheckedException检查异常。RunTimeException常常发生在程序运行过程中,会导致程序当前线程执行失败。CheckedException常常发生在程序编译过程中,会导致程序编译不通过。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5691382.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存