03 2021 档案

摘要:JWT 生成JWT和解析JWT 我们在这里直接使用jwt-go这个库来实现我们生成JWT和解析JWT的功能。 定义需求 我们需要定制自己的需求来决定JWT中保存哪些数据,比如我们规定在JWT中要存储username信息,那么我们就定义一个MyClaims结构体如下: // MyClaims 自定义声 阅读全文
posted @ 2021-03-31 21:35 小子,你摊上事了 阅读(216) 评论(0) 推荐(0)
摘要:为什么需要实时加载? 之前使用Python编写Web项目的时候,常见的Flask或Django框架都是支持实时加载的,你修改了项目代码之后,程序能够自动重新加载并执行(live-reload),这在日常的开发阶段是十分方便的。 在使用Go语言的gin框架在本地做开发调试的时候,经常需要在变更代码之后 阅读全文
posted @ 2021-03-31 21:34 小子,你摊上事了 阅读(97) 评论(0) 推荐(0)
摘要:基本的序列化 首先我们来看一下Go语言中json.Marshal()(系列化)与json.Unmarshal(反序列化)的基本用法。 type Person struct { Name string Age int64 Weight float64 } func main() { p1 := Per 阅读全文
posted @ 2021-03-31 21:33 小子,你摊上事了 阅读(110) 评论(0) 推荐(0)
摘要:validator库参数校验若干实用技巧 在web开发中一个不可避免的环节就是对请求参数进行校验,通常我们会在代码中定义与请求参数相对应的模型(结构体),借助模型绑定快捷地解析请求中的参数,例如 gin 框架中的Bind和ShouldBind系列方法。本文就以 gin 框架的请求参数校验为例,介绍一 阅读全文
posted @ 2021-03-31 21:32 小子,你摊上事了 阅读(497) 评论(0) 推荐(0)
摘要:使用结构体变量保存配置信息 package main import ( "context" "fmt" "github.com/spf13/viper" "go.uber.org/zap" "log" "net/http" "os" "os/signal" "syscall" "time" "web 阅读全文
posted @ 2021-03-31 21:30 小子,你摊上事了 阅读(219) 评论(0) 推荐(0)
摘要:优雅地关机或重启 2020年3月18日 | Golang 本文总阅读量5357次 我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢? 阅读本 阅读全文
posted @ 2021-03-31 21:29 小子,你摊上事了 阅读(171) 评论(0) 推荐(0)
摘要:在项目中我们通常可能会使用database/sql连接MySQL数据库。本文借助使用sqlx实现批量插入数据的例子,介绍了sqlx中可能被你忽视了的sqlx.In和DB.NamedExec方法。 sqlx介绍 在项目中我们通常可能会使用database/sql连接MySQL数据库。sqlx可以认为是 阅读全文
posted @ 2021-03-31 21:28 小子,你摊上事了 阅读(615) 评论(0) 推荐(0)
摘要:Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。 Redis支持的数 阅读全文
posted @ 2021-03-31 21:27 小子,你摊上事了 阅读(143) 评论(0) 推荐(0)
摘要:Viper Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 鉴于viper库本身的README已经写得十分详细,这里就将其翻译成中文,并在最后附上两个项目中使用viper的示例代码以供参考。 安装 go get github.c 阅读全文
posted @ 2021-03-31 21:26 小子,你摊上事了 阅读(736) 评论(0) 推荐(0)
摘要:zap日志 Go Logger的优势和劣势 优势 它最大的优点是使用非常简单。我们可以设置任何io.Writer作为日志记录输出并向其发送要写入的日志。 劣势 仅限基本的日志级别 只有一个Print选项。不支持INFO/DEBUG等多个级别。 对于错误日志,它有 Fatal 和 Panic Fata 阅读全文
posted @ 2021-03-31 21:24 小子,你摊上事了 阅读(114) 评论(0) 推荐(0)
摘要:mysql 安装 go get -u github.com/jinzhu/gorm 基本示例 package main import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) //数据表 阅读全文
posted @ 2021-03-31 21:23 小子,你摊上事了 阅读(20) 评论(0) 推荐(0)
摘要:gin中间件 全局 package main import ( "fmt" "github.com/gin-gonic/gin" "net/http" "time" ) func userFunc(context *gin.Context) { fmt.Println("userFunc函数") c 阅读全文
posted @ 2021-03-31 21:22 小子,你摊上事了 阅读(108) 评论(0) 推荐(0)
摘要:返回json import ( "github.com/gin-gonic/gin" "net/http" ) func main() { r := gin.Default() r.GET("/json", func(context *gin.Context) { //使用map //data := 阅读全文
posted @ 2021-03-31 21:20 小子,你摊上事了 阅读(111) 评论(0) 推荐(0)
摘要:go 连接redis 下载: go get github.com/garyburd/redigo/redis 操作string package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { conn, e 阅读全文
posted @ 2021-03-31 21:19 小子,你摊上事了 阅读(302) 评论(3) 推荐(0)