November 5, 2023
问题描述 # 最近在工作中遇到一个问题,客户端(c++)使用smtp方式发送邮件失败,报错如下: The mail client submitted this message with bare line feeds, which cannot be sent via SMTP protocol DATA command and receiving system does not support BDAT 翻译中中文就是: 邮件客户端在提交此邮件时未
...
November 5, 2023
功能描述: 使用go语言实现打包压缩功能。 实现这个功能不需要引入第三方库,直接使用go语言自带的archive/zip库即可。 下面直接给出实例代码: package main import ( "archive/zip" "io" "log" "os" ) func zipfiles(zipfilename string, files []string) error { newfile, err := os.Create(zipfilename)
...
November 5, 2023
用着乞丐版的macbook,整天担心磁盘空间和内存不够用。今天突发奇想,想开发一个工具,可以实时显示电池电量、cpu使用率、内存使用率、磁盘使用率。 想干就干,利用ai+github,很快
...
October 28, 2023
最近在工作用遇到了一个问题,使用outlook邮箱以smtp方式发送邮件失败,报错如下: 504 5.7.4 Unrecognized authentication type [TYCP286CA0234.JPNP286.PROD.OUTLOOK.COM 2023-10-28T10:42:16.656Z 08DBD767E4655426] 仅从错误信息来看,是无法识别的身份验证类型。 使用其它邮件客户端登录、发送邮件正常,
...
October 6, 2023
asynq库介绍 # asynq是一款使用Go语言开发的开源任务队列库,它的特点是: 支持每个任务至少执行一次 支持任务调度 失败任务重试 支持崩溃恢复 支持优先级队列 支持加权优先级队列 支持严格优先级
...
October 2, 2023
在开发grpc服务时,我们经常会遇到一些通用的需求,比如:日志、链路追踪、鉴权等。这些需求可以通过grpc拦截器来实现。本文使用go语言来实现一个 grpc一元模式(Unary)拦截器,上
...
September 3, 2023
你们公司是怎么解决分页查询的?平均性能如何? # 我司业务是toB的,所以我们的分表主要有两种形式:按企业id分表、按时间分表。我们的做法是:让查询在单表中进行,避免跨表分页。 如果是按企业i
...
August 21, 2023
什么是MVCC?为什么需要MVCC? # MVCC即多版本并发控制,同一条记录可能存在多个版本,不同的事务可能读取到的是不同版本。 之所以使用MVCC,是为了提高并发读写性能。如果没有MVCC
...
August 21, 2023
什么是undo log?为什么需要undo log? # undo log,又称回滚日志。undo log有以下作用: 事务回滚。为了保证事务的原子性,事务中的操作要么全部完成,要么什么也不做。如果事务执行
...
August 20, 2023
如无特殊说明,本文默认mysql使用的存储引擎是InnoDB。 什么是行锁、表锁?什么时候加表锁?怎么避免? # 行锁,是指锁的粒度是行级别的,其锁定的记录是某个记录或者间隙(也可能是多个)。
...