自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Git基本操作-新手入门

命令: git init---可安装tree一眼看清目录嵌套,安装命令:apt install tree。命令: git reset [--soft | --mixed | --hard] [HEAD]⑥修改文件后(工作区修改--git add-->暂存区--git commit-->版本库)(全局)命令: git config --global --unset user.name。(局部)命令: git config --unset user.name。--hard :回退工作区,暂存区,版本库(慎用!

2026-07-24 23:58:10 646

原创 常用:SpringBoot集成Redis

本文介绍了在微服务架构中使用Spring集成Redis的规范写法。核心步骤包括:1)在Common服务中引入Redis依赖并配置application.yml;2)封装包含get/set等基础操作的Redis工具类;3)创建RedisConfig配置类,通过@Bean和条件注解实现自动装配;4)通过AutoConfiguration.imports文件注册配置类。其他服务只需引入Common依赖即可直接@Autowired注入使用Redis功能。单服务场景下可直接在工具类添加@Component注解简化配置

2026-07-19 00:05:20 296 1

原创 ⭐隧道端口、公网 IP、原生端口使用场景全解

本文介绍了开发和生产环境中使用127.0.0.1连接中间件的配置差异。开发环境通过本地端口隧道转发访问云服务器中间件(如Nacos端口10020、RabbitMQ端口5672映射到本地8888/8889),127.0.0.1指向本地机器,需保持隧道运行。生产环境直接使用服务器原生端口连接,127.0.0.1指向服务器本身,禁止使用隧道端口或公网IP。该方案既保证开发便利性,又符合生产环境的安全性和性能要求。

2026-07-18 22:56:00 581

原创 Spring集成邮箱功能

本文介绍了Spring Boot集成邮件服务的完整实现方案。首先通过引入spring-boot-starter-mail依赖并配置SMTP参数(包括QQ邮箱的授权码)实现基础邮件功能。接着封装了可复用的Mail工具类,提供简化的send()方法发送HTML邮件。通过@ConditionalOnProperty实现条件装配,确保只有配置了邮箱的服务才会初始化邮件组件。最后展示了结合RabbitMQ的异步邮件发送实践:用户注册成功后,通过消息队列异步触发邮件发送,避免阻塞主业务流程。整体方案实现了邮件服务的模块

2026-07-17 15:35:34 632

原创 常用:SpringBoot集成RabbitMQ

本文介绍了Spring Boot整合RabbitMQ的完整实现方案。首先在pom.xml中添加AMQP依赖,配置application.yml连接参数;然后创建常量类存储队列/交换机名称,通过配置类声明四种消息模式(工作队列、发布订阅、路由、通配符)的交换机、队列及其绑定关系;接着实现生产者Controller,使用RabbitTemplate发送不同模式的消息;最后编写四种对应的消费者监听器,通过@RabbitListener注解处理消息。该方案完整实现了RabbitMQ的主要消息模式,包括自动确认机制和

2026-07-16 17:37:04 474

原创 保证redis和MySQL数据一致常见策略

摘要:数据库与Redis数据一致性问题主要出现在更新、删除操作中。读操作优先查询Redis缓存,若不存在则从MySQL读取并更新Redis。写操作推荐三种策略:1)延迟双删-先更新MySQL再删除Redis缓存,间隔后二次删除;2)基于消息队列异步更新;3)订阅MySQL的binlog同步变更。其中延迟双删能保证99.99%数据一致性。(150字) 核心策略说明:数据库优先原则结合缓存更新/失效机制,通过时序控制(双删)、异步解耦(MQ)或日志同步(binlog)实现最终一致性。

2026-07-15 17:34:54 116

原创 RabbitMQ的推模式和拉模式

本文比较了消息中间件的推模式与拉模式。RabbitMQ主要采用推模式,可通过SDK或SpringBoot实现两种方式:推模式使用basicConsume/@RabbitListener实现实时消费,适合监控等实时场景;拉模式通过basicGet/receive()按需获取消息,可控制消费速度,适合需要流量控制或资源密集型任务。开发者可根据实时性需求和系统负载情况选择合适的消息获取方式。

2026-07-15 15:14:38 198

原创 MQ消息堆积原因及解决方案

