自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从监控到告警:Prometheus+Grafana+Alertmanager+告警通知服务全链路落地实践

本文系统梳理了基于 Prometheus、Alertmanager、Grafana 及告警通知服务的企业级系统监控告警平台的设计与实现。文章详细介绍了监控告警的原理、技术选型、核心组件配置、邮件与短信等多渠道通知的实现细节,并结合实际项目源码、流程图和最佳实践,深入剖析了告警降噪、分级路由、高可用部署等关键问题。最后,提供了从服务接入、配置调整到平台管理的全流程部署与使用指南,助力企业构建高效、可靠的自动化监控告警体系。

2025-05-30 18:45:00 611

原创 Go语言实现redis MCP

本文首先介绍 MCP 的定义、起源与应用场景,阐明为什么需要一个标准化的上下文协议,以及 MCP 产生的背景和价值。接着详细剖析 MCP 的架构与核心协议要素,包括主机(Host)、客户端(Client)、服务器(Server)三方角色与 JSON-RPC 2.0 消息格式,以及常用的 stdio 和 HTTP+SSE 传输方式。随后,重点演示如何使用 Go 语言结合 Redis 实现一个自定义的 MCP 服务器,包含项目结构、代码关键点,以及通过时序图/流程图展现客户端与服务器的交互流程。

2025-05-25 07:15:00 896 1

原创 使用Go语言实现轻量级消息队列

本文详细介绍了如何使用Go语言实现一个轻量级的消息队列。文章从消息队列的重要性和Go语言的优势入手,阐述了消息队列的基本概念和架构设计。通过Go语言的channel机制,实现了消息的发布、订阅和并发安全。文章还提供了完整的代码示例,展示了如何在实际项目中应用该消息队列。性能优化部分讨论了通道缓冲区设置、并发处理优化和内存管理建议。最佳实践部分提供了错误处理、日志记录和测试方法的建议。

2025-04-25 19:30:00 1124

原创 复合认证策略

本文主要介绍完整的复合认证系统实现策略,包括:1. API Key 认证2. HMAC 签名验证3. Nonce 防重放4. 时间戳验证5. 速率限制6. Redis 缓存支持

2025-04-24 07:15:00 692

原创 Go语言实现OAuth 2.0认证服务器

本项目实现了一个完整的OAuth 2.0认证服务器,通过实现osin的Storage接口,提供了可靠的MySQL存储层。主要特点包括:1. 完整实现OAuth 2.0规范2. 可靠的MySQL存储实现3. 支持授权码和刷新令牌流程4. 完善的错误处理和安全机制5. 易于扩展和定制通过这个实现,我们可以快速搭建起一个生产级别的OAuth 2.0认证服务器,为各类应用提供标准的身份认证服务。

2025-04-16 16:59:21 1081

原创 OAuth 2.0认证

本文深入解析 OAuth 2.0 的核心概念,详细介绍四种授权模式,分析安全性问题和最佳实践,探讨实际应用场景。

2025-03-22 23:00:39 896

原创 服务安全认证概述与基础认证方式

本文深入解析了 **Basic Auth、API Key、HMAC、JWT** 等常见的服务认证方式,并进行了对比分析,帮助你根据不同场景选择合适的方案。同时,我们还探讨了 **零信任、FIDO2、去中心化身份(DID)** 这些未来认证的发展方向。

2025-03-20 10:45:10 1135

原创 依赖注入神器:Wire在DDD项目中的应用

本文深入介绍了Google Wire在Go语言DDD(领域驱动设计)项目中的应用。我们从Wire的基础概念、编译时依赖注入原理、自动化依赖管理优势出发,结合一个完整的DDD风格Web服务案例,展示了如何在实际项目中使用Wire简化复杂依赖关系。

2025-03-12 16:41:27 880

原创 Redis 实现分布式锁

本文主要介绍了Redis的分布式锁。涉及Reids的原子操作,分布式锁,Redis的事务,以及用Go语言实现通过Lua脚本来扣减库存。

2025-01-03 17:21:29 1223

