随笔分类 -  Go每日一库

摘要:> 目前实现最优雅,打印堆栈良好的错误包。 # 下载安装 `go get -x github.com/pkg/errors` # 主要函数 ```go // 新生成一个错误, 带堆栈信息 func New(message string) error //只附加新的信息 func WithMessag 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(245) 评论(0) 推荐(0)
摘要:## 背景 随着微服务的流行,服务之间的调用可能变得越来越复杂,一个业务流程可能需要调用五六个甚至更多服务,这就会导致,假设某个服务出现问题,严重可能出现服务器负载过高,导致服务雪崩的现象。 因此为了防止此现象的发生,就需要考虑服务熔断机制,根据自身业务的需求,将其应用到服务中。 `什么是熔断`:可 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(195) 评论(0) 推荐(0)
摘要:限流又称为流量控制(流控),通常是指限制到达系统的并发请求数,常用的限流算法主要有漏洞和令牌桶。 ### 令牌桶 令牌桶其实和漏桶的原理类似,令牌桶按固定的速率往桶里放入令牌,并且只要能从桶里取出令牌就能通过,令牌桶支持突发流量的快速处理。 ![每日一库之105:juju%2Fratelimit-0 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(160) 评论(0) 推荐(0)
摘要:限流又称为流量控制(流控),通常是指限制到达系统的并发请求数,常用的限流算法主要有`漏洞`和`令牌桶`。 ### 漏桶 漏桶法限流很好理解,假设我们有一个水桶按固定的速率向下方滴落一滴水,无论有多少请求,请求的速率有多大,都按照固定的速率流出,对应到系统中就是按照固定的速率处理请求。 ![每日一库之 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(106) 评论(0) 推荐(0)
摘要:JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下。 ## 什么是JWT? JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(143) 评论(0) 推荐(0)
摘要:[grpcurl](https://github.com/fullstorydev/grpcurl)是一个命令行工具,使用它可以在命令行中访问gRPC服务,就像使用curl访问http服务一样。 ## 准备 **在gRPC服务中注册reflection服务:** gRPC服务是使用Protobuf( 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(206) 评论(0) 推荐(0)
摘要:[go-wrk](https://github.com/tsliwowicz/go-wrk) 是一个用Go语言实现的轻量级的http基准测试工具,类似于[wrk](https://github.com/wg/wrk)(还有ab、siege),本文将简单介绍一下如何使用go-wrk实现接口的性能(压力 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(226) 评论(0) 推荐(0)
摘要:一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。 # Swagger介绍 `Swagger`是全球最大的`OpenAPI`规范(OAS)API开发工具框架,支持从设计和文档到测试和部署的整个API生命周期的开发 `Swagger`是目 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(175) 评论(0) 推荐(0)
摘要:Go语言标准包里面没有提供对WebSocket的支持,但是在由官方维护的go.net子包中有对这个的支持,需要独立下载。 **Go websocket package 下载地址:** `http://code.google.com/p/go.net/websocket ` **Go get 命令下载 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(259) 评论(0) 推荐(0)
摘要:grpc的中间件以及中间件库有很多,[go-grpc-middleware](https://github.com/grpc-ecosystem/go-grpc-middleware)应该是其中应用最广泛,本文主要介绍其中的grpc_zap、grpc_auth和grpc_recovery中间件。 # 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(339) 评论(0) 推荐(0)
摘要:### 介绍 在 Golang 这门语言中,目前数据可视化的第三方库还是特别少,go-echarts的开发就是为了填补这部分的空隙。Echarts是百度开源的非常优秀的可视化图表库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。也有其他语言为其实现了相应语言版本的接口,如 Python 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(370) 评论(0) 推荐(0)
摘要:## chromedp是什么? [chromedp](https://github.com/chromedp/chromedp)是一个更快、更简单的Golang库用于调用支持Chrome DevTools协议的浏览器,同时不需要额外的依赖(例如Selenium和PhantomJS) > Chrome 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(2487) 评论(0) 推荐(0)
摘要:## 1. 什么是Phantomjs [PhantomJS](https://phantomjs.org/)是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何您可以在基于webkit浏览器做 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(268) 评论(0) 推荐(0)
摘要:Go语言HttpRequest项目源码地址: [https://github.com/kirinlabs/HttpRequest](https://github.com/kirinlabs/HttpRequest) 主要实现功能 1. 支持常用的GET、POST、DELETE、PUT等 2. GET 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(387) 评论(0) 推荐(0)
摘要:## 1 Protocol Buffers 简介 protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的,占 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(316) 评论(0) 推荐(0)
摘要:## 1 mmap 简介 > In computing, mmap is a POSIX-compliant Unix system call that maps files or devices into memory. It is a method of memory-mapped file I 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(355) 评论(0) 推荐(0)
摘要:## 1 为什么需要 Context WaitGroup 和信道(channel)是常见的 2 种并发控制的方式。 如果并发启动了多个子协程,需要等待所有的子协程完成任务,WaitGroup 非常适合于这类场景,例如下面的例子: ```go var wg sync.WaitGroup func do 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(99) 评论(0) 推荐(0)
摘要:## 1 gomock 简介 testing包里 介绍了 Go 语言中单元测试的常用方法,包括子测试(subtests)、表格驱动测试(table-driven tests)、帮助函数(helpers)、网络测试和基准测试(Benchmark)等。这篇文章介绍一种新的测试方法,mock/stub 测 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(310) 评论(0) 推荐(0)
摘要:## [gops](https://github.com/google/gops) (Go Process Status)是Go团队提供的命令行工具,它可以用来获取go进程运行时信息。 可以查看: - 当前有哪些go语言进程,哪些使用gops的go进程 - 进程的概要信息 - 进程的调用栈 - 进程 阅读全文
posted @ 2023-09-29 20:56 larkwins 阅读(439) 评论(0) 推荐(0)
摘要:## 概述 一个项目中除设计之外,代码质量是一个项目成功与健壮的基础,再好的设计但是实现代码混乱,风格混杂,明显性错误百出,我们仍然会认为这是一个失败的项目;相反,即使一个项目在架构和设计上无新奇之处,但代码实现质量高,例如风格统一,测试完善,接口明确,无冗余代码,实现中无明显错误或不安全用法,圈复 阅读全文
posted @ 2023-09-29 20:55 larkwins 阅读(142) 评论(0) 推荐(0)