自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 JDK和JRE

2019-04-30 10:42:16 174

原创 LinkedHashSet

文章目录一、顶部注释分析1.1 从注释中得到的结论二、源码分析2.1 定义2.2 构造方法一、顶部注释分析1.1 从注释中得到的结论Hash table and linked list implementation of the Set interface:基于哈希表和链表的 Set 实现LinkedHashSet 底层实际上就是 LinkedHashMapLinkedHashSet ...

2019-04-11 15:29:38 284

原创 HashSet

文章目录一、顶部注释分析1.1 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 构造方法2.3.1 常规构造方法2.3.2 特殊构造方法一、顶部注释分析1.1 从注释中得到的结论This class implements the Set interface, backed by a hash table (actually a HashMap instance):该类实现了 ...

2019-04-11 15:29:15 1137

原创 TreeSet

文章目录一、顶部注释分析1.1 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 构造方法一、顶部注释分析1.1 从注释中得到的结论A NavigableSet implementation based on a TreeMap:基于 TreeMap 的 NavigableSet 实现HashSet 底层实际上是一个 NavigableMap 接口类型的实例,如 TreeMa...

2019-04-11 15:28:47 188

原创 ConcurrentHashMap

文章目录一、顶部注释分析1.1 数据结构1.1.1 JDK1.7实现1.1.2 JDK1.8实现1.2 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 Node静态内部类2.4 构造方法2.5 put 操作2.5.1 put 方法大致步骤2.5.2 初始化 table 数组2.6 get 操作一、顶部注释分析1.1 数据结构1.1.1 JDK1.7实现在 JDK1.7中,C...

2019-04-11 15:28:17 156

原创 TreeMap

文章目录一、顶部注释分析1.1 首句分析1.2 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 构造方法2.4 put 操作2.5 get 操作2.6 remove 操作2.7 entrySet三、与HashMap对比一、顶部注释分析1.1 首句分析A Red-Black tree based NavigableMap implementation. The map is s...

2019-04-11 15:27:38 286

原创 LinkedHashMap

文章目录一、顶部注释分析1.1 数据结构1.2 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 Entry 静态内部类2.4 构造方法2.5 迭代方式 accessOrder 的含义2.6 常用操作2.6.1 put2.6.2 get2.6.3 remove2.7 回调函数2.8 entrySet一、顶部注释分析1.1 数据结构1.2 从注释中得到的结论LinkedHas...

2019-04-09 21:36:33 565

原创 HashMap

文章目录一、顶部注释分析1.1 数据结构1.2 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 Node静态内部类2.4 构造方法2.5 threshold 赋值2.6 hash值计算2.6.1 计算方式2.6.2 计算原理2.7 resize 扩容2.8 put 操作2.8.1 put 方法2.8.2 putVal 方法2.9 get 操作2.9.1 get 方法2.9.2 get...

2019-04-09 21:36:01 554

原创 LinkedList

文章目录一、顶部注释分析1.1 首句定义1.2 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 构造方法2.4 添加元素2.5 get、set、remove2.6 队列操作(添加、删除、获取)2.7 栈操作(入栈、出栈、获取栈顶)一、顶部注释分析1.1 首句定义Doubly-linked list implementation of the List and Deque in...

2019-04-09 21:34:20 119

原创 Vector

文章目录一、顶部注释分析二、源码分析2.1 定义2.2 字段2.3 构造方法2.4 常用方法2.5 扩容一、顶部注释分析Vector是一个 growable 的数组,它的大小可以根据需要增加或减少Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use Ar...

2019-04-09 21:33:02 213

原创 ArrayList

文章目录一、 顶部注释分析1.1 首句定义1.2 从注释中得到的结论二、源码分析2.1 定义2.2 字段2.3 构造方法2.4 添加元素2.5 容量检查和扩容2.6 get、set、remove、trimToSize2.7 modCount一、 顶部注释分析1.1 首句定义Resizable-array implementation of the List interface:List 接...

2019-04-09 21:30:14 116

原创 希尔排序-ShellSort

