随笔分类 -  Gin框架

摘要:部署Go语言项目的 N 种方法 本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。 一、部署Go语言项目 本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。 独立部署 Go 语言支持跨平台交叉编译 阅读全文
posted @ 2022-02-13 17:32 RandySun 阅读(233) 评论(0) 推荐(0)
摘要:如何使用Docker部署Go Web应用 本文介绍了如何使用Docker以及Docker Compose部署我们的 Go Web 程序。 一、为什么需要Docker? 使用docker的主要目标是容器化。也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机。 想象一下你是否也会遇到下面这个场景 阅读全文
posted @ 2022-02-13 17:30 RandySun 阅读(108) 评论(0) 推荐(0)
摘要:Go性能调优 在计算机性能调试领域里,profiling 是指对应用程序的画像,画像就是应用程序使用 CPU 和内存的情况。 Go语言是一个对性能特别看重的语言,因此语言中自带了 profiling 的库,这篇文章就要讲解怎么在 golang 中做 profiling。 Go语言项目中的性能优化主要 阅读全文
posted @ 2022-02-13 17:27 RandySun 阅读(376) 评论(0) 推荐(0)
摘要:常用限流策略——漏桶与令牌桶介绍 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数,本文列举了常见的限流策略,并以gin框架为例演示了如何为项目添加限流组件。 一、限流 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数。 我们生活中也会经常遇到限流的场景,比如:某景区限制每日 阅读全文
posted @ 2022-02-13 17:24 RandySun 阅读(457) 评论(0) 推荐(0)
摘要:常用的HTTP服务压测工具介绍 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资源成本。 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏 阅读全文
posted @ 2022-02-13 17:22 RandySun 阅读(1184) 评论(0) 推荐(0)
摘要:swagger生成接口文档 有时候一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。 一、swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起 阅读全文
posted @ 2022-02-13 17:21 RandySun 阅读(5612) 评论(0) 推荐(0)
摘要:使用Air实现Go程序实时热重载 今天我们要介绍一个神器——Air能够实时监听项目的代码文件,在代码发生变更之后自动重新编译并执行,大大提高gin框架项目的开发效率。 一、为什么需要实时加载? 之前使用Python编写Web项目的时候,常见的Flask或Django框架都是支持实时加载的,你修改了项 阅读全文
posted @ 2022-02-13 17:19 RandySun 阅读(134) 评论(0) 推荐(0)
摘要:为Go项目编写Makefile 借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程。 一、make介绍 make是一个构建自动化工具,会在当前目录下寻找Makefile或makefile文件。如果存在相应的文件,它就会依据其中定义好的规则完成构建 阅读全文
posted @ 2022-02-13 15:55 RandySun 阅读(218) 评论(0) 推荐(0)
摘要:在gin框架中使用JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下。 一、什么是JWT? JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它 阅读全文
posted @ 2022-02-13 15:53 RandySun 阅读(527) 评论(0) 推荐(0)
摘要:validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息、自定义提示信息的字段名称、自定义校验方法等。 在web开发中一个不可避免的环节就是对请求参数进行校验,通常我们会在代码中定义与请求参数相对应的模型(结构体),借助 阅读全文
posted @ 2022-02-13 15:52 RandySun 阅读(354) 评论(0) 推荐(0)
摘要:分布式ID生成器 package snowflake /* @author RandySun @create 2022-01-12-8:16 */ import ( "fmt" "time" "github.com/bwmarrin/snowflake" ) var node *snowflake. 阅读全文
posted @ 2022-02-13 15:44 RandySun 阅读(126) 评论(0) 推荐(0)
摘要:优雅地关机或重启 我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢? 阅读本文需要了解一些UNIX系统中信号的概念,请提前查阅资料预习。 一 阅读全文
posted @ 2022-02-13 15:42 RandySun 阅读(264) 评论(0) 推荐(0)
摘要:Go语言Viper配置管理神器 Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 一、Viper Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 鉴于vipe 阅读全文
posted @ 2022-02-13 15:40 RandySun 阅读(830) 评论(0) 推荐(0)
摘要:goimports配置 一、win https://golang.org/doc/go-get-install-deprecation go get golang.org/x/tools/cmd/goimports 使用 goimports检测代码有2种方式(如果下面不加 -w 仅打印修正impor 阅读全文
posted @ 2022-01-24 23:40 RandySun 阅读(1238) 评论(0) 推荐(0)
摘要:使用zap接收gin框架默认的日志并配置日志归档 基于gin框架开发的项目中如何配置并使用zap来接收并记录gin框架默认的日志和如何配置日志归档。 我们在基于gin框架开发项目时通常都会选择使用专业的日志库来记录项目中的日志,go语言常用的日志库有zap、logrus等。网上也有很多类似的教程 但 阅读全文
posted @ 2022-01-24 23:36 RandySun 阅读(672) 评论(0) 推荐(0)
摘要:gin框架中间件详解 gin框架涉及中间件相关有4个常用的方法,它们分别是c.Next()、c.Abort()、c.Set()、c.Get()。 一、中间件的注册 gin框架中的中间件设计很巧妙,我们可以首先从我们最常用的r := gin.Default()的Default函数开始看,它内部构造一个 阅读全文
posted @ 2022-01-24 23:27 RandySun 阅读(829) 评论(0) 推荐(0)
摘要:gin框架路由理论 gin框架使用的是定制版本的httprouter,其路由的原理是大量使用公共前缀的树结构,它基本上是一个紧凑的Trie tree(或者只是Radix Tree)。具有公共前缀的节点也共享一个公共父节点。 一、Radix Tree 基数树(Radix Tree)又称为PAT位树(P 阅读全文
posted @ 2022-01-24 23:23 RandySun 阅读(1741) 评论(0) 推荐(1)
摘要:Gin框架进阶 第一篇 Gin进阶 [01] Gin框架路由底层实现 [02] Gin框架中间件详解 [03] 在Go语言项目中使用Zap日志库 [04] Gin框架使用Zap日志库 [05] goimports配置 [06] Go语言配置管理神器之Viper [07] 优雅地关机或重启 [08] 阅读全文
posted @ 2022-01-24 23:20 RandySun 阅读(422) 评论(0) 推荐(0)
摘要:GORM高级查询 一、智能选择字段 GORM 允许通过 Select 方法选择特定的字段,如果您在应用程序中经常使用此功能,你也可以定义一个较小的结构体,以实现调用 API 时自动选择特定的字段,例如: type CreditCard struct { gorm.Model Number strin 阅读全文
posted @ 2021-12-08 22:37 RandySun 阅读(3141) 评论(0) 推荐(0)
摘要:bubble清单 一个基于gin+gorm开发的练手小项目,通过该项目可初识go web开发该有的姿势。 前端页面基于vue和ElementUI开发,对前端不熟悉的童鞋可直接下载templates和static文件夹下的内容使用。 使用指南 下载 git clone https://github.c 阅读全文
posted @ 2021-11-30 23:11 RandySun 阅读(138) 评论(0) 推荐(0)