自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一文学会Spring

Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器

2025-03-05 20:53:51 936

原创 一文看懂MyBatis

Mybatis官方文档:https://mybatis.org/mybatis-3/zh_CN/getting-started.html

2025-03-04 20:00:43 849

原创 一文搞懂AQS

AQS的核心思想:如果被请求的共享资源关闭,那么就将请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要使用CLH队列的变体来实现的,将暂时获取不到锁的线程加入到队列中。AQS中的队列是CLH变体的虚拟双向队列(FIFO),AQS通过将每条请求共享资源的线程封装成一个节点来实现锁的分配。主要原理图如下:AQS使用一个volatile的int类型的成员变量来表示同步状态,通过CAS对state值的修改。

2024-12-31 20:46:49 637

原创 volatile关键字

指令重排序是指在不影响单线程程序执行结果的前提下,编译器和处理器为了优化程序的性能,对指令的执行顺序进行重新排列的一种优化技术。

2024-12-04 15:24:46 739

原创 synchronized底层原理

原子性synchronized和volatile特性上最大的区别就是原子性,volatile不具备原子性。可见性有序性可重入性2.2 静态同步方法2.3 同步方法块三、synchronized的底层实现JVM中,对象在内存中分为三块区域在Hotspot虚拟机中,Monitor是由ObjectMonitor实现的,源码时C++语言实现的,想深入了解的可以下载Hotspot的源码,我们在这里只是简单介绍一下数据结构从上图可以总结获取Monitor和释放Monitor的流程如下:查看的字节码指

2024-11-27 16:40:00 1202

原创 一文搞懂锁基础

锁用于控制对共享资源的访问,以确保在能够访问被保护的资源,从而避免数据竞争和不一致性等问题。

2024-11-20 10:24:20 1057

原创 并发编程理论

原子性在一次或多次操作中,要么所有的操作都执行,要么所有操作都不执行。i0thread1thread2i10000i++2000i++操作实际上包含了读取i的值、将其加1、再将结果写回i这三个步骤,它不是一个原子性操作。可见性是指一个线程对共享变量进行修改,另一个线程立即得到修改后的最新值。flagfalseflagtrueflagflagtrue有序性程序中代码执行的顺序,Java在编译时和运行时会对代码进行优化,会导致程序最终的执行顺序不一定就是我们编写代码时的顺序。

2024-11-16 15:47:16 847

原创 线程的创建

本篇文档代码较多,可以先搜一下多线程debug的技巧。

2024-11-12 21:29:59 722

原创 线程和进程

线程是CPU调度的最小单位,是独立执行的路径。进程是系统进行资源分配和调度的基本单位,是线程的集合,一个进程出来包含多个线程之外,还有其余的共享变量空间。

2024-11-11 11:18:10 238

原创 Java反射

反射在实际开发中基本用不到,背背面试题就行。

2024-10-26 17:08:33 303

原创 一文拿下消息队列

本质上就是一个上下游通信的队列,无非就是发消息、存消息、消费消息。

2024-10-22 22:45:21 377

原创 史上最全JVM思维导图

2024-10-14 23:57:28 129

原创 一文拿下JVM面试

类加载器是JVM用来加载类的核心组件,负责将Java字节码文件(.class)动态的加载到内存中,并将其转化为JVM可以执行的类对象。

2024-10-13 17:02:56 888

原创 MySQL语句执行流程

MySQL可以分为Service层和存储引擎层Service层:连接器、查询缓存、分析器、优化器、执行器存储引擎层:负责数据的存储和提取。

2024-09-21 23:24:12 483

原创 MySQL中的锁

根据锁的粒度可以分为全局锁、表级锁、行级锁根据锁的性质可以分为共享读锁、独占写锁根据锁的思想可以划分为乐观锁、悲观锁。

2024-09-21 15:49:42 260

原创 MySQL索引

索引就是MySQL高效获取数据的数据结构。通俗点来讲,索引就好比是书的目录,可以提高数据库的查询速度。索引下推减少了不必要的行访问和回表操作。在MySQL5.6之前,会直接进行全表扫描。在MySQL5.6之后,会先对age进行过滤,在进行扫描。

2024-09-19 19:15:51 967

原创 什么是MVCC?

版本链存储的除了我们实际的数据,其实还存储了trx_id(事务ID)和指向上一个版本的指针。undo log就是用来存储历史数据的。字段含义m_ids当前活跃的事务ID集合min_trx_id最小活跃事务IDmax_trx_id预分配事务ID,当前最大事务ID + 1(因为事务ID是自增的)ReadView创建者的事务IDread view就规定了版本链数据的访问规则。条件是否可以访问可以访问可以访问不能访问。

2024-09-18 16:44:38 360

原创 数组中常见的算法

数组在内存中的空间是连续的,所以就会导致数组的插入、删除的时间复杂度会很高,我们在删除和插入元素的时候需要移动其他元素来保证数组内存空间的连续。数组的下标是从0开始的。

2024-09-17 23:02:45 368 1

原创 Java选择结构

选择结构是根据一个或多个表达式的结果来决定执行哪一部分的代码。

2024-05-27 23:48:43 708 1

原创 Java运算符

赋值运算符(=)的作用就是将一个表达式的值赋值给左边,左边必须是,不能是常量。

2024-05-21 16:01:52 1630 1

原创 Java的变量和常量

变量声明式赋初值语法:数据类型 变量名 = 值;先声明变量,然后赋值语法:数据类型 变量名;变量名=值;int num;num = 1;常量就是固定不变的值,是不能改变的数据。使用final关键字修饰语法:final 数据类型 变量名 = 值;

2024-05-17 21:48:13 1560

原创 JAVA数据类型

Java数据类型分为基本数据类型和引用数据类型。大家最容易混淆的就是String,String是引用数据类型而不是基本数据类型。

2024-05-16 14:32:15 158

原创 JDK和JRE的区别

一、什么是JDKJDK是Java Development ToolKit的简称,也就是Java开发工具包。JDK是整个Java的核心。二、什么是JREJRE是Java的运行环境,并不是开发环境。三、JDK和JRE的区别JDK是给程序员用的,JRE提供给想运行Java程序的用户使用的。

2024-05-16 00:00:35 273 1

空空如也

空空如也

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

TA关注的人

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