自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL系列-仅靠MVCC就能解决幻读?错!Gap锁了解一下?

前言上篇MySQL系列有提到间隙锁,但是我感觉没有讲清楚,仅仅只是介绍了一下间隙锁,所以再来记录一下间隙锁。上篇传送门:https://juejin.cn/post/6986223980269191182#heading-3先说一下结论: 读,分为当前读和快照读,MVCC解决的是快照读的幻读问题,而当前读的幻读问题需要Gap锁+行锁来解决。一、Gap锁(间隙锁)的概念Innodb支持三种行锁定方式:行锁:锁的是索引,如果SQL没有走索引,那么会全表扫描,从而升级为表锁。PS: 想必肯

2021-07-25 23:33:51 301 1

原创 MySQL系列-面试官: 你,有点东西 !

宝,让我们一起,有点东西一、MYSQL索引的底层数据结构及算法我们经常在涉及到SQL优化的时候,总是会想到加索引。那索引究竟是个什么玩意儿?索引是帮助MYSQL高效获取数据,并且排好序的数据结构。我们知道MYSQL可以采用的是B+树和hash来维护索引的,hash这个结构并不常用,它虽然能够通过hash算法很快的路由到对应的数据,但是对于排序,hash就显得很鸡肋了。树形结构在一定程度上,都是采用的二分查找,所以查询的时间复杂度都很低。但随之而来又面临一系列的问题,比如树的退化,以及随着数据的不

2021-07-18 19:20:59 153

原创 并发编程-从字节码到HotSpot彻底搞定Synchronized

一、Synchronized的简单介绍相信用过java的同学对Synchronized都不陌生,它是一个代码同步器,可以修饰普通方法、静态方法和代码块,而锁的粒度不太一样。修饰普通方法:锁的对象是当前调用这个方法的对象。不同的对象之间没有竞争关系。修饰静态方法:锁的对象是这个class类, 不同的对象之间也存在竞争关系。修饰静态代码块:锁的是synchronized (object)里面的这个对象。在多线程的环境下,当多个线程并发去操作同一个共享资源时,可能会出现线程安全问题,看一

2021-04-11 01:59:05 118

原创 并发编程-深入JMM内存模型与Volatile

一、CPU高速缓存的由来CPU高速发展期间,内存和硬盘的发展速度远远跟不上CPU,这就导致了CPU去内存读写数据的速度相对缓慢。针对这个问题,CPU厂商在CPU中内置了三级高速缓存(L1、L2、L3)来解决IO速度和CPU速度不匹配的问题,通过三级缓存,减少了CPU与内存的交互。寄存器: CPU中的数据存储单元,数量有限缓存行: 上面所说的三级高速缓存,它们的虽小存储单元叫做缓存行,缓存行的大小通常为64byte,比如说L1的缓存大小是512kb,而缓存行又占64byte,即L1区域有((512*

2021-04-08 22:47:21 108

原创 JVM-人人都懂常量池

一、静态常量池和运行时常量池我们通过javap -v MyTest.class解析字节码文件public class com.example.spring.jvmTest.MyTest minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPERConstant pool: #1 = Methodref #6.#23 // java/lang/Object."<init>"

2021-04-04 23:29:50 131 2

原创 JVM-对象的组成以及内存分配

一、对象的组成说到对象,我们第一反应想到的就是new一个对象,想当然的认为对象就仅仅是类的实例,其中包含类的成员变量。我们可曾思考过,对象在JVM内部究竟是怎么组成的呢?内部又具体包含什么呢?如果这里你有疑问,那么请耐心的往下看看一个对象由三部分构成:对象头: Mark Word、Klass Point、数组长度(如果是数组的话)实例数据:类的实例信息对齐填充:JVM要求Java对象的大小应该是8bit的倍数,这部分就是将对象大小补充为8bit的倍数下面我们来看一张图:Mark

2021-04-04 17:31:20 325 5

原创 JVM-深入内存模型与GC

theme: juejin一、JVM的组成JVM = 类加载系统+运行时数据区+字节码执行引擎如下图:运行时数据区(JVM内存模型)1. 方法区:JDK8之前方法区又叫永久代,8之后又改叫元空间,其中主要存放常量,静态变量,类元信息2. 栈:栈属于线程私有,一个线程一个栈栈中又有栈帧,一个方法对应一个栈帧栈帧中又包含局部变量表、操作数栈、动态链接、方法出口3. 程序计数器:程序计数器也是属于线程私有,在程序的运行过程中由字节码执行引擎来动态记录下一次要执行的机器码行数4..

2021-03-28 17:47:57 215

原创 JVM-类加载机制的深度解析

注:本篇主要是讲加载过程,验证 >> 准备 >> 解析 >> 初始化 这个过程需要针对字节码文件+OpenJdk的源码进行梳理,时间原因,再加上我自己对C语言理解的也不够深,看OpenJdk源码实在太累,我们后面再补上。1、类加载过程多个java文件经过编译打包生成可运行jar包,最终由java命令运行某个主类的main函数启动程序,这里首先需要通过类加载器把主类加载到JVM。主类在运行过程中如果使用到其它类,会逐步加载这些类。注意:jar包里的类不是一次性全部加

2021-03-27 20:00:36 62

空空如也

空空如也

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

TA关注的人

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