摘要:
作为一个软件开发工程师,相信大家经常会遇到设备上的程序有bug需要修改,但是因为程序年代太久远或源码分支太多,已经没办法知道设备上的程序是在哪一个提交里编译出来的,这时候查问题是非常困难的。如果没法确定设备上程序对应的代码分支,我们能做的就是给设备升级到最新版本,如果新旧版本和设备之间是兼容的那还好 阅读全文
摘要:
题目:有A、B三个服务,调用链路为:A->B,为了控制调用的超时时间。A服务生成一个context,超时时间设置为3s,在A服务调用B服务的时候会把context传给B服务。这样子就能控制调用超时时间为3s,请问context里的超时是怎么在两个服务之间传递的,通过什么传递的? 在Go语言中,当微服 阅读全文
摘要:
如何保证数据库和缓存数据的一致性,一般有如下六种解决方案: 先更新缓存,后更新数据库 先删除缓存后,后新数据库 先更新数据库,后更新缓存 先更新数据库,后删除缓存 先删除缓存,后更新数据库,再删除缓存 先删除缓存,后更新数据库,再延迟删除缓存 先更新缓存,后更新数据库 这个方案会遇到这种情况:缓存更 阅读全文
摘要:
所有的提交代码都应该通过 golint 和 go vet 检测 建议在代码编辑器上面做如下设置: 保存的时候运行 goimports 使用 golint 和 go vet 去做错误检测。 零值Mutex是有效的 零值 sync.Mutex 和 sync.RWMutex 是有效的。所以指向 mutex 阅读全文
摘要:
最近在做一个需求,需求内容中有一个功能点是查询指定用户标签里的用户id,这里做了分页查询,分页查询是用mysql的LIMIT设置offset和size值来实现的。在程序执行过程中会发现,如果查询的用户标签数据量很大时会出现慢查询告警,这里已经对mysql表的标签名称和用户id字段都加了索引,并且li 阅读全文
摘要:
1. 什么是ABtest 简单来说,就是就是在产品正式全面迭代之前,为同一个目标制定不少于两个的方案,将用户分流至对应方案内,在保证每组用户特征相同的前提下,根据用户的真实数据反馈,帮助产品决策。 2. ABtest解决了什么问题 对一个产品设计,已经能难直观判断是否真的是“优化”,这个改变,可能是 阅读全文
摘要:
[chatgpt] gRPC 是一个高性能、开源、通用的 RPC 框架,支持多种编程语言。在进行自动化测试时,可以使用 gRPC 提供的测试工具和库来方便地进行测试。 以下是一个使用 golang 编写的 gRPC 自动化测试示例,包括服务端和客户端代码: 服务端代码: package main i 阅读全文
摘要:
泛型 Generics: 引入了对使用参数化类型的泛型代码的新支持, 达到了算法可复用的目的。 两数求和,泛型函数的使用 假设我们要计算两个数的和,函数可以这样子写 func Add(a int, b int) int { return a + b } 上面的函数很简单,但是它只能计算int类型的和 阅读全文
摘要:
golang是可以实现继承的,但是这种继承并不是严格意义上的继承,golang并不支持继承特性,因而也没有单继承,多继承,重写方法等复杂概念。 下面通过一些例子来讲解golang的继承 组合继承 (1)匿名继承 type People struct{} func (p *People) ShowA( 阅读全文
摘要:
golang 解压带密码的zip包,同时支持指定文件头偏移量加载zip包。下面首先给出完整的代码,后面再对代码实现过程的思考和原理做详细解释。 package main import ( "archive/zip" "bytes" "compress/flate" "fmt" "hash/crc32 阅读全文