自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据库优化的四大方法

首先,我们看一下,数据库优化可以从那些方面入手:正如上图所示,数据库优化可以从架构优化硬件优化DB优化SQL优化四个维度入手。此上而下,位置越靠前优化越明显,对数据库的性能提升越高。我们常说的SQL优化反而是对性能提高最小的优化。接下来我们再看看每种优化该如何实施。

2024-10-28 21:30:11 2730

原创 谈谈你对 Seata 的理解

在决定是否使用Seata时,建议遵循以下决策树:复制是否需要强一致性?├─ 是 → 选择XA模式└─ 否 → 是否需要高性能?├─ 是 → 选择AT模式└─ 否 → 是否有复杂业务补偿?├─ 是 → 选择TCC模式└─ 否 → 选择Saga模式通过本文的深度解析,相信您已经对Seata有了全面的认识。作为分布式事务领域的瑞士军刀,Seata正在重新定义微服务架构下的数据一致性解决方案。

2025-03-07 21:34:28 905

原创 常见的限流算法有哪些?

网关层面的限流,或者接口调用的限流,都可以使用令牌桶算法,像Google的Guava,和Redisson。3. (如图)漏桶算法,它是一种恒定速率的限流算法,不管请求量是多少,服务端的处理效率是恒定。它的核心思想是,令牌桶以恒定速率去生成令牌保存到令牌桶里面,桶的大小是固定的,令牌桶满了以。在流量低峰的时候,令牌桶会出现堆积,因此当出现瞬时高峰的时候,有足够多的令牌可以获取,因此。在我看来,限流的本质是实现系统保护,最终选择什么样的算法,一方面取决于统计的精准度,另一方。的限流,都用到了令牌桶算法。

2025-03-06 23:36:22 345

原创 关于“你对 Spring Cloud 的理解”

Spring Cloud 是一系列有序集合,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置管理、消息总线、负载均衡、断路器、数据监控等,以实现微服务架构的快速构建。以下是对 Spring Cloud 的详细理解:Spring cloud是一个基于Spring Boot实现的服务治理工具包,用于微服务架构中管理和协调各个服务的。因为spring开发。springboot简化了spring项目开发。而springboot虽然开发服务容易,

2025-02-27 21:02:51 851

原创 2025保姆级安装Nginx做负载均衡 最佳实践文档

本文章介绍了 怎么下载Nginx 怎么使用Nginx做负载均衡 做集群等等 访问 Nginx 跳转到tmocat :Nginx主备切换 : 首先下载 Nginx  然后 检查网络连接和 DNS 配置 然后 检查网络连接和 DNS 配置 检查依赖:. 解压文件: Nginx 配置与编译启动Nginx与配置Nginx 环境 

2025-02-26 23:52:03 576

原创 什么是可重入可重入锁?

可重入函数是指在多线程环境下,能够被多个线程同时调用,并且在执行过程中不会因为其他线程的干扰而产生错误结果的函数。更具体地说,可重入函数在被中断后,再次进入时能够继续正确执行,就像从未被中断过一样。这要求函数内部不依赖于任何共享的可变状态,只依赖于函数参数和局部变量。可重入锁是一种特殊的互斥锁,它允许同一个线程多次获取同一个锁而不会产生死锁。当一个线程获取了可重入锁后,它可以再次获取该锁,每次获取锁都会增加锁的持有计数。

2025-02-25 21:05:10 949

原创 Mysql 主从集群同步延迟问题怎么解决

复制过程分为几个步骤:1. 主库的更新事件(update、insert、delete)被写到 binlog 2. 从库发起连接,连接到主库。3. 此时主库创建一个 binlog dump thread,把 binlog 的内容发送到从库。4. 从库启动之后,创建一个 I/O 线程,读取主库传过来的 binlog 内容并写入到 relay log5. 从库还会创建一个 SQL 线程,从 relay log 里面读取内容,Exec_Master_Log_Pos 位置开始执行读取到的更新事件,将更新到save

2025-02-24 20:03:27 707

原创 RDB 和 AOF 的实现原理以及优缺点

RDB 文件默认采用压缩的方式持久化,AOF 存储的是执行指令,所以 RDB 在数据恢复的时候性能 比 AOF 要好。RDB 是每隔一段时间触发持久化,因此数据安全性低,AOF 可以做到实时持久化,数据安全性高。关于 RDB 和 AOF 的实现原理以及优缺点,我觉得可以分成三个部分去回答。也就是说当 AOF 文件的大小达到某个阈值的时候,就会把这个文件里面相同的指令。第三部分,AOF 和 RDB 的优缺点分析。第一部分,先说明这两种持久化机制的特性。,至于最终什么时候真正持久化到磁盘,是根据。

2025-02-24 00:09:49 233

