自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(369)
  • 资源 (1)
  • 收藏
  • 关注

原创 布隆过滤器原理与Spring Boot实战

本地实现:Guava BloomFilter,适合单机场景分布式实现:Redis + Redisson,适合集群环境核心应用:缓存穿透防护、数据去重、快速存在性检查合理使用布隆过滤器能显著提升系统性能,但要注意误判特性和参数调优。

2025-08-06 14:00:57 389

原创 【Java】用户线程和守护线程概念及示例代码

Java 线程,用户线程和守护线程的区别

2025-07-15 10:28:18 422

原创 【设计模式】责任链+模板+工厂模式使用模板

本文通过一个Java示例展示了如何结合责任链, 模版,工厂设计模式,编写优雅、解耦、高内聚且高复用的代码

2025-05-22 20:41:24 539

原创 深入了解 MySQL 的 EXPLAIN 命令

MySQL explain 命令深入理解

2024-07-13 16:18:01 1306

原创 Rustdesk 自建服务器教程

我是xiucai,一位后端开发工程师。如果你对我感兴趣,请移步我的个人博客,进一步了解。本文首发于个人博客,未经许可禁止转载💌。

2024-06-02 20:28:49 14165 1

原创 【Java 开发】模版模式使用模版

/ 请求命令基类// 其他通用字段// 具体请求命令类// 关闭订单特有的字段// 接受订单特有的字段// 拒绝订单特有的字段// 抽象执行器基类@Component// 通用的订单处理逻辑// 调用子类实现的特定处理逻辑// 其他通用的后续处理// ...// 通用的请求校验逻辑// 具体执行器类@Service@Override// 处理关闭订单的特定逻辑@Service@Override// 处理接受订单的特定逻辑@Service。

2024-05-17 20:28:42 336

原创 Redis 持久化详解:RDB 与 AOF 的配置、触发机制和实际测试

Redis持久化详解:RDB与AOF配置、触发机制及实际测试,深入探讨数据快照、追加备份,以及持久化工作原理。通过实测手动触发与自动触发,全面了解Redis数据保障机制。

2024-01-25 20:05:20 3309

原创 【Java 开发】策略+工厂模式使用模版

使用策略 + 工厂设计模式可以有效地简化大量的 if-else 逻辑。通过定义统一的策略接口和多个具体策略实现,结合工厂类进行管理,实现了代码的高内聚低耦合。这样,根据不同的需求类型,可以灵活地切换策略,提高了代码的可维护性和可扩展性。

2024-01-10 16:35:42 743

原创 【Java】三种方案实现 Redis 分布式锁

三种 Redis 分布式锁的实现方案

2023-11-04 16:43:18 8489

原创 Redis 集群搭建教程

本文介绍如何在一台服务器上伪集群搭建 Redis 高可用集群,包括环境准备、安装、配置、连接、故障模拟等步骤。通过模拟故障,演示了 Redis 集群的容错性。详细教程请参考作者的博客。

2023-09-25 20:33:32 785

原创 Redis 哨兵模式搭建教程

本文通过3台CentOS服务器搭建Redis哨兵高可用集群。介绍了准备环境、安装配置Redis和哨兵的步骤,以及启动、测试数据同步和主节点故障切换的过程,是一份完整的Redis哨兵模式实践指南。

2023-09-23 16:50:14 5109 3

原创 【Redis】Bitmap 使用及应用场景

本文首先介绍了Redis中的6个Bitmap相关命令,包括SETBIT、GETBIT、BITCOUNT等,并附带示例说明每个命令的用法。然后给出了5个使用Bitmap的应用场景,如统计用户在线状态、用户打卡记录、计算连续签到用户等,都可以通过将用户ID映射为Bitmap的offset,从而实现快速查询和统计

2023-09-07 20:39:12 3708

原创 【Java】线上 CPU 100% 问题排查

Java 面试题中,服务器 cpu 100% 的排查方案

2023-08-24 16:32:18 758

原创 【Java】高并发下如何防止库存超发

三种方案,如何防止高并发下的库存超发

2022-06-18 17:59:14 6543 1

原创 【Git】撤销分支的合并Merge

