笔记
文章平均质量分 73
一个小刚_
这个作者很懒,什么都没留下…
展开
-
HashMap集合
1.HashMap集合简介 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突**(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)**而存在的(“拉链法”解决冲突).JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(或者红黑树的边界值,默认为 8)并且当前数组的长度大于64时,此时此索引位置上的所有数据改为使用红黑树存储。 补充:将链表转换成红黑树前会判断,即使阈值大于8,但是数组长度原创 2021-04-09 15:17:30 · 171 阅读 · 0 评论 -
JVM-虚拟机对象
1.对象是如何创建的 在语言层面上,new一个对象; 1.1 类加载 在虚拟机中,先检查new这条指令的类是否被加载过,如果没有,就进行类加载 1.2 分配内存 1.2.1 分配内存的两种方式 java堆规整,指针碰撞 不规整,空闲列表 java堆是否规整与采用的垃圾收集器是否有压缩整理功能有关。 1.2.2 线程安全处理方案 并发情况下线程并不安全 对分配内存空间的动作进行同步处理——实际上虚拟机采用CAS(比较再交换指令)配上失败重试的方式保证更新操作的原子性 把内存分配的动作按照线程划分在不同的原创 2021-03-07 16:35:38 · 117 阅读 · 0 评论 -
JVM内存结构
1.内存结构 所有线程共享的数据区:堆、方法区 线程私有的数据区:程序计数器、虚拟机栈、本地方法栈 2.运行时数据区域 2.1 程序计数器 记录程序的执行位置 线程执行java方法,程序计数器记录正在执行的虚拟机字节码指令的地址;执行本地方法,程序计数器为空 没有规定内存溢出(OutofMemoryError)情况的区域 2.2 虚拟机栈 描述java方法执行的内存模型 每个方法执行的同时都会创建一个栈帧 栈帧中存储局部变量表、操作数栈、动态链接、方法出口;局部变量表中存放基本数据类型、对象应用、re原创 2021-03-07 15:23:21 · 72 阅读 · 0 评论 -
千万级数据表如何用索引快速查找?
千万级数据表如何用索引快速查找? 1.索引的本质解析 索引: 帮助 MySQL 高效获取数据的排好序的数据结构 索引数据结构: 二叉树、红黑树、Hash表、B-Tree 注: 查找一次经过一次I/O 二叉树:右边的子节点>父节点,左边的子节点<父节点 红黑树:二叉平衡树,会自旋,二叉树当索引结构并不合适,I/O次数太多 B-Tree:当我们想减少I/O次数,那就得减少树的高度,但是数据量恒定的情况下,高度减少意味着宽度得增加,从而引入B树的概念。 B+Tree:(MySql数据库索引使用的原创 2021-02-03 16:11:01 · 1257 阅读 · 0 评论