原创 ✨ 索引有哪些缺点以及具体有哪些索引类型

索引是数据库中用于提高数据检索效率的数据结构。它就像是书籍的目录,通过目录可以快速定位到所需内容的页码,而在数据库中,索引可以帮助数据库系统快速找到符合查询条件的数据行,而不必对整个表进行扫描。其基本原理是对表中的某些列建立一种特殊的数据结构,这种结构按照一定的规则对列中的值进行排序和组织。当执行查询时,数据库系统首先在索引中查找符合条件的值,然后根据索引中记录的行指针直接定位到表中的相应数据行,从而减少了磁盘 I/O 操作和数据扫描的范围,提高了查询速度。

2025-02-21 20:46:56 1099

原创 Redis存在线程安全的问题吗?

Redis存在线程安全问题吗?”首先回顾一下Redis的线程模型。Redis在大多数版本中是单线程的,处理命令的时候只有一个主线程,这样自然避免了多线程的竞争问题。不过,从Redis 4.0开始,引入了后台线程处理一些耗时的操作,比如持久化和异步删除。到了Redis 6.0,又增加了多线程处理网络I/O,但命令执行还是单线程的。要明确线程安全的定义。线程安全通常指在多线程环境下,程序能够正确地处理共享数据,不会出现数据不一致的情况。对于Redis来说,单线程处理命令意味着不需要担心命令执行时的竞态条件。

2025-02-20 21:02:53 959

原创 Spring Bean 的总结

因为这个时候 Spring 会同时找到多个满足条件的选择,默认情况下它自己不知道选择哪一个。可以用于 Setter 方法来处理必需的依赖项,但构造函数注入仍然是更好的选择。如果无法通过名称匹配到对应的 Bean 的话,注入方式会变为。接口是 Spring 为修改 Bean 提供的强大扩展点。是 Spring 为 Bean 初始化提供的扩展点。就是我这里所说的名称,这样应该比较好理解了吧。注解来显式指定名称而不是依赖变量的名称。属于 JDK 提供的注解,默认注入方式为。都可以用于注入 Bean。

2025-02-19 21:02:30 622

原创 Spring Boot 中自动装配机制的原理

可能用户还会问到如何自定义自动配置,比如编写自己的starter,这时候需要创建spring.factories文件,定义自己的AutoConfiguration类,并使用条件注解来控制Bean的创建。这也是Spring Boot扩展性的一种体现。总结一下,我需要分步骤解释自动装配的机制,从@EnableAutoConfiguration开始,到加载spring.factories中的配置类,条件注解的作用,以及整个装配流程。同时要对比组件扫描和自动装配的不同,避免用户混淆。可能还需要提到一些常见的自动

2025-02-18 21:17:53 690

原创 在 Spring 怎么解决循环依赖的问题?

Spring 通过三级缓存和提前暴露未完成初始化的对象,巧妙地解决了单例 Bean 的循环依赖问题。理解这一机制有助于在开发中避免因设计缺陷导致的循环依赖,同时为排查相关异常提供理论依据。

2025-02-17 21:14:38 871

原创 怎么理解 Spring Boot 的约定优于配置 ?

约定优于配置”(Convention over Configuration),也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做出决定的数量,获得简单的好处,而又不失灵活性。简单来说,就是框架通过一些默认的约定,帮我们预先设置好大部分通用的配置,开发者只需在少数不符合约定的情况下,才需要进行额外的配置工作。举个生活中的例子,我们去餐厅吃饭,一般餐厅都会有默认的餐具摆放方式和点餐流程。如果没有特殊要求,我们就按照餐厅的 “约定” 来用餐,比如使用摆在桌上的筷子、勺子,在菜单上勾选菜品等。

2025-02-14 20:53:55 851

原创 Zookeeper 和 Redis 哪种更好?

Redis 可以使用 SetNX 这个指令来实现分布式锁,Zookeeper 可以基于同一级节点的唯一性或者有序 节点的特性来实现分布式锁。由于 Redis 的读写性能要比 Zookeeper 更好,在高并发场景中, Zookeeper 实现分布式锁会存在性能瓶颈。所以我认为 Redis 比 Zookeeper 更好。

2025-02-13 20:33:47 1494

原创 Linux命令总结

cp:复制文件和目录 cp源文件(文件夹)目标文件(文件夹)常用参数:-r:递归复制整个目录树;-v:显示详细信息;复制文件夹时要在cp命令后面加一个-r参数:如:cp -r 源文件夹 目标文件夹2、touch+文件名:当文件不存在的时候,创建相应的文件;当文件存在的时候,修改文件的创建时间。功能:生成一个空文件或修改文件的存取/修改的时间记录值。touch * :将当前下的文件时间修改为系统的当前时间touch –d 20040210 test:将test文件的日期改为20040210

2025-02-06 23:30:48 231