背景某次,因为蛋疼的原因,不小心把不该合并的分支合到了dev或者master分支,影响到了需求上线或其他。这时候就需要撤销某次的合并了。解决方案方案一1、找到最后一次提交到master分支的commit_id,即merge前的commit_id,也就是目标要回退到的commit_id。本图为Idea 2021.3 版本查看commit_id的方式。(点开git提交历史,查看代码改动的时候,左边的剪头指的那个)2、在当前分支,打开终端,执行命令回退 git reset --hard comm

2022-05-13 21:11:03 44125 1

原创 【IDEA】插件推荐(效率++)

大大提升效率的IDEA插件推荐

2022-03-03 20:42:08 4199

原创 【Java】LocalDate、LocalTime、LocalDateTime方法测试

Code:import java.time.Duration;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.format.DateTimeFormatter;public class Test { public static void main(String[] args) throws InterruptedException

2021-07-25 15:08:09 404

原创 MySQL8 排名窗口函数实战

在数据库查询与数据分析中,对数据分组并进行排名是一项常见任务。SQL 窗口函数为此提供了高效的解决方案。本文旨在阐明三个核心排名函数——RANK()与——的功能、差异及适用场景。

2025-08-26 20:29:55 76

原创 Java 线程生命周期的六种状态详解

对于 Java 并发编程而言,深入理解线程的生命周期模型是一项基本要求。该模型为分析并发行为、诊断性能问题以及解决死锁等提供了理论基础。在 Java 虚拟机(JVM)层面,线程的状态被精确地定义在枚举中,共包含六种状态。

2025-08-23 12:50:39 309

原创 MySQL深分页慢问题及性能优化

策略优点缺点适用场景延迟关联功能完整,性能提升显著SQL复杂,深度分页仍有瓶颈需要跳转页码的传统分页键集分页性能最佳且稳定无法跳页无限滚动、上一页/下一页业务限制实现简单,规避问题功能受限搜索结果等多数常规列表结论:在设计分页功能时,应优先考虑键集分页方案以获得最佳性能。如果必须支持跳转任意页码,延迟关联是一个有效的折中选择。根据实际业务需求选择最合适的策略,是解决深分页问题的关键。

2025-08-21 21:44:05 705

原创 Java ReentrantLock 核心用法

是 Java 中处理并发问题的强大工具,用于解决多线程下的竞态条件(如count++操作导致的数据不一致)。本文旨在展示其最核心、最标准的用法。

2025-08-20 17:30:18 295

原创 Redisson 分布式锁核心机制解析

Redisson 分布式锁(RLock)的可靠性依赖于其三大核心机制:用于保证原子性的 Lua 脚本、用于自动续期的看门狗(Watchdog)以及用于高效等待的发布/订阅(Pub/Sub)模型。本文旨在解析这三个机制的内部工作原理。

2025-08-19 10:33:40 352

原创 深入理解“看门狗”机制:一种优雅的自动续期模式

在分布式系统中,资源(如分布式锁)的租约管理是一个核心挑战。为锁设置固定过期时间,可能因业务执行超时而导致锁提前释放;若不设过期时间,又可能因服务宕机而造成永久死锁。自动续期机制,即“看门狗”(Watchdog),是应对此问题的标准解决方案。本文将通过一个极简的实现,深入剖析该模式的内在机理。

2025-08-18 17:44:44 386

原创 MySQL 全文索引指南

【代码】MySQL 全文索引指南。

2025-08-16 17:45:48 258

原创 【LeetCode】102 - 二叉树的层序遍历

给你二叉树的根节点 root,返回其节点值的层序遍历(即逐层地,从左到右访问所有节点)。算法按层级正确遍历,符合预期结果。

2025-08-10 11:40:18 287

原创 【LeetCode】链表反转实现与测试

本文介绍了一种使用 ArrayList 和 Collections.reverse() 方法来实现链表反转的解决方案,虽然这种方法在空间复杂度上不是最优的,但代码简洁易懂。

2025-07-30 20:29:39 263

原创 【LeetCode】LRU 缓存 题解

LRU (Least Recently Used) 缓存是一种常用的缓存淘汰策略,当缓存满了需要删除数据时,优先删除最久未使用的数据。HashMap 解决了快速查找的问题双向链表解决了维护访问顺序的问题通过将最近访问的元素移到链表尾部,最久未使用的元素自然就在链表头部这种设计既保证了操作的高效性,又满足了 LRU 策略的需求。

2025-07-27 18:12:16 505

原创 【双向链表】Java 双向链表实现详解

【代码】【双向链表】实现、详解

2025-07-20 16:48:12 117

原创 【Java】查看当前 Java 使用的垃圾回收器

【代码】【Java】查看当前 Java 使用的垃圾回收器。

2025-04-13 20:50:01 447

原创 【Java】将 Java 代码打包成 Jar 包

首先,确保已经安装了 JDK。然后在本地终端中进入 Java 源代码所在的目录,编译代码。为了让 Jar 包能够自动找到主类,需要创建一个。注意 Main-Class 下面必须有一个换行。这会在当前目录下生成。打包成 Jar 包。这会在当前目录下生成。

2024-09-05 15:53:58 1725

原创 Mac/Linux 上安装和卸载 SDKMAN 及管理多个 JDK

Mac 上安装和卸载 SDKMAN 及管理多个 JDK

2024-08-01 11:47:14 2448 1

原创 【本地调试】使用 Nginx 和 Hosts 文件实现本地开发调试请求转发

在本地开发过程中,经常需要将外部请求转发到本地服务器进行调试。本文介绍了如何通过 Nginx 和 Hosts 文件配置,将请求转发到本地运行的 blog 服务器,方便进行开发调试。

2024-06-25 15:54:10 805

原创 SpringBoot 项目,三种方式实现打印 sql 日志

【代码】SpringBoot 项目,三种方式实现打印 sql 日志。

2024-06-14 10:25:42 4121

原创 Spring Bean 的生命周期

【代码】Spring Bean 的生命周期。

2024-06-05 21:07:27 560

原创 【已验证】debian12 更换国内源

【代码】debian12 更换国内源。

2024-05-23 19:35:55 4927 1

原创 【已解决】Error response from daemon: Get “https://index.docker.io/v1/search?q=redis&n=25“: net/http: TLS

使用默认的 docker 源,在搜索安装镜像的时候,比如docker search redis,大概率会出现的错误,这时候就需要设置国内源。吐槽:在网上找了好几个 blog,有让换 dns 的,有设置一个什么 docker-cn 的源的,都不管用,因此有了此篇 blog。

2024-05-23 19:28:04 28737 15

原创 DataGrip2023 在 Database 表名后面显示 comment 注释

DataGrip 在 Database 表名后面显示 comment 注释

2024-05-17 11:17:14 1323

原创 vm 虚拟机 Debian12 开启 root、ssh 登录功能

前言,安装的时候语言就选中文就好了。选择中文,在安装的时候就可以选择国内 163 的源。

2024-05-15 18:09:00 2521

原创 【Java】四种方案实现限流

详细介绍了四种常见的限流算法:固定窗口、滑动窗口、漏桶和令牌桶。每种算法都有具体的代码示例和适用场景,帮助读者理解和选择最适合自己的限流策略。

2023-12-16 21:14:13 4520 1

原创 MapStruct 使用教程

这是一个简单的示例,展示了如何在 Spring Boot 项目中使用 MapStruct 来简化对象之间的映射。MapStruct 提供了强大的功能,可以处理复杂的映射情况,还支持自定义映射方法和格式化。通过创建合适的映射接口并配置注解处理器,你可以有效地减少手动编写映射代码的工作。在 Spring Boot 项目中使用 MapStruct,可以简化对象之间的映射操作,而不必手动编写大量的映射代码。生成映射实现类:MapStruct 使用注解处理器生成映射方法的实现类。来执行对象之间的映射。

2023-11-03 10:15:40 547

Typora主题大全,里面onedark等主题

1、打开Typora,点击文件,编号设置选择外观,打开主题文件夹 2、将下载好的压缩包中的.css文件和同名的文件夹等解压到主题文件夹中。 3、重启Typora并重新选择主题我们重新打开 typora,然后在主题中选择自己下载好的主题就行了,下面为主题效果

2021-01-18

空空如也

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

TA关注的人

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