11-15

hashMap与hashTable
方法差不多,hashtable每一个都加了锁,是线程安全的,hashmap没有枷锁,线程不安全。hashtable效率很低。hashMap,允许key和value为null但是hashtable不允许。

底层实现:数组—+链表
jdk8的时候链表高度到8,数组长度超过64,链表转化红黑树,元素内部类node节点
计算key的hash值,二次hash对数组长度取莫,对应数组下标

concurrentHashMap原理以及在jdk7和jdk8中的区别
concurrentHashMap线程安全版的HashMap,采用分段所,table采用全局锁,所以concurrentHashMap更加安全
jdk7:分段所+segment+hashEntry 一个segment包含一个hashentry,每个hashentry又有一个链表结构
元素查询两次hash

如何实现一个ioc容器
1.配置文件配置包扫描路径
2.递归包扫描。class文件
3.反射、确定需要交给ioc管理的类
4.需要注入的类进行依赖注入

什么是字节码?字节码的好处是什么?
Java编译器和解释器
Java中引入了虚拟机的概念。可以在任何平台上运行。
编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,之后通过解释器将虚拟机代码转化为特定系统所能够理解的机器码执行,在Java中,这种供虚拟机理解的代码称之为字节码,也就是.class文件,它不需要面向处理机器,只需要面向虚拟机即可。
每一个凭他的解释器不同,但是实现的虚拟机却是相同的,Java代码通过编译器变成字节码,字节码由虚拟机解释执行,虚拟机将要执行的语句发送给解释器,变为机器码,然后在特定的机器上运行。
Java源代码->编译器->Java字节码->jvm->编译器->机器码->程序运行

采用字节码的优点:
通过字节码的方式,实现了Java的跨平台,一次编译处处执行,解决了解释性语言的执行效率低的问题,同时又保留了解释性语言的可以移植的特点,所以Java程序运行比较高效。

Java类加载器有哪些
jdk自带的三个类加载器:bootstrap classloader 、extcalssloader、app class loader
bootstrap classloader 是app class loader的父类加载器,但是并不是一个继承关系,默认负责加载%Javahome%lib的jar包和class文件
extcalssloader%Javahome%ext文件下的jar包和class文件
app class loader加载除了lib和ext下的jar包和class文件,是自定义类加载器的父类。系统类加载器(加载代码),也是线程上下文加载器(贯穿于三层加载器,三层加载器都可以去访问他的)。

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务