快乐的程序员
面试题:实现errGroup 面试题:实现errGroup
写在前面实现一个ErrGroup(golang.org/x/sync/errgroup)的功能,实现Go,Wait两个方法即可,尽量不要用系统标准库,如sync.WaitGroup 分析源码type Group struct { canc
2024-05-08
mysql联合索引为什么是最左匹配 mysql联合索引为什么是最左匹配
为什么联合索引是从最左匹配mysql创建联合索引的时候是从最左边的列先排序的,只有第一列相等的时候才会看第二列。所以肯定是从最左边开始匹配的。 什么是索引覆盖如果需要查询的列直接在索引中,那么不需要回表查询聚簇索引中的行数据信息,则这种情况
2024-04-24
mysql sql语句执行过程 mysql sql语句执行过程
写在前面对于sql语句执行的过程,实际工作中可能会少会需要去了解,但是面试中可能会被问到。本文将详细介绍一下sql语句执行的整个过程 整体流程 具体执行过程 获取连接器(Connection Manager)MySQL 的执行流程始于连接器
2024-04-24
Redis哨兵机制原理 Redis哨兵机制原理
写在前面redis的主从复制是redis系统的高可用前提,从库宕机依然可以将请求发送给主库或者其他从库,但是 Master 宕机,只能响应读操作,写请求无法再执行。所以主从复制架构面临一个严峻问题,主库挂了,无法执行写操作,无法自动选择一个
2024-04-23
分布式一致性那些事儿 分布式一致性那些事儿
1 什么是微服务、微服务架构、分布式 微服务:它是一个单一的、完整的服务,这个服务只做部分功能。甚至一个微服务只负责创建数据、一个微服务只负责修改数据,也是可用的。不同的微服务之间通过rpc相互交互。一个微服务是一个完整的服务,它的开发、联
2024-04-23
基于本地消息表的分布式事务解决方案 基于本地消息表的分布式事务解决方案
写在前面上篇文章介绍了 分布式一致性那些事儿,本文将详细讲解一下本地事务表的实现原理 原理本地消息表方案最初是ebay提出的,其实也是BASE理论的应用,属于可靠消息最终一致性的范畴。这里以支付服务和会计服务为例展开介绍本地消息表方案,大概
2024-04-23
go once源码分析 go once源码分析
代码package sync import ( "sync" "sync/atomic" ) type Once struct { done atomic.Uint32 m sync.Mutex } func (o *O
2024-04-23
elasticsearch基本用法 elasticsearch基本用法
写在前面之前介绍过es基本概念 ElasticSearch学习文档-入门篇,本文将介绍es的基本用法 IndexPUT# 创建索引 - PUT /索引名 ====> PUT /products - 注意: 1.ES中索引健康转态
2024-04-22
微服务之间数据传递方式:RESTful、GraphQL还是gRPC 微服务之间数据传递方式:RESTful、GraphQL还是gRPC
写在前面在现代的软件工程中,微服务或在客户端与服务端之间的信息传递的方式,比较常见的有三种架构设计的风格:RESTful、GraphQL和gRPC。 每一种模式,都有其特点和合适的使用场景,今天,我们主要来对三种风格做一个深入的理解和对比,
2024-04-21
手把手教你使用 pprof 手把手教你使用 pprof
写在前面pprof 是 Go 语言自带的性能分析工具,用于识别和解决应用程序中的性能瓶颈问题。大家应该或多或少有听说过 “三高代码”,这里的 “三高” 并不是指 “高血压、高血糖、高血脂”,而是指 ”高性能、高并发、高可用“,而 pprof
2024-04-21
分布式锁需要注意什么问题 分布式锁需要注意什么问题
写在前面在分布式系统中,实现分布式锁是一项常见的需求。为了追求性能,通常使用Redis使用分布式锁,但是想要实现高性能并且数据安全的分布式锁,并非易事,先看一下分布式锁要满足哪些特性。 需要注意的问题 互斥,一个线程获取到锁,其他线程只能等
2024-04-20
redis的hash的冲突和扩容问题 redis的hash的冲突和扩容问题
写在前面redis hash的冲突和扩容问题在面试过程中经常遇到,本文就来总结一下。 数据结构哈希表实际上是一个数组,数组里多每一个元素就是一个哈希桶。 typedef struct dict{ dictType *type; //
2024-04-20
2 / 22