首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么HashMap键值可以为null,ConcurrentHashMap不行

这篇文章时候,漏了一个知识点,直到晚上吃饭时候才突然想到,关于ConcurrentHashMap在存储Key与Value时候,是否可以存null问题,按理说这是一个小问题,但build哥却不敢忽视...接下来我们就将HashMap、Hashtable、ConcurrentHashMap这三集合类键值是否可以null问题,放一起对比去学习一下。...底层源码,我们可以看到,方法体内,首先就对value值进行判空操作,如果为空则抛出空指针异常;其次在计算hash值时候,直接调用keyhashCode()方法,若keynull,自然也会报空指针异常...,因此,它可以存储为nullvalue值,我们知道HashMap键值对特点如同身份证与人名一样,key等同于身份证,全国唯一,value值等同于人名,可以重复,比如全国有上万个叫张伟,所以value...大致意思是,在单线程环境中,不会存在一个线程操作该 HashMap 时,其他线程将该 HashMap 修改情况,可以通过 contains(key)来做判断是否存在这个键值对,从而做相应处理;

5100

八股文:为什么HashMap键值可以为null,ConcurrentHashMap不行

在Java中,ConcurrentHashMap这个线程安全集合中Key或者Value是不允许 null(空)值出现,但是非线程安全HashMap又允许Key或者Value插入null(空)值。...探寻源码 ConcurrentHashMapput方法对key和value做了非空判断,如果为空,会抛出空指针异常: 那为什么ConcurrentHashMap如此设计呢?...在单线程环境中,不会存在一个线程操作该 HashMap 时,其他线程将该 HashMap 修改情况,可以通过 contains(key)来做判断是否存在这个键值对,从而做相应处理。...而在多线程环境下,可能会存在多个线程同时修改键值对情况,这时是无法通过contains(key)来判断键值对是否存在,这会带来一个二义性问题,Doug Lea说二义性是多线程中不能容忍!...这个线程无法确认,这个null表示是确实不存在这个key,还是说存在key,但是value为空。 这种不确定性会造成线程安全性问题,ConcurrentHashMap本身又是一个线程安全集合。

10710
您找到你想要的搜索结果了吗?
是的
没有找到

国外程序猿可以工作到退休国内为什么这么短命

真正原因是我们国内很大一部分程序猿只是工具使用者,不会去思考工具产生和原理,用惯了一个高效工具就被这个工具套牢成为奴隶,国外程序猿跟多会去思考和专研这个工具产生和原理,然后可能会自己优化出个...领导想让他给其他同时培训一下如何使用这个工具,提高大家工作效率。 这个工具是他智慧结晶,汗水付出和能力体现。他应该饱受嘉奖,升职加薪。是的,故事确实按照这个方向发展。 STOP!...所谓虚幻,指的是别人通过自身经验创造出模块化工具,使用者你用乐此不疲。所谓现实,指的是你无法使用自身经验同样创造出相同东西。 这些工具确实是能倍速改善工作效率,但是,这是一种假象。...你不知道这个模块底层逻辑是什么,是如何迭代升级,从无到有经历了什么毫不知情。这就是为什么高度模块化公司出来的人,能力上似乎并不高原因。...为什么我们想不到,而他想到并付出行动?我想这个问题,我们应该好好去思考一番。 其次,通过深度思考,将这套流程化思维内化,嫁接到自己工作中去。换句话说,通过别人模块化工具建立自己模块化工具。

55300

关于 Virtual SANVSAN 常见问题解答

VSAN 自身算法可决定数据应放置位置,因此,虽然所有主机都有足够磁盘,但数据仍可能会在多个主机中进行条带化不是在某个主机中多个磁盘中进行条带化。...• 问:我可以对 SSD 或磁盘进行分区并将它们用在其他方面吗(比如,安装 ESXi/vFlash)? 答:不行,您不能对 SSD 或 HDD 进行分区。...我认为问题在于,为什么要将主机置于维护模式,以及主机多久可以再次使用。如果确实需要快速进入维护模式,并不在乎可能会丢失数据,则可以选择选项 3:回退。...VSAN 自身算法可决定数据应放置位置,因此,虽然所有主机都有足够磁盘,但数据仍可能会在多个主机中进行条带化不是在某个主机中多个磁盘中进行条带化。...• 问:我可以对 SSD 或磁盘进行分区并将它们用在其他方面吗(比如,安装 ESXi/vFlash)? 答:不行,您不能对 SSD 或 HDD 进行分区。

2.3K20

3000字13张图详细介绍RAID0、1、5、6、10、50、60,非常值得收藏!

