美团面试拷打:ConcurrentHashMap 为何不能插入 null?HashMap 为何可以?
周末的时候,有一位小伙伴提了一些关于 ConcurrentHashMap 的问题,都是他最近面试遇到的。原提问如下(星球原贴地址:https://t.zsxq.com/11jcuezQs ):

整个提问看着非常复杂,其实归纳来说就是两个问题:
ConcurrentHashMap为什么 key 和 value 不能为 null?ConcurrentHashMap能保证复合操作的原子性吗?
下面我会以此提供这两个问题的详细答案,希望对你有帮助。
ConcurrentHashMap 为什么 key 和 value 不能为 null?
ConcurrentHashMap 的 key 和 value 不能为 null 主要是为了避免二义性。null 是一个特殊的值,表示没有对象或没有引用。如果你用 null 作为键,那么你就无法区分这个键是否存在于 ConcurrentHashMap 中,还是根本没有这个键。同样,如果你用 null 作为值,那么你就无法区分这个值是否是真正存储在 ConcurrentHashMap 中的,还是因为找不到对应的键而返回的。
拿 get 方法取值来说,返回的结果为 null 存在两种情况:
- 值没有在集合中 ;
相关文章:
美团面试拷打:ConcurrentHashMap 为何不能插入 null?HashMap 为何可以?
周末的时候,有一位小伙伴提了一些关于 ConcurrentHashMap 的问题,都是他最近面试遇到的。原提问如下(星球原贴地址:https://t.zsxq.com/11jcuezQs ): 整个提问看着非常复杂,其实归纳来说就是两个问题: ConcurrentHashMap 为什么 key 和 value 不能为 null?ConcurrentH…...
【力扣每日一题】2023.8.29 带因子的二叉树
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一些元素,让我们用这些元素连接形成特定的二叉树,每种元素可以使用任意次数,形成的二叉树要…...
origin导出pdf曲线超出边框
软件版本 软件版本Word2021Origin2021Adobe Acrobat Pro2023 问题描述 Origin导出的emf格式矢量图片,插入到Word中,显示正常,但是在使用Word导出→创建Adobe PDF→创建Adobe PDF导出PDF文件后,图片曲线就会超出边框,…...
由Android10适配到Android12时遇到相关编译失败问题
最近Android系统各大应用商店联合发出公告,处于个人隐私安全考虑,强制APP适配到Android 11及以上版本。下面是其中应用市场的公告(顺带提醒没适配的同学): 适配前的开发环境 名称版本Android studioGiraffe | 2022.3…...
高职教育应对ChatGPT应用的策略
一、完善顶层设计,提升技术水平 在推广ChatGPT平台的过程中,高职院校需要关注技术本身的问题。这就需要在国家和地方政府的引导下,引入更完善的技术顶层设计,提高人工智能在高职教育中的运用水平。具体来说,一方面需要…...
Linux 内核编译参数
文章目录 前言1 -Wall2 -Wundef3 -Wstrict-prototypes4 -Wno-trigraphs5 -fno-strict-aliasing6 -fno-common7 -Werror-implicit-function-declaration8 -Wno-format-security9 -fno-delete-null-pointer-checks10 -stdgnu89 前言 # cat /etc/os-release NAME"CentOS Lin…...
vscode使用anaconda自带的python环境在终端运行时报错
目录 具体报错内容官方翻译报错讲人话解决方法 具体报错内容 CommandNotFoundError: Your shell has not been properly configured to use conda activate. If your shell is Bash or a Bourne variant, enable conda for the current user with$ echo ". E:\Anaconda/e…...
葡萄叶病害识别(图像连续识别和视频识别,Python代码,pyTorch框架)
葡萄叶病害识别(图像连续识别和视频识别,Python代码,pyTorch框架)_哔哩哔哩_bilibili 葡萄数据集 第一个文件夹为 Grape Black Measles(葡萄黑麻疹)病害(3783张) Grape Black rot葡…...
Oracle drop删除表如何恢复
摘要: 在 Oracle 数据库管理中,DROP 命令的误操作可能导致数据不可挽回的丢失。然而,Oracle 提供了回收站(recycle bin)功能,允许用户在删除对象后的一段时间内恢复它们。本文将介绍如何查询、启用和管理回…...
5、监测数据采集物联网应用开发步骤(5.1)
监测数据采集物联网应用开发步骤(4) Sqlite3数据库读写操作开发、异常信息统一处理类开发 本章节需要调用sqlite3及mysql-connector 安装sqlite3 Pip3 install sqlite3 安装mysql-connector pip3 install mysql-connector 验证是否安装成功,python中运行下列…...
ZZULIOJ 1148: 组合三位数之一,Java
ZZULIOJ 1148: 组合三位数之一,Java 题目描述 把1、2、3、4、5、6、7、8、9组合成3个3位数,要求每个数字仅使用一次,使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。 输入 无 输出 按从小到大的顺序输出这三个三位数&a…...
ROS功能包目录下CMakeLists.txt
1. add_execuble CMake基础教程(24)add_executable生成目标可执行文件 CMake中add_executable的使用 CMake中的add_executable命令用于使用指定的源文件向项目(project)添加可执行文件,其格式如下: add_executable(<name>…...
Python爬虫追踪新闻事件发展进程及舆论反映
目录 实现方案 1. 确定目标新闻源: 2. 确定关键词: 3. 使用网络爬虫获取新闻内容: 4. 提取和分析新闻文章: 5. 追踪新闻事件的发展进程: 6. 监测舆论反映: 7. 数据可视化: 完整代码示例…...
block层:7. 请求下发
blk_dispatch 源码基于5.10 1. blk_mq_sched_dispatch_requests void blk_mq_sched_dispatch_requests(struct blk_mq_hw_ctx *hctx) {// 队列struct request_queue *q hctx->queue;// 队列已停止或者被暂停if (unlikely(blk_mq_hctx_stopped(hctx) || blk_queue_quiesc…...
Matlab图像处理-平移运算
几何运算 几何运算又称为几何变换,是将一幅图像中的坐标映射到另外一幅图像中的新坐标位置,它不改变图像的像素值,只是改变像素所在的几何位置,使原始图像按照需要产生位置、形状和大小的变化。 图像几何运算的一般定义为&#…...
美创科技一体化智能化公共数据平台数据安全建设实践
公共数据是当今政府数字化转型的关键要素和未来价值释放的核心锚点,也是“网络强国”、“数字中国”的战略性资源。 作为数字化改革先行省份,近年来,浙江省以一体化智能化公共数据平台作为数字化改革的支撑总平台,实现了全省公共数…...
关于单例模式
单例模式的目的: 单例模式的目的和其他的设计模式的目的都是一样的,都是为了降低对象之间的耦合性,增加代码的可复用性,可维护性和可扩展性。 单例模式: 单例模式是一种常用的设计模式,用简单的言语说&am…...
pytest笔记: pytest单元测试框架
第一步:安装 和查看版本 pycharm settings 查看 第二步: 编写test_example.py def inc(x):return x1 def test_answer():assert inc(4) 5 第三步:在当前路径下执行pytest 命令 PS E:\data\web测试\Selenium3自动化测试实战——基于Pyth…...
vulnhub Seattle-0.0.3
环境:vuluhub Seattle-0.0.3 1.catelogue处任意文件下载(目录穿越) http://192.168.85.139/download.php?item../../../../../../etc/passwd 有个admin目录,可以下载里面的文件进行读取 2.cltohes详情页面处(参数prod)存在sql报错注入 http://192.16…...
MYSQL 添加行号将行号写入到主键的列
MYSQL 添加行号 SELECT rownum: rownum 1 AS rownum, a.* FROM(SELECT rownum : 0) t,is_afxt.hk_vehicle a--或者(假设CREATED_TIME日期列数据不重复) select (select count(1)1 from is_afxt.hk_vehicle b where b.CREATED_TIME < a.CREATED_TIME) rownum ,a.* from i…...
Python网页自动化工具DrissionPage:高效融合浏览器操作与网络请求处理指南
Python网页自动化工具DrissionPage:高效融合浏览器操作与网络请求处理指南 【免费下载链接】DrissionPage Python based web automation tool. Powerful and elegant. 项目地址: https://gitcode.com/gh_mirrors/dr/DrissionPage 一、项目价值:解…...
深入Fast DDS传输层:从UDP、TCP到共享内存,如何为你的ROS2应用选择最佳通信方式?
Fast DDS传输层深度解析:UDP、TCP与共享内存的工程实践指南 在分布式系统架构中,通信中间件的性能直接影响整个系统的响应速度和可靠性。作为ROS 2的默认通信中间件,Fast DDS提供了多种传输协议选择,但如何根据实际场景做出最优决…...
USB批量传输中ZLP的必要性:为何512字节整数倍数据包会丢失
1. USB批量传输中的ZLP到底是什么? 第一次遇到USB批量传输丢数据的问题时,我也是一头雾水。明明发送端显示数据已经成功发送,接收端却死活收不到完整数据。后来排查发现,问题出在数据包大小刚好是512字节的整数倍时。这就是我们今…...
Flutter Gradle插件迁移指南:从apply script到声明式plugins的实践
1. 为什么需要迁移到声明式plugins块 最近在维护一个Flutter项目时,我发现每次构建Android端都会弹出一个黄色警告:"You are applying Flutters app_plugin_loader Gradle plugin imperatively using the apply script method..."。这个警告看…...
老旧设备AI赋能:开源方案实现群晖NAS人脸识别功能升级
老旧设备AI赋能:开源方案实现群晖NAS人脸识别功能升级 【免费下载链接】Synology_Photos_Face_Patch Synology Photos Facial Recognition Patch 项目地址: https://gitcode.com/gh_mirrors/sy/Synology_Photos_Face_Patch 在数字化时代,NAS设备已…...
Vivado+Vitis双剑合璧:从零构建Zynq-7020的SD卡Linux系统启动镜像
VivadoVitis双剑合璧:从零构建Zynq-7020的SD卡Linux系统启动镜像 在嵌入式系统开发领域,Xilinx Zynq系列SoC凭借其独特的ARM处理器与FPGA可编程逻辑的完美结合,成为众多高性能嵌入式应用的理想选择。本文将带领开发者深入探索如何利用Vivado和…...
嵌入式Linux实战:全志T3+vsftpd实现轻量级文件传输(含WinSCP连接教程)
嵌入式Linux实战:全志T3vsftpd实现轻量级文件传输(含WinSCP连接教程) 在物联网设备开发中,文件传输是一个看似简单却充满挑战的环节。当你的开发板是全志T3这样的资源受限平台时,如何在有限的存储和内存条件下搭建一个…...
FPGA设计中的组合逻辑环:为什么你的Verilog代码会引发警告?
FPGA设计中的组合逻辑环:为什么你的Verilog代码会引发警告? 在数字电路设计的浩瀚海洋中,组合逻辑环(Combinational Loop)就像是一个潜伏的暗礁,看似无害却可能让你的整个设计"触礁沉没"。作为一…...
3分钟上手!Balena Etcher:安全烧录系统镜像的终极解决方案
3分钟上手!Balena Etcher:安全烧录系统镜像的终极解决方案 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 你是否曾因烧录系统镜像而丢失…...
Java函数冷启动优化不是“选配”,而是SLA硬指标!一线大厂SRE团队正在紧急落地的6项Kubernetes调度增强策略
第一章:Java函数冷启动的本质与SLA倒逼机制Java函数冷启动并非单纯“首次加载慢”的表象,而是JVM生命周期、类加载机制、字节码验证、即时编译(JIT)预热及运行时元数据初始化等多层系统行为在无预热上下文下的集中爆发。当Serverl…...