原创 MySQL三大日志——binlog、redoLog、undoLog详解

复杂的redo日志 —— 记录了对哪个表空间的哪个页面进行修改,存储了对该页面进行修改操作的一些必备要素,重启时,MySQL会根据redo日志的类型,将redo日志中的必备要素作为参数,调用日志类型对应的函数,恢复数据。,比如一条INSERT语句,对应一条DELETE的undo log,对于每个UPDATE语句,对应一条相反的UPDATE的undo log,这样在发生错误时,就。,这样,即使MySQL发生故障导致内存中的数据丢失,也可以根据已落盘的redo日志恢复数据。

2025-02-06 23:23:18 1378

原创 SpringCould 文档

kd:app:name: 提供者-1负载均衡是我们处理高并发缓解网络压力和进行服务端扩容的解决方案负载均衡分为两种。

2025-02-06 23:05:29 579

原创 JVM内存模型

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。将class字节码内容加载到内存中,并将这些静态数据转换成方法区运行时数据结构,然后在堆中形成代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口。类装载器所做的工作实质是把类文件从硬盘读取到内存中。又名堆栈,主管程序运行,生命周期和线程同步,线程结束,栈内存就释放了。不存在垃圾回收问题。虚拟机栈

2025-02-06 22:49:57 490

原创 熔断和降级有什么区别?

熔断和降级都是程序在我保护的一种机制,但二者在概念、触发条件、归属关系上都是不同的。熔断更偏向于全局视角的自我保护(机制),而降级则偏向于具体模块“退而请其次”的解决方案。

2025-02-06 22:31:14 601

原创 类加载器和双亲委派

每一个ClassLoader 都拥有自己独立的类名称空间,类是由ClassLoader将其加载到Java虚拟机中,故类是由加载它的ClassLoader和该类本身一起确定其在Java 运行时环境的唯一性。故只有同一个ClassLoader加载的同一个类,才能算是Java 运行时环境中的相同的两个类。哪怕是来自同一个Class文件,即使被同一个虚拟机加载的两个类,只要ClassLoader不同,那么也属于不同的类。

2025-01-11 15:27:41 697

原创 Java面试题~~

浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。上面的结论没有完全理解的话也没关系,我们来看一个具体的案例!字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。

2025-01-10 21:11:29 628

原创 java 干货面试题总结~

浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。上面的结论没有完全理解的话也没关系,我们来看一个具体的案例!字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。

2025-01-06 21:02:12 999

原创 java常见的面试题

本文介绍了 项目中有哪些通信协议、读写分离的情况下怎么保证数据的一致性、inndb的b+树和mysmaly的b+树的区别?、start启动器原理 、 spring的配置文件的哪四处

2025-01-02 21:00:17 962

原创 MySQL三大日志—— binlog、redoLog、undoLog 详解

在数据库系统中,重做日志(redo log)用于确保在发生故障时数据的完整性和一致性。重做日志缓冲区(redo log buffer)是内存中的一段区域,用于临时存储待写入磁盘的重做日志记录。

2024-12-30 21:10:10 1169 1

原创 InnoDB存储引擎对MVCC的实现

是一种,用于在多个并发事务同时读写一致性和隔离性。它是通过在每个数据行上维护多个版本的数据来实现的。当一个事务要对数据库中的数据进行修改时,MVCC 会为该事务创建一个数据快照,而不是直接修改实际的数据行。

2024-12-28 17:21:07 704

原创 shell 脚本 详解

终端中输入一系列命令完成一些操作,但是我们一条一条输入命令,这样就会很麻烦,shell脚本可以将shell 脚本类似的批处理文件,shell 脚本就是将连续执行的命令写成一个文件。shell 脚本提供等功能。

2024-12-26 21:19:14 1011

原创 Mybatis 小结

Mybatis是一种流行的,它将。它提供了一种并将其,同时。在使用Mybatis时,开发人员可以编写简洁的SQL语句,并且可以使用和来进行高效和灵活的数据操作。除了ORM之外,Mybatis还提供了许多高级功能,如等等。它可以与多种数据库(如MySQL、Oracle、SQL Server等)和Web框架(如Spring、Spring Boot等)无缝集成,并被广泛应用于各种规模的应用程序中。

2024-12-25 20:59:47 1037

原创 MyBatis常见面试题汇总

Mybatis是一种流行的对象关系映射(ORM)框架,它将Java对象表格。它提供了一种并将其映射到Java对象,同时。在使用Mybatis时,开发人员可以编写简洁的SQL语句,并且可以使用和来进行高效和灵活的数据操作。除了ORM之外,Mybatis还提供了许多高级功能,如等等。它可以与多种数据库(如MySQL、Oracle、SQL Server等)和Web框架(如Spring、Spring Boot等)无缝集成,并被广泛应用于各种规模的应用程序中。