原创 Go Redis实现排行榜

本文主要介绍了如何使用 Go 语言结合 Redis 实现排行榜功能,包括场景分析、接口设计、核心功能实现以及实际应用示例。从数据结构选择到性能优化,再到持久化策略,文章详细讲解了基于 Redis 的排行榜构建方法,并与其他实现方式进行了对比分析,最后总结了设计原则与最佳实践,为开发者提供了一套完整的实现思路和技术参考。

2024-12-27 16:08:50 1202 2

原创 MySQL InnoDB 的 Doublewrite

本文主要介绍 MySQL InnoDB 存储引擎的 Doublewrite Buffer 技术,包含的内容有: 1. 部分写问题及其影响; 2. Doublewrite Buffer 的工作机制:;3. Doublewrite Buffer优势与权衡;4. 调优与实践建议等等通过对以上内容的介绍,本文全面解读了 Doublewrite Buffer 的设计理念及其在事务型数据库中的应用价值。

2024-12-16 14:43:40 990

原创 MySQL InnoDB 中的数据页

本文主要介绍了MySQL InnoDB 中的表空间、段、区、页等核心存储单元的定义、作用及其相互关联。同时,深入剖析了数据页,以及 B+ Tree 索引在查询过程中的实现逻辑。

2024-12-13 14:14:50 1000

原创 MySQL InnoDB 的锁机制

本文将深入探讨InnoDB锁机制的实现原理、各类锁的特性及其在实际应用中的最佳实践。具体包括悲观锁与乐观锁、系统锁、表锁、行锁、意向锁、Gap 锁、 Next-Key 锁、元数据等等。

2024-12-11 11:11:32 1520

原创 技术文档编写指南:让知识传承更优雅

在软件开发的世界里,一份优秀的技术文档不仅仅是文字的堆砌,更是团队智慧的结晶。本文将从多个维度探讨如何创作一份专业、实用的技术文档

2024-12-04 10:34:41 1529

原创 鸿蒙修饰符

在HarmonyOS(鸿蒙)应用开发中,修饰符(Decorator)是一个极其重要的概念。它们不仅能够简化开发过程,还能提供强大的功能扩展性。本文将深入探讨鸿蒙中的各类修饰符,帮助开发者更好地理解和使用这些工具。本文主要介绍`@Styles`,`@Extend`,`@Builder`,`@Component`,`@BuilderParam`,`@State`,`@Prop`,`@Link`,`@Provide`,`@Watch`,`@Observed`等等。

2024-11-29 10:52:23 1933

原创 【鸿蒙】鸿蒙开发过程中this指向问题

在 TypeScript 开发中,尤其是在使用面向对象编程(OOP)或基于组件的框架(如 React 或 HarmonyOS)时,this 的指向问题是一个常见且容易引发错误的挑战。本文将深入探讨 this 的绑定机制,并通过一个实际案例,展示如何在 TypeScript 中正确处理 this 的指向问题。

2024-11-27 23:38:46 1900

原创 MySQL Join 的原理与优化实践

Join 是数据库中最为重要且复杂的操作之一。在数据量较大的场景下,Join 的效率常常决定了整个查询的性能。本文旨在通过深入剖析 MySQL Join 的实现与优化,帮助读者理解其工作原理与实际应用中的性能优化策略。

2024-11-23 21:25:23 1988 1

原创 MySQL UPDATE语句执行链路解析

本文深入解析了 MySQL `UPDATE` 语句的执行流程,从客户端请求到数据持久化,涵盖连接器、查询优化器、执行器和存储引擎等模块。文章详细阐述了 Redo Log 和 Undo Log 的协同机制,保障数据一致性与崩溃恢复。同时,通过大表更新、主从延迟等实际案例,提供了优化索引设计、分批更新、调整日志配置等实用策略。文章不仅帮助开发者全面理解 MySQL 内部机制,还为复杂业务场景中的性能调优提供了技术指导。

2024-11-21 14:45:03 1932

原创 拥抱鸿蒙新生态:开发者的机遇与挑战

