自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (二)深入底层源码,剖析AQS的来龙去脉!

AQS使用内部类ConditionObject构建等待队列,当Condition调用await()方法后,等待获取锁资源的线程将会加入等待队列中,而当Condition调用signal()方法后,线程将从等待队列转移到同步队列中进行锁资源的竞争。

2025-02-11 21:31:31 1348

原创 (一)从底层源码剖析AQS的来龙去脉!

谈到并发,那么就不得不提到AQS(AbstractQueuedSynchronizer)了,它是Java并发包的一个核心类,可以用于实现各种同步器提供了一个框架,例如ReentrantLock、Semaphore、CountDownLatch、ReentrantReadWriteLock、FutureTask等。接下来,让我们从源码的角度来分析AQS的实现原理。

2025-01-15 17:20:04 2626

原创 谈一谈数据库中的死锁问题

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象。若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

2024-07-29 14:26:33 3592

原创 Redis的两种持久化方式---RDB、AOF

rdb其实就是一种快照持久化的方式,它会将Redis在某个时间点的所有的数据状态以二进制的方式保存到硬盘上的文件当中,它相对于aof文件会小很多,因为知识某个时间点的数据,当然,这就会导致它的实时性不够高,如果突然停机,那么会导致大量丢失数据,所以需要AOF来配合使用。

2024-07-26 23:01:56 235

原创 谈一谈一条SQL的查询、更新语句究竟是如何执行的?

首先建立连接,然后当走到在查询缓存的时候,更新表的操作会导致缓存的清空【区别】,所以这个时候T表的所有缓存结果都清空。接下来,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用ID这个索引。然后,执行器负责具体执行,找到这一行,然后更新…

2024-07-20 23:14:03 1488

原创 谈一谈一条SQL查询语句究竟是如何执行的?

大体来说,MySQL可以分为`Server层`和`存储引擎层`两部分。server层包含查询缓存、分析器、优化器、执行器等,以及及所有的内置函数(如日期、时间....)所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等.....

2024-07-20 23:12:10 2258

原创 数据库 explain 关键字

explain 是一个SQL命令,用于。从而知道MySQL怎么处理你的SQL语句的,会,比如SELECT的类型、表的访问顺序、使用的索引、表之间的连接类型等信息。通过它,你可以分析你的查询语句和表结构....

2024-07-19 16:41:16 385

原创 为什么局部内部类和匿名内部类只能访问局部final变量?

final修饰的类表示不可被继承,修饰方法表示此方法不可以被子类覆盖,但是可以被重载,修饰变量表示变量一旦被赋值就不可以更改它的值,基础类型是值,引用类型是地址...

2024-07-19 09:53:25 376

原创 设计模式 - Singleton pattern 单例模式

单例模式是一种创建型设计模式,它用来保证一个类只有一个实例, 并且提供一个访问该实例的全局节点。其在很多场景中都有应用,比如数据库连接池、日志记录器、Spring中对象的创建等。总的来说,单例模式在需要控制实例数量、确保全局唯一性的场景中被广泛应用。单例模式通过限制类的实例化对象为一个,可以确保全局唯一性的场景中被广泛应用,从而有助于控制资源访问、简化全局访问点、减少内存占用等,在很多情况下都可以提升程序的运行效率。

2024-07-17 13:40:39 3913

原创 num = num++; 这段代码为什么是0?

这个问题的根本原因在于num++是一个后缀递增操作,其行为可以分解为以下两个步骤:首先,操作返回变量num的当前值。然后,它将num的值加1....

2024-07-16 15:39:22 240

原创 过滤器和拦截器区别【简单清晰!】

所以过滤器就是以拦截所有进出Servlet容器的HTTP请求和响应,偏重于网络层面的全局性处理。而拦截器就是针对程序内部的业务逻辑增强和控制。换句话说,拦截器是spring的过滤器,过滤器是 servlet 的拦截器。都是同一个东西,只是绑定对象不同。

2024-07-16 15:34:15 376

原创 重载和重写的区别

重载指的是在同一个类中,有方法名相同的方法,但是它的参数列表有区别。重写指的是,子类在继承父类之后,可以对父类的方法进行重写(但是请注意,不能对私有方法进行重写!)

2024-07-15 09:57:14 227

原创 程序计数器作用是什么?