2024-12-23 20:25:32 1020

原创 mybatis 的动态sql 和缓存

可以根据具体的参数条件,来对SQL语句进行动态拼接。比如在以前的开发中,由于不确定查询参数是否存在,许多人会使用类似于where 1 = 1 来作为前缀,然后后面用AND 拼接要查询的参数,这样,就算要查询的参数为空,也能够正确执行查询,如果不加1 = 1,则如果查询参数为空,SQL语句就会变成SELECT * FROM student where ,SQL不合法。mybatis里的动态标签主要有。

2024-12-17 21:12:54 1109

原创 MySQL 数据库事务实践

事务 是一系列作为一个整体执行的操作序列,要么全部成功,要么完全不执行。它提供了对数据库操作的一种可靠方式,确保数据的一致性和完整性。例如,在银行转账过程中,扣款和存款必须同时成功或失败,否则会导致资金丢失或重复。

2024-12-17 00:28:27 800

原创 事务隔离级别

事务隔离是数据库的基础之一 加工。Isolation 是首字母缩略词中的 I;隔离级别为 微调 performance 和 结果的可靠性、一致性和可重复性 多个事务正在进行更改并执行查询 同时。InnoDB和。默认的 的隔离级别为 REPEATABLE READ。InnoDB用户可以更改单个会话的隔离级别,或者 对于使用 SET 的所有后续连接语句。设置服务器的默认值 隔离级别,请使用选项 命令行或选项文件中。详细信息 有关隔离级别和级别设置语法,请参见InnoDB支持每笔交易 此处使用不同的。

2024-12-10 20:55:32 748

原创 三大范式.

具体应用场景。

2024-12-09 20:54:14 1087

原创 MySQL 日志

MySQL 日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志 binlog(归档日志)和事务日志 redo log(重做日志)和 undo log(回滚日志)。今天就来聊聊 redo log(重做日志)

2024-12-08 21:42:46 927

原创 MySQL各种锁详解

计算机协调多个进程或线程并发访问某一资源的机制。

2024-12-06 20:59:15 648

原创 事务隔离级别

如果表没有索引或具有合适的索引,则生成一个在合成列上命名的隐藏聚集索引,该索引 包含行 ID 值。语句表示读取时数据库的状态 视图,该视图包含在 read 视图,并且在当前事务的 own 写入,而 locking 语句使用最新的 state 的数据库来使用锁定。在 中,每条记录中的 secondary index 包含该行的主键列,因为 以及为 Secondary Index(二级索引)指定的列。如果行 matches(必须更新),MySQL 会再次读取该行,并且 这次要么锁定它,要么 等待其上的锁定。

2024-12-02 21:00:52 889

原创 MySQL 查询缓存 和缓存的了解

MySQL 查询缓存是查询结果缓存。它将以SEL 开头的传入查询与哈希表进行比较,如果存在匹配项,则返回上一次执行查询的结果。查询必须逐字节匹配(查询缓存避免解析)使用非确定性功能将导致查询不被缓存(包括临时表、用户变量、RAND()、NOW() 和 UDF)。查询缓存设计为不提供过时的结果。对基础表的任何修改都会导致这些表的所有缓存失效。对于缓存是否可以用于 InnoDB 有一些限制(为了尊重 MVCC;由于您打开了一个事务,因此“缓存”可能无法表示预期视图中的数据。

2024-12-01 22:10:29 1415 1

原创 类文件结构详解

根据 Java 虚拟机规范,Class 文件通过ClassFile定义,有点类似 C 语言的结构体。//Class 文件的标志//Class 的小版本号//Class 的大版本号//常量池的数量//常量池//Class 的访问标记//当前类//父类//接口数量//一个类可以实现多个接口//字段数量//一个类可以有多个字段//方法数量//一个类可以有个多个方法//此类的属性表中的属性数//属性表集合通过分析ClassFile。

2024-11-29 22:17:27 998

原创 MySQL三大日志(binlog、redo log和undo log)详解

MySQL InnoDB 引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)来保证事务的原子性。MySQL 数据库的数据备份、主备、主主、主从都离不开 binlog,需要依靠 binlog 来同步数据,保证数据一致性。

2024-11-28 20:55:03 912

原创 MySQL 的查询分析器 Explain 的8大详解 2024年11月27日全网最新 小白易懂

Explain 是 MySQL 提供的一个用于分析 SQL 查询语句执行计划的工具。它可以帮助开发人员和数据库管理员了解 MySQL 是如何执行查询的,包括查询会使用哪些索引、表之间的连接方式、数据的读取顺序等重要信息。通过分析这些信息,可以优化查询性能,解决查询效率低下的问题。

2024-11-27 23:34:12 1000

空空如也

空空如也

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

TA关注的人

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