自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis 缓存穿透、缓存雪崩、缓存击穿分别是什么?

Redis缓存问题及解决方案概览: 缓存穿透(查询不存在数据): 解决方案:布隆过滤器、缓存空值、接口校验 缓存雪崩(大量key同时失效): 解决方案:随机过期时间、多级缓存、热点数据永不过期 缓存击穿(热点key失效): 解决方案:互斥锁、逻辑过期时间、数据预热 优化建议:结合监控告警、限流降级、集群部署等策略,根据业务场景选择合适方案,确保系统高可用性。

2025-05-28 17:22:15 1152

原创 Redis 的内存回收机制

Redis内存回收机制分为过期Key自动淘汰和内存淘汰策略两部分。过期Key通过惰性删除(访问时检查)和定期抽样删除(每秒10次随机检查)两种方式回收。内存淘汰策略在达到maxmemory限制时触发,提供LRU、LFU、随机淘汰和TTL等算法选择,如allkeys-lru或volatile-ttl。Redis采用近似算法平衡性能与精确度,例如LRU通过采样5个Key实现。配置建议包括优先使用allkeys-lfu、调整采样数量及启用惰性删除异步释放内存。这些机制共同确保Redis高效管理内存资源。

2025-05-28 17:14:52 652

原创 MySQL日志文件有哪些?

MySQL日志文件是数据库管理的重要组成部分,主要包括错误日志(记录运行错误)、通用查询日志(记录所有SQL操作)、慢查询日志(追踪低效SQL)、二进制日志(支持主从复制和数据恢复)、事务日志(InnoDB的重做/回滚日志)以及中继日志(主从复制中转)。这些日志分别用于故障排查、性能优化、数据恢复和事务管理。通过合理配置如log_error、general_log、log_bin等参数,可有效监控和保障数据库运行。管理员需根据实际需求启用相应日志,并注意性能影响及定期清理策略。

2025-05-26 17:20:53 772

原创 Spring + MyBatis/MyBatis-Plus 分页方案(limit分页和游标分页)详解

本文详细介绍了Spring Boot与MyBatis/MyBatis-Plus的分页实现方案。主要内容包括: 传统LIMIT/OFFSET分页的三种实现方式 原生SQL手动分页 PageHelper插件方案(推荐) MyBatis-Plus分页插件(推荐) 每种方案都给出了完整的代码示例 游标分页实现 基于ID或时间戳的逐页查询方案 包含请求参数、响应参数、Mapper和Service层的实现代码 版本支持说明 明确标注支持Spring Boot 3.1.x和MyBatis相关组件的版本 文章提供了可立即在

2025-05-26 17:06:57 1353 1

原创 Spring WebFlux 与 WebClient 使用指南

WebClient 是 Spring WebFlux 模块提供的非阻塞、响应式 HTTP 客户端,基于 Project Reactor 实现,适用于高并发场景

2025-05-13 19:29:13 1245

原创 盘点Spring项目中发送Http请求的工具

在Spring框架中,发送HTTP请求并解析结果的常用工具和方法包括RestTemplate、WebClient、Feign Client、Apache HttpClient/OkHttp和RestAssured。RestTemplate适用于传统同步请求,但未来可能被弃用;WebClient是异步非阻塞的响应式客户端,适合高并发场景;Feign Client通过声明式接口简化微服务间通信;Apache HttpClient和OkHttp提供高度定制化的HTTP请求控制;RestAssured则专用于API

2025-05-12 20:57:47 240

原创 MySQL常用客户端工具详解

以上工具覆盖了 MySQL 的日常管理、备份恢复、性能测试和安全配置。合理使用这些工具可以显著提升数据库运维效率。根据需求选择合适工具,并结合具体场景调整选项参数。MySQL 提供了多种客户端工具,用于数据库管理、维护、备份、性能测试等操作。

2025-05-07 13:47:40 1211

原创 java 1.8 在编程中语法上的一些小技巧

Java 8 的 Lambda 表达式可以替代需要接口实现的代码,尤其适用于函数式接口(只有一个抽象方法的接口)。用 Stream 处理集合数据,支持链式调用,简化过滤、映射、排序等操作。掌握这些技巧后,你的 Java 代码会变得更加简洁、易读且高效!简化 Lambda 表达式的写法,直接引用已有方法。自定义函数式接口,结合 Lambda 使用。允许接口中包含具体实现,增强接口的扩展性。简化异步任务编排,支持链式调用和组合操作。简化 Map 的合并、计算和遍历操作。,提供线程安全且易用的日期时间操作。

