- 博客(80)
- 收藏
- 关注
原创 【MySQL】剖析事务和锁
使用事务而不是使用 LOCK TABLES 语句手动加锁,并使用 innodb_lock_wait_timeout 变量设置锁的超时时间,保证任何情况下锁都可以自动释放。经常使用 SHOW ENGINE INNODB STATUS 命令来确定最近一次死锁的原因。这可以帮助我们修改应用程序以避免死锁。如果出现频繁的死锁警告,可以通过启用 innodb_print_all_deadlocks 变量来收集调试信息。对于死锁的信息,都记录在 MySQL 错误日志中,调试完成后记得禁用此选项。如果事务由于死锁而
2025-05-23 15:55:02
894
5
原创 【MySQL】架构和存储引擎
MySQL服务器架构由多个核心组件构成,包括连接池、服务管理工具、NoSQL接口、SQL接口、解析器、优化器、缓存、存储引擎和文件系统。连接层负责客户端连接管理和权限验证,服务层处理SQL解析、优化和执行,存储引擎层负责数据的读写操作,支持多种可插拔的存储引擎,如InnoDB、MyISAM、MEMORY等。InnoDB是默认存储引擎,支持事务、行级锁和崩溃恢复,适用于高并发场景。MyISAM适用于读密集型应用,但不支持事务和外键。MEMORY引擎将数据存储在内存中,适合临时数据存储。MySQL还提供了CSV
2025-05-17 13:28:56
820
5
原创 【MySQL】服务器配置与管理(相关日志)
mysqld接受的选项可以通过 mysqld --verbose --help 查看,列表中的有些项目是可以在服务器启动时设置的系统变量,系统变量可以在连接MySOL后使用 SHOW VARIABLES 语句查看,但有些内容只在--help 中存在,使用 SHOW VARIABLES 时并没有显示,这是因为它们只是选项而不是系统变量。选项值可以通过命令行和选项文件设置,部分系统变量可以通过 SET 语句动态设置值。
2025-05-15 10:37:25
860
4
原创 【MySQL】mysql/bin目录下程序介绍
mysqld MySQL 的守护进程即 MySQL 服务器,要使用 MySQL 服务器 mysqld 必须正在运行状态mysql MySQL 客户端程序,用于交互式输入 SQL 语句或以批处理模式从文件执行 SQL 的命令行工具mysqlcheck 用于检查、修复、分析和优化表的表维护客户端mysqldump 将 MySQL 数据库转储到 SQL、文本或 XML 文件中的客户端mysqlimport 将文本文件导入到表的客户端工具mysqladmin 执行管理操作的客户端,例如创建或删除数据库、重
2025-05-14 17:13:18
970
原创 【RabbitMQ】应用问题、仲裁队列(Raft算法)和HAProxy负载均衡
文章主要讨论了分布式系统中消息中间件RabbitMQ的关键问题及其解决方案。首先,介绍了幂等性的概念及其在消息重复消费场景中的重要性,提出了通过唯一标识和去重表来实现幂等性的方案。其次,探讨了消息顺序性保障的挑战,并提出了单一队列、分区消费和消息确认机制等解决方案。接着,分析了消息积压的常见原因,包括生产过快、消费者处理能力不足等,并提出了提高消费者效率、限制生产者速率等对策。此外,文章还简要介绍了Raft算法在分布式一致性中的应用,以及RabbitMQ的仲裁队列和HAProxy负载均衡器在提升系统可用性
2025-05-12 17:42:56
1198
原创 【RabbitMQ高级特性】延迟队列、事务和消息分发
本文探讨了如何在RabbitMQ中实现延迟队列的两种方法:TTL+死信队列和官方提供的延迟插件。TTL+死信队列方式通过设置消息的生存时间(TTL)和死信队列(DLX)来实现延迟效果,但存在消息顺序问题和处理复杂性。而延迟插件则直接支持延迟队列,避免了时序问题,但需要额外插件支持。此外,文章还介绍了RabbitMQ的事务机制,确保消息的原子性,以及通过QoS机制实现消息分发和限流的策略,以提高系统的处理效率和稳定性。
2025-05-12 10:00:00
961
3
原创 【Redis】缓存和分布式锁
Redis最主要的应用场景便是作为缓存。是一种用于存储数据副本的技术或组件,目的是提高数据访问性能、减轻后端数据源负载。:在靠近数据源或用户的位置,开辟一块存储空间,用于存放常用或热点数据副本。例如浏览器缓存网页资源(图片、CSS、JavaScript 文件等),将其存储在本地磁盘或内存特定区域:当应用程序请求数据时,先检查缓存中是否有所需数据。若存在(即缓存命中 ),直接从缓存读取返回,避免对原始数据源(如数据库、远程服务器 )的访问;
2025-05-10 10:00:00
1229
8
原创 【Redis】哨兵机制和集群
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工的进行主从切换,同时需要大量的客户端需要被通知切换到了新的主节点之上,不适用于大规模的应用,因此这里用到了。 Redis Cluster 是 Redis 官方提供的分布式解决方案,旨在解决单机 Redis 的性能瓶颈、数据容量限制和高可用性问题,他通过引入多组的Master/Slave,每一组的Master/Slave存储数据全量的一部分,从而构成一个更大的整体,称为Redis集群(Cluster).
2025-05-07 18:42:35
1514
47
原创 【Redis分布式】主从复制
在分布式系统之中为了解决单点问题(1、可用性问题,该机器挂掉服务会停止2、性能支持的并发量是有限的)通常会把数据复制多个副本部署在其他服务器,满足故障和负载均衡的要求。 Redis 主从复制(Master-Slave Replication)是一种数据同步机制,允许将一台 Redis 服务器(主节点,Master)的数据复制到其他 Redis 服务器(从节点,Slave)。主从复制在 Redis 中广泛用于数据冗余、读写
2025-05-01 16:00:00
1829
9
原创 【Docker】Docker拉取部分常用中间件
这里以Docker拉取MySQL5.7为例-e参数用于设置容器内的环境变量。TZ是用于设置时区的环境变量,这里将容器的时区设置为,即中国上海所在的时区。这对于确保容器内应用程序的时间显示和时间相关操作与预期一致非常重要。一般不使用root权限去进行操作数据库,因为操作权限太高容易产生问题,根据项目所需去创建一个可以连接的新用户,赋予其权限。
2025-04-30 16:40:55
1783
7
原创 【RabbitMQ高级特性】消息确认机制、持久化、发送方确认、TTL和死信队列
消费者确认机制确保消息被正确处理后才从队列中删除。如果消费者处理失败(如业务异常或宕机),Broker 会重新投递消息。1.消息一旦被消费者接收(无论是否处理成功),立即自动确认并从队列删除。若消费者在处理消息时崩溃或抛出异常,消息将永久丢失(因为已被确认删除)。非关键业务,允许消息偶尔丢失(如日志采集、监控数据)。2.消费者在处理消息后,必须显式调用basicAck()确认消息;若处理失败,调用或拒绝消息。:确认单条或批量消息。:拒绝消息,可选择是否重新入队。:拒绝单条消息(不支持批量)。
2025-03-24 21:33:20
1013
6
原创 【SpringCloud】OpenFeign、Gateway和Nginx
自定义GatewayFilter自定义GatewayFilter,需要去实现对应的接口GatewayFilterFactory,Spring Boot默认帮我们实现的抽象类是AbstractGatewayFilterFactory,可以直接使用代码示例@Data@Slf4j@Component/*过滤器的核心方法*/@Override/*** exchange ServerWebExchange: HTTP请求-响应交互契约,提供了对HTTP请求和响应的访问。
2025-03-22 16:07:04
867
3
原创 【SpringCloud】Eureka、LoadBalancer和Nacos
Spring Cloud 是一系列框架的集合,它提供了工具和组件来帮助开发者快速构建分布式系统,特别是基于微服务架构的应用。它构建在 Spring Boot 基础之上,利用 Spring Boot 的便利性简化了分布式系统基础设施的开发。
2025-03-17 21:45:51
1213
5
原创 【Redis】持久化(RDB和AOF)和事务
对于数据的存储而言,为保证速度快,数据得在内存中,但为了持久,数据还得存在硬盘之中,Redis 的持久化机制是其高可靠性的核心,主要用于在重启或崩溃后恢复数据。和,以及从 4.0 版本开始支持的。
2025-03-10 19:16:21
1024
3
原创 【RabbitMQ】Spring Boot 结合 RabbitMQ 完成应用间的通信
Spring 框架与 RabbitMQ 的整合主要通过 Spring AMQP(Advanced Message Queuing Protocol)模块实现,提供了便捷的消息队列开发能力。@RabbitHandler 注解用于标记方法,这些方法会根据消息的类型来处理接收到的消息。当一个消息监听器容器接收到消息时,它会根据消息的类型选择合适的 @RabbitHandler 注解的方法来处理该消息。
2025-03-06 17:21:42
1906
5
原创 【RabbitMQ】RabbitMQ的核心概念与七大工作模式
在现代分布式系统和微服务架构中,消息队列(Message Queue) 是解决服务间通信、系统解耦和流量削峰的关键技术之一。而 RabbitMQ 作为一款开源的消息中间件,凭借其高可靠性、灵活性和易用性,成为开发者最常用的工具之一。MQ (Message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是消息 (message) 而已。消息可以非常简单,比如只包含文本字符串,JSON 等,也可以很复杂,比如内嵌对象。MQ多用于分布式系统之间的通信。
2025-03-04 21:28:53
1359
4
原创 【Redis】Redis初阶:常用数据结构相关命令与Jedis使用
🔥个人主页: 中草药🔥专栏:Redis(Remote Dictionary Server)是一个开源的、基于内存的键值对存储数据库,支持持久化、网络化访问,并提供多种数据结构操作,用作数据缓存。它由Salvatore Sanfilippo开发,凭借其单线程模型和高效数据结构,成为高并发场景下的首选解决方案。核心特性:内存存储:数据主要存储在内存中(内存为主,硬盘为辅),读写速度远超传统磁盘数据库,如MySQL(最大特点快)。丰富的数据结构:支持String、List、Hash、Set、Zset五种基础类
2025-02-28 20:23:25
1421
50
原创 【测试】开发模型和测试模型
测试是指使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。它是对软件规格说明、软件设计和编码的最后复审,是软件质量保证的关键步骤。
2025-01-29 10:00:00
1398
48
原创 【OAA 】面向对象分析:从概念到实践
阅读和理解需求文档或用例描述筛选出名词或名词短语,建立初始类清单(候选类)将候选类分为三类:分别是显而易见的类,无意义的类和不确定类别的类舍弃明显无意义类别的类综合讨论不确定类别的类,直到把他们合并或调整到其他两个类别。如该用例描述我们可以得到经过简单分析:“版块类别”和“版块帖子数量”都可以归结到“版块”类,做为“版块”类的属性;"帖子标题”和“帖子正文”都可以归结到"帖子“类,做为“帖子”类的属性;"权限”可以归结到“用户“类,做为“用户"类的属性。用户、版块、帖子。
2025-01-03 10:00:00
1245
54
原创 【Spring】深入解析 Spring 原理:Bean 的多方面剖析(源码阅读)
SpringBoot的自动配置原理源码口是 @SpringBootApplication 注解,这个注解封装了3个注解@SpringBootConfiguration 标志当前类为配置类@ComponentScan 进行包扫描(默认扫描的是启动类所在的当前包及其子包)@EnableAutoConfiguration@Import 注解:读取当前项目下所有依赖jar包中 META-INF/spring.factories,META-INF/spring/org.springframework.boo
2024-12-25 10:00:00
5243
56
原创 【Spring】Linux的基本使用和程序部署
Linux 的基本使用和程序部署是开发和运维工作中的重要环节。掌握这些知识,可以更好地利用 Linux 系统的强大功能,高效地部署和管理各种应用程序,为构建稳定、可靠的服务奠定坚实的基础。随着不断的实践和学习,对 Linux 的运用会更加熟练和深入,能够应对各种复杂的场景和需求。
2024-12-23 10:03:04
2279
45
原创 【Spring】Spring事务和事务传播机制
Spring 事务管理及其事务传播机制为企业级应用开发提供了强大而灵活的事务处理能力。通过合理地配置事务和选择合适的事务传播行为,可以有效地保证数据的一致性、完整性和隔离性,同时满足复杂业务逻辑和分布式系统的需求。在实际开发中,我们需要深入理解事务传播机制的原理和应用场景,根据业务需求进行准确的配置,以构建健壮、可靠的应用程序。
2024-12-06 16:13:47
3573
58
原创 【Spring】AOP
Spring AOP是Spring框架中的一个强大特性,它为开发者提供了一种优雅的方式来处理横切关注点。通过Spring AOP,可以轻松地实现日志记录、事务管理、安全控制等功能,并且能够保持业务逻辑代码的简洁性和清晰度。无论是使用注解还是XML配置,Spring AOP都能让你的代码更加模块化、可维护和易于扩展。
2024-12-02 09:15:00
3204
62
原创 【Spring】MyBatis&MyBatis-Plus
MyBatis 是一个支持自定义 SQL、存储过程以及高级映射的持久层框架。它在 Java 应用程序和各种数据库之间架起了一座桥梁,使得开发者能够方便地将数据持久化到数据库中,并从数据库中检索数据。与传统的 JDBC 相比,MyBatis 大大简化了数据库操作的复杂性,同时又不失灵活性,让开发者能够更好地掌控 SQL 语句,以满足各种复杂的业务需求。Maven配置数据库spring:mybatis:#日志配置,数据库配置#驼峰自动转化#xml文件所在位置。
2024-11-26 09:00:00
3644
56
原创 【Java算法】链表常用技巧和操作总结
在编程世界中,链表是一种非常重要的数据结构,它具有很多独特的优势和用途。今天,就让我们一起来总结一下链表的常用技巧和操作。链表的基本概念链表是一种线性数据结构,由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。链表的特点是可以动态地增长和收缩,不需要预先分配固定的存储空间。链表的常用技巧1.常画图--->直观形象,便于理解2.引入虚拟头结点处理边界情况方便操作链表3.不要吝啬空间,大胆定义变量(大胆定义变量)4.双指针。
2024-11-13 14:43:03
1237
10
原创 【Java算法】分治--归并排序
这段 Java 代码实现了使用归并排序算法对给定整数数组进行排序的功能。归并排序是一种分治算法,其主要思想是将数组不断地分割成较小的子数组,直到每个子数组只有一个元素,然后再将这些子数组合并成有序的数组。确定中间数:后序遍历,给左右两个数组排序:合并两个有序数组:还原:代码算法原理 这段 Java 代码实现了计算给定数组中 “交易逆序对的总数” 的功能,使用了归并排序的思想。
2024-11-06 20:52:57
880
9
原创 【Java算法】分治--快速排序
快速排序三段法是对传统快速排序的一种优化,主要用于对数组进行高效排序。其核心思想是算法原理 该算法采用了三指针的方法,通过一次遍历将数组分为三个部分,分别对应元素值为 0、1、2 的区域,实现对数组的高效排序。初始化指针:遍历与分类:循环终止条件:代码算法原理 这段代码实现了快速排序算法的一种变体 —— 三段划分快速排序。其目标是对给定的整数数组进行排序,通过随机选择一个枢轴元素(),将数组划分为小于枢轴、等于枢轴和大于枢轴的三个部分,然后对这三个部分分别进行递归
2024-10-31 21:43:28
776
11
原创 【Spring】Ioc&DI
在 Java 开发的世界里,Spring 框架无疑是一颗璀璨的巨星,而其中的控制反转(Inversion of Control,简称 Ioc)和依赖注入(Dependency Injection,简称 DI)更是其核心特性之一。今天,就让我们一起深入探索 Spring 中的 Ioc 和 DI。
2024-10-28 15:41:51
4263
83
原创 【Spring】MVC
Spring MVC 是基于Servlet API构建的原始的Web框架,是 Spring 框架的一个重要模块,它实现了模型 - 视图 - 控制器(MVC)设计模式,用于构建灵活、可维护的 Web 应用程序。MVC设计模式模型(Model):负责处理业务逻辑和数据存储。它包含了应用程序的数据和业务规则,可以是 Java 对象、数据库实体等。视图(View):负责呈现用户界面。它可以是 HTML 页面、JSP 文件、XML 视图等,用于将模型中的数据展示给用户。控制器(Controller)
2024-10-21 09:00:00
3621
85
原创 【JavaEE】JVM
Java虚拟机(JVM, Java Virtual Machine)是Java平台的核心组件,它使得Java程序可以在任何安装了JVM的平台上运行,而不需要关心底层的操作系统和硬件架构。JVM的主要职责包括加载、验证、准备、解析和执行Java字节码,以及自动管理内存。 Java虚拟机(JVM)的内存区域划分是理解Java应用程序如何管理和使用内存的关键。JVM将运行时数据区分为几个不同的部分,每个部分
2024-10-05 11:45:24
2350
89
原创 【JavaEE】http/https 超级详解
HTTP(HyperText Transfer Protocol)即超文本传输协议,他是应用非常广泛的应用层协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议。它是一种请求/响应式的协议,客户端发送请求到服务器,服务器处理后返回响应给客户端。HTTP是一个应用层协议,运行在TCP/IP协议族之上,通常使用80端口进行通信。http不仅能传输文本,还能传输图片,传输音频文件,传输视频,传输其他的各种数据目前互联网见到的绝大多数版本都是http/1.1。
2024-10-01 15:36:03
3859
60
原创 【JavaEE】数据链路层协议和DNS
🔥个人主页: 中草药🔥专栏:【Java】登神长阶 史诗般的Java成神之路 以太网(Ethernet)是一种局域网技术,它定义了开放系统互连(OSI)模型中的物理层和数据链路层的规范。以太网是目前最广泛使用的有线网络技术之一,支持不同类型的计算机和其他设备之间的通信。 MAC地址(Media Access Control Address)是一种用于标识网络设备硬件的唯一地址。它在数据链路层(OSI模型中的第二层)上工作,主要用于局域网通信。每个网络接口卡(NIC)或任何其
2024-09-25 15:42:45
1055
79
原创 【Java算法】二叉树的深搜
深度优先搜索 (DFS):算法使用了深度优先搜索的方法来遍历整棵树。从根节点开始,逐步深入到叶子节点。路径构建:使用StringBuilder来构建从根节点到当前节点的路径。每次访问一个节点时,将该节点的值添加到路径中。回溯:通过在每次递归调用时创建一个新的StringBuilder对象path,确保每次递归调用时路径都是独立的。这样在回溯时,路径可以恢复到之前的正确状态。路径存储:当到达叶子节点时,将当前路径转换为字符串并添加到结果列表retl中。剪枝优化:如果某个子树为空,则不需要
2024-09-20 13:31:45
1214
86
原创 【JavaEE】IP协议 网络层协议
简介IP协议是一种无连接、尽最大努力交付的协议,它负责将数据从源主机传输到目的主机。IP协议定义了数据包的格式,并规定了如何将数据包发送到目的地。IP协议有两个主要版本:IPv4和IPv6,两者都在当今的网络环境中发挥着重要作用。IPv4IPv4是最早的IP协议版本,它使用32位地址,可以提供大约43亿个唯一的地址。尽管IPv4在互联网发展的早期阶段表现良好,但随着互联网用户的快速增长,IPv4地址资源逐渐耗尽。IPv6。
2024-09-15 12:09:03
1708
151
原创 【Java算法】递归
递归是一种解决问题的方法,其中函数通过调用自身来求解问题。这种方法的关键在于识别问题是否可以被分解为若干个相似但规模更小的子问题。递归函数有两个主要组成部分:基本情况(Base Case):这是递归调用的终止条件。每个递归函数都必须有一个或多个明确的基本情况,否则递归将无限进行下去。递归步骤(Recursive Step):这是函数调用自身的部分。在此步骤中,问题被分解为更小的子问题,然后递归地求解这些子问题。
2024-09-11 21:36:47
804
14
原创 【Java算法】模拟
模拟算法是一种通过逐步模拟现实世界中的过程或系统行为来解决问题的方法。这种算法通常用于那些可以通过一系列明确步骤来描述其行为的场景。模拟算法可以应用于各种领域,包括物理模拟、经济建模、交通流量分析、游戏开发等。定义问题:建立模型:初始化状态:执行步骤:终止条件:分析结果:交通流量模拟假设我们要模拟一条街道上的车流量,并评估不同交通信号灯配置的效果。定义问题:建立模型:初始化状态:执行步骤:终止条件:分析结果:优点缺点算法原理
2024-09-08 19:59:58
1741
11
原创 【Java算法】位运算
这个算法利用了位运算的高效性和鸽巢原理来实现一个简洁而高效的字符串唯一性检测功能。这种方法非常适合于处理字符集相对较小的情况,例如只包含小写字母的字符串。
2024-09-06 09:43:43
2028
11
原创 【JavaEE】TCP协议 (TCP-传输层协议 万字详解)
TCP小结可靠性校验和序列号确认应答超时重发连接管理流量控制拥塞控制提高性能滑动窗口快速重传延迟应答捎带应答特征类型面向连接无连接可靠性可靠的不可靠的顺序保证保证数据按顺序到达不保证数据顺序流量控制使用滑动窗口机制没有流量控制机制拥塞控制动态调整发送速率以避免网络拥塞没有拥塞控制数据传输单元流数据报 (Datagram)重传机制有,使用超时和重传没有重传机制确认应答有,通过ACK确认收到数据没有确认应答。
2024-09-04 12:54:59
2417
134
原创 【JavaEE】网络原理 UDP协议
特征类型面向连接无连接可靠性可靠的不可靠的顺序保证保证数据按顺序到达不保证数据顺序流量控制使用滑动窗口机制没有流量控制机制拥塞控制动态调整发送速率以避免网络拥塞没有拥塞控制数据传输单元流数据报 (Datagram)重传机制有,使用超时和重传没有重传机制确认应答有,通过ACK确认收到数据没有确认应答头部开销20字节(基本)8字节广播/多播支持不支持多播支持广播和多播应用场景。
2024-08-30 22:11:14
1096
16
原创 【JavaEE】初识网络
IP地址(Internet Protocol Address)是为互联网上的设备分配的一个唯一地址标识。IPv4使用32位地址空间,IPv6则使用128位地址空间,以适应未来互联网的发展需求。
2024-08-27 16:56:21
1022
11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人