1 为什么需要 Context WaitGroup 和信道(channel)是常见的 2 种并发控制的方式。 如果并发启动了多个子协程,需要等待所有的子协程完成任务,WaitGroup 非常适合于这类场景,例如下面的例子: var wg sy...
go
Go RPC & TLS 鉴权简明教程
本文介绍了 Go 语言远程过程调用(Remote Procedure Call, RPC)的使用方式,示例基于 Golang 标准库 net/rpc,同时介绍了如何基于 TLS/SSL 实现服务器端和客户端的单向鉴权、双向鉴权。 1 RPC 简介 远程过程调...
golang 的testing.T 和 testing.M 的区别
testing.T 是普通测试包 : func TestUser(t *testing.T){ fmt.Println("main 测试") t.Run("开始测试第一个子测试函数:", testAddUser) } func testAddUser(t *testing.T){ fmt.Println("...
Go语言Test功能测试函数详解
Go语言的 testing 包提供了三种测试方式,分别是单元(功能)测试、性能(压力)测试和覆盖率测试。 单元(功能)测试 在同一文件夹下创建两个Go语言文件,分别命名为 demo.go 和 demt_test.go,如下图所示:...
go 使用 Protobuf
Protobuf核心的工具集是C++语言开发的,在官方的protoc编译器中并不支持Go语言。要想基于上面的hello.proto文件生成相应的Go代码,需要安装相应的插件。首先是安装官方的protoc工具,可以从 https://github.com/g...
go grpc 使用案例
1.创建 .proto文件 syntax = "proto3"; option go_package="/proto"; package Business; service Hello { rpc Say (SayRequest) returns (SayResponse); } message SayResponse { bytes Re...
密码保护:Go语言:gRPC调用进阶
在上节课内容中,我们学习了使用gRPC框架实现服务的调用编程。在gRPC框架中,诸如上节课我们学习的在客户端与服务端之间通过消息结构体定义的方式来传递数据,我们称之为“单项RPC”,也称之为简单模式。除此之外,...
Go语言:gRPC框架使用实现gRPC编程
本节课通过编程实现gRPC编程。 定义服务 我们想要实现的是通过gRPC框架进行远程服务调用,首先第一步应该是要有服务。利用之前所掌握的内容,gRPC框架支持对服务的定义和生成。gRPC框架默认使用protocol buff...
GORM—物理删除,软删除
如果有DeletedAt *time.Time sql:"index",其实是软删除 删除记录 删除记录时,请确保主键字段有值,GORM 会通过主键去删除记录,如果主键为空,GORM 会删除该 model 的所有记录。 // 删除现有记录 db....
golang gin 框架实现 oauth2
1. 获取依赖包 go get github.com/gin-gonic/gin go get gopkg.in/oauth2.v3 go get github.com/google/uuid 2. 项目结构和源码 项目地址 3. 主要文件说明 main.go package main import ( "...