2025-04-27 18:07:16 801

原创 RabbitMQ 发送者确认机制详解

Confirm 机制:确保消息到达 Exchange,需处理 ack/nack。Return 机制:处理消息路由到 Queue 失败,需配置。联合使用:两者结合可覆盖消息从生产者到队列的全链路可靠性保障。通过合理配置和实现回调逻辑,可显著提升 RabbitMQ 消息传输的可靠性,适用于金融交易、订单处理等高要求场景。

2025-04-02 11:25:42 556

原创 EasyExcel导出导入excel工具类

接上一篇EasyExcel导出导入excel的文章,附上一份完整的工具类代码。

2025-03-31 18:14:06 324

原创 Spring项目中使用EasyExcel实现Excel 多 Sheet 导入导出功能(完整版)

通过本方案可实现:动态导出:无需模板,根据 DTO 类自动生成表头。高效导入:逐行解析,内存占用低。类型安全:通过泛型和注解保证数据一致性。灵活扩展:支持自定义样式、转换器、校验逻辑。

2025-03-28 17:09:47 772

原创 业务幂等性的常见解决方案详解

在分布式系统和高并发场景中,业务幂等性是确保系统可靠性和数据一致性的关键。

2025-03-26 17:56:45 1103

原创 Java中的注解是什么?

Java 注解通过简洁的语法为代码添加元数据,广泛应用于框架配置、数据校验和代码生成。定义注解:使用@interface和元注解。使用注解:标注在目标代码元素上。处理注解:通过 APT 或反射实现逻辑。掌握注解机制,能够更好地理解现代 Java 框架(如 Spring)的设计思想,并编写更简洁、可维护的代码。

2025-03-26 17:27:02 788

原创 MySQL中的锁机制详解

MySQL的锁机制通过多粒度锁(表级、行级)和多种锁模式(记录锁、间隙锁等),在保证数据一致性的同时提高并发性能。理解不同锁的特性、兼容性及适用场景,能帮助开发者优化数据库设计和事务逻辑。MySQL中的锁机制是确保数据一致性和并发控制的核心组成部分。行级锁锁定表中的特定行,其他行仍可被访问。InnoDB引擎支持行级锁。表级锁锁定整张表,影响所有行。适用于并发要求较低的场景。意向锁是表级锁,用于协调行级锁与表级锁的冲突。

2025-03-19 11:58:01 1135

原创 MyBatis-Plus核心功能与实战案例

是 MyBatis 的增强工具,在保留 MyBatis 原生功能的基础上,通过内置通用 Mapper、Service、条件构造器等,大幅简化开发。核心优势无侵入:只做增强不做改变,可与 MyBatis 原生功能混合使用高效开发:内置通用 CRUD 方法,减少 80% 的重复代码强大条件构造器:支持 Lambda 表达式,避免 SQL 注入风险定义自定义方法@Override注册注入器@Component@OverrideMapper 接口调用四、最佳实践与常见问题。

2025-03-18 17:40:45 830

原创 MySQL意向锁我该怎么理解?

在MySQL中,意向锁(Intention Lock)是一种用于协调不同粒度锁(如表锁和行锁)的机制,其核心目的是。通过合理使用意向锁,可以在保证事务隔离性的同时,减少锁冲突,优化数据库的并发处理能力。不同锁之间的兼容性决定了事务是否会被阻塞。,从而避免粗粒度锁(如表锁)与细粒度锁之间的冲突。

2025-03-17 19:40:37 444

原创 RabbitMQ 全面详解(附面试重点)

RabbitMQ 作为企业级消息中间件,核心优势在于。

2025-03-17 13:48:54 1184

原创 MQ:通过 @RabbitListener 创建交换机、队列及绑定

通过 @RabbitListener 的 bindings 属性,可以简洁地声明交换机、队列及其绑定关系,适合快速开发场景

2025-03-17 13:43:29 1139

原创 @Async 注解不生效的常见原因及解决方案

Async不生效的常见原因包括未启用异步支持方法调用方式错误线程池未配置和异常未处理。添加。确保通过代理对象调用异步方法。配置自定义线程池。处理异步方法异常。验证方法作用域和 Bean 管理状态。正确配置后,异步方法将按预期在独立线程中执行,显著提升系统并发性能。

2025-03-14 17:38:54 1049

