go

golang标准库之strings包

Contains 判断字符串是否包含子串 package main import ( "fmt" "strings" ) func main() { src := "It's a cat." fmt.Println(strings.Contains(src, "It's")) fmt.Println(...

golang标准库之flag

flag包实现了简单的命令行参数解析,支持bool、int、int64、uint、uint64、float64、string和time.Duration八种类型的命令行解析。 使用方法 注册flag流程如下: import "flag" var ip = flag.Int("flagn...

GRPC (4) : 名字解析器

上一章学习了 gRPC 截止时间,多路复用和元数据等特性,今天学习名字解析器j及其实现原理。 名字解析器(Name Resolver) 名字解析器用作将给定的服务名称解析为对应的后端 IP 地址和端口号,gRPC 中默认使用...

GRPC (3) : 拦截器

上篇文章记录了 gRPC 四种通信模式及实现,今天学习一个新的知识点——拦截器。通常客户端请求到达服务端的时候不会立即进行业务处理,而是进行一些预处理操作,比如监控数据采集(统计 QPS),链路追踪,身份信息...

GRPC (2): 四种通信模式‍

上篇文章我们介绍了gRPC 的基本概念,今天实现一个完整的 gRPC 服务,包括 proto 文件的定义,客户端和服务端代码的生成以及业务逻辑代码的补充。 GRPC 四种通信模式‍ 普通模式(unary RPC) 假如...

GRPC (1) : 基本概念

Go gRPC 简介gRPC 是由 Google 开源的基于 HTTP/2 协议的开源远程过程调用(RPC)框架,使用 Protocol Buffers 序列化协议。相比于传统的 HTTP+JSON 的通信方式,gRPC 更轻量、更快速,拥有更多的优点。Go gRPC ...

go语言map转结构体

方式一、通过mapstructure.Decode()方法 可以通过github.com/mitchellh/mapstructure包的mapstructure.Decode(map[string]interface,*struct)方法将map转换成结构体,该方法的参数有两个,第一个参数是要转换的m...

golang 反向代理 Gin框架反向代理

概念: 反向代理是什么?有个很棒的说法是流量转发。服务端获取到客户端来的请求,将它发往另一个服务器,从另外一个服务器那里获取到响应再回给原先的客户端。反向的意义简单来说在于这个代理自身决定了何时...

Go语言执行cmd命令库

Go语言执行cmd命令库 有时候我们需要通过代码的方式去执行 linux 命令,那么 os/exec 这个系统库刚好提供了相应的功能。 Golang语言中提供了一个 os/exec 包,它提供了一组函数和结构,用于调用外部程序,这...

Go如何实现重试队列

什么是重试队列 重试队列(Retry Queue)是一种策略,主要用于处理网络请求失败的情况。当应用程序向服务器发出请求并且该请求失败时,该请求将被加入到重试队列中。然后应用程序会定时检查重试队列,对队列中...