随着鸿蒙系统在智能手机、智能穿戴、车载、家居等领域的快速发展,其生态逐渐形成与安卓、iOS三足鼎立的格局。本文从鸿蒙生态的潜力与机遇出发,探讨开发者面临的技术挑战,并提出针对性的应对策略,包括掌握分布式框架、优化用户体验、参与开源生态及注重数据隐私保护。对于开发者而言,鸿蒙生态提供了广阔的创新空间和市场前景,正是抢占新赛道的最佳时机。

2024-11-20 08:50:15 979

原创 MySQL SELECT 语句执行链路解析

本文详细介绍了MySQL 查询的整个流程,包括“连接器”、“解析器”、预处理器、优化器、执行器和存储引擎各个阶段的工作原理。每个模块在 SQL 查询执行过程中都扮演着至关重要的角色,共同协作确保查询的高效执行。

2024-11-18 16:14:32 1413

原创 MySQL系统优化

本文系统地介绍了 MySQL 数据库优化的多层次策略,包括服务架构、配置调整、SQL 查询、表结构设计、备份恢复以及监控调优工具。针对高并发和大数据量场景,文章提供了详细的优化方案和实践示例,帮助开发者和数据库管理员提升数据库性能,确保系统的高效稳定运行。

2024-11-16 22:00:00 2894 2

原创 MySQL Online DDL

MySQL Online DDL

2024-11-15 16:54:17 1669 1

原创 change buffer:到底应该选择普通索引还是唯一索引

本文深入探讨了 MySQL 中的普通索引和唯一索引,从查询和更新效率、底层存储原理、以及与 change buffer 和 redo log 的交互等方面详细分析了两者的异同。通过对比 change buffer 和 redo log 的原理与适用场景,本文总结了各自的优势和最佳应用环境,为读者提供了在数据库设计中合理选择索引类型的建议。

2024-11-15 07:15:00 1050

原创 MySQL 日志:Redo、Bin 与 Undo Log

这篇文章深入解析了 MySQL InnoDB 存储引擎中的三种核心日志——Redo Log、Bin Log 和 Undo Log,探讨了它们的作用、工作原理及写入时机。Redo Log 主要用于数据的持久性保障和崩溃恢复,Bin Log 支持主从复制和增量恢复,而 Undo Log 实现事务回滚和多版本并发控制(MVCC)。文章逐一分析了每种日志在事务的不同阶段(START、执行、COMMIT)中的写入流程,并详细对比了它们在应用场景和性能优化中的协作关系,为使用人员提供了日志管理与优化的实用建议。

2024-11-13 07:00:00 1246

原创 深入理解MySQL事务

本文介绍了MySQL事务的基本特性和隔离级别,特别是在InnoDB引擎下如何通过多版本并发控制(MVCC)和间隙锁来防止幻读。文章详细解释了MySQL的事务实现机制,包括锁、Undo Log和Redo Log的作用,并提供了隔离级别选择、避免死锁、优化事务性能的实践建议,帮助开发者在实际应用中保障数据一致性和系统性能。

2024-11-11 09:11:21 1666

原创 Redis四种架构模式

Redis 提供了单机、主从复制、哨兵和 Cluster 四种主要架构模式,适合不同的业务场景和需求。从简单的缓存到分布式存储,Redis 的灵活架构使其可以广泛应用于多种业务环境。选择合适的架构,既能提升 Redis 性能,又能保证高可用性。在实际项目中,结合业务规模、数据量、并发量和运维能力,选用合理的架构可以显著优化 Redis 的性能和稳定性,为系统提供稳定可靠的数据支撑。

2024-11-08 14:15:00 1494

原创 Redis完全指南:从基础功能到缓存管理与高可用性设计

本文详细介绍了Redis的核心功能、应用场景和优化策略。从五大数据类型及其底层结构,到特殊数据类型的使用方法,再到RDB与AOF持久化方式,文章逐一解析了每个Redis特性。同时,对主从复制、哨兵模式和集群配置提供了详尽说明,帮助构建高可用架构。针对缓存管理中的缓存击穿、缓存雪崩等问题,文章列举了多种应对措施,如热点数据预热、分布式锁和限流等。通过掌握这些知识,读者能够灵活运用Redis在高并发场景下实现高效、稳定的数据存储和缓存管理。