cpu会给每个线程分配时间片,然后等待这个线程的时间片用完之后就会轮到下一个线程来执行。所以此时就需要计数器来记录线程运行的下一行指令的地址,等到下次轮到这个线程执行的时候来到上次执行的指令地址来继续执行指令。

2024-07-13 20:46:14 502

原创 “==“和equals的区别以及hashCode()和equals()的联系

=和equals都是判断两个数据是否相等==对于基本数据类型来说(byte、short、int、long、float、double、boolean、chard),比较的是值是否相等。

2024-07-13 20:42:21 362

原创 什么是并发,什么是并行?

并发(concurrent)是同一时间应对(dealing with)多件事情的能力 。并行(parallel)是同一时间动手做(doing)多件事情的能力。

2024-07-11 10:35:46 206

原创 Java中线程有几种状态,状态之间的流转是怎样的?

Java中线程的状态分为6种,分别为:`NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED`。分别对应于:新建、可运行、阻塞、等待、超时等待、终止....

2024-07-11 10:33:24 582

原创 彻底理解Spirng中的依赖循环是如何解决的!

BeanA 类依赖了 BeanB 类,同时 BeanB 类又依赖了 BeanA 类。这种依赖关系形成了一个闭环,我们把这种依赖关系就称之为循环依赖。

2024-07-10 14:23:33 1092

原创 关于TCP的三次握手流程

第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向服务端发送的字段包含标志位SYN=1,序列号seg=x。第一次握手后客户端的状态为SYN-SENT。此时服务端的状态为LISTEN第二次握手:服务端在收到客户端发来的报文后,会随机生成一个服务端的起始序列号y,然后给客户端回复一段报文,标志位SYN=1,序列号seq=y,ACK=1,确认号ack=x+1。第二次握手后服务端的状态为SYN-RCVD(SYN=1表示要和客户端建立一个连接,ACK=1表示确认序号有效)

2024-07-09 09:38:10 419

原创 一文带你了解乐观锁和悲观锁的本质区别!

CAS是(比较并交换)的缩写,是一种轻量级的同步机制,主要用于实现多线程环境下的无锁算法和数据结构,保证了并发安全性。它可以在不使用锁的情况下,对共享数据进行线程安全的操作。它就是用一个预期值和要更新的变量值进行比较,两值相等才会进行更新。CAS 操作是一个原子操作,它在执行期间不会被其他线程中断。因此,它能够提供一种乐观并发控制机制,避免了传统锁机制的开销和可能的线程阻塞。

2024-06-30 22:04:42 3628

原创 深入MySQL的事务隔离级别(场景描述 + 超详解析 = 通俗易懂!)

事务是一组操作的集合,事务会把所有操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

2024-06-26 10:47:50 3030 2

原创 谈一下MySQL的两阶段提交机制

为了保证事务的持久性和一致性,MySQL需要确保redo log和binlog的同步持久化。在事务提交时,这两个日志必须保持一致,以避免出现数据不一致的问题。MySQL通过“两阶段提交”的机制来实现这一点。

2024-06-22 22:41:26 2088

原创 设计模式 - Template Method 模板方法

定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤 。

2024-06-20 21:49:59 367

原创 设计模式 - Strategy Pattern 策略模式

策略模式是行为型设计模式之一,它定义了一系列的算法,并将每个算法封装起来,而且还使他们还可以相互替换。这样就可以让算法区别于使用它的客户而产生变化。

2024-06-20 21:47:53 254

原创 设计模式 - Chain Of Responsibility 责任链模式

责任链模式是一种行为型设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。该模式将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。即,将请求沿着处理者链进行发送,收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。

2024-06-17 12:49:42 970

原创 设计模式 - Factory Method 工厂方法

工厂方法模式是一种创建型设计模式, 又称为工厂模式。其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。也就是说它定义了一个创建对象的接口,但将具体实例化操作推迟到子类中。也就是说,父类提供创建对象的方法, 并且允许子类决定实例化对象的类型。这样做的好处是可以使一个类的实例化延迟到其子类中进行,从而提供更大的灵活性和扩展性。需要创建复杂对象:如果创建对象的过程比较复杂,可以使用工厂方法将对象的创建过程封装起来。

2024-06-17 11:00:02 747 1

空空如也

空空如也

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

TA关注的人

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