这篇文章的时候,漏了一个知识点,直到晚上吃饭的时候才突然想到,关于ConcurrentHashMap在存储Key与Value的时候,是否可以存null的问题,按理说这是一个小问题,但build哥却不敢忽视...接下来我们就将HashMap、Hashtable、ConcurrentHashMap这三集合类的键值是否可以null的问题,放一起对比去学习一下。...底层源码,我们可以看到,方法体内,首先就对value值进行的判空操作,如果为空则抛出空指针异常;其次在计算hash值的时候,直接调用key的hashCode()方法,若keynull,自然也会报空指针异常...,因此,它可以存储为null的value值,我们知道HashMap的键值对特点如同身份证与人名一样,key等同于身份证,全国唯一,而value值等同于人名,可以重复,比如全国有上万个叫张伟的,所以value...大致的意思是,在单线程环境中,不会存在一个线程操作该 HashMap 时,其他的线程将该 HashMap 修改的情况,可以通过 contains(key)来做判断是否存在这个键值对,从而做相应的处理;
在Java中,ConcurrentHashMap这个线程安全的集合中的Key或者Value是不允许 null(空)值出现,但是非线程安全的HashMap又允许Key或者Value插入null(空)值。...探寻源码 ConcurrentHashMap的put方法对key和value做了非空判断,如果为空,会抛出空指针异常: 那为什么ConcurrentHashMap如此设计呢?...在单线程环境中,不会存在一个线程操作该 HashMap 时,其他的线程将该 HashMap 修改的情况,可以通过 contains(key)来做判断是否存在这个键值对,从而做相应的处理。...而在多线程环境下,可能会存在多个线程同时修改键值对的情况,这时是无法通过contains(key)来判断键值对是否存在的,这会带来一个二义性的问题,Doug Lea说二义性是多线程中不能容忍的!...这个线程无法确认,这个null表示的是确实不存在这个key,还是说存在key,但是value为空。 这种不确定性会造成线程安全性问题,而ConcurrentHashMap本身又是一个线程安全的集合。
真正的原因是我们国内的很大一部分程序猿只是工具的使用者,不会去思考工具的产生和原理,用惯了一个高效的工具就被这个工具套牢成为奴隶,而国外的程序猿跟多的会去思考和专研这个工具的产生和原理,然后可能会自己优化出个...领导想让他给其他同时培训一下如何使用这个工具,提高大家的工作效率。 这个工具是他智慧的结晶,汗水的付出和能力的体现。他应该饱受嘉奖,升职加薪。是的,故事确实按照这个方向发展。 STOP!...所谓虚幻,指的是别人通过自身经验创造出的模块化工具,使用者的你用的乐此不疲。所谓现实,指的是你无法使用自身经验同样创造出相同的东西。 这些工具确实是能倍速改善工作效率,但是,这是一种假象。...你不知道这个模块的底层逻辑是什么,是如何迭代升级的,从无到有经历了什么毫不知情。这就是为什么高度模块化公司出来的人,能力上似乎并不高的原因。...为什么我们想不到,而他想到并付出行动?我想这个问题,我们应该好好去思考一番。 其次,通过深度思考,将这套流程化思维内化,嫁接到自己的工作中去。换句话说,通过别人的模块化工具建立自己的模块化工具。
VSAN 自身的算法可决定数据应放置的位置,因此,虽然所有主机都有足够的磁盘,但数据仍可能会在多个主机中进行条带化,而不是在某个主机中的多个磁盘中进行条带化。...• 问:我可以对 SSD 或磁盘进行分区并将它们用在其他方面吗(比如,安装 ESXi/vFlash)? 答:不行,您不能对 SSD 或 HDD 进行分区。...我认为问题在于,为什么要将主机置于维护模式,以及主机多久可以再次使用。如果确实需要快速进入维护模式,并不在乎可能会丢失数据,则可以选择选项 3:回退。...VSAN 自身的算法可决定数据应放置的位置,因此,虽然所有主机都有足够的磁盘,但数据仍可能会在多个主机中进行条带化,而不是在某个主机中的多个磁盘中进行条带化。...• 问:我可以对 SSD 或磁盘进行分区并将它们用在其他方面吗(比如,安装 ESXi/vFlash)? 答:不行,您不能对 SSD 或 HDD 进行分区。
RAID 系统由两个或多个并行工作的驱动器组成,这些可以是硬盘或者 SSD(固态硬盘)。...高读取速度,因为如果一个磁盘繁忙,则可以使用任何一个磁盘 即使任何一个驱动器发生故障,阵列也能正常工作 至少需要 2 个驱动器 缺点 费用较高(每个驱动器需要 1 个额外的驱动器用于镜像) 由于必须更新所有驱动器...它可以与多达 16 个驱动器一起工作。...双奇偶校验允许每个 RAID 6 阵列中的两个驱动器发生故障,而条带化可提高容量和性能,而无需向每个 RAID 6 阵列添加驱动器。...例如,对于 36 个驱动器,您可以拥有一个 RAID 60,每个分支包含 18 个驱动器,或者一个 RAID三条腿中有 60 条,每条腿有 12 个驱动器。
partition的数据目录分别为: /data/topicA-0、/data1/topicA-1、/data2/topicA-2。至于为什么会均匀分布就不详细展开了,有兴趣同学可以去参阅相关资料。...为什么呢? 云硬盘底层自带多副本,就不需要再做Raid1避免数据损坏、系统波动了。在线扩容,是指可以动态的对单块硬盘进行扩容。此时lvm的动态扩容能力就凸显出来了。如下图: ?...挂载到/data目录下,这样即可以利用条带化的并行写入能力,也可以得到所需的600GB容量。当业务发展一段时间,忽然发现,600GB不够用了,每台Broker需要 1.2TB。...而磁盘阵列也不是一个大力推荐的方案,自建集群的业务场景简单,单硬盘方案和多目录读写方案基本可以解决很多问题。而在业务场景复杂、规模大的物理机集群,RAID0和RAID10都是可以考虑的方案。...主要负责腾讯云CKafka定制化开发及优化工作。专注于Kafka在公有云多租户和大规模集群场景下的性能分析和优化。 ?
{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。因此,原始的时序路径已被分为了三个部分,每个部分分别进行时序分析。
数据被分割存储在n块盘上,任一数据盘出现问题,可由其他数据盘通过校正监测恢复数据(可以带伤工作),换数据盘需要重新恢复完整的校验容错信息。...对阵列写入时会重写校验盘的内容,对校验盘的负载较大,读写速度相较于Raid0较慢,适用于读取多而写入少的应用环境,比如数据库和web服务器。...RAID0 将所在磁盘条带化后组成大容量的存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。...RAID5 (图 7)的磁盘上同时存储数据和校验数据,数据块和对应的校验信息存保存在不同的磁盘上,当一个数据盘损坏时,系统可以根据同一条带的其他数据块和对应的校验数据来重建损坏的数据。...RAID01 是先做条带化再作镜像,本质是对物理磁盘实现镜像;而 RAID10 是先做镜像再作条带化,是对虚拟磁盘实现镜像。
早期的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可能需要更多的硬件资源和较高的成本。
这些标准化工作为不同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可能需要更多的硬件资源和较高的成本。
Oracle将所有的存储分为disk groups,我们只需要管理这些disk groups,而不用去管具体的数据文件。...为什么使用ASM?...提供高效率的存储管理 提供完整的集群文件系统和卷管理能力 ASM的优点: Mirroring and Striping(镜像化和条带化) 条带化是一种用于在多个磁盘驱动器之间分散数据的技术。...分条可以加快从磁盘存储中获取数据的操作,这是因为它扩展了总I/O带宽的能力。这样就优化了性能和磁盘利用率,从而不再需要手动I/O 性能调优。...templates Templates是文件属性值的集合。用来给每一种类型的数据库文件设置镜像化和条带化的属性的。
扩展小知识 1)看到此图,就让我想到了:计算机体系结构中的“冯诺依曼”大师 2)处理机即CPU 3)CACHE MEMORY内存 4)Firmware相当于OS(通常说的升级固件,相当于我们PC的重做系统...4.题外话:为什么要raid 硬盘的早期阶段,单盘容量很小(我用过4G的移动硬盘和128M的mp3,当时应该是好几百上千;当时2007年,再sun的小机上用的硬盘好像是18G)。...于是乎技术工作者想到了一种办法:在系统层面通过软件把多块物理磁盘合并我一块逻辑磁盘,比如简单粗暴把10块18G硬盘合并为一块180G的逻辑盘。...既然raid消耗系统CPU资源并且效率低下,那我用硬件做行不行?行,raid算法用专用的芯片计算并从操作系统中移除放入底层,这种情况叫“硬raid”。...其实raid不光能合并多个小硬盘为一个逻辑大硬盘,同时还能通过条带化提高磁盘的性能。如果大家对Linux的lvm比较熟悉,就会发现lvm有mirror参数,其实也相当于软raid1。
EC,条带化技术就是一种自动将 I/O 的负载均衡到多个物理磁盘上的技术,原理就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去,这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突...在HDFS中,把连续的数据分成很多的小部分称为条带化单元,对于原始数据单元的每个条带单元,都会计算并存储一定数量的奇偶检验单元,计算的过程称为编码,可以通过基于剩余数据和奇偶校验单元的解码计算来恢复任何条带化单元上的错误...这允许在块组而不是块的级别进行管理 Client:客户端读取和写入路径得到了增强,可以并行处理block group中的多个内部块 DataNode:DataNode运行额外ErasureCodingWorker...NameNode检测到失败的EC块, 会选择一个DataNode进行恢复工作。此过程类似于失败时如何重新恢复副本的块。...这确定了条带读取和写入的粒度,包括缓冲区大小和编码工作。 我们可以通过XML文件定义自己的EC策略,该文件必须包含以下三个部分: layoutversion:这表示EC策略XML文件格式的版本。
EC,条带化技术就是一种自动将 I/O 的负载均衡到多个物理磁盘上的技术,原理就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去,这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突...在HDFS中,把连续的数据分成很多的小部分称为条带化单元,对于原始数据单元的每个条带单元,都会计算并存储一定数量的奇偶检验单元,计算的过程称为编码,可以通过基于剩余数据和奇偶校验单元的解码计算来恢复任何条带化单元上的错误...这允许在块组而不是块的级别进行管理 Client:客户端读取和写入路径得到了增强,可以并行处理block group中的多个内部块 DataNode:DataNode运行额外ErasureCodingWorker...NameNode检测到失败的EC块, 会选择一个DataNode进行恢复工作。此过程类似于失败时如何重新恢复副本的块。...这确定了条带读取和写入的粒度,包括缓冲区大小和编码工作。
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...题目要求选出ASM的3个主要特点,选项A为文件条带化,选项B为分配单元镜像选项,选项C为自动磁盘重新平衡,选项D和选项E都不是ASM的特点。 本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗
服务器和电脑功能都是一样的,也可以将服务器称之为电脑,只是服务器对稳定性与安全性以及处理器数据能力有更高要求。比如我们随时浏览一个网站,发现这个网站每天24小时都能访问,为什么呢?...机架服务器 机架式服务器的外形看来不像计算机,而像交换机,有1U(1U=1.75英寸=4.445CM)、2U、4U等规格。机架式服务器安装在标准的19英寸机柜里面。...现在单个磁盘的容量就可以到 10TB 以上,这样 RAID 的存储容量就可以达到 PB 级。 (2)高性能 RAID 的高性能受益于数据条带化技术。...RAID1 RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。...RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
服务器和电脑功能都是一样的,也可以将服务器称之为电脑,只是服务器对稳定性与安全性以及处理器数据能力有更高要求。比如我们随时浏览一个网站,发现这个网站每天24小时都能访问,为什么呢?...它们可以通过"板载"硬盘启动自己的操作系统,如Windows NT/2000、Linux等 机架服务器 机架式服务器的外形看来不像计算机,而像交换机,有1U(1U=1.75英寸=4.445CM)、2U、...现在单个磁盘的容量就可以到 10TB 以上,这样 RAID 的存储容量就可以达到 PB 级。 (2) 高性能 RAID 的高性能受益于数据条带化技术。...RAID0 将所在磁盘条带化后组成大容量的存储空间,将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。...局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台计算机组成,也可以由一个公司内的上千台计算机组成。
掌握 Core Data Stack 访问我的博客 www.fatbobman.com[1] 可以获得更好的阅读体验。...NSPersistentContainer 正是为了降低开发者创建 Core Data Stack 的门槛而诞生的。...可以将一个 NSPersistentContainer 的实例视为一个简化版本的 Core Data Stack,Xcode 中提供的模版可以应对大多数的场景下对 Core Data Stack 的需求...NSCoreDataCoreSpotlightDelegate 需要使用 NSPersistentStoreDescription 和 NSPersistentStoreCoordinator ,因此同样需要在 Core Data Stack 中来完成这些工作...为 Core Data Stack 创建多个配置模式 为什么要创建多个配置 如今创建一个 Core Data Stack 除了需要保证程序的正常运行功能所需外,最好同时为 Unit Test,SwiftUI
纠删码可以将HDFS的存储开销降低约50%,同时与三分本策略一样,还可以保证数据的可用性。本文Fayson主要介绍纠删码的工作原理。 默认情况下,HDFS的数据块都会保存三个副本。...副本提供了一种简单而健壮的冗余方式来最大化保证数据的可用性。数据的多副本同时可以尽量保证计算任务的本地化。...条(stripe)是由若干个相同大小单元(cell)构成的序列。在条形布局下,数据被依次写入条的各个单元中,当条被写满之后就写入下一个条,一个条的不同单元位于不同的数据块中。...的工作负载性能不会太好,如果运行在条带块上。为了更好的运行此类工作负载,可以将条带文件转换为连续布局,但这几乎需要重写整个文件。 基于此分析,文件大小是最关键的决定因素。...2.2.泛化NameNode中的Block概念 ---- 该项目的主要工作在于泛化HDFSblock的基本概念以支持数据条带化。连续块布局被广泛而深入地嵌入到HDFS内部逻辑中。
领取专属 10元无门槛券
手把手带您无忧上云