自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于MySQL索引底层数据结构与算法

0x56为Alice对应的磁盘文件地址,例如查询name为Alice时,会先通过hash运算得到结果桶2,再去遍历桶2的链表,最终查询到Alice,包括所对应的磁盘文件地址。根据最左前缀原则,若比较大小会看比较name,若相等,则比较age,若再相等,则比较position,再根据叶子节点存储的主键进行回表查找对应的主键数据。③若不使用自增主键,则在加入新的数据时,可能会多次将数据插入到前面已经放满索引元素的节点,使其进行分裂调整,甚至会导致整棵树重新进行平衡,极大降低效率。实现了自平衡的二叉排序树。

2022-11-29 23:26:42 614 2

原创 关于深入理解AQS之独占锁ReentrantLock

java.util.concurrent 包中的大多数同步器实现都是围绕着共同的基础行为,如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于 **AbstractQueuedSynchronizer(简称AQS)**实现的,AQS 是一个抽象同步框架,可用来实现一个依赖状态的同步器。管程:一般使用 MESA,其中有两个队列:①同步等待队列(即上图的入口等待队列,获取锁有关,获取锁失败的线程会加入此队列),②条件等待队列(阻塞唤醒机制)

2022-11-20 01:12:44 168

原创 关于深入理解并发锁机制之synchronized

从偏向锁的加锁解锁过程中可看出,当只有一个线程反复进入同步块时,偏向锁带来的性能开销基本可以忽略,但当有其他线程尝试获得锁时,就需要等到 safe point(即)时,再将偏向锁撤销为无锁状态或升级为轻量级,会消耗一定的性能,所以在多线程竞争频繁的情况下,偏向锁不仅不能提高性能,反而降低性能。因此才有了批量重偏向与批量撤销的机制。批量重偏向和批量撤销是针对类的优化,和对象无关。偏向锁重偏向一次之后不可再次重偏向。

2022-11-14 17:55:17 109

原创 关于CAS与Atomic原子操作

CAS(Compare And Swap,比较并交换),通常指的是这样一种原子操作:针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。CAS 可以看作是它们合并后的整体——一个不可分割的原子操作,并且其原子性是直接在硬件层面得到保障的。CAS可以看做是乐观锁(对比数据库的悲观、乐观锁)的一种实现方式,Java原子类中的递增操作就通过CAS自旋实现的。CAS是一种无锁算法,在不使用锁(没有线程被阻塞)的情况下实现多线程之间的变量同步。在并发编程中很容易出现并发安全的问题,举个很

2022-11-10 23:12:38 204

原创 关于深入理解Java线程

程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的 。当一个程序被运行,从磁盘加载此程序的代码到内存时,就开启了一个进程。进程可视为程序的一个实例。大部分程序可同时运行多个实例进程(如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(如网易云音乐、360 安全卫士等)。操作系统会以进程为单位,分配系统资源(CPU时间片、内存等资源),进程是资源分配的最小单位。线程是进程中

2022-11-07 13:07:04 291

空空如也

空空如也

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

TA关注的人

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