2024-11-06 07:15:00 1414

原创 IO 多路复用技术:原理、类型及 Go 实现

通过本篇文章,我们详细探讨了 IO 多路复用的三种类型,并以 epoll 为例,展示了其核心数据结构和实现原理。我们还使用 Go 实现了一个简单的聊天室服务器,演示了如何在实际应用中使用 epoll 管理高并发连接。

2024-11-04 14:51:00 1525

原创 使用 Go 语言实现 LRU 缓存

本文深入探讨了 LRU 缓存的实现原理,结合 Go 语言,设计了一种基于双向链表和哈希表的数据结构来实现高效的缓存。文章详细介绍了节点初始化、插入、更新、淘汰等操作,并配以图示帮助读者理解链表操作的细节。

2024-10-31 15:57:13 1388

原创 MySQL数据库备份与恢复

MySQL数据库备份与恢复是保障数据安全和系统稳定运行的重要措施。本文介绍了MySQL备份的常用方式,包括逻辑备份和物理备份。逻辑备份通过mysqldump生成SQL文件,适合小规模数据库,便于跨版本恢复;物理备份直接复制数据库文件,速度快,适合大数据量备份。对于恢复操作,mysqldump文件恢复适合逻辑备份,物理备份文件恢复适合同一环境的冷备份。文章还提供了备份与恢复的最佳实践,如增量备份与完全备份结合、备份文件压缩加密等,并附有自动化备份脚本示例,帮助用户更高效地保障数据库的可靠性。

2024-10-30 22:34:01 1017

原创 【力扣】Go语言回溯算法详细实现与方法论提炼

本文详细介绍了回溯算法在LeetCode多类问题中的应用,包括组合、分割、子集、排列、棋盘问题和复杂问题等。回溯算法的核心在于通过递归构建路径、判断条件并进行状态回退,从而找到所有满足条件的解。每道题目分析中都结合了回溯算法的关键要素:递归终止条件、路径收集、去重逻辑和递归控制,帮助读者系统化掌握回溯法的应用思路。通过示例代码和具体解读,本文总结了回溯算法在组合生成、路径唯一性控制以及递归深度优先搜索中的高效应用,适合用于解决多类型的递归和决策问题。

2024-10-30 07:15:00 844

原创 【力扣】GO解决子序列相关问题

使用go语言实现力扣(leetcode)子序列相关问题

2024-10-25 15:38:54 2717

原创 【力扣】Go语言实现力扣115不同的子序列

详细解读如何使用Go语言实现力扣115不同的子序列,通过动态规划的方式解决子序列匹配问题,含代码实现与详细讲解。

2024-10-25 09:58:45 1082

原创 Go语言中的位运算符

位运算(bitwise operations)是计算机科学中非常基础且重要的运算类型,它直接操作二进制位。Go语言中提供了一组位运算符,用于执行位级别的操作。

2024-10-23 17:26:40 1160

原创 深入解析Golang GMP

本文深入解析了 Go 语言中的 GMP 调度模型,结合源码详细讲解了 Goroutine、M(Machine)和 P(Processor)之间的协作机制。首先,介绍了 Goroutine 的生命周期及状态管理,分析了状态切换的关键函数。随后,阐述了调度器通过主动、正常、抢占和被动调度,确保 Goroutine 在多核系统中高效并发执行。文中重点解析了 schedule()、findRunnable() 和 execute() 等核心函数的具体实现,展示了调度器如何通过本地队列、全局队列、工作窃取和网络轮询等

2024-10-21 22:07:56 1495

原创 买卖股票系列问题的处理方法以及go语言实现

