- 博客(164)
- 收藏
- 关注
原创 Redis 分布式锁
分布式锁用于解决分布式系统中多节点访问共享资源的问题。通过Redis实现分布式锁时,使用SETNX命令加锁并设置过期时间,配合唯一标识防止误删。引入Lua脚本保证解锁操作的原子性,采用watchdog机制动态续期避免锁提前失效。针对Redis集群场景,Redlock算法通过向多个独立节点申请锁来确保可靠性,要求多数节点加锁成功才算有效。这些机制共同保障了分布式环境下资源访问的安全性和可用性。
2026-05-23 09:00:00
696
18
原创 Redis 缓存
缓存是计算机系统中提升性能的关键技术,通过将高频访问数据存储在更快的介质中(如内存)来减少对慢速数据源(如数据库)的访问。Redis作为内存数据库常被用作MySQL等关系型数据库的缓存层,利用其高速读写特性显著提升系统响应速度。缓存管理涉及热点数据识别、淘汰策略(LRU/LFU等)和容量控制。典型问题包括缓存穿透(查询不存在数据)、雪崩(批量缓存失效)和击穿(热点key失效),可通过空值缓存、过期时间随机化、布隆过滤器等技术方案解决。合理使用缓存能在20%存储空间内满足80%的访问需求,实现显著性能优化。
2026-05-21 09:00:00
541
12
原创 Redis 集群
本文介绍了Redis集群的数据分片算法及搭建方法。首先讲解了三种分片算法:哈希求余算法简单但扩容成本高;一致性哈希算法降低扩容开销但存在数据倾斜;Redis采用哈希槽算法(16384个槽位),均衡分配且扩容高效。随后详细演示了基于Docker搭建11节点Redis集群的过程,包括配置文件生成、容器编排和集群初始化。文章还分析了主节点宕机时的故障判定与转移机制,以及集群扩容的具体步骤,包括添加新主节点、重新分配槽位和添加从节点。通过分片和分布式协调,Redis集群实现了水平扩展和高可用性。
2026-05-19 09:00:00
530
8
原创 Redis 哨兵
Redis哨兵机制实现了主从复制模式下的自动故障转移,解决了人工切换主节点的繁琐流程。哨兵节点作为独立进程监控主从节点状态,当主节点故障时能自动完成故障检测、选举新主节点、更新从节点配置和通知客户端等操作。哨兵集群采用分布式架构,通过Raft算法选举leader进行故障转移,使用配置纪元(epoch)和运行ID(RunID)确保选举确定性。部署建议使用奇数个哨兵节点以避免选举僵局。哨兵机制显著提升了Redis的高可用性,但需注意哨兵节点不存储数据,要扩展存储容量需要采用集群方案。
2026-05-15 09:00:00
518
9
原创 Redis 主从复制
Redis主从复制通过将主节点数据自动同步到从节点,实现高可用、读写分离和数据冗余。配置方式包括配置文件、启动命令和Redis命令三种。复制过程分为全量复制(初次同步)和部分复制(断线恢复),通过psync命令实现。主从节点维护复制偏移量(repl_offset)和复制ID(replid)来追踪同步状态。复制拓扑结构包括一主一从、一主多从和树状主从,支持数据级联同步。实时复制通过TCP长连接保持主从数据一致性,并采用心跳机制维护连接状态。该机制有效解决了单点故障、读写压力大和数据丢失风险等问题。
2026-05-13 09:00:00
572
9
原创 Redis 事务
Redis事务机制解析:Redis通过MULTI/EXEC/DISCARD/WATCH命令实现事务功能,但与MySQL事务存在本质差异。Redis事务仅保证命令批量执行(部分原子性),不支持回滚操作,若某条命令失败其他命令仍会执行。由于单线程特性,Redis天然具备隔离性但无法保证一致性和持久性。WATCH机制实现了乐观锁,通过监控键值变化防止并发修改。事务本质是通过FIFO队列暂存命令,EXEC时顺序执行。Redis事务适用于需要批量执行但允许部分失败的场景,不适合要求严格ACID特性的业务。
2026-05-11 09:00:00
507
7
原创 Redis 持久化
Redis提供了RDB和AOF两种持久化方式。RDB通过定期生成数据快照实现持久化,支持手动触发(bgsave)和自动触发,采用fork子进程方式避免阻塞主进程。AOF通过记录所有写命令实现持久化,提供always、everysec和no三种同步策略,并支持AOF重写机制压缩文件体积。Redis4.0后支持混合持久化,结合了RDB和AOF的优势。两种方式各有特点:RDB恢复速度快但可能丢失更多数据,AOF数据更安全但文件较大。实际应用中可根据需求选择或组合使用这两种方式。
2026-05-09 09:00:00
790
1
原创 Git 远程操作
本文介绍了Git远程仓库操作与多人协作开发流程。主要内容包括:1. 远程仓库管理:创建远程仓库、HTTPS/SSH克隆方式、推送与拉取修改、.gitignore配置等基础操作。2. 标签管理:轻量标签与附注标签的创建、查看和删除,以及标签的远程推送与删除。3. 多人协作开发:通过两个示例演示分支开发流程,包括分支创建、冲突解决、Pull Request提交流程及代码审查。4. Gitee扩展功能:介绍Wiki文档、统计报表、CI/CD流水线等平台功能。
2026-05-04 09:00:00
488
10
原创 Git 分支管理
Git分支管理是代码版本控制的核心功能。本文详细介绍了分支的创建、切换、合并和删除等基本操作,重点讲解了Fast-forward和非Fast-forward两种合并模式的区别,以及如何处理合并冲突。以及如何通过git stash暂存修改,处理紧急bug修复后再恢复工作现场。最后特别说明了强制删除临时分支的-D参数用法,为开发者提供全面的分支管理指导。
2026-05-01 09:00:00
426
4
原创 Git 基本操作
本文介绍了Git版本控制系统的基本概念和使用方法。主要内容包括:1. Git的作用和优势;2. Git的安装配置和基本操作流程;3. 核心概念如工作区、暂存区和版本库的关系;4. 常用操作命令:add、commit、status、diff、log等;5. 版本回退和撤销修改的多种方法;6. 文件删除操作。文章通过具体示例演示了Git管理文件版本的全过程,包括创建仓库、跟踪修改、查看差异、版本回退等操作,帮助读者掌握Git的基本使用方法。
2026-04-29 09:00:00
418
2
原创 OpenFeign
本文介绍了OpenFeign在微服务通信中的使用。OpenFeign作为声明式HTTP客户端,简化了微服务间的远程调用。首先对比了RestTemplate的不足,然后讲解了OpenFeign的快速上手方法,包括依赖引入、接口定义和使用方式。阐述了OpenFeign的参数传递技巧,包括单个参数、多个参数、对象和JSON的传递方式。最后介绍了两种优化方案:继承方式和抽取方式,将公共接口独立为模块,提高代码复用性。通过实际案例演示了如何简化微服务调用,使开发更加高效便捷。
2025-12-21 09:00:00
831
59
原创 Nacos
本文介绍了Nacos的安装配置、快速使用步骤、负载均衡策略(包括权重配置和同集群优先访问)、服务实例类型(临时/非临时实例)、环境隔离(命名空间)以及配置中心功能。通过实际案例演示了如何实现服务注册、远程调用、配置热更新等核心功能,并分析了不同配置文件的加载优先级。Nacos为微服务架构提供了完善的服务治理和配置管理解决方案。
2025-12-19 09:00:00
1917
30
原创 负载均衡 -LoadBalance
本文介绍了使用Eureka实现服务注册与发现时,如何通过负载均衡将请求分配到多个服务实例。首先展示了手动实现的轮询策略,通过原子计数器选择实例。然后重点讲解了Spring Cloud LoadBalancer的两种内置策略(轮询和随机),包括配置方法和实现原理。通过拦截器机制,LoadBalancer从注册中心获取服务列表并应用负载算法。文章还对比了服务端和客户端负载均衡的区别,说明Spring Cloud LoadBalancer作为客户端方案的优势。核心是通过智能分发请求提高系统性能、可用性和扩展性。
2025-12-11 09:00:00
2438
46
原创 Eureka 服务注册源码分析
本文深入分析了Eureka服务注册的核心源码流程。客户端通过DiscoveryClient发起注册请求,服务端基于ConcurrentHashMap实现高并发注册表,采用读锁提升并发性能,通过时间戳解决租约冲突,并动态更新自我保护阈值。注册完成后,服务端触发缓存失效与集群同步,通过批处理机制将注册事件异步复制至其他节点,保障高可用与最终一致性。从客户端到服务端,系统阐释了Eureka注册机制的高效实现与设计思想。
2025-12-03 09:00:00
1530
30
原创 服务注册与发现——Eureka
本文介绍了微服务架构中注册中心的作用及实现方式。针对硬编码URL导致的服务变更问题,提出通过注册中心进行动态服务管理。分析了注册中心的三大角色(服务提供者、消费者、注册中心)及其交互流程,并讲解了CAP理论在分布式系统中的权衡应用。对比了Zookeeper(CP)、Eureka(AP)和Nacos(AP/CP可切换)三种常见注册中心的特性,最后以Eureka为例,展示了从服务端搭建到客户端注册、发现的完整实现过程。通过实际代码演示了如何将订单服务和商品服务注册到Eureka并进行服务调用
2025-11-21 09:00:00
2217
29
原创 Spring Cloud 概述
本文介绍了微服务架构的发展历程及SpringCloud解决方案。内容涵盖:1.架构演进:从单体架构到微服务架构,分析了各阶段的优缺点。2.微服务特点:按业务边界划分独立服务,具有技术异构、独立部署等优势,但也面临分布式系统复杂性挑战。3.SpringCloud体系:简述了其核心组件及两种主流实现方案。4.实践演示:通过商品服务和订单服务示例,展示了服务拆分原则、独立数据库设计及RestTemplate远程调用方法,并指出了当前方案存在的问题。
2025-11-18 09:00:00
1400
43
原创 Spring AI 应用示例-聊天机器人
本文介绍了基于SpringAI实现的聊天机器人项目,主要包括核心功能实现和接口设计。项目支持文本对话、多轮上下文记忆和历史记录管理三大功能。通过ChatClient与AI模型交互,结合ChatMemory接口实现对话历史存储和管理,使用InMemoryChatMemory处理会话记忆。共5个核心接口:进行流式对话、获取会话列表、查看历史记录、删除会话记录等。
2025-11-12 09:00:00
1396
27
原创 Spring AI
文章介绍了人工智能(AI)的基本概念,并说明了AI相关术语,包括模型(Model)、大语言模型(LLM)、提示词(Prompt)和词元(Token)等核心概念。随后介绍了SpringAI框架,并提供了使用DeepSeek API的快速入门指南,包括环境要求、API申请和项目创建步骤,并展示了如何通过ChatModel和ChatClient接口与模型交互。最后介绍了SSE协议和Flux实现流式输出的方法,以及SpringAI中的Advisors拦截器机制
2025-11-04 09:00:00
2796
44
原创 DNS 域名解析
DNS(域名系统)是互联网将域名转换为IP地址的核心服务。其解析过程包括:本地缓存检查→递归查询→迭代查询(根→顶级→权威服务器)。DNS报文由Header、Question、Answer等5部分组成,通过标志位区分权威/非权威响应。实际解析中常使用CNAME别名(如baidu.com指向a.shifen.com)和负载均衡。全球13组根服务器通过任播技术部署,与顶级域(.com/.cn)、二级域共同构成树状体系。
2025-09-11 09:00:00
1535
47
原创 ARP 协议
本文介绍了 ARP 协议的报文结构和基本原理。详细分析了 ARP 协议的请求响应报文,以及 ARP 请求后未收到响应是如何进行处理的
2025-09-09 09:00:00
1185
33
原创 Curator 如何实现分布式锁
本文介绍了 Curator 框架中的 InterProcessMutex 具体是如何实现可重入的分布式排他锁,详细分析了加锁(acquire)和解锁(release)的核心流程:包括节点创建、锁竞争判断、前驱节点监听、锁计数管理等关键步骤,并对比了与原生Zookeeper实现相比的优势,如自动重连、Watcher管理、异常处理等。最后说明了通过异步方式处理节点变更事件来唤醒等待线程的机制
2025-09-06 09:00:00
1165
40
原创 zookeeper 实现分布式锁
本文介绍了基于 ZooKeeper 实现分布式锁的核心原理和具体实现,详细讲解了连接建立、加锁、解锁的实现过程,并提供完整Java代码示例
2025-09-05 09:00:00
2671
40
原创 在线抽奖系统——奖品模块
奖品模块主要包含:1. 奖品列表:奖品id、奖品图、奖品名称、奖品描述、奖品价格,列表支持翻页 2. 奖品创建:奖品名称、奖品描述、奖品价格、奖品图片(上传图片文件)
2025-03-22 09:00:00
1356
54
原创 在线抽奖系统——人员模块
人员模块主要包含人员列表和普通用户注册:1. 人员列表:人员 id、姓名、身份信息(普通用户/管理员)2. 普通用户注册:姓名、邮箱、手机号
2025-03-02 09:00:00
756
42
原创 在线抽奖系统——项目测试
1. 在线抽奖系统的基本功能正常运行,正常流程能够正确执行2. 用户进行抽奖时响应及时,能够对抽奖过程中的异常情况进行处理3. 在进行抽奖通知时,仅使用 qq 邮箱进行通知,可对其进行优化,使系统支持多种邮箱通知以及验证码通知1. 所有按钮点击响应及时,页面显示良好,无错别字,无遮挡或显示错误情况2. 对于异常情况都使用弹窗进行提示,对用户体验不友好,可使用自定义模态框、表单验证反馈等进行提示1. 该系统的性能测试结果表明其在当前并发场景下表现优秀,能够满足需求。
2025-02-28 09:00:00
2220
49
原创 在线抽奖系统——管理员注册
用户输入注册信息后,点击注册按钮,发送注册请求给服务器,服务器校验用户信息是否正确,对 用户密码 和 手机号 分别进行加密,再将用户信息保存到数据库,保存成功后,服务器返回注册成功响应
2025-02-27 09:00:00
1272
31
原创 在线抽奖系统——通用模块
通用功能模块 是在软件开发中,创建的一组通用的功能模块,以便在不同的应用场景中重用,从而提高开发效率、降低重复开发工作量,并确保系统的一致性与可维护性。通用功能模块通常具有高度的复用性,能够服务于多个系统或应用
2025-02-26 09:00:00
1101
22
原创 网页五子棋——通用模块
通用功能模块 是在软件开发中,创建的一组通用的功能模块,以便在不同的应用场景中重用,从而提高开发效率、降低重复开发工作量,并确保系统的一致性与可维护性。通用功能模块通常具有高度的复用性,能够服务于多个系统或应用
2025-02-13 09:00:00
1976
35
原创 网页五子棋——项目介绍
实现一个网页版五子棋对战程序,支持以下核心功能:1. 用户模块:用户注册、用户登录、用户天梯分数记录 以及 用户比赛场次记录2. 匹配模块:按照用户的天梯分数实现匹配机制3. 对战模块:实现两个玩家在网页端进行五子棋对战功能
2025-02-12 09:00:00
1146
21
原创 WebSocket
Websocket 是一种 协议,用于在 客户端 和 服务器 之间建立持久的 双向通信连接,广泛应用于需要实时数据交换的应用程序,例如在线聊天、实时游戏、股票行情等。是从 HTML5 开始支持的一种网页端和服务端保持长连接的 消息推送机制
2025-02-04 09:00:00
2399
60
原创 Spring Boot 自动配置
当 Spring 容器启动后,一些配置类、bean 对象等就自动存入 Ioc 容器中,而不再需要我们手动去声明,从而简化了程序开发过程,省去了繁琐的配置操作。Spring Boot 的自动配置,就是 SpinrgBoot 将依赖 jar 包中的配置类以及 Bean加载到Spring Ioc 容器中的过程,在本篇文章中,我们主要学习一下两个方面:1. Spring 如何将对象加载到 Spring Ioc 容器中 2. SpringBoot 是如何进行
2025-01-23 09:00:00
3829
75
原创 Bean的作用域和生命周期
在 Spring 框架中,Bean 的作用域(Scope)和生命周期(Lifecycle)是两个非常重要的概念,决定了 Bean 的创建、存储和销毁方式
2024-12-27 09:00:00
1641
108
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