原创 Redisson 分布式锁全面解析:锁类型(可重入锁、公平锁、联锁、红锁、读写锁)和锁常见方法解读

Redisson 提供了丰富的分布式锁实现,核心在于原子性操作可重入设计和自动续期机制。选择锁类型时需根据场景权衡性能、可用性和复杂度。始终在finally块中释放锁。合理设置锁超时时间,避免业务未完成锁已过期。高可用场景使用红锁,防止 Redis 单点故障。读写分离场景使用读写锁,提升并发性能。通过合理使用 Redisson 分布式锁,可有效解决分布式系统中的资源竞争问题,保障数据一致性。

2025-03-14 14:38:23 1534

原创 Java 线程与线程池类/接口继承谱系图+核心方法详解

线程类与接口RunnableCallableThreadExecutor框架构成 Java 并发基础。核心方法join():用于线程间同步。shutdown():优雅关闭线程池。submit():提交有返回值的任务。方法选择直接操作线程用start()和join()。线程池任务管理用execute()和submit()。

2025-03-11 20:43:42 1019

原创 Java I/O 流完整指南

Java I/O 流体系是处理数据输入输出的核心工具,涵盖从基础字节流到高性能NIO的全场景解决方案。理解流的设计模式:装饰器模式实现功能扩展。正确选择流类型:字节流处理二进制,字符流处理文本。掌握NIO非阻塞模型:适用于高并发网络服务。严格资源管理:使用避免泄漏。性能优化:缓冲、分块处理、零拷贝技术。通过合理应用这些知识,可以构建高效、健壮的I/O密集型应用。

2025-03-10 17:13:40 815

原创 Java 类、匿名内部类、静态(static)、抽象(abstract)详解

1. Java 类(Class)定义Java 类是面向对象的基础单元,用于封装数据(属性)和行为(方法),通过class关键字定义。特点可以实例化为对象(通过new关键字)。支持继承(单继承)、实现接口(多实现)。包含成员变量、方法、构造方法等。示例// 定义一个普通类// 成员变量(实例变量)// 构造方法// 实例方法System.out.println("我是 " + name + ",年龄 " + age);// 使用。

2025-03-07 10:54:26 478

原创 Java 动态代理详解:利用动态代理手写一个简单的OpenFeign

动态代理通过运行时生成代理类,实现代码增强和解耦,是 Java 高级编程和框架设计的核心技术。它在 AOP、RPC、ORM 等场景中广泛应用,如 Spring、MyBatis、Feign 等框架均依赖动态代理实现核心功能。使用时需注意接口限制、性能影响及代理对象的特殊性,合理选择代理方式(JDK Proxy 或 CGLIB)以适配业务需求。

2025-03-06 20:17:55 955

原创 MyBatis @Param 注解详解:指定的参数找不到?

Param的核心作用是明确参数名称,避免因参数名丢失或歧义导致的错误。报错的根本原因通常是名称不匹配或参数绑定机制不清晰。根据参数类型和数量,合理选择是否使用@Param,并在 XML 中严格匹配名称即可解决问题。

2025-03-05 13:48:57 1142

原创 Java Lambda 表达式详解:是什么?为什么要用?底层原理?工作流程?什么地方用?

Lambda 表达式通过简化代码、支持函数式编程,并借助提升性能,成为现代 Java 开发的核心工具。其典型应用包括集合处理、事件回调和替代冗余的匿名类,是编写高效、简洁代码的关键手段。

2025-03-05 11:23:10 1194

原创 HashMap 的底层结构详解:原理、put和get示例

通过哈希函数快速定位键值对,使用链地址法解决冲突,并通过动态扩容和红黑树优化性能。理解其内部机制,有助于在实际开发中合理使用并规避潜在问题(如内存泄漏、线程安全问题)。是基于哈希表实现的键值对存储结构,其核心设计目标是高效的数据存取(理想情况下时间复杂度为 O(1))。的哈希值均映射到索引 1,且链表已转换为红黑树(当链表长度 ≥8 且数组长度 ≥64 时)。(8 * 0.75 = 6),当元素数量超过 6 时触发扩容。,但尚未触发扩容(Java 中实际在插入第 7 个元素时扩容)。

2025-03-04 21:05:31 1560

原创 ThreadLocal 与 Thread.currentThread() 的区别

省流:ThreadLocal:用于线程隔离的变量存储,解决多线程数据共享问题。Thread.currentThread():用于获取当前线程对象,操作线程状态或获取线程信息。