摘要:MQ消息积压指待处理消息超出消费者处理能力的情况,主要成因包括生产者速度过快、消费者能力不足、网络问题及服务器配置低。解决方案需对症下药:提升消费者效率、限制生产速率、优化资源配置或增加消费者数量。(99字)

2026-07-15 14:25:39 167

原创 RabbitMQ如何保证消息的顺序性

RabbitMQ消息顺序性可能被打破的情况包括:多个消费者同时消费、网络波动导致消息乱序、消息重试机制、消息路由分散以及死信队列处理。为保障顺序性,可采取单队列单消费者、分区消费、手动确认等方案,在保证局部有序的同时提升吞吐量。核心是通过合理设计队列结构和消费机制,在业务需求和系统性能间取得平衡。

2026-07-15 00:23:24 258

原创 RabbitMQ的工作模式

RabbitMQ主要有7种工作模式:1.简单模式(一对一);2.工作队列模式(竞争消费);3.发布/订阅模式(fanout交换机广播);4.路由模式(direct交换机按路由键精确匹配);5.通配符模式(topic交换机支持模糊匹配);6.RPC模式(远程调用);7.发布确认模式(消息可靠性保障)。其中1-5为常用消息传递模式,后两种为特殊场景设计,RPC实现远程调用,发布确认模式用于确保消息投递可靠性。

2026-07-15 00:13:26 61

原创 RabbitMQ的特性总结

消息中间件核心机制包括:1)双向确认机制(生产者confirm/return和消费者ACK);2)消息持久化确保可靠性;3)失败自动重试机制;4)TTL过期控制;5)死信队列处理异常消息;6)延迟队列实现定时任务;7)事务保证原子性;8)多种分发模式(轮询/广播等);9)仲裁队列实现高可用集群。这些机制共同保障了消息系统的可靠投递、故障容错和分布式协调能力,是构建健壮异步通信系统的关键要素。

2026-07-14 23:16:22 163

原创 常见MQ(消息队列),以及它们的区别

摘要:三种主流MQ产品对比:RabbitMQ界面友好、功能全面,适合中小型项目;RocketMQ由阿里开源,高吞吐高可靠,适用于电商金融等高并发场景;Kafka专为日志收集设计,吞吐量最高,适合大数据处理。主要区别:吞吐量Kafka(百万级/s)>RocketMQ(十万级/s)>RabbitMQ(万级/s);可靠性RocketMQ>RabbitMQ>Kafka。

2026-07-14 21:09:45 365

原创 电脑主机能正常启动,但显示器黑屏显示无信号的解决方法

摘要:电脑开机正常但显示器无信号,可按以下步骤排查:1)检查HDMI/DP线连接;2)关机拔电源线后长按电源键10-15秒去静电;3)取出内存条用橡皮擦清洁金手指后重插;4)同样方法清洁显卡金手指。建议按顺序尝试,不同电脑问题可能不同,作者通过第四步解决问题。(150字)

2026-07-10 23:09:06 526

原创 Redis的使用

本文介绍了在Ubuntu和CentOS系统下安装和操作Redis的方法。Ubuntu系统中使用apt命令安装Redis,并通过service命令管理服务状态;CentOS系统则使用yum安装,通过systemctl进行服务管理。两个系统均可使用redis-cli命令启动客户端进行键值操作。文章提供了查看状态、启动、停止和重启Redis服务的具体命令,并强调不同系统需使用对应的操作指令。

2026-06-17 11:25:02 348

原创 MQ的作用及应用场景

消息队列(MQ)的核心作用是接收和转发消息,主要应用于五大场景:1)异步解耦,将耗时操作异步化处理(如注册后异步发送短信);2)流量削峰,应对突发流量(如秒杀活动请求排队);3)异步通信,实现"发完即走"的交互方式;4)消息分发,支持一对多广播(如支付成功后多系统订阅消息);5)延迟通知,实现定时触发(如超时未支付自动取消订单)。这些场景通过解耦、缓冲和异步机制,有效提升了系统性能和可靠性。

2026-06-16 20:48:23 297

原创 延迟队列的介绍及常见问题

