VO、DTO、DO、PO的概念、区别

Python3 列表list合并的4种方法

  返回  

JDK 1.7和JDK1.8区别

2021/7/20 15:16:56 浏览:

能说出三四条就可以了,注重理解,可解和hashMap的知识一起看~

  1. StreamApi: jdk1.8增加了stream特性,主要是基于fork-join框架构建,而且你可以通过parallel()与sequential()在并行流与顺序流之间进行切换。

  2. Hashmap性能优化:
    a. 1.7是数组+链表,1.8则是数组+链表+红黑树结构;
    b. 1.8尾插法,1.7中是采用头插

  3. hashCode值计算:
    a. jdk1.7直接使用key的hashCode值
    b. 1.8中则是采用key的hashCode异或上key的hashCode进行无符号右移16位的结果,避免了只靠低 位数据来计算哈希时导致的冲突,计算结果由高低位结合决定,使元素分布更均匀

  4. 扩容策略:
    a. 1.7中是只要不小于阈值就直接扩容2倍;
    b. 1.8的扩容策略会更优化,当数组容量未达到64时,以2倍进行扩容,超过64之后若桶中元素个数不小于7就将链表转换为红黑树,但如果红黑树中的元素个数小于6就会还原为链表,当红黑树中元素不小于32的时候才会再次扩容。

  5. 永久代移除,变成元空间

  6. lamda表达式,很关键的一个新特性 用法举例: Comparator com = (x, y) ->
    Integer.compare(y, x);

  7. 并发:LongAdder 、 CompletableFuture 、StampedLock 这3个也是很重要

  8. concurreenthashmap(JDK1.8使用内置锁synchronized来代替重入锁ReentrantLock),原因有:
    a. 因为粒度降低了,在相对而言的低粒度加锁方式,synchronized并不比ReentrantLock差,在粗粒度加锁中ReentrantLock可能通过Condition来控制各个低粒度的边界,更加的灵活,而在低粒度中,Condition的优势就没有了
    b. JVM的开发团队从来都没有放弃synchronized,而且基于JVM的synchronized优化空间更大,使用内嵌的关键字比使用API更加自然
    c. 在大量的数据操作下,对于JVM的内存压力,基于API的ReentrantLock会开销更多的内存,虽然不是瓶颈,但是也是一个选择 九. fork-join框架的优化

联系我们

如果您对我们的服务有兴趣,请及时和我们联系!

服务热线:18288888888
座机:18288888888
传真:
邮箱:888888@qq.com
地址:郑州市文化路红专路93号