[toc] 为什么需要倒排索引 倒排索引也是索引。索引初衷都是为了快速检索到你要的数据。 每种数据库有自己需要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同...
[toc] 为什么需要倒排索引 倒排索引也是索引。索引初衷都是为了快速检索到你要的数据。 每种数据库有自己需要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同...
[toc] MySQL索引实现 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论是MyISAM和InnoDB两个存储引擎的B+T...
[toc] 前言 Spring可以管理singleton(单例)作用域的Bean的生命周期,prototype作用域的Bean,Spring只负责创建,当容器创建交给客户端代...
[toc] 循环依赖 循环依赖就是N个类中循环嵌套引用,如果日常开发中我们用new对象的方式发生这种循环依赖的程序运行一直循环直到内存溢出报错,下面说一下Spring是如何解...
[toc] 一、HashMap 简介 HashMap是java.util包中的一个集合框架,他是java.util.Map的实现类,具有方便、高效的基于键值对存取功能,其平均...
[toc] 前言 分析ConturrentHashMap 1.8的实现,JDK1.8实现屏蔽了Segment(分段代码锁)的概念,而是直接用Node数组+链表+红黑树的数据结...
[toc] JDK1.7分段代码锁的实现 和HashMap一样在1.7中ConcurrentHashMap的底层数据结构是数组加链表,和HashMap不同的是Concurre...
[toc]注:JDK1.8之后进行了优化,多线程不会造成死循环问题,但依旧线程不安全,容易造成数据丢失,多线程推荐使用ConcurrentHashMap 原因分析 在了解来龙...
[toc] 前言 本篇文章介绍容器类的另一个哈希表LinkedHashMap,这是HashMap的关门弟子,直接继承了HashMap的衣钵,拥有HashMap的全部特性,并且...
[toc] 概述 TreeMap也是Map接口的一种实现类,他最大的特点是迭代有序(默认按照Key值升序迭代)当然也可以设置为降序,TreeMap的内部用的是红黑树存储数组的...
[toc] 前言 主要通过源码分析,讲解几个ArrayList的常见方法 定义 ArrayList实际上是一个动态数组,容量可以动态增长,其继承了AbstractList实现...
[toc] 定义 LinkedList的底层数据结构是双向链表。通过对LinkedList的定义可以看出LinkedList不支持随机访问因为没有实现RandomAccess...
[toc] 前言 CopyOnWriteArrayList是一个线程安全的集合,原理就是:在保证线程安全的前提下,牺牲掉写操作的效率来保证读操作的高效。所谓的CopyOnwr...
[toc] HotSpot中的对象 对象的创建 Java对象创建大致有如下四种方式: new关键字这应该是我们最常见和最常用最简单的创建对象的方式。 使用newInstanc...
[toc] 前言 在Collection集合的各个类中,有线程安全和线程不安全的两大类版本。对于线程不安全的类,并发情况下可能会出现fail-fast(快速失败),而线程安全...
[toc] 运行时数据区域 JVM在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,已经创建和销毁的时间,有的区域随着虚拟机进程...
[toc] 前言 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同厂商、版本的虚拟...
[toc] 类加载过程概览 类从被加载到虚拟机内存中开始,到卸载出内存为止,他的整个生命周期包括以下7个阶段: 加载(Loading) 验证(Verification) 准备...
[toc] 前言 说起垃圾收集GC(Garbage Collection),大家都不会陌生,他是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然...
[toc] 前言 Java的大部分的同步类(Lock、Semaphore、ReentrantLock等)都是基于AbstractQueueSynchronizer(简称AQS...