08 2022 档案
摘要:双token刷新、续期,access_token和refresh_token实效如何设置 背景 token 认证,生成的 token 过一段时间就会失效(不要故意把时间设的很长,这样不安全,token 变的毫无意义)用户需要重新登录获取 token。用户经常使用客户端,使用的过程中由于 token
阅读全文
摘要:使用zap接收gin框架默认的日志并配置日志归档 gin默认的中间件 本文介绍了在基于 gin 框架开发的项目中如何配置并使用 zap 来接收并记录 gin 框架默认的日志和如何配置日志归档 func main() { r := gin.Default() r.GET("/hello", func(
阅读全文
摘要:在Go语言项目中使用Zap日志库 本文先介绍了Go语言原生的日志库的使用,然后详细介绍了非常流行的Uber开源的zap日志库,同时介绍了如何搭配Lumberjack实现日志的切割和归档。 在Go语言项目中使用Zap日志库 介绍 在许多 Go 语言项目中,我们需要一个好的日志记录器能够提供下面这些功能
阅读全文
摘要:Cookie和Session Cookie 和 Session 是 Web 开发绕不开的一个环节,本文介绍 Cookie 和 Session 的原理以及在Go 语言中如何操作 1 Cookie 浏览器发送请求的时候,自动把携带该站点之前存储的Cookie信息。 2.服务端可以设置Cookie数据。
阅读全文
摘要:1、继承的赋值【同一个包下】 //1.定义父类 type Person struct { name string age int } //2定义子类 type Student struct { Person //模拟继承结构 school string //子类的新增属性 }s1.Person.na
阅读全文
摘要:Gin框架介绍 Go世界里最流行的Web框架,Github上有32K+star。 基于httprouter开发的Web框架。 中文文档齐全,简单易用的轻量级框架。 Gin框架安装与使用 安装 go get -u github.com/gin-gonic/gin 第一个Gin示例: package m
阅读全文
摘要:1、定义变量 局部变量、全局变量 使用 关键字 var 定义变量,自动初始化为 0 值。 # 方式一 : func variable() { var a int var s string } # 方式二 : func variableInitialValue() { var a, b int = 3
阅读全文
摘要:sqlx 介绍 sqlx可以认为是Go语言内置database/sql的超集,它在优秀的内置database/sql基础上提供了一组扩展。这些扩展中除了大家常用来查询的Get(dest interface{}, ...) error和Select(dest interface{}, ...) err
阅读全文
摘要:一、标记之前特殊符号说明 逗号(,):把多个验证标记分开。注意逗号之间不能有空格 横线(-):该字段不验证,跳过 竖线(|):使用多个验证标记,但是只需要满足其中一个即可 required: 表示改字段必须设置,并且不能作为默认值 omitempty: 如果字段未设置,则忽略它 omitempty,
阅读全文
摘要:这里还没有开始弄 :/Users/mac/工作/goland/github/mongo-go-examples func TestTransactionCommit(t *testing.T) { var err error var client *mongo.Client var collecti
阅读全文
摘要:1 Viper 是适用于 Go 应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 2 安装 go get github.com/spf13/viper 3 了解 Viper viper 被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。
阅读全文
摘要:0、结构体 type Student struct { // _id 不用带入 Name string Age int } 1、连接 驱动 :github.com/mongodb/mongo-go-driver 1、普通连接 client , err := mongo.Connect( contex
阅读全文
摘要:本文来自于 github.com/go-redis/redis/v9 的自带的测试代码 commands_test 1、Append(ctx context.Context, key, value string) // 如果不存在 key ,就将 key value 插入到 redis 中// 如果
阅读全文
摘要:本文来自于 github.com/go-redis/redis/v9 的自带的测试代码 commands_test 2、scanning 1、Scan(ctx context.Context, cursor uint64, match string, count int64) 查询 key ctx
阅读全文
摘要:本文来自于 github.com/go-redis/redis/v9 的自带的测试代码 commands_test 1、keys 1. 删除 Del(ctx context.Context, keys ...string) 返回删除个数 // 删除 Del,使用 del 删除 大key 会造成长时间
阅读全文
摘要:github 地址 : https://github.com/lijiesheng/rabbitmq/tree/simple simple 模式 分支1 :simple-data-lose 没有引入应答机制,只要消费者关闭,队列中的数据就会丢失。服务器重启,数据也会丢失。 分支2 :simple 引
阅读全文
摘要:一、交换器声明方法参数说明 func (ch *Channel) ExchangeDeclare(name, kind string, durable, autoDelete, internal, noWait bool, args Table) error 参数 name : 交换器的名称 参数
阅读全文
摘要:本文从服务端页面上实现各种模式 1 fanout 模式 step 1 : 创建3个持久化队列 Queue1 、Queue2 和 Queue3 step 2 : 创建交换机 exchangeFanout 类型是 Fanuout step 3 : 交换器和队列绑定 step 4 : 发送消息 【在交换器
阅读全文
摘要:本文来自 https://www.tizi365.com/course/2.html 11 如果确保消息不丢失 确保消息不丢失,首先是消息的持久化,消息 ACK 机制,RabbitMQ 集群模式 RabbitMQ主要是通过持久化机制,确保消息不丢失。RabbitMQ 持久化分为队列持久化,消息持久化
阅读全文
摘要:延迟队列 1 延迟队列的概念 延迟队列内部是有序的,延时队列中的元素是可以在指定时间到了之后取出和处理 2 延迟队列使用场景 订单在十分钟之内未支付,自动取消 新创建的店铺,如果在十天内没有上传过商品,则自动发送消息提醒 用户组成成功后,如果三天没有登陆,进行短信提醒 用户发起退款,如果三天内没有得
阅读全文
摘要:1.引言 1.1 什么是MQ MQ (Message Quene): 翻译为消息队列,通过典型的 生产者 和 消资者 模型,生产者不断向消息队列中生产消息,消费者不断的从队列中获取消息。因为消息的生产和消费都是异步的,而且只关心消息的发送和接收 没有业务逻辑的侵入,轻松的实现系统间解辑。别名为 消息
阅读全文
摘要:1. 管理界面 1.1 总览 1.2 连接 1.3 通道 1.4 交换机 1.5 队列 1.6 用户 2 简单理解AMQP协议
阅读全文
摘要:1. mysql 连接配置 1、最大连接数为 1 2、最大空闲连接数 1 2. 当有查询连接一直没有释放,再来一个连接查询,程序会一直阻塞 func queryDemo() { sqlStr := "select user_id, username, sex, email,prices from p
阅读全文