摘要:
标准库 unsafe 的 Q&A go指针和 unsafe.Pointer有什么区别? 1. go语言的作者ken thompson也是c语言的作者,所以go可以看做c系语言,它的很多特性和c类似, 指针就是其中之一,然而go语言的指针相比c语言的指针又很多限制,当然也是为了安全考虑, 相比于c语言 阅读全文
摘要:
标准库 context Q&A 参考文档 context如何被取消 1. context.Context讲解 type Context interface { // 返回context是否会被取消,以及自动取消时间 Deadline() (deadline time.Time, ok bool) / 阅读全文
摘要:
interface Q&A Go接口与C++接口有何异同? 1. 接口定义了一种规范,描述了类的行为和功能,而不做具体实现 2. C++定义的接口称为侵入式,而go中的接口为非侵入式,不需要显示声明,只需要实现接口定义的函数,编译器会自动识别 案例 type Animal interface { R 阅读全文
摘要:
什么是服务注册和发现及技术选型 服务注册和发现 基于配置文件的微服务弊端 当系统并发过高的时候,我们新增加了一个用户服务,那么其它需要调用用户服务的服务都需要重新部署,非常的麻烦,而且容易出错 注册中心 稳定性、一致性、是不是分布式 服务注册与发现流程图 服务注册与发现的技术选型 consul的安装 阅读全文
摘要:
go-redis库的使用 安装go-redis库 go get github.com/go-redis/redis/v8 github链接 创建redis客户端并设置值 // 短信验证码发送成功,将验证码保存到redis rdb := redis.NewClient(&redis.Options{ 阅读全文
摘要:
下载依赖 go get -u github.com/alibabacloud-go/dysmsapi-20170525/v2 go get -u github.com/alibabacloud-go/darabonba-openapi go get -u github.com/alibabaclou 阅读全文
摘要:
map的Q&A 非常重要的一点:makemap()函数返回的是*hmap, makeslice()函数返回的是slice map是线程安全的吗?(map可以并发写入吗) 1. go语言中内置的map不是并发安全的 2. 大量goroutine并发写入map就会报错:fatal error: conc 阅读全文
摘要:
channel Q&A 什么是CSP? 不要通过共享内存来实现通信,而要通过通信实现共享内存 CSP通常被认为go在并发上成功的关键因素 go一开始就把CSP的思想融入到语言的核心里,所以并发编程称为go的一个独特的优势 大多数编程语言的并发模式是基于线程和内存同步访问控制实现的,Go的并发编程模型 阅读全文
摘要:
package response import ( "fmt" "time" ) type JsonTime time.Time func (j JsonTime) MarshalJSON() ([]byte, error) { // 重写time转换成json之后的格式 var stmp = fm 阅读全文
摘要:
func HandleGrpcErrorToHttp(err error, c *gin.Context) { // 将grpc的code转换成http的状态码 if err != nil { if e, ok := status.FromError(err); ok { switch e.Code 阅读全文