2025-03-03 16:33:38 616

原创 Java中接口(Interface)与类(Class)的区别

接口和类是 Java 面向对象编程中的核心概念,它们在设计目的、功能和使用场景上有显著差异。通过合理使用接口和类,可以构建高内聚、低耦合的面向对象系统。

2025-03-03 14:12:54 1434

原创 说说JVM的底层原理(JAVA是如何运行的)?

Java 虚拟机(JVM)是 Java 程序运行的核心环境,其设计融合了内存管理、类加载、垃圾回收和高效执行等复杂机制。以下从底层视角详细解析其核心模块,并结合实际场景说明其工作原理。,不仅能优化应用性能(如减少 Full GC 停顿),还能有效排查内存泄漏、锁竞争等问题,是高级 Java 开发的必备技能。类加载是 JVM 动态性的基石,其触发条件包括首次使用类(如。、反射调用等)或继承父类时。:静态集合持有对象导致无法回收。

2025-02-28 19:00:13 1456

原创 Spring Boot 启动与 Service 注入的 JVM 运行细节

通过此示例,可以清晰看到 JVM 类加载、Spring Bean 生命周期和业务方法调用之间的关系,帮助理解 Java 应用底层运行机制。我们通过一个具体的 Spring Boot 项目示例,结合 JVM 的类加载和对象实例化机制,详细说明。

2025-02-28 18:21:25 1071

原创 Redis 数据结构和使用详解(带示例)

通过合理选择数据结构和命令,可以高效解决缓存、实时统计、消息通信等多样化需求。:存储唯一元素,支持交集、并集操作(如共同好友、标签系统)。:存储对象字段,适合保存用户信息、商品属性等结构化数据。:存储文本、数值或二进制数据,适用于缓存、计数器等。:实现消息队列、最新消息列表(如微博时间线)。:存储和查询地理位置(附近的人、商家)。:消息队列(支持消费者组、消息持久化)。:排行榜、优先级队列(按分数排序)。:位操作(如用户签到、活跃统计)。:消息广播(如实时通知、聊天室)。:近似去重计数(如统计UV)。

2025-02-27 19:54:27 1296

原创 Redis除了做缓存还能做什么?

合理使用 Redis 可以显著提升系统性能,解决分布式场景下的复杂问题。根据具体需求选择合适的数据结构和功能,是最大化 Redis 价值的关键。Redis 除了作为高性能缓存外,还因其丰富的数据结构和功能,广泛应用于多种场景。Redis 的多样化应用得益于其。

2025-02-27 19:26:50 1563

原创 Java线程池详解(创建、使用场景、参数详解)

Java中的线程池(ThreadPoolExecutor)是并发编程中非常重要的工具,用于管理和复用线程,避免频繁创建和销毁线程带来的性能开销。Java通过java.util.concurrent包提供了丰富的线程池实现。

2025-02-26 10:13:38 1182

原创 代码CR(Code Review)一般做什么?(Java版)

是保障代码质量、统一团队规范、发现潜在问题的重要环节。Java 代码 CR 是持续改进代码质量的核心实践,需结合人工经验与自动化工具,重点关注。通过 CR 不仅能提升代码质量,还能促进团队技术成长,形成高效协作的文化。在 Java 开发中,

2025-02-25 11:06:29 901

原创 16、Python面试题解析:python中的浅拷贝和深拷贝

在 Python 中,和是处理对象复制的两种重要机制,它们的区别主要体现在对嵌套对象的处理方式上。

2025-02-24 20:38:30 421

原创 Java 反射的全面详解

通过合理使用反射,可以极大增强程序的灵活性和扩展性,但需在性能和代码可维护性之间做好权衡。

2025-02-24 20:31:52 748

原创 MySQL存储过程详解

以下是关于 MySQL 存储过程的详细教程,包含基本概念、语法、示例及注意事项

2025-02-24 17:37:42 303

原创 Java 多线程

Java多线程详解

2025-02-24 16:31:41 1103

原创 Mysql视图有什么作用?你是否使用过视图?

MySQL视图(View)是一种虚拟表,其内容由查询定义。视图并不实际存储数据,而是基于一个或多个表的查询结果生成。通过合理使用视图,可以显著提升数据库的易用性和安全性,但需注意其性能影响和更新限制。

2025-02-21 16:37:08 771

空空如也

空空如也

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

TA关注的人

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