自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

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

2024-06-15 16:53:49 1455 4

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

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

2024-07-23 13:07:23 741

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

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

2024-07-22 21:02:36 481

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

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

2024-07-22 21:02:01 716

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

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

2024-07-20 23:14:03 794

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

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

2024-07-20 23:12:10 1636

原创 数据库 explain 关键字

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

2024-07-19 16:41:16 326

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

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

2024-07-19 09:53:25 283

原创 【阿里面试题】处理1GB文件内的字符串并在100MB内存限制下找到出现频率最高的前10个字符串的任务

分而治之+堆!【海量数据场景】分割文件:由于内存限制为100MB,而文件大小为1GB,首先需要将大文件分割成多个小文件,每个小文件大小不超过内存限制....

2024-07-18 15:13:04 158

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

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

2024-07-18 15:01:01 700

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

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

2024-07-17 13:40:39 2870

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

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

2024-07-17 13:16:02 1493

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

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

2024-07-16 15:39:22 130

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

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

2024-07-16 15:34:15 266

原创 SpringBoot,有哪些优点?

Spring Boot 以**约定大于配置**核心思想开展工作,相比 Spring 具有如下优势:

2024-07-15 10:02:44 151

原创 重载和重写的区别

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

2024-07-15 09:57:14 175

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

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

2024-07-13 20:46:14 246

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

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

2024-07-13 20:42:21 313

原创 56. 合并区间

请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。

2024-07-12 10:29:33 146

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

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

2024-07-11 10:35:46 139

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

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

2024-07-11 10:33:24 473

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

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

2024-07-10 14:23:33 1036

原创 关于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 347

原创 为什么sleep是线程的方法?

所以在同步方法或同步块中使用sleep,一个线程访问时,其他的线程也是无法访问的。而wait是会释放对象锁的,就是当前线程放弃对象的使用权,让其他的线程可以访问。Sleep使用的时候,

2024-07-08 14:45:21 170

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

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

2024-06-30 22:04:42 2932

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

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

2024-06-26 10:47:50 983

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

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

2024-06-22 22:41:26 1796

原创 设计模式 - Observer Pattern 观察者模式

观察者模式是行为型模式的一种,它定义对象间的一种一对多的依赖关系,使得每当一个对象改变状态,它的所有依赖都会收到通知并且自动更新状态。

2024-06-22 22:16:35 299 1

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

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

2024-06-20 21:49:59 240

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

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

2024-06-20 21:47:53 146

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

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

2024-06-17 12:49:42 805

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

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

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

空空如也

空空如也

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

TA关注的人

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