/** * 希尔排序 * <p> * 思想: * 1、希尔排序也称为"缩小增量排序",与插入排序相比,它会优先比较距离较远的元素; * 2、先将待排序数组按照增量分成多个子序列; * 3、然后对每个子序列进行插入排序; * 4、不断缩小增量值直至每个子序列中只包含一个元素 */public class ShellSort implements Sortable{ ...

2019-04-04 14:38:06 112

原创 选择排序-SelectionSort

/** * 选择排序 * <p> * 思想: * 1、每次循环都从还未排序的部分中找出最小(最大)元素; * 2、然后放到已排序部分的末尾; * 3、重复上述步骤直至所有元素均被处理 */public class SelectionSort implements Sortable{ @Override public void sort(int[] so...

2019-04-04 14:37:35 112

原创 基数排序-RedixSort

import java.util.ArrayList;/** * 基数排序 * <p> * 思想: * 1、基数排序可看成是将待排序元素拆分成多个关键字进行排序; * 2、若以元素位数为关键字,则从最低位开始,以该位上的值进行计数排序(若为 10 进制则设 10个桶); * 3、从低到高在下一位上重复上述步骤,直至所有元素的最高位 */public class Re...

2019-04-04 14:37:10 154

原创 快速排序-QuickSort

/** * 快速排序 * <p> * 思想: * 1、先找出一个基准数,例如取第一个元素; * 2、利用左右两个指针,右指针从右往左找到一个小于基准数的元素,左指针从左往右找到一个大于基准数的元素; * 3、交换两个指针对应的元素,并重复该步骤,直至两个指针相遇; * 4、然后将基准值放入指针相遇的对应位置,此时小于基准值的元素都在其左边,大于基准值的元素都在其右边; ...

2019-04-04 14:35:57 104

原创 归并排序-MergeSort

/** * 归并排序 * <p> * 思想: * 1、先将待排序数据不断拆分为左右两个子序列,直至子序列不可再拆分; * 2、然后将两个左右子序列进行合并,同时保证有序; * 3、重复上述拆分合并步骤直至完成排序 */public class MergeSort implements Sortable{ @Override public void so...

2019-04-04 14:35:27 121

原创 插入排序-InsertionSort

/** * 插入排序 * <p> * 思想: * 1、首先默认第一个元素已经有序; * 2、取下一个元素,将其从后往前依次和已排序部分进行比较; * 3、如果该元素小于已排序元素就继续向前找,同时不断将已排序元素的位置向后移动; * 5、直到其大于某个已排序元素,则插入到该元素之后; * 6、重复上述步骤直至所有元素均被处理 */public class Inser...

2019-04-04 14:34:44 167

原创 堆排序-HeapSort

/** * 堆排序 * <p> * 思想: * 1、利用堆这种高效的数据结构,先根据所有元素构建一个最大堆,即堆顶元素为最大值; * 2、然后每次将最后一个元素与堆顶元素互换,得到当前最大值,移动最后一个元素对应的指针并调整堆结构; * 3、如此重复直至所有元素均被处理 */public class HeapSort implements Sortable{ ...

2019-04-04 14:34:04 105

原创 计数排序-CountingSort

/** * 计数排序 * <p> * 思想: * 1、先找出待排序元素中的最大值 max,然后定义 max + 1个桶,每个桶用于记录该桶对应元素出现的次数; * 2、将所有元素依次放入对应的桶中; * 3、不同的桶之间可事先保证有序,因此只需按桶的顺序依次输出元素; * 4、对于每个桶,其中存储的数字 n 表示需要输出 n 个该桶对应的元素 */public cla...

2019-04-04 14:33:30 99

原创 桶排序-BucketSort

import java.util.ArrayList;import java.util.Collections;/** * 基数排序、计数排序和桶排序实际上都利用了桶的概念,但在对桶的使用方法上有区别: * <p> * 基数排序:根据键值每一位上的数字来确定对应的桶; * 计数排序:每个桶只存储单种键值(键值相同可放到一个桶中); * 桶排序:每个桶存储一定范围内的键值...

2019-04-04 14:32:49 223

原创 冒泡排序-BubbleSort

/** * 冒泡排序 * <p> * 思想: * 1、每次循环都从数组起始位开始,依次比较前后两个数,若后者大于前者则交换; * 2、则每循环一轮,就可以将当前最大的数移到数组的最后; * 3、总共循环 n-1 轮后完成排序 */public class BubbleSort implements Sortable{ @Override public ...

2019-04-04 14:31:46 248

原创 第13章-线程安全与锁优化

文章目录13.2 线程安全13.2.1 Java 语言中的线程安全13.2.1.1 不可变13.2.1.2 绝对线程安全13.2.1.3 相对线程安全13.2.1.4 线程兼容13.2.1.5 线程对立13.2.2 线程安全的实现方法13.2.2.1 互斥同步13.2.2.2 非阻塞同步13.2.2.3 无同步方案13.3 锁优化13.3.1 自旋锁与自适应自旋13.3.2 锁消除13.3.3 锁...

2019-03-27 12:58:58 153

原创 第12章-Java内存模型与线程

文章目录12.1 概述12.2 硬件的效率与一致性12.3 Java内存模型12.3.1 主内存与工作内存12.3.2 内存间交互操作12.3.3 对于 volatile 型变量的特殊规则12.3.3.1 可见性12.3.3.2 禁重排12.3.3.3 具体实现方式12.3.3.4 volatile变量的特殊规则12.3.4 对于long和double 型变量的特殊规则12.3.5 原子性、可见性...

2019-03-27 12:57:48 323

原创 第11章-晚期(运行期)优化

文章目录11.1 概述11.2 HotSpot虚拟机内的即时编译器11.2.1 解释器与编译器11.2.2 编译对象与触发条件11.2.2.1 方法调用计数器11.2.2.2 回边计数器11.2.3 编译过程11.3 编译优化技术11.3.1 优化技术概览11.3.2 公共子表达式消除11.3.3 数组边界检查消除11.3.4 方法内联11.3.5 逃逸分析11.4 Java 与 C/C++ 的编...

2019-03-27 12:56:48 155

原创 第10章-早期(编译期)优化

文章目录10.2 Javac 编译器10.2.1 编译过程10.2.2 解析与填充符号表10.2.2.1 词法、语法分析10.2.2.2 填充符号表10.2.3 注解处理器10.2.4 语义分析与字节码生成10.2.4.1 标注检查10.2.4.2 数据及控制流分析10.2.4.3 解语法糖10.2.4.4 字节码生成10.3 Java语法糖的味道10.3.1 泛型与类型擦除10.3.2 自动装箱...

2019-03-27 12:54:50 374

原创 第8章-虚拟机字节码执行引擎

文章目录8.1 概述8.2 运行时栈帧结构8.2.0 概述8.2.1 局部变量表8.2.2 操作数栈8.2.3 动态连接8.2.4 方法返回地址8.3 方法调用8.3.1 解析8.3.2 分派8.3.2.1 静态分派8.3.2.2 动态分派8.3.2.3 单分派与多分派8.3.2.4 虚拟机动态分派的实现8.4 基于栈的字节码解释执行引擎8.4.1 解释执行8.4.2 基于栈的指令集与基于寄存器的...

2019-03-27 12:53:53 154

原创 第7章-虚拟机类加载机制

文章目录7.1 概述7.2 类加载的时机7.2.1 生命周期7.2.2 加载时间点7.3 类加载的过程7.3.1 加载7.3.2 验证7.3.2.1 文件格式验证7.3.2.2 元数据验证7.3.2.3 字节码验证7.3.2.4 符号引用验证7.3.3 准备7.3.4 解析7.3.4.1 类或接口的解析7.3.4.2 字段解析7.3.4.3 类方法解析7.3.4.4 接口方法解析7.3.5 初始化...

2019-03-26 10:02:53 250

原创 第6章-类文件结构

文章目录6.2 无关性的基石6.3 Class类文件的结构6.3.0 概述6.3.1 魔数与Class文件的版本6.3.2 常量池6.3.2.1 CONSTANT_Class_info 型常量的结构6.3.2.2 CONSTANT_Utf8_info 型常量的结构6.3.2.3 常量池中的14种常量项的结构总表6.3.2.4 实例分析(6.3.1~6.3.2)6.3.3 访问标志6.3.4 类索引...

2019-03-26 10:02:32 927

原创 第3章-垃圾收集器与内存分配策略

文章目录3.1 概述3.2 对象已死吗3.2.1 引用计数算法3.2.2 可达性分析算法3.2.3 再谈引用3.2.4 生存还是死亡3.2.5 回收方法区3.3 垃圾收集算法3.3.1 标记-清除算法(Mark-Sweep)3.3.2 复制算法(Copying)3.3.3 标记-整理算法(Mark-Compact)3.3.4 分代收集算法(Generational Collection)3.4 H...

2019-03-26 10:01:46 274

原创 第2章-Java内存区域与内存溢出异常

文章目录2.2运行时数据区域2.2.1 程序计数器(各线程私有)2.2.2 Java虚拟机栈(各线程私有)2.2.3 本地方法栈(各线程私有)2.2.4 Java堆(各线程共享)2.2.5 方法区(各线程共享)2.2.6 运行时常量池(方法区一部分)2.2.7 直接内存2.3 HotSpot 虚拟机对象探秘2.3.1 对象的创建2.3.2 对象的内存布局2.3.3 对象的访问定位2.2运行时数据...

2019-03-26 10:00:55 208

原创 Java线程

文章目录1.2 何谓线程1.2.1 单线程程序1.2.2. 多线程程序1.3 线程的启动1.3.1 启动线程的方法1.3.2 程序的终止1.3.3 Thread类和Runnable接口1.4 线程的暂停1.4.1 sleep方法的调用1.5 线程的互斥处理1.5.1 synchronized方法1.5.2 锁和监视1.6 线程的协作1.6.1 线程控制方法1.6.2 等待队列1.6.3 wait、...

2019-03-26 09:50:29 215

原创 Java内存模型

文章目录Java内存模型重排序1.什么是重排序2. 示例程序(会显示出 x < y 吗)可见性1. 什么是可见性共享内存与操作synchronized1. 线程的互斥处理2. 同步处理volatile1. 同步处理final1. final字段与构建线程安全的实例2. 不要从构造函数中泄漏 thisDouble-Checked Locking模式的危险性1. 示例程序2. Initiali...

2019-03-26 09:49:52 159

原创 第13章-总结多线程编程的模式语言

文章目录13.1 多线程编程的模式语言13.1.1 模式与模式语言13.2 Single Threaded Execution 模式——能通过这座桥的只有一个人13.3 Immutable 模式——想破坏也破坏不了13.4 Guarded Suspension 模式——等我准备好哦13.5 Balking 模式——不需要就算了13.6 Producer-Consumer 模式——我来做,你来用13...

2019-03-26 09:48:30 232

原创 第12章-ActiveObject

文章目录12.1 模式简介12.3 ActiveObject模式中的角色12.3.1 Client(委托者)12.3.2 ActiveObject(主动对象)12.3.3 Proxy(代理人)12.3.4 Scheduler12.3.5 MethodRequest12.3.6 ConcreteMethodRequest12.3.7 Servant(仆人)12.3.8 ActivationQueue...

2019-03-26 09:47:15 678

原创 第11章-ThreadSpecificStorage

文章目录11.1 Thread-Specific Storage模式11.2 java.lang.ThreadLocal11.2.1 java.lang.ThreadLocal 就是储物间11.2.2 java.lang.ThreadLocal 与泛型11.5 Thread-Specific Storage模式中的角色11.5.1 Client(委托者)11.5.2 TSObjectProxy(线...

2019-03-26 09:46:48 536

原创 第10章-TwoPhaseTermination

文章目录10.1 模式简介10.3 Two-Phase Termination模式中的角色10.3.1 TerminationRequester(终止请求发出者)10.3.2 Terminator(终止者)10.4 拓展思路的要点10.4.1 不能使用Thread类的stop方法10.4.2 仅仅检查标志是不够的10.4.3 仅仅检查中断状态是不够的10.4.4 优雅地终止线程10.4.4.1 安...

2019-03-26 09:46:17 401

原创 第9章-Future

文章目录9.1 模式简介9.3 Future模式中的角色9.3.1 Client(请求者)9.3.2 Host9.3.3 VirtualData(虚拟数据)9.3.4 RealData(真实数据)9.3.5 Future(期货)9.3.6 类图9.4 拓展思路的要点9.4.1 吞吐量会提高吗9.4.2 异步方法调用的 “返回值”9.4.3 “准备返回值” 和 “使用返回值” 的分离9.4.4 变种...

2019-03-25 21:28:53 215

原创 第8章-WorkerThread

文章目录8.1 模式简介8.3 Worker Thread模式中的角色8.3.1 Client(委托者)8.3.2 Channel(通信线路)8.3.3 Worker(工人)8.3.4 Request(请求)8.3.5 类图和Timethreads图8.4 拓展思路的要点8.4.1 提高吞吐量8.4.2 容量控制8.4.2.1 Worker角色的数量8.4.2.2 Request角色的数量8.4....

2019-03-25 21:28:28 352

原创 第7章-ThreadPerMessage

文章目录7.1 模式简介7.3 Thread-Per-Message模式中的角色7.3.1 Client(委托人)7.3.2 Host7.3.3 Helper(助手)7.3.4 类图和Timethreads图7.4 拓展思路的要点7.4.1 提高响应性,缩短延迟时间7.4.2 适用于操作顺序没有要求时7.4.3 适用于不需要返回值时7.4.4 应用于服务器7.6 进程与线程7.6.1 线程之间共享...

2019-03-25 21:28:02 551

原创 第6章-ReadWriteLock

文章目录6.1 模式简介6.3 Read-Write Lock模式中的角色6.3.1 Reader(读者)6.3.2 Writer(写者)6.3.3 SharedResource(共享资源)6.3.4 ReadWriteLock(读写锁)6.3.5 类图和Timethreads图6.4 拓展思路的要点6.4.1 利用“读取”操作的线程之间不会冲突的特性来提高程序性能6.4.2 适合读取操作繁重时6...

2019-03-25 21:27:34 157

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除