RAID 系统由两个或多个并行工作驱动器组成,这些可以是硬盘或者 SSD(固态硬盘)。...高读取速度,因为如果一个磁盘繁忙,则可以使用任何一个磁盘 即使任何一个驱动器发生故障,阵列也能正常工作 至少需要 2 个驱动器 缺点 费用较高(每个驱动器需要 1 个额外驱动器用于镜像) 由于必须更新所有驱动器...它可以与多达 16 个驱动器一起工作。...双奇偶校验允许每个 RAID 6 阵列中两个驱动器发生故障,带化可提高容量和性能,而无需向每个 RAID 6 阵列添加驱动器。...例如,对于 36 个驱动器,您可以拥有一个 RAID 60,每个分支包含 18 个驱动器,或者一个 RAID三腿中有 60 ,每条腿有 12 个驱动器。

3.3K20

RAID0、1、5、6、10、50、60超详细说明,简单易懂!

RAID 系统由两个或多个并行工作驱动器组成,这些可以是硬盘或者 SSD(固态硬盘)。...高读取速度,因为如果一个磁盘繁忙,则可以使用任何一个磁盘 即使任何一个驱动器发生故障,阵列也能正常工作 至少需要 2 个驱动器 缺点 费用较高(每个驱动器需要 1 个额外驱动器用于镜像) 由于必须更新所有驱动器...它可以与多达 16 个驱动器一起工作。...双奇偶校验允许每个 RAID 6 阵列中两个驱动器发生故障,带化可提高容量和性能,而无需向每个 RAID 6 阵列添加驱动器。...例如,对于 36 个驱动器,您可以拥有一个 RAID 60,每个分支包含 18 个驱动器,或者一个 RAID三腿中有 60 ,每条腿有 12 个驱动器。

13.4K32

揭秘Kafka硬盘设计方案,快速完成PB级数据扩容需求!

partition数据目录分别为: /data/topicA-0、/data1/topicA-1、/data2/topicA-2。至于为什么会均匀分布就不详细展开了,有兴趣同学可以去参阅相关资料。...为什么呢? 云硬盘底层自带多副本,就不需要再做Raid1避免数据损坏、系统波动了。在线扩容,是指可以动态对单块硬盘进行扩容。此时lvm动态扩容能力就凸显出来了。如下图: ?...挂载到/data目录下,这样即可以利用条带化并行写入能力,也可以得到所需600GB容量。当业务发展一段时间,忽然发现,600GB不够用了,每台Broker需要 1.2TB。...磁盘阵列也不是一个大力推荐方案,自建集群业务场景简单,单硬盘方案和多目录读写方案基本可以解决很多问题。而在业务场景复杂、规模大物理机集群,RAID0和RAID10都是可以考虑方案。...主要负责腾讯云CKafka定制化开发及优化工作。专注于Kafka在公有云多租户和大规模集群场景下性能分析和优化。 ?

1K10

【第七章 配置STA环境 下】静态时序分析圣经翻译计划

{testmode[2]}] set_case_analysis 0 [get_ports {testmode[1]}] set_case_analysis 0 [get_ports {testmode...[0]}] 如果设计具有多种功能模式,只需要分析其中一种功能模式,则可以使用set_case_analysis来指定要分析模式。...7.10.2 中断单元内时序弧 每个单元都有从其输入到输出时序弧,并且时序路径可能会通过这些时序弧中其中一个。在某些情况下,单元中路径可能无法发生。...例如可能有这样一种情况,其中时钟连接到多路复用器选择端,多路复用器输出是数据路径一部分。在这种情况下,中断多路复用器选择引脚和输出引脚之间时序弧可能很有用。...请注意,还会自动创建另外两时序路径,一从UFF0 / CK到UAND2 / Z,另一从UAND6 / A到UFF1 / D。因此,原始时序路径已被分为了三个部分,每个部分分别进行时序分析。

1.8K20

Raid0、Raid1、Raid0+1、Raid5

数据被分割存储在n块盘上,任一数据盘出现问题,可由其他数据盘通过校正监测恢复数据(可以带伤工作),换数据盘需要重新恢复完整校验容错信息。...对阵列写入时会重写校验盘内容,对校验盘负载较大,读写速度相较于Raid0较慢,适用于读取多写入少应用环境,比如数据库和web服务器。...RAID0 将所在磁盘条带化后组成大容量存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。...RAID5 (图 7)磁盘上同时存储数据和校验数据,数据块和对应校验信息存保存在不同磁盘上,当一个数据盘损坏时,系统可以根据同一其他数据块和对应校验数据来重建损坏数据。...RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像; RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。

