小草窝

ci饭,碎觉,输入,输出


  • 首页

  • 标签

  • 分类

  • 归档

ConcurrentHashMap

发表于 2022-10-24 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
概述顾名思义,ConcurrentHashMap,是支持并发的HashMap。作为散列表,它采用的数据结构与HashMap基本一致,都是采取array+list(linkedlist)/tree(red black tree)的形式。作为支持并发的集合,与Hashtable简单的采取synchronized关键字实现同步,ConcurrentHashMap使用了更为复杂的机制,包括volatile变量、原子操作CAS、synchronized等。借此,ConcurrentHashMap在get( ...
阅读全文 »

CopyOnWriteArrayList

发表于 2022-10-17 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
前言作为java.util.concurrent包下的一员,CopyOnWriteArrayList是支持并发的List。但是,从它的名称我们就可以大体意识到,每当这个List发生了修改的时候,将会重新copy一份。无疑,CopyOnWriteArrayList适合读操作远远多于写操作的情况。 CopyOnWriteArrayList用于实现并发的策略很简单:在初始化后,存储值的数组Object[] array便被赋值,每当发生修改的时候,一个新的数组将会赋值给array,并且旧数组并不会被修改 ...
阅读全文 »

LinkedHashMap

发表于 2022-10-15 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
概述LinkedHashMap与HashMap的主要区别不在多述:LinkedHashMap是有序的而HashMap是无序的。具体来说,LinkedHashMap可以基于插入顺序或者访问顺序(Least Recently Used,最近最少使用)进行遍历。从这两个类名上,我们就可以一窥LinkedHashMap实现有序性的关键词:linked。 大体来说,相对于HashMap,LinkedHashMap的每个节点都额外增加了before与after两个链接,来记录顺序。遍历之时,只需把after ...
阅读全文 »

HashMap——兼以Hashtable

发表于 2022-10-12 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
概述HashMap 和 Hashtable 同作为常见的 Map 实现,两者的区别在于 HashMap 支持 key=null、value=null 而 Hashtable 不支持;HashMap 不支持同步而 Hashtable 采用 synchronized 修饰方法。除此之外,两者提供的功能几乎相同。两者都采取 array+list 的方式存储键值对 Entry,array[i]事实上存储了一个 list 的头结点。但是,相对于 Hashtable,HashMap 会在 array.len ...
阅读全文 »

ArrayList与LinkedList

发表于 2022-10-07 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
前言对不少人来说,List恐怕是最常用的集合了。java中,List作为接口,其下有两个常见的实现类:ArrayList和LinkedList。除此之外,还提供了AbstractList抽象类,用来帮助自定义List的实现类。本文先从AbstractList入手,再对比ArrayList和LinkedList,从而将这两个常用的集合做一个大体的介绍。 在具体的介绍之前,笔者希望先讨论一个概念:fail-fast。 fail-fast是java集合框架中,一个可以通过快速抛出ConcurrentM ...
阅读全文 »

StringBuilder与StringBuffer

发表于 2022-10-06 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
概述字符串作为最常用的类型之一,java除了提供不可变的String类之外,还拥有可变字符串StringBuilder与StringBuffer。两者最大的区别在于StringBuilder不保证线程安全,而StringBuffer则将方法以synchronized修饰。所以可以保证线程安全。 除此之外,两者都继承了AbstractStringBuilder类,所拥有的方法近乎完全相同。作为抽象类,AbstractStringBuilder实现了Appendable与CharSequence接口 ...
阅读全文 »

字符编码简述

发表于 2022-10-05 | 更新于 2022-11-29 | 分类于 小记 | 评论数:
String 是我们非常常用的一个类,尤其是 length()方法。而要清晰地理解 length,首先需要对字符编码有一定了解。众所周知,计算机只能识别高低电平——也就是 0,1。0,1 显然是无法表示现实中的字符的,所以后来,人们定义一个电平作为 1-bit,以不同 bit 的排列组合来代表不同的字符。于是,一个采用 8-bit、也就是 1-byte 来的表示字符的字符集:ASCII 字符集诞生了。 8bit 的排列组合,最多可以有 2^8=256 种形式,也就是说 ASCII 字符集至多可以 ...
阅读全文 »

Hashtable

发表于 2022-10-03 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
概述Hashtable作为早期的集合,在非并发的情况下,Hashtable已经基本被HashMap取代。而在有同步需求的时候,也可以使用效率更高的ConcurrentHashMap,而不是每个方法都用synchronize修饰的Hashtable。但同时,Hashtbale相对于HashMap与ConcurrentHashMap的来说,实现非常简单。通过Hashtable。我们可以大致了解java中散列表实现的基本原理,为HashMap与ConcurrentHashMap的学习打下基础。 顾名思 ...
阅读全文 »

Object

发表于 2022-10-01 | 更新于 2022-11-29 | 分类于 java , 源码 | 评论数:
前言Object 作为所有类的祖先类,所拥有的方法很多使用 native、也就是调用本地方法实现。本文集合了一些资料,权做记录与了解。 导航 前言 registerNative getClass() clone() notify()/wait() finalize() registerNative1234private static native void registerNatives();static { registerNatives();} 通过 JNI( ...
阅读全文 »
123

JL Wang

好好学习,天天向上

29 日志
8 分类
7 标签
GitHub E-Mail
© 2022 JL Wang