这篇文章介绍了力扣(LeetCode)中常见的买卖股票问题的分类、处理方法以及其对应的动态规划解法。针对每类问题,文章提供了详细的状态转移方程分析,并给出了对应的 Go 语言代码实现。股票问题涵盖了从简单的单次交易到复杂的多次交易、冷冻期限制和交易手续费等多种场景。通过动态规划的思想,定义不同的状态(如持有股票、不持有股票等),文章展示了如何高效计算最大收益,并解释了每个代码实现的核心逻辑。

2024-10-16 08:44:54 1590

原创 高可用架构设计

本文深入探讨了一个高可用、可扩展的微服务架构的设计理念及其核心组件。该架构采用了分层结构,自顶向下包括访问控制层、网关层、服务层、消息队列、缓存层和数据存储层。每一层都有明确的功能定位,通过不同的中间件和技术手段相互协调,共同实现系统的高可用性和高性能。

2024-10-15 19:15:00 1201

原创 深入理解Redis锁与Backoff重试机制在Go中的实现

本文探讨了在Go语言中实现Redis锁及其与Backoff重试策略结合的重要性和方法。文章提供了Redis锁的获取和释放的实现代码,并强调了使用Lua脚本确保安全释放锁的重要性。同时,介绍了多种Backoff策略,如指数退避,以优化锁获取过程中的重试逻辑。结合Redis锁和Backoff策略,文章提出了一个健壮的锁获取机制,能够在高竞争环境下安全地获取锁。最后,文章强调了合理选择和调整这些策略对于提高分布式系统的性能和可靠性的重要性。

2024-10-15 09:53:10 1574

原创 使用 Go 语言实现 WebSocket的核心逻辑

本文详细展示了如何使用 Go 语言实现一个 WebSocket 聊天应用的核心逻辑。我们讨论了客户端的创建与管理、消息的收发、以及长连接的维持等关键功能。通过这些核心组件,我们可以轻松地扩展功能,构建复杂的 WebSocket 应用。

2024-10-14 13:37:03 1218

原创 深入解析缓存技术

本文探讨了缓存技术的应用,包括其基本原理、更新机制、数据过期策略以及缓存可能引起的问题和解决方案。首先介绍了缓存缓存原理,然后深入探讨了三种主要的缓存更新机制:Cache Aside模式、Read/Write Through模式和Write Behind Caching,以及其优缺点和适用场景。接着,文章讨论了数据过期策略,包括LRU、FIFO和LFU算法,并通过Go语言代码实现。最后,文章分析了缓存可能带来的不一致性、大key、缓存雪崩、缓存穿透和缓存击穿等问题,并提出了相应的解决方案。

2024-10-14 11:05:09 1213

微信支付成功后申请退款时序图

微信支付成功后申请退款时序图

2024-10-11

支付宝支付,申请退款时序图

支付宝退款时序图

2024-10-11

支付宝,微信支付时序图

支付宝,微信支付时序图

2024-10-11

Go语言并发模型:GMP技术详解脑图

本脑图深入解析了Go语言中GMP并发模型的架构和工作原理。首先,脑图概述了线程、协程和Goroutine的基本概念,强调了Goroutine的轻量级特性及其在用户态的调度优势。接着,详细展示了GMP模型的三个主要组件:G(Goroutine)、P(Processor)、M(Machine)之间的关系和功能。 在GMP模型的脑图中,Goroutine作为并发执行的基本单位,P作为调度器负责管理Goroutine的执行队列,而M则是实际执行Goroutine的线程。脑图清晰地描绘了P的数量如何决定程序的最大并行度,以及M与P的绑定关系如何影响执行效率。 此外,脑图还详细解释了GMP模型的调度流程,包括主动调度、正常调度、抢占调度和被动调度等机制。这些机制确保了Goroutine能够在不同情况下高效地切换和执行。特别是work-stealing机制,它允许一个P从其他P的本地队列中窃取Goroutine,以平衡负载,防止资源浪费。 通过这个脑图,读者可以直观地理解Go语言如何通过GMP模型实现高效的并发控制,为Go语言开发者提供了深入理解语言并发机制的视觉工具。掌握GMP模型,开发者可

2024-10-11

空空如也

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

TA关注的人

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