2.7K10

完全图解RAID存储技术:RAID 0、1、5、6、10、50、60

早期RAID实施通常依赖于软件,即操作系统提供RAID功能。然而,随着硬件技术进步,硬件RAID控制器出现了,提供更高性能和更强大功能。 RAID标准化工作也逐渐展开。...这些标准化工作为不同RAID级别的实施提供了一致性和互操作性。 RAID级别 RAID存储提供了不同级别,每个级别具有不同冗余和性能特性。...RAID 10:RAID 1+0,将RAID 1镜像组合成RAID 0带化,提供较高容错能力和读写性能。 RAID 50:RAID 5组合成RAID 0,提供较高性能和容错能力。...下面我们来详细介绍一下RAID各个级别 RAID 0 原理 RAID 0使用数据条带化(striping)方式将数据分散存储在多个磁盘驱动器上,不进行冗余备份。...RAID 0通常是成本最低选择,RAID 10和RAID 6可能需要更多硬件资源和较高成本。

4K30

完全图解RAID存储技术:RAID 0、1、5、6、10、50、60

这些标准化工作为不同RAID级别的实施提供了一致性和互操作性。RAID级别RAID存储提供了不同级别,每个级别具有不同冗余和性能特性。...RAID 10:RAID 1+0,将RAID 1镜像组合成RAID 0带化,提供较高容错能力和读写性能。RAID 50:RAID 5组合成RAID 0,提供较高性能和容错能力。...下面我们来详细介绍一下RAID各个级别RAID 0原理RAID 0使用数据条带化(striping)方式将数据分散存储在多个磁盘驱动器上,不进行冗余备份。...每个块一部分存储在驱动器A上,另一部分存储在驱动器B上。适用场景RAID 0适用于需要高性能不关心数据冗余场景。...RAID 0通常是成本最低选择,RAID 10和RAID 6可能需要更多硬件资源和较高成本。

11.2K78

服务器03-raid卡选型及SSD和HDD对比