本文介绍了RabbitMQ中延迟队列的实现方式及应用场景。延迟队列是指消息发送后需等待特定时间才被消费的队列。RabbitMQ本身不直接支持延迟队列,主要通过两种方式实现:1)TTL+死信队列组合,这种方式灵活但存在消息顺序问题;2)官方延迟插件,简化了实现但需特定插件支持。两种方式各有优缺点:前者无需插件但需额外处理逻辑,后者避免时序问题但依赖特定版本。典型应用场景包括订单超时取消、延迟发送调查问卷、自动退款处理等业务需求。建议根据业务需求选择合适实现方式。

2026-06-15 11:06:12 343

原创 死信队列的介绍及常见问题

死信队列是消息队列中存储无法被正常消费消息的特殊队列。死信来源包括消息过期、被消费者拒绝且不重新入队、队列已满三种情况。在RabbitMQ中,死信队列能有效处理异常消息,便于后续分析和优化系统。其典型应用场景包括:保障支付信息不丢失(异常消息转入死信队列后由其他消费者处理)、消息重试(将死信重新发送到队列)以及消息丢弃(清理无法处理的消息)。通过死信队列机制,可以提升系统的可靠性和异常处理能力。

2026-06-10 16:25:09 288

原创 RabbitMQ中如何保证消息的可靠性传输

本文分析了RabbitMQ消息可靠性传输的保障机制。首先通过Producer→Broker过程引入confirm模式解决网络问题,returns模式处理路由失败,并配置死信队列应对队列溢出。其次在Broker内部通过交换机、队列和消息的持久化防止服务宕机导致数据丢失。最后在Broker→Consumer环节采用手动确认机制取代自动确认,确保消息被成功消费后才删除。这三个环节的针对性解决方案共同构成了RabbitMQ完整的消息可靠性传输保障体系。

2026-06-10 15:37:05 587

原创 4.RabbitMQ运维

本文总结了集群、仲裁队列和Raft算法的核心概念。集群是由多台服务器组成的整体,提供高可用服务,搭建方式包括生产常用的多级多节点和学习用的单机多节点。仲裁队列是RabbitMQ基于Raft算法实现的持久化队列,通过数据复制确保高可用性,如3节点集群中选举Leader提供持续服务。Raft算法通过Leader定期心跳维持系统一致性,选举过程中节点可能成为Follower、Candidate或Leader,任期编号递增确保唯一领导权。选举结果包括赢得选举、成为Follower或重新选举,通过RequestVot

2026-06-09 23:05:39 485

原创 3.RabbitMQ应用问题-幂等性保障

本文总结了RabbitMQ应用中的三个关键问题及解决方案:1)幂等性保障,通过全局唯一ID和业务逻辑判断解决重复消费问题;2)顺序性保障,采用单队列消费者和消息确认机制确保消息有序处理;3)消息积压处理,从生产者限速、优化消费者性能和扩容等方面提供解决方案。文章重点分析了幂等性在支付等敏感业务中的重要性,以及如何通过不同级别的消息传输保障(最多一次/最少一次)来平衡可靠性与重复消息风险。

2026-06-04 23:17:04 469 1

原创 分治思想对数组进行排序-归并排序

本文总结了归并排序算法的实现思路。通过数组nums={5,3,4,2,1}的示例,展示了分治思想的应用:将数组不断二分至最小单元,然后通过递归合并有序子数组。算法流程包括:1)递归拆分数组;2)比较合并有序子数组到临时数组;3)将排序结果复制回原数组。作者指出归并排序的执行顺序类似于二叉树前序遍历,体现了"分而治之"的思想,即将复杂问题分解为多个简单子问题来解决。这种思路对理解递归和排序算法很有帮助。

2026-06-04 19:08:30 422

原创 2.RabbitMQ常见高级特性

本文系统梳理了RabbitMQ十大常用高级特性,结合原理、使用场景、配置及SpringBoot实操代码逐一讲解。内容涵盖消息确认、三层持久化、发送方确认、消费重试、消息TTL、死信队列、延迟队列(TTL+死信队列方案与官方延迟插件部署使用)、事务机制、消息分发与限流负载均衡等核心功能。同时区分了不同特性的实现差异与适用场景,梳理了可靠性保障、异常处理、分布式消费等实战要点,可作为速查手册,帮助开发者快速理解并落地RabbitMQ高阶用法。

2026-06-02 22:42:46 635

原创 1.RabbitMQ入门概述

