01 2019 档案
摘要:一、快速报错机制(fail-fast) 这是《Java编程思想》中关于快速报错机制的描述 Java容器有一种保护机制,能够防止多个进程同时修改同一个容器的内容。如果在你迭代遍历容器的过程中,另一个进程介入其中,并且插入、删除或者修改此容器内的某个对象,那么就会出现问题:也许迭代过程中已经处理过容器中
阅读全文
摘要:一、能够使用索引的典型场景 频繁作为查询条件的字段应该创建索引,通常where后面的字段会建立索引。而有些情况不适合创建索引例如: 唯一性太差的字段不适合单独创建索引 select * from emp where sex='男' 频繁变化的字段不应该创建索引 select * from emp w
阅读全文
摘要:ArrayBlockingQueue是一个基于数组实现的有界的阻塞队列。 属性 //底层存储元素的数组。为final说明一旦初始化,容量不可变,所以是有界的。 final Object[] items; //下一个take, poll, peek or remove操作的index位置 int ta
阅读全文
摘要:hashMap源码分析:hashMap源码分析 版本说明:jdk1.7LinkedHashMap继承于HashMap,是一个有序的Map接口的实现。有序指的是元素可以按照一定的顺序排列,比如元素的插入顺序,或元素被访问的顺序。 内部结构 说明:该图来源于其它博客,信手拈来,在此感谢! LinkedH
阅读全文
摘要:说明:基于jdk1.7 一、基本信息 hashmap的原理图如下 先来看看HashMap中每个节点的定义。HashMap中的每个节点元素称为Entry,Entry类是HashMap的静态内部类。通过声明可以知道,它实际上就是一个链表结构,多个Entry节点串起来就形成了链表。每个节点包含了<K,V>
阅读全文
摘要:HashSet底层是HashMap实现的,关于HashMap的分析请移步到HashMap源码分析 属性 HashSet底层是使用HashMap实现的,由于HashMap存储的是<Key,Value>键值对,而HashSet不需要Value,所以HashSet内部使用了一个虚拟的Object对象作为底
阅读全文
摘要:在Java运行时数据区总结了虚拟机内存的概况,本文介绍虚拟机内存中的数据的其它细节,如对象如何创建、如何布局以及如何访问。该篇总结HotSpot虚拟机在Java堆中对象的分配、布局和访问的全过程。 一、对象的创建 1.分配内存 在Java语言层面,创建对象仅仅需要一个new关键字即可。实际上Java
阅读全文
摘要:版本说明:jdk1.7.0_79 概述 Hashtable已经成为过时的集合,但是仍有必要研究一下其源码,而且面试中也经常被问到Hashtable与HashMap的区别。Hashtable是线程安全的,但是Collections类中已经针对集合的线程安全有了新的实现,如果考虑到线程安全,请使用Col
阅读全文
摘要:Innodb中的事务隔离级别和锁的关系 官方文档:InnoDB Locking and Transaction Model 本文主要介绍事务的特性、事务并发可能导致的问题、数据库锁机制、事务的隔离级别。 一、事务的ACID特性 事务具有4个特性:原子性、一致性、隔离性、持久性,这4个特性简称为ACI
阅读全文
摘要:AbstractQueuedSynchronizer,简称为AQS,它是构建JDK中多个并发工具的基础。下图展示了JDK中使用AQS构建的并发工具。 可见,AQS在Java并发编程中是多么的重要。所以,我们有必要搞清楚其实现的原理。 一、AQS中的数据结构 在AQS类文件的注释中,作者已经给出了内部
阅读全文