文章 2024-10-18 来自:开发者社区

Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)

导言 HashMap 的源码分析,是面试中经常问到的地方,这也是写这篇博文的重要原因之一。源码中有很多基础知识,是平时用不到的,比如位运算法,所以这里第一节就是先了解和学习一下位运算符。 一、基础铺垫 导言中也说了,基础知识有位运算法,位运算符的基础知识又与原码、反码、补码紧密相关,所...

文章 2024-06-21 来自:开发者社区

JDK源码分析-HashMap

一.HashMap的内部属性 1.1 成员变量 1.1.1 size: HashMap包含的KV键值对的数量,也就是我们通常调用Map.size()方法的返回值 public int size() { return size; }...

文章 2024-02-23 来自:开发者社区

享元模式、在 JDK-Interger 的应用源码分析

1 展示网站项目需求 小型的外包项目,给客户 A 做一个产品展示网站,客户 A 的朋友感觉效果不错,也希望做这样的产品展示网站,但是要求都有些不同: 有客户要求以新闻的形式发布 有客户人要求以博客的形式发布 有客户希望以微信公众号的形式发布 2 传统方案解决网站展现项目 直接复制粘贴一份,然后根据客户不同要求,...

享元模式、在 JDK-Interger 的应用源码分析
文章 2024-02-01 来自:开发者社区

【Java】BIO源码分析和改造(GraalVM JDK 11.0.19)

引言本文介绍网络IO编程的入门部分,Java 的传统BIO Socket编程源码分析,了解如何将BIO阻塞行为accept() 和 read() 改造为非阻塞行为,并且将结合Linux文档介绍其中的机制,文档中描述了如何处理Socket的accept,对比Java的Socket实现代码,基本可以发现和Linux行为基本一致。废话不多说,我们直接开始。draw.io 文件本文涉及的个人源码分析绘图....

【Java】BIO源码分析和改造(GraalVM JDK 11.0.19)
文章 2024-01-31 来自:开发者社区

【JDK 源码分析】ConcurrentHashMap 底层结构

ConcurrentHashMap针对JDK 1.7和JDK 1.8版本上实现有不同。先来看看JDK 1.7版本的ConcurrentHashMap的底层实现。JDK 1.7版本的ConcurrentHashMap底层维护了:Segments数组+HashEntry数组+链表,采用分段锁保证线程安全。一个ConcurrentHashMap中有一个Segments数组,一个Segments中存储一....

【JDK 源码分析】ConcurrentHashMap 底层结构
文章 2024-01-31 来自:开发者社区

【JDK 源码分析】HashMap 线程安全问题分析

JDK 1.8采用尾插法解决了JDK 1.7(出现Hash冲突采用的头插法)中的并发扩容导致的循环链表问题。JDK 1.8下的HashMap并发问题主要是由于多线程put时,Hash桶头节点元素值被覆盖的问题。final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) {...

文章 2024-01-31 来自:开发者社区

【JDK 源码分析】HashMap 操作方法

HashMap在新增元素时,会调用put方法,本质上调用了putVal方法:public V put(K key, V value) { return putVal(hash(key), key, value, false, true); }在调用putval方法时传入了5个参数:第一个参数hash值:调用了hash方法计算了Key的hash值第二个参数key:就是我们传入的key值第三...

文章 2024-01-31 来自:开发者社区

【JDK 源码分析】HashMap 底层结构

针对于HashMap来说,主要有两个版本的区别JDK 1.7和JDK 1.8。先来看看JDK 1.7版本的底层实现:在JDK 1.7中,首先是把元素放在一个数组里面,后来存放的数据元素,当出现Hash碰撞时,通过使用链表的方式进行存放。采用的是 数据 + 链表 的方式进行存储。但存储的元素足够大的时候,出现Hash碰撞的概率也越来越大,此时的链表长度将会越来越长,此时查询的复杂度提高。在JDK ....

【JDK 源码分析】HashMap 底层结构
文章 2023-12-21 来自:开发者社区

Integer类【JDK源码分析】

前言2023-10-9 14:29:39以下内容源自《【JDK源码分析】》仅供学习交流使用推荐Integer类【JDK源码分析】Integer类parseInt()测试代码源码分析在Solution类中其巧妙之处在于:使用负数保存运算结果:// Accumulating negatively avoids surprises near MAX_VALUE 负积累可避免在MAX_VALUE附近出现....

文章 2023-12-14 来自:开发者社区

【Java】BIO源码分析和改造(GraalVM JDK 11.0.19)(二)

【Java】BIO源码分析和改造(GraalVM JDK 11.0.19)(一)https://developer.aliyun.com/article/1395315java.net.PlainSocketImpl#socketAccept不同的操作系统实现不同,这里仅以个人看到的JDK11版本源码为例。@Override void socketAccept(SocketImpl s) thr....

【Java】BIO源码分析和改造(GraalVM JDK 11.0.19)(二)

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。

产品推荐