扩展小知识 1)看到此图,就让我想到了:计算机体系结构中“冯诺依曼”大师 2)处理机即CPU 3)CACHE MEMORY内存 4)Firmware相当于OS(通常说升级固件,相当于我们PC重做系统...4.题外话:为什么要raid 硬盘早期阶段,单盘容量很小(我用过4G移动硬盘和128Mmp3,当时应该是好几百上千;当时2007年,再sun小机上用硬盘好像是18G)。...于是乎技术工作者想到了一种办法:在系统层面通过软件把多块物理磁盘合并我一块逻辑磁盘,比如简单粗暴把10块18G硬盘合并为一块180G逻辑盘。...既然raid消耗系统CPU资源并且效率低下,那我用硬件做行不行?行,raid算法用专用芯片计算并从操作系统中移除放入底层,这种情况叫“硬raid”。...其实raid不光能合并多个小硬盘为一个逻辑大硬盘,同时还能通过条带化提高磁盘性能。如果大家对Linuxlvm比较熟悉,就会发现lvm有mirror参数,其实也相当于软raid1。

2.7K10

详解Hadoop3.x新特性功能-HDFS纠删码

EC,条带化技术就是一种自动将 I/O 负载均衡到多个物理磁盘上技术,原理就是将一块连续数据分成很多小部分并把他们分别存储到不同磁盘上去,这就能使多个进程同时访问数据多个不同部分不会造成磁盘冲突...在HDFS中,把连续数据分成很多小部分称为条带化单元,对于原始数据单元每个条带单元,都会计算并存储一定数量奇偶检验单元,计算过程称为编码,可以通过基于剩余数据和奇偶校验单元解码计算来恢复任何条带化单元上错误...这允许在块组不是块级别进行管理 Client:客户端读取和写入路径得到了增强,可以并行处理block group中多个内部块 DataNode:DataNode运行额外ErasureCodingWorker...NameNode检测到失败EC块, 会选择一个DataNode进行恢复工作。此过程类似于失败时如何重新恢复副本块。...这确定了条带读取和写入粒度,包括缓冲区大小和编码工作。 我们可以通过XML文件定义自己EC策略,该文件必须包含以下三个部分: layoutversion:这表示EC策略XML文件格式版本。

1.2K30

详解HDFS3.x新特性-纠删码

EC,条带化技术就是一种自动将 I/O 负载均衡到多个物理磁盘上技术,原理就是将一块连续数据分成很多小部分并把他们分别存储到不同磁盘上去,这就能使多个进程同时访问数据多个不同部分不会造成磁盘冲突...在HDFS中,把连续数据分成很多小部分称为条带化单元,对于原始数据单元每个条带单元,都会计算并存储一定数量奇偶检验单元,计算过程称为编码,可以通过基于剩余数据和奇偶校验单元解码计算来恢复任何条带化单元上错误...这允许在块组不是块级别进行管理 Client:客户端读取和写入路径得到了增强,可以并行处理block group中多个内部块 DataNode:DataNode运行额外ErasureCodingWorker...NameNode检测到失败EC块, 会选择一个DataNode进行恢复工作。此过程类似于失败时如何重新恢复副本块。...这确定了条带读取和写入粒度,包括缓冲区大小和编码工作

1.5K00

【DB笔试面试704】在Oracle中,ASM是什么?它有哪些优点?

ASM是Oracle为了简化数据库管理推出来一项新功能,这是Oracle自己提供卷管理器,主要用于替代操作系统所提供LVM,它不仅支持单实例,同时对RAC支持也是非常好。...ASM可以自动管理磁盘组并提供有效数据冗余功能。使用ASM后,DBA不再需要对Oracle中成千上万数据文件进行管理和分类,从而简化了DBA工作量,可以使得工作效率大大提高。...⑤ 是一个纯软件级别的实现方式,第三方RAID工作在卷层次上,使用统一带大小,ASM可以工作在文件层次级别,不同文件可以使用不同条带大小。...ALTER DISKGROUP FRA ADD DISK 'ORCL:VOL3'; --ADD DISK后参数为PATH,DROP DISK后参数为NAME ALTER DISKGROUP DATA...题目要求选出ASM3个主要特点,选项A为文件条带化,选项B为分配单元镜像选项,选项C为自动磁盘重新平衡,选项D和选项E都不是ASM特点。 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

82610

大数据基础知识科普(1)!

服务器和电脑功能都是一样,也可以将服务器称之为电脑,只是服务器对稳定性与安全性以及处理器数据能力有更高要求。比如我们随时浏览一个网站,发现这个网站每天24小时都能访问,为什么呢?...机架服务器 机架式服务器外形看来不像计算机,像交换机,有1U(1U=1.75英寸=4.445CM)、2U、4U等规格。机架式服务器安装在标准19英寸机柜里面。...现在单个磁盘容量就可以到 10TB 以上,这样 RAID 存储容量就可以达到 PB 级。 (2)高性能 RAID 高性能受益于数据条带化技术。...RAID1 RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它磁盘空间利用率为 50% 。...RAID1 在数据写入时,响应时间会有所影响,但是读数据时候没有影响。 RAID1 提供了最佳数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作

1.4K81

大数据基础知识之什么是服务器什么是集群

服务器和电脑功能都是一样,也可以将服务器称之为电脑,只是服务器对稳定性与安全性以及处理器数据能力有更高要求。比如我们随时浏览一个网站,发现这个网站每天24小时都能访问,为什么呢?...它们可以通过"板载"硬盘启动自己操作系统,如Windows NT/2000、Linux等 机架服务器 机架式服务器外形看来不像计算机,像交换机,有1U(1U=1.75英寸=4.445CM)、2U、...现在单个磁盘容量就可以到 10TB 以上,这样 RAID 存储容量就可以达到 PB 级。 (2) 高性能 RAID 高性能受益于数据条带化技术。...RAID0 将所在磁盘条带化后组成大容量存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。...局域网可以实现文件管理、应用软件共享、打印机共享、工作组内日程安排、电子邮件和传真通信服务等功能。局域网是封闭型可以由办公室内两台计算机组成,也可以由一个公司内上千台计算机组成。

1.9K30

什么是HDFS纠删码

纠删码可以将HDFS存储开销降低约50%,同时与三分本策略一样,还可以保证数据可用性。本文Fayson主要介绍纠删码工作原理。 默认情况下,HDFS数据块都会保存三个副本。...副本提供了一种简单健壮冗余方式来最大化保证数据可用性。数据多副本同时可以尽量保证计算任务本地化。...(stripe)是由若干个相同大小单元(cell)构成序列。在条形布局下,数据被依次写入各个单元中,当被写满之后就写入下一个,一个不同单元位于不同数据块中。...工作负载性能不会太好,如果运行在条带块上。为了更好运行此类工作负载,可以将条带文件转换为连续布局,但这几乎需要重写整个文件。 基于此分析,文件大小是最关键决定因素。...2.2.泛化NameNode中Block概念 ---- 该项目的主要工作在于泛化HDFSblock基本概念以支持数据条带化。连续块布局被广泛深入地嵌入到HDFS内部逻辑中。

5.3K70
领券