04 2023 档案
gRPC
摘要:gRPC 微服务 单体缺点 一旦某个服务宕机,会引起整个应用不可用,隔离性差 只能整体进行伸缩,浪费资源,课伸缩性差 代码耦合在一起,可维护性差 微服务 代码冗余 服务之间存在调用 代码冗余解决 由于为了保持对外提供服务的一致性,引入了网关的概念,由网关根据不同的请求,将其转发到不同的服务(路由功能
阅读全文
Air
摘要:Air 使用Air实现Go程序实时热重载 发布于2020/03/17 ,更新于2020/03/17 22:15:11 | Golang |总阅读量:13297次 今天我们要介绍一个神器——Air能够实时监听项目的代码文件,在代码发生变更之后自动重新编译并执行,大大提高gin框架项目的开发效率。 为什
阅读全文
优雅连接
摘要:优雅连接 什么是优雅关机? 优雅关机就是服务端关机命令发出后不是立即关机,而是等待当前还在处理的请求全部处理完毕后再退出程序,是一种对客户端友好的关机方式。而执行Ctrl+C关闭服务端时,会强制结束进程导致正在访问的请求出现问题。 如何实现优雅关机? Go 1.8版本之后, http.Server
阅读全文
zap
摘要:Zap日志库 开发 dubug、InFo、warning、error 介绍 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 能够将事件记录到文件中,而不是应用程序控制台。 日志切割-能够根据文件大小、时间或间隔等来切割日志文件。 支持不同的日志级别。例如INFO,DEBUG,
阅读全文
viper
摘要:Viper Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 鉴于viper库本身的README已经写得十分详细,这里就将其翻译成中文,并在最后附上两个项目中使用viper的示例代码以供参考。 安装 go get github.c
阅读全文
validator
摘要:// InitTrans 初始化翻译器 func InitTrans(locale string) (err error) { // ...liwenzhou.com... // 注册翻译器 switch locale { case "en": err = enTranslations.Regist
阅读全文
swagger
摘要:swagger 有时候一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。 swagger生成接口文档 swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源
阅读全文
mysql和redis测试
摘要:Go单测从零到溜系列2—MySQL和Redis测试 发布于2021/09/14 ,更新于2021/09/14 22:31:17 | Golang |总阅读量:480次 这是Go语言单元测试从零到溜系列教程的第2篇,介绍了如何使用go-sqlmock和miniredis工具进行MySQL和Redis的
阅读全文
Markfile
摘要:Makefile 为Go项目编写Makefile 发布于2020/07/26 ,更新于2020/07/26 19:55:02 | Golang |总阅读量:14368次 借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程。 make介绍 make
阅读全文
go-JWT
摘要:JWT Cookie-Session认证模式 在Web应用发展的初期,大部分采用的是基于Cookie-Session的会话管理模式 客户端使用用户名、密码进行认证 服务端验证用户名、密码正确后生成并存储在Session中,将SessionID用过Cookie返回给客户端 客户端访问需要认证的接口时在
阅读全文
Go-Redis使用
摘要:Redis 在项目开发中redis的使用也比较频繁,本文介绍了Go语言中go-redis库的基本使用。 Redis介绍 Redis是一个开源的内存数据库,Redis提供了多种不同类型的数据结构,很多业务场景下的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,我们
阅读全文
Go语言基础语法(五)
摘要:GoLand(五)-标准库 Json操作 JSON序列化 type class struct { Title string Students []Student } //...创建class --赋值 { //JSON序列化: data, err:= json.Marshal(变量名) if err
阅读全文
Go基础语法(四)
摘要:GO(四) 面向对象 匿名字段 go支持只提供类型而不写字段名的方式,也就是匿名字段,也称为嵌入字段 package main import "fmt" // go支持只提供类型而不写字段名的方式,也就是匿名字段,也称为嵌入字段 //人 type Person struct { name stri
阅读全文
Go基础语法(三)
摘要:GO(三) Go语言切片(Slice) slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 Go 语言切片是对数组的抽象。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片
阅读全文
Go基础语法(二)
摘要:Go基础(二) Go语言指针 区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。 要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。 什么是指针 一个指针变量指向了一个值的内存地址。 类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下: v
阅读全文
Go基础语法(一)
摘要:GO(一) go mod init test go mod tidy 快速生成代码片段 pkgm main包+main主函数 ff fmt.Printf("",var) for for i:=0;i<count;i++{} fmain func main(){} a.print! fmt.Print
阅读全文
Gin源码分析
摘要:Gin源码 gin框架源码解析 发布于2020/06/08 ,更新于2020/06/08 21:30:06 | Golang |总阅读量:422次 通过阅读gin框架的源码来探究gin框架路由与中间件的秘密。 gin框架路由详解 gin框架使用的是定制版本的httprouter,其路由的原理是大量使
阅读全文
Gin框架
摘要:Gin 环境:https://goproxy.cn,driect github.com/gin-gonic/gin 介绍 Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 如果
阅读全文