随笔分类 -  Go

摘要:常用限流策略——漏桶与令牌桶介绍 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数,本文列举了常见的限流策略,并以gin框架为例演示了如何为项目添加限流组件。 限流 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数。 我们生活中也会经常遇到限流的场景,比如:某景区限制每日进入 阅读全文
posted @ 2021-09-06 16:27 小学弟- 阅读(533) 评论(0) 推荐(0) 编辑
摘要:常用的HTTP服务压测工具介绍 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好的匹配项目的实际需求,节约资源成本。 HTTP服务压力测试工具 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的 阅读全文
posted @ 2021-09-06 16:22 小学弟- 阅读(521) 评论(0) 推荐(0) 编辑
摘要:使用swagger生成接口文档 有时候一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。 swagger生成接口文档 swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swag 阅读全文
posted @ 2021-09-06 16:21 小学弟- 阅读(1431) 评论(0) 推荐(0) 编辑
摘要:validator库参数校验若干实用技巧 本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息、自定义提示信息的字段名称、自定义校验方法等。 validator库参数校验若干实用技巧 在web开发中一个不可避免的环节就是对请求参数进行校验,通常我们会在代码中 阅读全文
posted @ 2021-09-06 16:20 小学弟- 阅读(401) 评论(0) 推荐(0) 编辑
摘要:使用zap接收gin框架默认的日志并配置日志归档 本文介绍了在基于gin框架开发的项目中如何配置并使用zap来接收并记录gin框架默认的日志和如何配置日志归档。 我们在基于gin框架开发项目时通常都会选择使用专业的日志库来记录项目中的日志,go语言常用的日志库有zap、logrus等。网上也有很多类 阅读全文
posted @ 2021-08-24 17:53 小学弟- 阅读(181) 评论(0) 推荐(0) 编辑
摘要:windows 下载 grpc 一.安装protoc程序 protoc下载地址,打开链接,下载对应版本(我下载的是protoc-3.11.4-win64.zip),解压后将protoc.exe拷贝至放入到GOPATH/bin目录下。 二.安装grpc 由于google.golang.org/grpc 阅读全文
posted @ 2021-08-09 14:56 小学弟- 阅读(620) 评论(0) 推荐(0) 编辑
摘要:go语言json技巧 本文总结了在项目中遇到的那些关于go语言JSON数据与结构体之间相互转换的问题及解决办法。 基本的序列化 首先我们来看一下Go语言中json.Marshal()(系列化)与json.Unmarshal(反序列化)的基本用法。 type Person struct { Name 阅读全文
posted @ 2021-03-01 15:31 小学弟- 阅读(307) 评论(0) 推荐(0) 编辑
摘要:解决使用go get 下载模块下载超时的问题 解决使用go get 下载模块下载超时的问题 使用go env可以看到,默认的GOPROXY的值是https://proxy.golang.org, 而https://proxy.golang.org在国内无法访问. 如果您使用的 Go 版本是 1.13 阅读全文
posted @ 2021-02-27 14:47 小学弟- 阅读(912) 评论(0) 推荐(0) 编辑
摘要:为Go项目编写Makefile 借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程。 make介绍 make是一个构建自动化工具,会在当前目录下寻找Makefile或makefile文件。如果存在相应的文件,它就会依据其中定义好的规则完成构建任务 阅读全文
posted @ 2021-02-26 15:00 小学弟- 阅读(163) 评论(0) 推荐(0) 编辑
摘要:Go语言中的单例模式 在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言(Python、PHP、Ruby)转向Go语言的跨语言学习者。 Go语言太容易实现并发了,以至于它在很多地方被不正确的使用了。 Go语言中的单例模式 在过去的几年中,Go语言的发展是惊人的,并且吸引了很多由其他语言 阅读全文
posted @ 2021-02-26 14:58 小学弟- 阅读(409) 评论(0) 推荐(0) 编辑
摘要:Go语言设计模式之函数式选项模式 本文主要介绍了Go语言中函数式选项模式及该设计模式在实际编程中的应用。 为什么需要函数式选项模式? 最近看go-micro/options.go源码的时候,发现了一段关于服务注册的代码如下: type Options struct { Broker broker.B 阅读全文
posted @ 2021-02-26 14:57 小学弟- 阅读(250) 评论(0) 推荐(0) 编辑
摘要:如何使用Docker部署Go Web应用 本文介绍了如何使用Docker以及Docker Compose部署我们的 Go Web 程序。 为什么需要Docker? 使用docker的主要目标是容器化。也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机。 想象一下你是否也会遇到下面这个场景,你 阅读全文
posted @ 2021-02-26 14:11 小学弟- 阅读(223) 评论(0) 推荐(0) 编辑
摘要:Go语言配置管理神器——Viper中文教程 Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 Viper Viper是适用于Go应用程序的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。 鉴于 阅读全文
posted @ 2021-02-26 13:58 小学弟- 阅读(1021) 评论(0) 推荐(0) 编辑
摘要:优雅地关机或重启 我们编写的Web项目部署之后,经常会因为需要进行配置变更或功能迭代而重启服务,单纯的kill -9 pid的方式会强制关闭进程,这样就会导致服务端当前正在处理的请求失败,那有没有更优雅的方式来实现关机或重启呢? 阅读本文需要了解一些UNIX系统中信号的概念,请提前查阅资料预习。 优 阅读全文
posted @ 2021-02-24 10:21 小学弟- 阅读(156) 评论(0) 推荐(0) 编辑
摘要:结构体转map[string]interface{}的若干方法 本文介绍了Go语言中将结构体转成map[string]interface{}时你需要了解的“坑”,也有你需要知道的若干方法。 我们在Go语言中通常使用结构体来保存我们的数据,例如要存储用户信息,我们可能会定义如下结构体: // User 阅读全文
posted @ 2021-02-24 10:18 小学弟- 阅读(4764) 评论(0) 推荐(0) 编辑
摘要:使用Air实现Go程序实时热重载 今天我们要介绍一个神器——Air能够实时监听项目的代码文件,在代码发生变更之后自动重新编译并执行,大大提高gin框架项目的开发效率。 为什么需要实时加载? 之前使用Python编写Web项目的时候,常见的Flask或Django框架都是支持实时加载的,你修改了项目代 阅读全文
posted @ 2021-02-24 10:16 小学弟- 阅读(329) 评论(0) 推荐(0) 编辑
摘要:Go语言在select语句中实现优先级 Go语言在select语句中实现优先级 select语句介绍 Go 语言中的 select语句用于监控并选择一组case语句执行相应的代码。它看起来类似于switch语句,但是select语句中所有case中的表达式都必须是channel的发送或接收操作。一个 阅读全文
posted @ 2021-02-24 09:42 小学弟- 阅读(1014) 评论(1) 推荐(0) 编辑
摘要:Go实现日志收集系统4 到这一步,我的收集系统就已经完成很大一部分工作,我们重新看一下我们之前画的图: 我们已经完成前面的部分,剩下是要完成后半部分,将kafka中的数据扔到ElasticSearch,并且最终通过kibana展现出来 ElasticSearch 官网地址这里介绍了非常详细的安装方法 阅读全文
posted @ 2021-02-23 09:39 小学弟- 阅读(269) 评论(0) 推荐(0) 编辑
摘要:Go实现日志收集系统3 再次整理了一下这个日志收集系统的框,如下图 这次要实现的代码的整体逻辑为: 完整代码地址为: etcd介绍 高可用的分布式key-value存储,可以用于配置共享和服务发现 类似的项目:zookeeper和consul 开发语言:go 接口:提供restful的接口,使用简单 阅读全文
posted @ 2021-02-23 09:37 小学弟- 阅读(202) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示