面试
文章平均质量分 61
决决怪
这个作者很懒,什么都没留下…
展开
-
深入理解ConcurrentHashMap原理分析以及线程安全性问题
在之前的文章提到ConcurrentHashMap是一个线程安全的,那么我么看一下ConcurrentHashMap如何进行操作的。ConcurrentHashMap与HashTable区别?HashTableput()源代码我们来看一下put 操作:方法体 被 同步锁标记,由于同步锁的特性,其他线程将会排队进行等待处理。除此之外,对传入的key 值进行了一个判断空值逻辑。【PS:HashMap 是允许key值为空的】**ConcurrentHashMap **分段锁技术:Concu原创 2021-03-01 18:08:44 · 345 阅读 · 0 评论 -
对比 Hashtable、HashMap、TreeMap 的区别联系以及适用场景
①基本理解Hashtable、Hashmap、Treemap都是最常见的一些Map实现,是以键值对的形式存储和操作数据的容器类型。Hashtable是Java类库提供的一个哈希实现,本身是同步的,不支持null键和null值,由于同步导致性能开销,所以已经很少被推荐使用。HashMap是应用更加广泛的哈希表实现,行为上大致与HashTable一致,主要区别在于HashMap不是同步的,支持null键和null值等。通常情况下HashMap进行get和put操作可以达到常数时间的性能,所以它是绝大原创 2021-03-01 16:30:59 · 885 阅读 · 0 评论 -
对比Vector、ArrayList、LinkedList有何区别
这三者都是实现集合框架中的List,也就是所谓的有序集合,因此具体功能也比较近似,比如都提供按照位置进行定位、添加或者删除的操作,都提供迭代器以遍历其内容等。但因为具体的设计区别,在行为、性能、线程安全等方面,表现又有很大不同。 Verctor 是 Java 早期提供的线程安全的动态数组,如果不需要线程安全,并不建议选择,毕竟同步是有额外开销的。Vector 内部是使用对象数组来保存数据,可以根据需要自动的增加容量,当数组已满时,会创建新的数组,并拷贝原有数组数据。 ArrayList 是应用更原创 2021-03-01 15:49:26 · 122 阅读 · 0 评论 -
Java基础之int和Integer有什么区别
1 Java两种数据类型1.1 Java两种数据类型分类(1)基本数据类型,分为boolean、byte、int、char、long、short、double、float;(2)引用数据类型 ,分为数组、类、接口。1.2 Java为每个基本数据类型提供了封装类为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每 一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机原创 2021-02-26 17:13:51 · 118 阅读 · 0 评论 -
ASM原理详解
一、什么是ASM ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。asm字节码增强技术主要是用来反射的时候提升性能的,如果单纯.转载 2021-02-26 17:12:04 · 1837 阅读 · 2 评论 -
动态代理是基于什么原理
代理模式:通过代理静默的解决一些与业务无关的问题,例如远程,安全,事物,日志,资源关闭,...让应用开发者可以只关心自身业务.静态代理:事先写好代码类,可以手工编写,也可以用工具生成.缺点是每个业务类都要有一个对应代理类,非常不灵活.动态代理:运行时自动生成代理对象.缺点是生成代理对象和调用代理对象都要额外花费时间,JDK动态代理:基于java反射机制实现,必须要实现了接口的业务类才能用这种办法生成代理对象.新版本也开始结合ASM机制.cglib动态代理:基于ASM机制实现,通过生成业务类的原创 2021-02-26 17:10:58 · 189 阅读 · 0 评论 -
String,StringBuffer与StringBuilder的区别
一、Java String 类——String字符串常量字符串广泛应用在Java 编程中,在 Java 中字符串属于对象,Java 提供了String 类来创建和操作字符串。需要注意的是,String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,这样不仅效率低下,而且大量浪费有限的内存空间。我们来看一下这张对String操作时内存变化的图:我们可以看到,初始String值为“hello”,然后在这个字符串后面加上新的字符串“world”,这个过程是需要重新..转载 2021-02-26 16:53:38 · 122 阅读 · 0 评论 -
谈谈final,finally,finalize的区别
1. final 在java中,final可以用来修饰类,方法和变量(成员变量或局部变量)。下面将对其详细介绍。1.1 修饰类 当用final修饰类的时,表明该类不能被其他类所继承。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:final类中所有的成员方法都会隐式的定义为final方法。1.2 修饰方法使用final方法的原因主要有两个: (1) 把方法锁定,以防止继承类对其进行更改。 (2) 效率,在早期的java版本中,会将final方法.原创 2021-02-24 17:15:19 · 186 阅读 · 0 评论 -
谈谈你对java平台的理解?
问题:谈谈你对java平台的理解?java是解释执行,这句话对吗?典型回答:java本身是一种面向对象的语言,具有很好的跨平台的能力,能够做到“write once ,run anywhere”。另外就是GC机制,java通过垃圾回收器回收分配内存,程序员无需自己操心内寸的回收问题。我们日常会接触到jre和jdk。jre是java运行环境,包含了jvm和java类库等。jdk则是在jre的基础上提供了更多的工具,比如编译器,和一些诊断工具等。 java是解释执行,这句话不是很准...转载 2021-02-24 17:14:23 · 128 阅读 · 0 评论 -
Exception和Error有什么区别
基本概念首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception和Error体现了JAVA这门语言对于异常处理的两种方式。Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不...转载 2021-02-24 17:00:51 · 3930 阅读 · 0 评论