【JVM 源码分析(一):重新认识 Java 虚拟机】教程文章相关的互联网学习教程文章

Java并发(四):并发集合ConcurrentHashMap的源码分析【代码】【图】

之前介绍了Java并发的基础知识和使用案例分析,接下来我们正式地进入Java并发的源码分析阶段,本文作为源码分析地开篇,源码参考JDK1.8OverView:  JDK1.8源码中的注释提到:ConcurrentHashMap是一种提供完整的并发检索和对于并发更新有高预测性的散列表,遵循了与HashMap相同的功能性规格,并包含与HashTable每个方法都对应的方法.虽然所有操作都是线程安全的,但检索操作并不牵涉任何锁,不支持任何锁住整个散列表来保护所有的访问.  ...

死磕 java集合之TreeSet源码分析【代码】【图】

问题(1)TreeSet真的是使用TreeMap来存储元素的吗?(2)TreeSet是有序的吗?(3)TreeSet和LinkedHashSet有何不同?简介TreeSet底层是采用TreeMap实现的一种Set,所以它是有序的,同样也是非线程安全的。源码分析经过前面我们学习HashSet和LinkedHashSet,基本上已经掌握了Set实现的套路了。所以,也不废话了,直接上源码:package java.util;// TreeSet实现了NavigableSet接口,所以它是有序的 public class TreeSet<E> extends...

Java底层类和源码分析系列-LinkedList底层架构和源码分析【代码】

几个要点LinkedList的底层数据结构是双向链表;LinkedList继承于AbstractSequentialList的双向链表,实现List接口,因此也可以对其进行队列操作,它也实现了Deque接口,所以LinkedList也可当做双端队列使用;LinkedList是非同步的;和 ArrayList 一样,LinkedList 也支持空值和重复值;LinkedList 存储元素的节点需要额外的空间存储前驱和后继的引用;LinkedList 在链表头部和尾部插入效率比较高,但在指定位置进行插入时,效率一般...

Java源码分析——String的设计【代码】【图】

Tip:笔者马上毕业了,准备开始Java的进阶学习计划。于是打算先从String类的源码分析入手,作为后面学习的案例。这篇文章寄托着今后进阶系列产出的愿望,希望能坚持下去,不忘初心,让自己保持那份对技术的热爱。因为学习分析源码,所以借鉴了HollisChuang成神之路的大部分内容,并在此基础上对源码进行了学习,在此感谢。问题的引入关于String字符串,对于Java开发者而言,这无疑是一个非常熟悉的类。也正是因为经常使用,其内部代...

Java 集合源码分析(一)HashMap【代码】【图】

目录Java 集合源码分析(一)HashMap1. 概要2. JDK 7 的 HashMap3. JDK 1.8 的 HashMap4. Hashtable5. JDK 1.7 的 ConcurrentHashMap6. JDK 1.8 的 ConcurrentHashMap7. 最后补充一下 HashMap 中的一些属性和方法附:更这个系列感觉自己像是又挖了一个坑??,不过趁自己刚好工作不太忙,有空闲期,静下心来研究学习源码也是一件很值得做的事,自己尽量会把这个坑填完??。Java 集合源码分析(一)HashMap1. 概要HashMap 作为我们经常...

Java Thread源码分析【代码】【图】