本文从基础概念入手讲解消息队列 MQ,介绍了 RabbitMQ、RocketMQ、Kafka 等主流 MQ 产品,梳理了 MQ 实现异步通信、系统解耦、流量削峰等核心作用与 AMQP 协议。结合 SpringBoot 搭建实战环境,给出依赖引入、服务配置、生产者与消费者基础代码,并补充了端口访问的安全建议。同时详细讲解 RabbitMQ 七大工作模式、四种交换机类型及路由规则,区分通配符*与#的用法,最后介绍@RabbitListener注解使用、消息接收参数,以及手动消息确认的配置与实现方式,完整覆盖 R

2026-06-01 16:54:01 377

原创 Linux小白快速上手

本文介绍了Linux操作系统的基础知识及常用命令。主要内容包括:1)Linux作为服务器操作系统的定位;2)环境搭建工具Xshell的使用;3)五大类常用命令:目录操作(pwd、cd、ls等)、文件操作(touch、rm、cp等)、系统进程管理(ps、kill等)、权限管理(chmod、chown)以及文本处理(grep);4)重点警告了"rm -rf /"等危险命令的使用风险;5)详细说明了nohup后台运行程序的方法及终止流程。这些命令涵盖了Linux系统管理的基本操作,是运维工作的

2026-05-24 18:03:14 392

原创 6.Redis中ZSet数据类型的常见命令

Redis有序集合(ZSet)详解摘要 ZSet是Redis中一种特殊数据结构,兼具Set的去重特性和有序性。每个元素关联一个分数(score),按分数排序。核心特点包括: 元素唯一但分数可重复 支持丰富的排序查询命令(zrange/zrevrange等) 提供元素排名查询(zrank/zrevrank) 支持集合运算(zinterstore/zunionstore) 内部采用ziplist或skiplist实现 常用操作: 增删改:zadd/zrem/zincrby 查询:zrange/zscore/zc

2026-05-23 20:32:56 385

原创 5.Redis中Set数据类型的常见命令

Redis Set类型是一种无序且元素唯一的集合数据结构。主要特点包括:元素不可重复、无序存储、支持多种集合运算。常用命令有:sadd添加元素、smembers查询集合、sismember判断元素存在、spop随机删除、srandmember随机查询、smove移动元素、srem删除元素等。Set支持集合运算命令如sinter(交集)、sunion(并集)、sdiff(差集)及其store版本。内部编码采用intset(整数集合)或hashtable(哈希表)。典型应用场景包括:用户标签管理、共同好友计算、

2026-05-21 21:23:36 417

原创 4.Redis中List数据类型的常见命令

Redis List类型是一个双端队列,支持高效的头尾插入和删除操作。通过rpush/lpop可实现队列(先进先出),rpush/rpop可实现栈(先进后出)。List具有有序性、元素可重复等特点,提供lpush、rpush、lpop、rpop等基础命令,以及lindex、linsert、llen等辅助命令,还有blpop/brpop等阻塞版本。内部采用quicklist结构,结合了压缩列表和链表的优点。应用场景包括:存储数组结构、实现消息队列、构建分频道阻塞消息队列模型(如微博Timeline)等。Lis

2026-05-20 23:13:47 588

原创 3.Redis中Hash数据类型的常见命令

Redis的Hash类型是一种键值对结构,适合存储对象属性。常用命令包括:hset/hget设置获取字段值、hexists判断字段存在、hdel删除字段、hkeys/hvals获取所有字段/值、hgetall获取全部字段值、hlen获取字段数量等。Hash内部使用ziplist(元素少时)或hashtable(元素多时)编码。典型应用场景包括:缓存数据、多维数据统计(如文章浏览量)和购物车实现(用户ID为key,商品ID为field,数量为value)。这些特性使Hash成为存储结构化数据的理想选择。

2026-05-19 23:00:32 371

原创 2.Redis中String数据类型的常见命令

Redis String类型是Redis中最基础的数据类型,所有key都是字符串。主要命令包括:set/get设置获取值(支持NX/XX条件及EX/PX过期时间);mset/mget批量操作;setnx/setex/psetex特殊设置;incr/decr等计数命令;append拼接字符串;getrange/setrange子串操作;strlen获取长度。内部编码分为int、embstr和raw三种格式。应用场景包括缓存、计数器、会话共享和验证码存储等。String类型支持丰富的字符串操作和数值计算功能。

