June 18, 2024
redis版本:7.0.2 get命令对应源码中的函数名getCommand,对应文件是t_string.c。相关源码如下: int getGenericCommand(client *c) { robj *o; if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.null[c->resp])) == NULL) return C_OK; if (checkType(c,o,OBJ_STRING)) { return C_ERR; } addReplyBulk(c,o); return C_OK; } void getCommand(client *c) { getGenericCommand(c); } 可以
...
June 16, 2024
MySQL版本:8.3.0。 隔离级别:RC。 为了节约资源,尽可能避免生成不必要的锁结果,InnoDB设计了隐式锁。隐式锁是指在执行语句时并不生成锁,而在特定场景触发时才生成锁。主要用于插
...
June 16, 2024
位图的概念及原理 # 我们可以把位图理解成一个bit数组,每个元素的值是0或1。 下面用一张简单的图来解释一下: 我们可以用第一位来存储用户id为1的用户的在线状态,用第二位来存储用户id为2的
...
December 24, 2023
December 23, 2023
前言 # 导出是业务中常见的一个功能,算不上复杂。一般来说,我们从数据库中查询出数据,将其写入文件中,再给一个用户下载的入口即可。但是,如果要导出的数据量很大,比如上百万,这个时候,怎么样处
...
December 17, 2023
程序在运行过程中,总是会遇到一些性能问题,比如cpu使用率莫名奇妙的飙升、内存使用率奇高等,轻者导致接口响应速度变慢,重者导致系统崩溃,无法提供服务。 这时候,我们就需要对程序进行性能分析
...
December 16, 2023
今天我们继续完善gRPC服务,在服务中添加数据库操作。 操作系统:MacOS 14.2。 数据库:MySQL8.0.20。 功能简介 # 这本篇文章里,我们新建一张用户表,实现简单的用户操作功能。表
...
December 10, 2023
在前面几篇关于gRPC的文章中,我们已经实现了简单的gRPC接口,但是这些接口都是本地调用,这在现实生产环境中几乎不可能。在生产环境中,除非是直直接在固定ip的物理机/虚拟机上运行,否则
...
December 3, 2023
日志库在每个项目中都是必不可少的一部分,Go语言中有很多优秀的日志库,比如logrus、zap等,这里我们介绍zap日志库的使用。 zap库 # zap是uber公司开源的一款go语言的日志库
...
December 3, 2023
gRPC的流模式有三种: 客户端流模式,客户端向服务端发送多条消息,发送完毕后等待服务端返回结果。这可用于数据上报等场景。 服务端流模式,客户端向服务端发送一条消息,服务端向客户端返回多条消
...