1、Runnable接口源码:1publicinterface Runnable { 2publicabstractvoid run(); 3 }  2、Thread类与Runnable接口的继承关系1publicclass Thread implements Runnable{ 23 }   Runnable接口仅有一个run()方法,Thread类实现了Runnable接口,所以,Thread类也实现了Runnable接口。   3、构造函数1public Thread() { 2 init(null, null, "Thread-" + nextThreadNum(), 0); 3 }1public Thread(Runnable target) { 2 init(null, ...

java使用websocket,并且获取HttpSession,源码分析【代码】【图】

一:本文使用范围此文不仅仅局限于spring boot,普通的spring工程,甚至是servlet工程,都是一样的,只不过配置一些监听器的方法不同而已。 本文经过作者实践,确认完美运行。 二:Spring boot使用websocket2.1:依赖包websocket本身是servlet容器所提供的服务,所以需要在web容器中运行,像我们所使用的tomcat,当然,spring boot中已经内嵌了tomcat。websocket遵循了javaee规范,所以需要引入javaee的包 <dependency><groupId>jav...

Java集合系列:-----------03ArrayList源码分析【代码】【图】

上一章,我们学习了Collection的架构。这一章开始,我们对Collection的具体实现类进行讲解;首先,讲解List,而List中ArrayList又最为常用。因此,本章我们讲解ArrayList。先对ArrayList有个整体认识,再学习它的源码,最后再通过例子来学习如何使用它。内容包括:ArrayList简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, ...

《Java源码分析》:HashMap【代码】

《Java源码分析》:HashMap看过很多次HashMap的源码了,但是,每次都没有做记录,因此,每次记忆都不太深,今天在看别人博客时提到Hashtable是线程安全的,Hashtable中的方法都用了synchronized进行了同步,于是就看了下Hashtable的源码,在看的过程中,写了篇博客,现在2016年7月20日22:03:53,还在教研室,感觉回寝室还早,因此,决定再看下HashMap的源码,也随便以写博客的形式做点笔记。还是很看其他类的源码一样,先看构造函数...

java.util.Map源码分析【代码】

/*** An object that maps keys to values. A map cannot contain duplicate keys;* each key can map to at most one value.** <p>This interface takes the place of the <tt>Dictionary</tt> class, which* was a totally abstract class rather than an interface.** <p>The <tt>Map</tt> interface provides three <i>collection views</i>, which* allow a map‘s contents to be viewed as a set of keys, collection of v...

java并发编程基础-ReentrantLock及LinkedBlockingQueue源码分析【代码】

ReentrantLock是一个较为常用的锁对象。在上次分析的uil开源项目中也多次被用到,下面谈谈其概念和基本使用。概念一个可重入的互斥锁定 Lock,它具有与使用 synchronized 相同的一些基本行为和语义,但功能更强大。名词解释:互斥表示同一时刻,多个线程中,只能有一个线程能获得该锁。但是多个线程都可以调用lock方法,只有一个会成功,其他的线程会被阻塞,直到该锁被释放可重入模仿synchronized 的语义;如果线程进入由线程已经...

ORM framework源码分析:引言之Java JDBC【图】

在百度百科上找了一段定义ORM的话:对象关系映射(英语:ObjectRelational Mapping,简称ORM,或O/RM,或O/Rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。那么ORM Framework就是提供对象到数据库关系映射的一套编程模型。现在流行的MyBaits、Hibernate都是这种框架。本章开始我们就来分析下这两种框架源码的分析,...

There is no getter for property named '*' in 'class java.lang.String'之源码分析【代码】【图】

There is no getter for property named ‘*‘ in ‘class java.lang.String‘,此错误之所以出现,是因为mybatis在对parameterType="String"的sql语句做了限制,假如你使用<when test="username != null">这样的条件判断时,就会出现该错误,不过今天我们来刨根问底一下。一、错误再现想要追本溯源,就需要错误再现,那么假设我们有这样一个sql查询:<selectid="getRiskMember"resultMap="BaseResultMap"parameterType="String"><...

Java8集合框架——LinkedHashSet源码分析【代码】【图】

本文的目录结构如下:一、LinkedHashSet 的 Javadoc 文档注释和简要说明二、LinkedHashSet 的内部实现:构造函数三、LinkedHashSet 的 add 操作和 remove 操作一、LinkedHashSet 的 Javadoc 文档注释和简要说明  还是以官方 javadoc 作为参考进行说明:LinkedHashSet 是 Set 接口的 hash table 和 linked list 实现,而且迭代顺序可预测(按照元素的插入顺序),实际上 LinkedHashSet 继承了 HashSet,内部使用了 LinkedHashMap ...

Java HashMap底层实现原理源码分析Jdk8【代码】【图】

在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,可能会将链表转换为红黑树,这样大大减少了查找时间。简单说下HashMap的实现原理:首先存在一个table数组,里面每个元素都是一个node链表,当添加一个元...