2026-05-18 15:23:43 1064

原创 1.Redis入门

本文介绍了Redis的核心概念与应用场景。首先阐述了Redis作为内存数据库的键值存储特性及其在分布式系统中的重要作用,包括负载均衡、读写分离等架构设计。重点讲解了Redis的常用命令如get/set、keys、expire等,以及key的过期策略(定期删除和惰性删除)。文章还对比了Redis与MySQL的性能优势,指出Redis更快的原因在于内存访问、单线程模型和IO多路复用机制。最后简要说明了Redis支持的五种数据结构类型及其编码方式,为理解Redis的高效运行机制提供了基础认知。

2026-05-17 22:31:54 364

原创 总结一下 Spring 中存取 Bean 的相关注解, 以及这些注解的用法.

总结 Spring 中存储 Bean 的相关注解都有哪些, 以及这些注解的用法.

2026-03-13 23:50:51 568

原创 总结 File 类的用法和 InputStream, OutputStream 的用法

本文介绍了Java中File类和字节流的基本用法。File类用于文件路径操作,提供三种构造方法:指定父目录+子路径、直接路径或父路径字符串+子路径。文件内容操作通过流对象实现,分为字节流(InputStream/OutputStream)和字符流。重点讲解了字节流的常用方法:InputStream的read()系列方法用于读取字节数据,OutputStream的write()系列方法用于写入数据,并强调flush()方法对缓冲区数据刷新的重要性。具体实现需使用FileInputStream和FileOutp

2025-09-20 23:24:44 299

原创 总结 IO、存储、硬盘、文件系统相关常识

文件I/O通过"文件"概念间接操作硬盘。路径分为绝对路径和相对路径,后者需结合基准路径确定位置。计算机存储层级中,硬盘如仓库保存数据,内存如工作台临时存储,CPU如工人处理数据。文件操作流程包括打开(硬盘到内存)、读写(CPU处理内存数据)、保存(内存回硬盘)。Java文件操作分为文件系统操作(创建、删除、移动、获取属性)和文件内容操作(读写硬盘与内存间数据交换)。

2025-09-09 20:45:32 541

原创 总结:线程安全问题的原因和解决方案

通过学习线程安全问题,我了解到了线程的安全是多么重要,接下来我就来总结一下一些常见的线程安全问题以及它们的解决方案.被volatile修饰的变量可以避免编译器的优化,从而避免了因此引起的线程安全问题。1)线程的调度执行是随机的(抢占式执行)[根本原因].加锁可以把一段代码打包成一个整体,这就可达到"原子的"效果。2)多个线程同时修改同一个变量.3)修改操作不是原子的。

2025-06-02 15:54:37 220

原创 总结:线程池

1.线程池的参数介绍,

2025-06-01 12:27:39 441

原创 总结:进程和线程的联系和区别

一来是能更好地复习知识,二来是为了记录我的学习路程,相信未来的我回首不会忘记这段难忘的经历.1)进程的执行方式有两种:并行和并发,二者同时存在。就绪状态:进程随时可调度到CPU上执行。阻塞状态:进程暂时无法调度到CPU上执行。

2025-05-26 22:43:39 285

原创 用C语言实现推箱子小游戏

注:以上代码为推箱子小游戏的最初代码,未配图.

2025-01-10 15:19:42 707

原创 11.认识异常

因为所抛出的异常(数组下标越界异常)没有相对应的catch来捕获,Java运行时环境(JRE)会认为这是一个未处理的错误情况,因此为了防止程序在错误状态下继续执行并产生不可预测的后果,JRE会终端当前线程.这是一种安全机制,确保程序不会再不稳定或错误的状态下继续运行.所以后序代码并不会执行.处在方法声明时参数列表之后,当方法中抛出编译时异常,用户不想处理该异常,此时就可以借助throws将异常抛给方法的调用者来处理,即。在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,比如:参数检测。

2025-01-06 23:19:41 1177

原创 10.Java:String类

2.方法二: String substring(int beginnIndex,int endIndex) //(开始的下标,结束的下标)------截取部 分内容。

2024-12-10 23:32:28 1007

原创 Java数组中的经典例题

Java数组中的经典例题:顺序查找,二分查找,冒泡排序

2024-11-27 17:40:02 451

空空如也

空空如也

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

TA关注的人

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