- 博客(378)
- 资源 (1)
- 收藏
- 关注
原创 布隆过滤器原理与Spring Boot实战
本地实现:Guava BloomFilter,适合单机场景分布式实现:Redis + Redisson,适合集群环境核心应用:缓存穿透防护、数据去重、快速存在性检查合理使用布隆过滤器能显著提升系统性能,但要注意误判特性和参数调优。
2025-08-06 14:00:57
432
原创 【设计模式】责任链+模板+工厂模式使用模板
本文通过一个Java示例展示了如何结合责任链, 模版,工厂设计模式,编写优雅、解耦、高内聚且高复用的代码
2025-05-22 20:41:24
606
原创 Rustdesk 自建服务器教程
我是xiucai,一位后端开发工程师。如果你对我感兴趣,请移步我的个人博客,进一步了解。本文首发于个人博客,未经许可禁止转载💌。
2024-06-02 20:28:49
15880
1
原创 【Java 开发】模版模式使用模版
/ 请求命令基类// 其他通用字段// 具体请求命令类// 关闭订单特有的字段// 接受订单特有的字段// 拒绝订单特有的字段// 抽象执行器基类@Component// 通用的订单处理逻辑// 调用子类实现的特定处理逻辑// 其他通用的后续处理// ...// 通用的请求校验逻辑// 具体执行器类@Service@Override// 处理关闭订单的特定逻辑@Service@Override// 处理接受订单的特定逻辑@Service。
2024-05-17 20:28:42
365
原创 Redis 持久化详解:RDB 与 AOF 的配置、触发机制和实际测试
Redis持久化详解:RDB与AOF配置、触发机制及实际测试,深入探讨数据快照、追加备份,以及持久化工作原理。通过实测手动触发与自动触发,全面了解Redis数据保障机制。
2024-01-25 20:05:20
3487
原创 【Java 开发】策略+工厂模式使用模版
使用策略 + 工厂设计模式可以有效地简化大量的 if-else 逻辑。通过定义统一的策略接口和多个具体策略实现,结合工厂类进行管理,实现了代码的高内聚低耦合。这样,根据不同的需求类型,可以灵活地切换策略,提高了代码的可维护性和可扩展性。
2024-01-10 16:35:42
770
原创 Redis 集群搭建教程
本文介绍如何在一台服务器上伪集群搭建 Redis 高可用集群,包括环境准备、安装、配置、连接、故障模拟等步骤。通过模拟故障,演示了 Redis 集群的容错性。详细教程请参考作者的博客。
2023-09-25 20:33:32
915
原创 Redis 哨兵模式搭建教程
本文通过3台CentOS服务器搭建Redis哨兵高可用集群。介绍了准备环境、安装配置Redis和哨兵的步骤,以及启动、测试数据同步和主节点故障切换的过程,是一份完整的Redis哨兵模式实践指南。
2023-09-23 16:50:14
5322
3
原创 【Redis】Bitmap 使用及应用场景
本文首先介绍了Redis中的6个Bitmap相关命令,包括SETBIT、GETBIT、BITCOUNT等,并附带示例说明每个命令的用法。然后给出了5个使用Bitmap的应用场景,如统计用户在线状态、用户打卡记录、计算连续签到用户等,都可以通过将用户ID映射为Bitmap的offset,从而实现快速查询和统计
2023-09-07 20:39:12
3916
原创 【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
44457
1
原创 【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
500
原创 MySQL 8 查询逗号分隔字符串
MySQL 8, JSON_OVERLAPS, SQL, 逗号分隔, 字符串查询, FIND_IN_SET, 数据库设计。
2025-10-31 15:51:38
537
原创 OpenFeign 优缺点及和 Dubbo 对比
OpenFeign 是集成于 Spring Cloud 生态的声明式 HTTP 客户端。其核心价值在于通过接口化、注解化的方式定义并调用 RESTful 服务,旨在简化服务间的 HTTP 通信。Apache Dubbo 是一款高性能、轻量级的开源 RPC 框架。其设计目标是提供面向接口的、透明化的远程服务调用,以及强大的服务治理能力。
2025-09-09 20:59:53
623
原创 Java 代码设计原则:从理论到代码实践
在软件工程领域,代码的质量不仅取决于其功能实现,更在于其结构、可读性、可维护性和可扩展性。遵循行业公认的设计原则是提升代码质量的关键。本文将精炼地介绍Java开发中最核心的设计原则,并提供完整的代码示例,帮助开发者构建更稳健、更灵活的系统。: 系统中的每一部分知识都应有单一、明确、权威的表示。SOLID是面向对象设计的五个基本原则的缩写,它们共同指导开发者创建易于理解和维护的软件。: 采用更通用的抽象,避免破坏继承的行为约定。: 将接口拆分为更小的、功能单一的接口。: 将职责分离到不同的类中。
2025-08-31 17:49:01
953
原创 MySQL8 排名窗口函数实战
在数据库查询与数据分析中,对数据分组并进行排名是一项常见任务。SQL 窗口函数为此提供了高效的解决方案。本文旨在阐明三个核心排名函数——RANK()与——的功能、差异及适用场景。
2025-08-26 20:29:55
456
原创 Java 线程生命周期的六种状态详解
对于 Java 并发编程而言,深入理解线程的生命周期模型是一项基本要求。该模型为分析并发行为、诊断性能问题以及解决死锁等提供了理论基础。在 Java 虚拟机(JVM)层面,线程的状态被精确地定义在枚举中,共包含六种状态。
2025-08-23 12:50:39
372
原创 MySQL深分页慢问题及性能优化
策略优点缺点适用场景延迟关联功能完整,性能提升显著SQL复杂,深度分页仍有瓶颈需要跳转页码的传统分页键集分页性能最佳且稳定无法跳页无限滚动、上一页/下一页业务限制实现简单,规避问题功能受限搜索结果等多数常规列表结论:在设计分页功能时,应优先考虑键集分页方案以获得最佳性能。如果必须支持跳转任意页码,延迟关联是一个有效的折中选择。根据实际业务需求选择最合适的策略,是解决深分页问题的关键。
2025-08-21 21:44:05
844
原创 Java ReentrantLock 核心用法
是 Java 中处理并发问题的强大工具,用于解决多线程下的竞态条件(如count++操作导致的数据不一致)。本文旨在展示其最核心、最标准的用法。
2025-08-20 17:30:18
326
原创 Redisson 分布式锁核心机制解析
Redisson 分布式锁(RLock)的可靠性依赖于其三大核心机制:用于保证原子性的 Lua 脚本、用于自动续期的看门狗(Watchdog)以及用于高效等待的发布/订阅(Pub/Sub)模型。本文旨在解析这三个机制的内部工作原理。
2025-08-19 10:33:40
443
原创 深入理解“看门狗”机制:一种优雅的自动续期模式
在分布式系统中,资源(如分布式锁)的租约管理是一个核心挑战。为锁设置固定过期时间,可能因业务执行超时而导致锁提前释放;若不设过期时间,又可能因服务宕机而造成永久死锁。自动续期机制,即“看门狗”(Watchdog),是应对此问题的标准解决方案。本文将通过一个极简的实现,深入剖析该模式的内在机理。
2025-08-18 17:44:44
499
原创 【LeetCode】102 - 二叉树的层序遍历
给你二叉树的根节点 root,返回其节点值的层序遍历(即逐层地,从左到右访问所有节点)。算法按层级正确遍历,符合预期结果。
2025-08-10 11:40:18
318
原创 【LeetCode】链表反转实现与测试
本文介绍了一种使用 ArrayList 和 Collections.reverse() 方法来实现链表反转的解决方案,虽然这种方法在空间复杂度上不是最优的,但代码简洁易懂。
2025-07-30 20:29:39
306
原创 【LeetCode】LRU 缓存 题解
LRU (Least Recently Used) 缓存是一种常用的缓存淘汰策略,当缓存满了需要删除数据时,优先删除最久未使用的数据。HashMap 解决了快速查找的问题双向链表解决了维护访问顺序的问题通过将最近访问的元素移到链表尾部,最久未使用的元素自然就在链表头部这种设计既保证了操作的高效性,又满足了 LRU 策略的需求。
2025-07-27 18:12:16
559
原创 【Java】将 Java 代码打包成 Jar 包
首先,确保已经安装了 JDK。然后在本地终端中进入 Java 源代码所在的目录,编译代码。为了让 Jar 包能够自动找到主类,需要创建一个。注意 Main-Class 下面必须有一个换行。这会在当前目录下生成。打包成 Jar 包。这会在当前目录下生成。
2024-09-05 15:53:58
1814
Typora主题大全,里面onedark等主题
2021-01-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