E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
JDK源码分析
JDK源码分析
:ConcurrentHashMap(JDK1.7和JDK1.8),HashTable与Collections.synchronizedMap
概述ConcurrentHashMap是线程安全的HashMap,提供与HashTable一样的线程安全特性。与HashMap不同的是,除了线程安全之外,HashMap的key和value都支持null,而HashTable和ConcurrentHashMap的key和value都不允许是null。与HashTable不同的是,ConcurrentHashMap不需要对所有需要线程安全保证的方法使
服务端开发
·
2020-07-30 16:27
Java
【
JDK源码分析
系列】ConcurrentHashMap 源码分析 -- 增、删、查操作
【
JDK源码分析
系列】ConcurrentHashMap源码分析--增、删、查操作【0】ConcurrentHashMap整体架构构成说明采用transientvolatileHashEntry[]table
奋斗企鹅copper
·
2020-07-30 16:19
JDK
数据结构
JDK源码分析
:ConcurrentHashMap(JDK1.8版本)
主文章:
JDK源码分析
:ConcurrentHashMap(JDK1.7和JDK1.8),HashTable与Collections.synchronizedMap概述在JDK1.7主要通过定义Segment
服务端开发
·
2020-07-30 13:52
Java
JDK源码分析
--HashMap深入理解
一、实现原理以JDK1.7源码为例进行分析(一)Hashing的概念将字符串转换成固定长度(一般是更短的长度)的数值或索引值的方法,也称为散列法或哈希法。常用于数据库中建索引,或是用于各种加解密算法中。完成转换功能的函数一般称为哈希函数,哈希函数设计的好坏将直接影响到哈希表的优劣。(二)哈希表可高效进行增加、删除、查找等操作的数据结构,不考虑哈希冲突的情况下,仅需要一次定位即可完成,时间复杂度为O
wolfshadow.cn
·
2020-07-30 12:16
JDK源码
JDK源码分析
-HashMap(1)
概述HashMap是Java开发中最常用的容器类之一,也是面试的常客。它其实就是前文「数据结构与算法笔记(二)」中「散列表」的实现,处理散列冲突用的是“链表法”,并且在JDK1.8做了优化,当链表长度达到一定数量时会把链表转为红黑树。因此,JDK1.8中的HashMap实现可以理解为「数组+链表+红黑树」。内部结构示意图:HashMap的继承结构和类签名如下:publicclassHashMape
o对酒当歌
·
2020-07-30 11:42
java核心基础--
jdk源码分析
学习--基本数据类型
java基本数据类型。三类八种—重点是【记住占几位】【string是类】逻辑类型boolean(占几位不一定)字符类型char(16-bit)(unicode)数值类型11.整数byte(8-bit)、short(16-bit)、int(32-bit)、long(64-bit)2.浮点数float(32-bit)、double(64-bit)按IEEE754标准官方文档:https://docs.
qianggetaba
·
2020-07-27 19:29
java
JDK源码分析
(二)——LinkedList
目录LinkedListLinkedList继承结构LinkedList内部类NodeLinkedList成员属性LinkedList构造方法重要方法Deque方法的实现遍历总结LinkedList JDKapi对LinkedList的介绍:Doubly-linkedlistimplementationoftheListandDequeinterfaces.Implementsalloption
weixin_30624825
·
2020-07-27 13:27
【Java】
JDK源码分析
——ThreadLocal
ThreadLocal源码分析一.概述二.源码分析1.全局变量2.nextHashCode方法3.构造方法4.initialValue方法5.getMap方法6.createMap方法7.createInheritedMap方法8.childValue方法9.remove方法10.set方法11.setInitialValue方法12.get方法13.ThreadLocal中的静态内部类Threa
LeeDuo.
·
2020-07-15 18:24
Java
jdk 源码分析(19)java net包简单分析
jdk源码分析
(18)javanet包只能简单分析,因为代码走到后面都变成了native方法,我去openJDK,以及其他语言的实现都没有找到底层怎么实现的,如果你知道,告诉我一声。
陈奉刚的笔记
·
2020-07-14 08:57
jdk
源代码
JDK源码分析
之StringBuffer篇
publicfinalclassStringBufferextendsAbstractStringBuilderimplementsjava.io.Serializable,CharSequence{.....}StringBuffer类跟String类一样定义成final形式,主要是为了“效率”和“安全性”的考虑,若StringBuffer被继承,由于它的高使用率,可能会降低它的性能。Strin
草衣
·
2020-07-13 15:53
JDK源码笔记
【
JDK源码分析
】StringBuffer与StringBuilder
背景想了解StringBuffer与StringBuilder之间的差别以及他们是通过何种方式去实现其功能的。差别大致了解,线程安全与不安全。更感兴趣的是其实现方式。AbstractStringBuilder两者都继承自此抽象类。该类提供了一些StringBuffer与StringBuilder公用的方法。StringBufferpublicStringBuffer(){super(16);}pu
打字员小钻风
·
2020-07-13 02:21
Java
jdk源码分析
之TreeMap
1.TreeMap简介TreeMap是通过红黑树来实现一个有序的key-value集合的。TreeMap是基于红黑树实现的,该映射可以根据他的键的自然顺序进行排序,也可以根据为构造函数提供的比较器进行排序。TreeMap的基本操作containsKey,get,put,remove的时间复杂度是log(n),另外TreeMap是非同步的。2.TreeMap数据结构TreeMap的继承关系publi
shoulda
·
2020-07-11 03:11
JDK源码分析
系列 AQS续篇Condition源码浅析
文章目录前言Condition以及其具体实现类源码分析一、Condition的继承关系类图二、Condition三、ConditionObject实现3.1参数3.2ConditionObject的核心API3.1源码漏洞前言我们在Synchronized中了解到,如果我们调用await()方法的话,会将当前线程阻塞并且放置到等待队列中,唤醒的方法有notify(),notifyAll(),这些是
_ostreamBaba
·
2020-07-11 00:46
Java源码系列
为什么HashMap、HashSet是线程不安全的(JDK 1.8)
1.HashMap以put()方法为例,结合
JDK源码分析
/***ConstructsanemptyHashMapwiththedefaultinitialcapacity*(16)andthedefaultloadfactor
Hank_dev
·
2020-07-10 21:58
Java
HashMap源码分析(一):
JDK源码分析
系列
>正文开始注:JDK版本为1.8HashMap1.8和1.8之前的源码差别很大目录简介数据结构类结构属性构造方法增加删除修改总结1.HashMap简介HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。(除了不同步和允许使用null之外,HashMap类与Hashtable大致相同。)HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为
chuzhengku0968
·
2020-07-09 14:43
Re:从零开始的DS生活 轻松从0基础实现多种队列
:从零开始的DS生活轻松从0基础实现多种队列,本文详细介绍了队列的概念和性质,简要的介绍了队列ADT并附三种实现方式(链式、顺序api、顺序+动态扩容),对循环、双端、阻塞、优先级队列进行简单的应用与
jdk
小明同学 付明才
·
2020-07-09 10:32
数据结构与算法分析
JDK源码分析
--HashMap的扩容
面试时老生常谈的问题:请问HashMap在什么时候扩容?稍稍看过源码的立马回答:默认装载因子0.75,当size达到总容量的0.75时会扩容。而事实如此吗?经实验证明,不一定,还需要看JDK的版本。HashMap中有一个重要的属性叫threshold,扩容临界值,即下一个要调整大小的值(总容量*装载因子)。一、以JDK1.7为例查看源码,在put操作时扩容的条件为“(size>=threshold
wolfshadow.cn
·
2020-07-08 08:39
JDK源码
HashMap
hashmap扩容
jdk源码分析
之HashMap
packagejava.util;importjava.io.*;//首先是个map,所以继承了AbstractMap,允许null值和null的key。//除了是unsynchronized和允许null之外,与Hashtable基本相同//对顺序不做保证/***HashtablebasedimplementationoftheMapinterface.This*implementationpr
garypotter
·
2020-07-07 08:21
jdk
jdk源码分析
Timsort分析-
JDK源码分析
-自己实现简易TimSort/TimSort 归并排序 堆排序 快速排序 时间对比
一简单介绍Timsort是一个最好时间复杂度可以达到O(n),最坏为O(nlgn),平均为O(nlgn)的算法。Java里基本数据类型是用快排的,但是对于引用类型的排序是Timsort和二分插入排序结合的。当数据大小32时候用TimSort。TimSort是一个插入排序和归并排序结合的算法,我们知道归并排序,把一个序列分成两半,分别排序成有序的子序列之后,再合并,这就有一个问题,分成的两半是直接就
一做就废
·
2020-07-01 19:27
java
算法
JDK源码分析
目录1.java.lang1.1Object1.1.1equals()1.1.2toString()1.1.3clone()1.2String1.2.1String如何存值1.2.2equals()1.2.3startWith()1.2.4endWith()1.2.5replace()2.java.util2.1ArrayList2.1.1构造器2.1.2add()2.1.3remove()2.2
阿里巴巴首席技术官
·
2020-06-29 03:44
Java
JDK源码分析
– HashMap
HashMap类的申明HashMap的定义如下:1publicclassHashMapextendsAbstractMap2implementsMap,Cloneable,Serializable{}HashMap是一个散列表,用于存储key-value形式的键值对。从源码的定义中可以看到HashMap继承了AbstractMap抽象类而且也实现了Map接口,AbstractMap类本身也继承了M
老男孩_Misaya
·
2020-06-27 21:31
JDK源码分析
-DelayQueue
概述DelayQueue也是一种队列,它内部的元素有“延迟”,也就是当从队列中获取元素时,如果它的延迟时间未到,则无法取出。DelayQueue的类签名和继承结构如下:publicclassDelayQueueextendsAbstractQueueimplementsBlockingQueue{}下面分析其代码实现。代码分析相关接口DelayQueue中的元素要实现Delayed接口,该接口定义
o对酒当歌
·
2020-06-26 22:02
JDK源码分析
从
JDK源码分析
Java中的equals与hashCode
首先说一条Java编程规范,就是覆盖Object的equals方法时总要覆盖hashCode,并且如果两个对象的equals方法比较结果是相等的,那么他们的hashCode方法就应该返回相同的整数结果;而如果equals比较结果不同,那么他们的hashCode方法最好返回截然不同的结果,以提高散列表的性能(Object规范)。以上内容在《EffectiveJava》中也提到了,可是这个规范的来源是
LeeFrank96
·
2020-06-24 08:42
java开发
【Java】
JDK源码分析
——Thread
Thread源码分析一.概述二.源码解析1.重要的全局变量2.内部枚举类State3.nextThreadNum方法4.nextThreadID方法5.常用的构造方法1)无参数2)参数为Runnable3)参数为String4)参数为ThreadGroup、Runnable、String、long5)四个参数的init方法6)五个参数的init方法6.currentThread方法7.setPri
LeeDuo.
·
2020-06-22 00:42
Java
【Java】
JDK源码分析
——Long
Long源码分析一.概述二.源码分析1.全局变量2.静态内部类3.构造方法1)参数为long2)参数为String4.parseLong方法5.parseUnsignedLong方法6.valueOf方法1)参数为String指定进制数:不指定进制数:2)参数为int7.byteValue方法8.shortValue方法9.intValue方法10.longValue方法11.floatValue
LeeDuo.
·
2020-06-22 00:42
Java
【Java】
JDK源码分析
——Short
Short源码分析一.概述二.源码分析1.全局变量2.静态内部类ShortCache3.构造方法1)参数为short2)参数为String4.parseShort方法5.valueOf方法6.decode方法7.byteValue方法8.shortValue方法9.intValue方法10.longValue方法11.floatValue方法12.doubleValue方法13.toString方
LeeDuo.
·
2020-06-22 00:42
Java
【Java】
JDK源码分析
——Integer
Integer源码分析一.概述二.源码分析1.全局变量2.静态内部类IntegerCache3.构造方法1)参数为int2)参数为String4.parseInt方法5.parseUnsignedInt方法6.valueOf方法1)参数为String指定进制数:不指定进制数:2)参数为int7.byteValue方法8.shortValue方法9.intValue方法10.longValue方法1
LeeDuo.
·
2020-06-22 00:42
Java
【Java】
JDK源码分析
——Number
Number源码分析一.概述二.源码分析1.全局变量2.intValue方法3.longValue方法4.floatValue方法5.doubleValue方法6.byteValue方法7.shortValue方法一.概述Number是一个抽象类,表示数值,它是所有表示数值的类的超类。Byte、Double、Float、Integer、Long、Short都继承该类。Number类一共只有6个方法
LeeDuo.
·
2020-06-22 00:42
Java
JDK源码分析
(2)——lang.String类
文章目录概述实现接口与父类SerializableComparableCharSequence构造器String(Stringoriginal)String(charvalue[])String(charvalue[],intoffset,intcount)String(StringBufferbuffer)String(stringBuilderbuilder)字段方法charcharAt(in
Felix_hyfy
·
2020-06-21 20:05
JDK源码分析
JDK源码分析
(1)——lang.Object类
文章目录概述构造器native本地方法字段方法getClass()hashCode()hashCode总合同equals(Objectobj)toString()notify()notifyAll()wait()finalize()概述所在位置:java.lang.Object作用:ClassObject是所有类的超类,所有对象(包括数组)都实现了这个类的方法构造器publicclassObjec
Felix_hyfy
·
2020-06-21 20:05
JDK源码分析
JDK源码分析
(0)——源码包概述
文章目录源码版本源码常用包及其内容阅读顺序源码版本JDK1.8源码常用包及其内容1、java.lang这里面其实就是Java的基本语法,比如各种基本包装类型(Integer、Long、Double等)、基本类(Object,Class,Enum,Exception,Thread)等等…2、java.lang.annotation包含Java注解基本元素相关的源码3、java.lang.reflec
Felix_hyfy
·
2020-06-21 20:05
JDK源码分析
JDK源码分析
-TreeMap(2)
概述前文「
JDK源码分析
-TreeMap(1)」分析了TreeMap的一些方法,本文分析其中的增删方法。这也是红黑树插入和删除节点的操作,由于相对复杂,因此单独进行分析。
WriteOnRead
·
2020-04-05 09:09
JDK源码分析
Float
说明对于
JDK源码分析
的文章,仅仅记录我认为重要的地方。源码的细节实在太多,不可能面面俱到地写清每个逻辑。
被称为L的男人
·
2020-03-28 11:53
JDK源码分析
-HashMap(1)
概述HashMap是Java开发中最常用的容器类之一,也是面试的常客。它其实就是前文「数据结构与算法笔记(二)」中「散列表」的实现,处理散列冲突用的是“链表法”,并且在JDK1.8做了优化,当链表长度达到一定数量时会把链表转为红黑树。因此,JDK1.8中的HashMap实现可以理解为「数组+链表+红黑树」。内部结构示意图:内部结构图HashMap的继承结构和类签名如下:类继承结构publiccla
WriteOnRead
·
2020-03-26 14:18
jdk源码分析
(二)——Class类
一.概述我们在
jdk源码分析
(一)中讲了Object类,今天要讲的Class类同样非常基础。java程序中所有正在运行中的类和接口都是Class类的实例。
自由水鸟
·
2020-03-23 21:31
JDK源码分析
-TreeMap(1)
概述前面数据结构与算法笔记对红黑树进行了分析,而TreeMap内部就是基于红黑树实现的。示意图:它的查找、插入、删除操作的时间复杂度均为O(logn)。TreeMap类的继承结构如下:image类签名:publicclassTreeMapextendsAbstractMapimplementsNavigableMap,Cloneable,java.io.SerializableTreeMap实现了
WriteOnRead
·
2020-03-22 07:24
JDK源码分析
Integer
说明对于
JDK源码分析
的文章,仅仅记录我认为重要的地方。源码的细节实在太多,不可能面面俱到地写清每个逻辑。
被称为L的男人
·
2020-03-22 02:50
jdk源码分析
(三)——String类
一.几个概念在我们正式开始看String源码之前,先来了解几个概念,对这几个概念的理解,将有助于提升我们对代码的认识。1.字面量字面量是用于表达源代码中一个固定值的表示法。数字,字符串等都有字面量表示。例如:finalintn=1;Strings="HelloWorld!"上述代码中1、"HelloWorld!"就是字面量。2.常量池(1)class文件中的常量池在class文件中,除了有类的版本
自由水鸟
·
2020-03-17 15:08
JDK源码分析
反射
说明对于
JDK源码分析
的文章,仅仅记录我认为重要的地方。源码的细节实在太多,不可能面面俱到地写清每个逻辑。
被称为L的男人
·
2020-03-16 15:23
JDK源码分析
二
packagejava.lang;importjava.io.ObjectStreamField;importjava.io.UnsupportedEncodingException;importjava.nio.charset.Charset;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.Comparator;i
蛮大人我们走
·
2020-03-10 10:28
JDK源码分析
Java Collections Framework 概览
转载本文转载自:https://github.com/CarpenterLee/JCFInternals说明对于
JDK源码分析
的文章,仅仅记录我认为重要的地方。
被称为L的男人
·
2020-03-08 16:03
JDK源码分析
-AbstractQueuedSynchronizer(2)
概述前文「
JDK源码分析
-AbstractQueuedSynchronizer(1)」初步分析了AQS,其中提到了Node节点的「独占模式」和「共享模式」,其实AQS也主要是围绕对这两种模式的操作进行的
WriteOnRead
·
2020-03-05 20:47
JDK源码分析
NIO实现
总列表:http://hg.openjdk.java.net/小版本:http://hg.openjdk.java.net/jdk8ujdk:http://hg.openjdk.java.net/jdk8u/jdk8u60/file/d8f4022fe0cdhotspot:http://hg.openjdk.java.net/jdk8u/jdk8u60/hotspot/file/37240c101
21aspnet
·
2020-03-03 23:13
Java
Linux内核
并发编程
jdk源码分析
(五)——HashMap
一.基础概念散列表:也叫哈希表,是我们常用的一种数据结构,它可以根据key值直接访问数据,从而在O(1)的时间复杂度内实现数据的写入和查找。散列函数:将key值映射到散列表中的一个位置的函数。碰撞:有时,不同的key值被映射到同一个散列表位置,这种情况叫做“碰撞”。装载因子:散列表中已经添加的元素个数/散列表长度。它是衡量散列表可以被装满程度的一个参数。当发生碰撞时,意味着多个key的散列函数值相
自由水鸟
·
2020-03-01 12:38
JDK源码分析
一
String结构privatefinalcharvalue[];//这是用于存储String字符的数组privatefinalintoffset;//这是value数组的第一个有效的字符的indexprivatefinalintcount;//这是String中的字符个数privateinthash;//存储String的hashcode,默认是0用一个char数组来存储字符,offset是偏移,
蛮大人我们走
·
2020-02-23 09:49
jdk源码分析
(七)——TreeMap
一.相关概念树:树是一种由n(n>=0)个节点组成的具有层次结构的数据结构。树具有一个根节点,每个节点有零个或多个子节点。树树的高度:树的高度指树中节点的层数。例如,上图中树的高度为3,一般将根节点的层次定为0,下一层为1,再下一层为2……。二叉树:二叉树是一种特殊的树。每个节点最多只有两个子节点。二叉树二叉查找树:二叉查找树是一种特殊的二叉树。其左子树的节点中的值都小于等于根节点,右子树的节点中
自由水鸟
·
2020-02-22 17:05
JDK源码分析
-LinkedList
概述相较于ArrayList,LinkedList在平时使用少一些。LinkedList内部是一个双向链表,并且实现了List接口和Deque接口,因此它也具有List的操作以及双端队列和栈的性质。双向链表的结构如下:前文分析了Queue和Deque接口,正是因为LinkedList实现了Deque接口。LinkedList的继承结构如下:结点类Node查看LinkedList的源码可发现它内部有
WriteOnRead
·
2020-02-22 05:21
JDK源码阅读(一):Object源码分析
最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己所以开始写
JDK源码分析
的文章阅读JDK版本为1.8目录Object结构图构造器equals方法getClass方法hashCode方法toString
乱敲代码
·
2020-02-11 02:33
通过open
jdk源码分析
ObjectMonitor底层实现
通过open
jdk源码分析
ObjectMonitor底层实现HotspotJDK只是部分开源,将底层的调用C++的native方法的具体实现屏蔽了,而openjdk则将这部分也开源了,接下来我们通过open
jdk
小鱼儿_karl
·
2020-02-07 18:00
JDK源码阅读(一):Object源码分析
最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己所以开始写
JDK源码分析
的文章阅读JDK版本为1.8目录Object结构图构造器equals方法getClass方法hashCode方法toString
乱敲代码
·
2020-02-07 07:47
上一页
1
2
3
4
5
6
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他