摘要:
# 简介 使用 Markdown 书写结构化的文档和评论已经相当流行了,Web 服务需要将用户编写的 Markdown 文本转换为 html 以便浏览器渲染,还常常需要对 Markdown 语法进行自定义扩展以实现个性化的功能。 本期要介绍的 [**goldmark **](https://gith 阅读全文
posted @ 2023-09-29 21:16
larkwins
阅读(395)
评论(0)
推荐(0)
摘要:
本文主要介绍Go语言中的`singleflight`包,包括什么是`singleflight`以及如何使用singleflight合并请求解决缓存击穿问题。 [singleflight](https://pkg.go.dev/golang.org/x/sync/singleflight) 目前(Go 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(413)
评论(0)
推荐(0)
摘要:
## 介绍 我们在日常开发中,常常会对JSON进行序列化和反序列化。Golang提供了`encoding/json`包对JSON进行`Marshal/Unmarshal`操作。但是在大规模数据场景下,该包的性能和开销确实会有点不够看。在生产环境下,JSON 序列化和反序列化会被频繁的使用到。在测试中 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(2427)
评论(0)
推荐(1)
摘要:
# 一、开源项目简介 # Sagoo IOT SagooIOT是一个基于golang开发的轻量级的物联网平台。支持跨平台的物联网接入及管理方案,平台实现了物联网开发相关的基础功能,基于该功能可以快速的搭建起一整套的IOT相关的业务系统。 # 二、开源协议 使用Apache-2.0开源协议 # 三、界 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(1282)
评论(0)
推荐(1)
摘要:
## 项目链接 > [https://github.com/projectdiscovery/katana](https://github.com/projectdiscovery/katana) ## 项目简介 
评论(0)
推荐(0)
摘要:
项目地址:[https://github.com/tsenart/vegeta](https://github.com/tsenart/vegeta) > [https://mp.weixin.qq.com/s/J0PiqTifr_rs_S2CzMRoWg](https://mp.weixin.qq 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(52)
评论(0)
推荐(0)
摘要:
# ◆ 一、开源项目简介 
评论(0)
推荐(0)
摘要:
来自公司 sourcegraph 的 [**conc**](https://github.com/sourcegraph/conc)** (**[**https://github.com/sourcegraph/conc**](https://github.com/sourcegraph/conc, 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(401)
评论(0)
推荐(0)
摘要:
> fastcache 是一个线程安全并且支持大量数据存储的高性能缓存组件库。 这是官方 `Github` 主页上的项目介绍,和 `fasthttp` 名字一样以 `fast` 打头,作者对项目代码的自信程度可见一斑。此外该库的核心代码非常轻量, 笔者本着学习的目的分析下内部的代码实现。 ## 基准 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(288)
评论(0)
推荐(0)
摘要:
该包的实现是基于标准库os/env包中的相关函数(比如Getenv)来获取系统的环境变量的。获取到环境变量值后,再通过结构体中的tag,将值映射到对应的结构体字段上。 ### 使用示例 下面是将系统的一些环境变量映射到config结构体的示例。如下: 我们可以像以下这样运行该代码: ```shell 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(161)
评论(0)
推荐(0)
摘要:
该库提供了一种简单、高效、可靠的方式来控制Chrome浏览器进行自动化测试和爬取数据。 项目地址:[https://github.com/chromedp/chromedp](https://github.com/chromedp/chromedp) **它可以模拟用户在浏览器中执行各种操作**,* 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(951)
评论(0)
推荐(0)
摘要:
filetype(https://github.com/h2non/filetype)是一个 Go 语言的第三方库,可以根据文件的魔数(magic numbers)签名来推断文件的类型和 MIME 类型。它支持多种常见的文件类型,包括图片、视频、音频、文档、压缩包等。它还提供了一些便捷的函数和类型匹 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(450)
评论(0)
推荐(0)
摘要:
`goexpr`是一个`golang`实现的通用`表达式引擎(expression engine)`,支持自定义`操作数(operand)`,`操作符(operator)`以及`函数(function)`。 [体验地址](https://git.woa.com/goexpr/goexpr) ## 1 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(747)
评论(0)
推荐(0)
摘要:
## 简介 `Delve` 用来调试 `Go` 语言开发的程序,该工具的目标是为 `Go` 语言提供一个简单、功能齐全的调试工具。 ## 为什么不推荐 gdb - • gdb 对 Go 的调试支持是通过一个 python 脚本文件 `src/runtime/runtime-gdb.py` 扩展的,功 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(401)
评论(0)
推荐(0)
摘要:
在Go语言中,对slice和map是我们最常用的数据结构。比如,计算两个切片的交集、差集;判断切片中的元素是否都满足某个条件的等。我推荐大家使用这个包:`[elliotchance/pie](https://github.com/elliotchance/pie)`。 该包封装了**对切片和map的 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(238)
评论(0)
推荐(0)
摘要:
## 简介 受python提示工具包的启发,在Go中构建强大的交互式提示 ## 一、代码示例 ```go package main import ( "fmt" "github.com/c-bata/go-prompt" ) func completer(d prompt.Document) []p 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(410)
评论(0)
推荐(0)
摘要:
**使用Go语言编程时,生成任意内容的二维码是非常方便的,可以使用 go-qrcode 这个库快速生成二维码**。大家可以从 github 上(https://github.com/skip2/go-qrcode)下载并使用这个库。要是下载不下来的挂个代理就可。 上代码 ```go package 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(295)
评论(0)
推荐(0)
摘要:
## 一、User-Agent是什么 User-Agent叫做用户代理,是HTTP协议中请求头中的一个字段值。通过该字段值可以告诉网站服务器用户使用的什么产品发送的http请求。该信息一般发送请求的产品名称、操作系统、版本号等信息。大家熟知的浏览器其实就是所谓的一种用户代理。 通过谷歌的chrome 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(328)
评论(0)
推荐(0)
摘要:
一个轻量级、语义化、对开发者友好的 golang 编码解码、加密解密库。 ## 安装使用 ```go // 使用 github 库 go get -u github.com/golang-module/dongle import ( "github.com/golang-module/dongle" 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(188)
评论(0)
推荐(0)
摘要:
今天给大家推荐的是基于redis的Go版本的分布式锁工具:[redsync]()。该工具也是redis官网上推荐的。redsync 基于redis的高可用、高性能、防死锁、防误删的分布式锁实现,具有高性能、高可用、防死锁、防误删的特点。 ## 一、分布式锁基础知识 **什么是分布式锁** 锁,在编程 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(950)
评论(0)
推荐(0)
摘要:
大家在使用微信或钉钉聊天时,一定使用过表情符号。今天就给大家介绍一个能够在终端上显示emoji表情符号的包:[emoji](https://github.com/kyokomi/emoji)。 **实现原理:**emoji表情符号实际上就是在unicode编码表中有定义的一个编码。通过将符号的文字表 阅读全文
posted @ 2023-09-29 21:07
larkwins
阅读(242)
评论(0)
推荐(0)
摘要:
1. MinIO 简介 MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议,项目地址是 https://github.com/minio/minio,官网是 https://min.io。 它适合存储海量的非结构化的数据,例如说图片、音频 阅读全文
posted @ 2023-09-29 21:03
larkwins
阅读(587)
评论(0)
推荐(1)
摘要:
## 概要 [bbs-go](https://github.com/mlogclub/bbs-go) 是一款基于Go语言研发的`开源`、`前后端分离`、`精美小巧`、`跨平台`的社区系统。初期该项目仅用过学习和交流,开源之后越来越多的小伙伴儿开始喜欢和关注他,这也是我长期升级和维护的动力。 bbs- 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(295)
评论(0)
推荐(0)
摘要:
# 推荐理由 互联网的兴起带动了直播行业的火热,除了少数直播网站有自己的推流工具之外,OBS是主流的推流工具,广泛应用在直转播技术之上。 # 简介 [go-obs-websocket](https://github.com/christopher-dG/go-obs-websocket)是一个与OB 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(358)
评论(0)
推荐(0)
摘要:
## 前言 在 go-zero 社区里,经常会有同学问,把 `API gateway` 和 `RPC service` 放在同一个进程内可不可以?怎么弄?有时也会有同学把对外服务和消费队列放在一个进程内。咱们姑且不说此种用法合理与否,因为各个公司的业务场景和开发模式的差异,我们就只来看看此类问题怎么 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(134)
评论(0)
推荐(0)
摘要:
与 [go-bindata](https://www.yuque.com/startisan/go-daily-lib/cxtq2d) 类似,[esc](https://github.com/mjibson/esc) 同样提供了将静态文件转换为go源码并暴露了类似于http.FileSystem的A 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(60)
评论(0)
推荐(0)
摘要:
使用 Go 开发应用的时候,有时会遇到需要读取静态资源的情况。比如开发 Web 应用,程序需要加载模板文件生成输出的 HTML。在程序部署的时候,除了发布应用可执行文件外,还需要发布依赖的静态资源文件。这给发布过程添加了一些麻烦。既然发布单独一个可执行文件是非常简单的操作,就有人会想办法把静态资源文 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(455)
评论(0)
推荐(0)
摘要:
# 项目介绍 [Zinc](https://github.com/zinclabs/zinc) 是一个轻量级替代 Elasticsearch 的开源搜索引擎。 Elasticsearch 真的好用,但是 Elasticsearch 安装和配置也是真的繁琐,后续的一些维护也有一定成本。另外一个 El 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(468)
评论(0)
推荐(0)
摘要:
如果一个应用需要同时对外提供 HTTP 和 gRPC 服务,通常情况下我们会为两个服务绑定不同的监听端口,而本文要介绍的 cmux 为我们提供了一种连接多路复用的新选择,使用 cmux 可以将不同服务绑定在同一个网络端口上! # 简介 多路复用是个很常见的概念,我们在编写 HTTP 服务时通常会用 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(376)
评论(0)
推荐(0)
摘要:
## 什么是 dive? 用于探索 Docker 镜像、每一层中的内容以及发现缩小 Docker/OCI 镜像大小的方法的工具。 ## 安装 dive `go get github.com/wagoodman/dive` ## dive 特性 - 按层分解 Docker 镜像 - 可视化展示每一层变 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(140)
评论(0)
推荐(0)
摘要:
服务探活在现实场景中应用广泛,比如:服务发现、服务负载均衡、服务调度、服务状态监控等。然而,“探活”往往是作为一个功能模块或者组件集成在各个平台系统中。本次要介绍的easeprobe是一款轻量级的,可独立运行的探活工具,利用easeprobe,无需其他系统支持,就可以对多种类型的服务/中间件等探活。 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(400)
评论(0)
推荐(0)
摘要:
## 简介 [GopherJS](https://github.com/gopherjs/gopherjs) 可以将 Go 代码编译成纯 JavaScript 代码。其主要目的是为了让你可以使用 Go 来编写前端代码,这些代码可执行在浏览器上运行。你可以通过这里尝试下 GopherJS: [Goph 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(360)
评论(0)
推荐(0)
摘要:
> 对于**后端开发者**来说,一款好用的框架能够大大提升应用的开发效率。为了降低开发者使用 TiDB 的门槛,**方便开发者快速连接到 TiDB**,我们也在和合作伙伴一起,逐步完善**面向主流开发语言和框架的连接支持**。  签发 SSL 证书,然后再写配置,大概要花上 5 分钟的时间。曾经想过写个脚本自动完成这 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(416)
评论(0)
推荐(0)
摘要:
[go-humanize](https://github.com/dustin/go-humanize)是一个「人性化」的Go语言库,人性化的意思不是形容这个Go语言库,而是这个Go语言库实现的功能,它可以把数字、时间、容量等转换为我们人类容易理解的词语,比如硬盘的容量是 82854982 byte 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(145)
评论(0)
推荐(0)
摘要:
众所周知,Go语言中打包命令是 go build。在项目中,你可以单独使用 go build 命令对项目进行编译打包,也可以根据自己的需要,在该命令后加各种参数。prometheus官方为了统一项目(包括 prometheus、alertmanager和各种官方的 exporter)的编译和打包,开 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(228)
评论(0)
推荐(0)
摘要:
## 项目介绍 官方 Github: [Podinfo](https://github.com/stefanprodan/podinfo) Podinfo 是一个用 Go 制作的小型 web 应用程序,它展示了在 Kubernetes 中运行微服务的最佳实践。 它已实现的技术指标(截选自官方 [RE 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(87)
评论(0)
推荐(0)
摘要:
## rk-boot的介绍 通过 [rk-boot](https://github.com/rookie-ninja/rk-boot),用户可以通过yaml格式的配置文件启动gRPC、gin、echo、GoFrame、prometheus客户端或自定义入口服务。很容易易编译、运行和调试你的 grpc 阅读全文
posted @ 2023-09-29 21:02
larkwins
阅读(145)
评论(0)
推荐(0)
摘要:
# 背景 `net/http`包默认支持`http2`的,而`HTTP/2`强制使用`TLS`的,所以在使用的时候必须指定证书,正好最近玩过,在这写一下: 原本实现一个http服务的代码: ```go http.HandleFunc("/", func(w http.ResponseWriter, 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(261)
评论(0)
推荐(0)
摘要:
## 写在前面 当你对GoLang AST感兴趣时,你会参考什么?文档还是源代码? 虽然阅读文档可以帮助你抽象地理解它,但你无法看到API之间的关系等等。 如果是阅读整个源代码,你会完全看懂,但你想看完整个代码我觉得您应该会很累。 因此,本着高效学习的原则,我写了此文,希望对您能有所帮助。 让我们轻 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(421)
评论(0)
推荐(0)
摘要:
 今天跟大家介绍一款实时可视化 Go 程序运行时数据统计的工具 [statsviz](https://github.com/arl/statsviz)。 它 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(270)
评论(0)
推荐(0)
摘要:
## 背景 gzip是当前应用非常广泛的文件压缩格式,golang 中也有内置的compress/gzip对其提供原生支持。今天我们要介绍的pgzip是一款完全兼容 gzip 的插件,并能提供相较于compress/gzip上百倍的性能提升! ## **pgzip 简介** pgzip([https 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(480)
评论(0)
推荐(0)
摘要:
# 前言 gofmt 是 golang 自带的代码自动格式化工具,是保证 Go 代码风格一致的大杀器。我们这次要推荐的 **gofumpt 在 gofmt 的基础上添加了一系列更加严格的格式化规则,并保证了对 gofmt 的兼容**。 gofumpt 有助于进一步提升代码质量,它已经成为 gopls 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(363)
评论(0)
推荐(0)
摘要:
当业务要处理大量的定时任务时,如果每个任务都创建一个Golang原生的timer的话,会占用较多的cpu资源,这类场景,可以用时间轮算法优化timer的资源消耗。本次介绍一款多级时间轮库antlabs/timer(以下timer特指antlabs/timer库),处理类似场景的优化。 ## **功能 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(299)
评论(0)
推荐(0)
摘要:
在日常开发中,测试是不可避免的,在针对DAO层的代码写测试用例的时候,直接将依赖的存储服务(比如mongodb)的client给mock掉,可能达不到检验代码中语法或数据操作正确性的目的。如果在本地起一个相关的存储服务又会由于不同的项目带来环境的污染,并且测试代码由于依赖本地环境可能导致多人协作困难 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(434)
评论(0)
推荐(0)
摘要:
在开发中,有时会遇到对图片的处理需求,在 Python中, PIL/Pillow 库非常强大和易用。 而 Golang 语言中,处理图片的标准库 image也可以实现一些基本操作。 image 库支持常见的 PNG、JPEG、GIF 等格式的图片处理, 可以对图片进行读取、裁剪、绘制、生成等操作。 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(555)
评论(0)
推荐(0)
摘要:
# 背景 goroutine 作为 golang 并发实现的核心组成部分,非常容易上手使用,但却很难驾驭得好。我们经常会遭遇各种形式的 goroutine 泄漏,这些泄漏的 goroutine 会一直存活直到进程终结。它们的占用的栈内存一直无法释放、关联的堆内存也不能被 GC 清理,系统的可用内存会 阅读全文
posted @ 2023-09-29 21:00
larkwins
阅读(424)
评论(0)
推荐(0)
摘要:
# 什么是netlink? netlink 是 Linux 系统里用户态程序、内核模块之间的一种 IPC 方式,特别是用户态程序和内核模块之间的 IPC 通信。比如在 Linux 终端里常用的 ip 命令,就是使用 netlink 去跟内核进行通信的。例如想在golang代码中实现ip link a 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(802)
评论(0)
推荐(0)
摘要:
## gopacket是什么? gopacket是google出品的golang三方库,质量还是靠的住,项目地址为:[github.com/google/gopacket](https://github.com/google/gopacket) gopacket到底是什么呢?是个抓取网络数据包的库, 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(1460)
评论(0)
推荐(0)
摘要:
# 什么是 pb? pb是一个Go语言的终端进度条库。 # 什么时候需要pb? 终端显示的工具进行定时等待、IO传输等操作时,都可以用pb来显示当前进度。 # pb入门 ## 安装pb ```bash go get github.com/cheggaaa/pb/v3 ``` ## 快速上手 ```g 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(353)
评论(0)
推荐(0)
摘要:
## 简介 纯文本差异对比在许多场景下都有应用,如语音识别技术对识别率的评估,需要将识别后的文本与预期文本之间做差异对比计算;又如我们使用 Git 进行代码提交时,通常会使用git diff来查看这次编辑发生了哪些改动。 这里我们先简单定义一下差异 diff:是指目标文本和源文本之间的区别,也就是将 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(620)
评论(0)
推荐(0)
摘要:
## 推荐 go-fuzz 的背景 我们在日常开发中经常会编写测试和对应的测试用例,大家是否常常会有以下疑惑: - 现有的测试用例是否完全覆盖了各种边界场景?会不会有意料之外的 case? - 代码测试覆盖率都达到 100% 了,代码上线时为啥还会战战兢兢? - 写测试用例太费心费力了,有没有一款能 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(172)
评论(0)
推荐(0)
摘要:
在微服务架构中,通常会有很多的小服务,小服务之间存在大量 RPC 调用,但时常因为网络抖动等原因,造成请求失败,这时候使用重试机制可以提高请求的最终成功率,减少故障影响,让系统运行更稳定。[retry-go](https://github.com/avast/retry-go) 是一个功能比较完善的 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(575)
评论(0)
推荐(0)
摘要:
# 什么是Asynq [Asynq](https://github.com/hibiken/asynq)是一个go语言实现的分布式任务队列和异步处理库,基于redis,类似sidekiq和celery,他具有以下特点: - 保证至少执行一次任务 - 持久化 - 失败重试 - worker崩溃自动恢复 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(830)
评论(0)
推荐(0)
摘要:
# 简介 很多时候,我们获取了用户ip,但是想知道更多信息,怎么办?使用[ip2location](https://github.com/ip2location/ip2location-go)吧。 这个库,可以从IP地址快速查找国家,地区,城市,纬度,经度,邮政编码,时区,ISP,域名,连接类型,I 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(390)
评论(0)
推荐(0)
摘要:
## 前言 毫无疑问,目前后台开发接口协议应用最广泛的除了HTTP之外就是gRPC了,HTTP接口有成熟的swagger工具可以生成界面美观和使用友好的文档,那么对于gRPC呢? 所以通过 .proto 文件能否生成更易阅读的 HTML 接口文档? ## protoc-gen-doc [**prot 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(176)
评论(0)
推荐(0)
摘要:
[go-stash](https://github.com/kevwan/go-stash)是一个高效的从Kafka获取,根据配置的规则进行处理,然后发送到ElasticSearch集群的工具。 go-stash有大概logstash 5倍的吞吐性能,并且部署简单,一个可执行文件即可。 > go-s 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(339)
评论(0)
推荐(0)
摘要:
[elastic](https://github.com/olivere/elastic)是go语言中与ElasticSearch交互使用最多的一个库。 首先要根据ElasticSearch版本选择对应的库: | **Elasticsearch version** | **Elastic versi 阅读全文
posted @ 2023-09-29 20:59
larkwins
阅读(177)
评论(0)
推荐(0)
摘要:
> 目前实现最优雅,打印堆栈良好的错误包。 # 下载安装 `go get -x github.com/pkg/errors` # 主要函数 ```go // 新生成一个错误, 带堆栈信息 func New(message string) error //只附加新的信息 func WithMessag 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(237)
评论(0)
推荐(0)
摘要:
## 背景 随着微服务的流行,服务之间的调用可能变得越来越复杂,一个业务流程可能需要调用五六个甚至更多服务,这就会导致,假设某个服务出现问题,严重可能出现服务器负载过高,导致服务雪崩的现象。 因此为了防止此现象的发生,就需要考虑服务熔断机制,根据自身业务的需求,将其应用到服务中。 `什么是熔断`:可 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(182)
评论(0)
推荐(0)
摘要:
限流又称为流量控制(流控),通常是指限制到达系统的并发请求数,常用的限流算法主要有漏洞和令牌桶。 ### 令牌桶 令牌桶其实和漏桶的原理类似,令牌桶按固定的速率往桶里放入令牌,并且只要能从桶里取出令牌就能通过,令牌桶支持突发流量的快速处理。 是一个命令行工具,使用它可以在命令行中访问gRPC服务,就像使用curl访问http服务一样。 ## 准备 **在gRPC服务中注册reflection服务:** gRPC服务是使用Protobuf( 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(191)
评论(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
阅读(201)
评论(0)
推荐(0)
摘要:
一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率。本文将介绍如何使用swagger生成接口文档。 # Swagger介绍 `Swagger`是全球最大的`OpenAPI`规范(OAS)API开发工具框架,支持从设计和文档到测试和部署的整个API生命周期的开发 `Swagger`是目 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(165)
评论(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
阅读(244)
评论(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
阅读(325)
评论(0)
推荐(0)
摘要:
### 介绍 在 Golang 这门语言中,目前数据可视化的第三方库还是特别少,go-echarts的开发就是为了填补这部分的空隙。Echarts是百度开源的非常优秀的可视化图表库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。也有其他语言为其实现了相应语言版本的接口,如 Python 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(359)
评论(0)
推荐(0)
摘要:
## chromedp是什么? [chromedp](https://github.com/chromedp/chromedp)是一个更快、更简单的Golang库用于调用支持Chrome DevTools协议的浏览器,同时不需要额外的依赖(例如Selenium和PhantomJS) > Chrome 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(2450)
评论(0)
推荐(0)
摘要:
## 1. 什么是Phantomjs [PhantomJS](https://phantomjs.org/)是一个基于webkit的JavaScript API。它使用QtWebKit作为它核心浏览器的功能,使用webkit来编译解释执行JavaScript代码。任何您可以在基于webkit浏览器做 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(254)
评论(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
阅读(372)
评论(0)
推荐(0)
摘要:
## 1 Protocol Buffers 简介 protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的,占 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(299)
评论(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
阅读(339)
评论(0)
推荐(0)
摘要:
## 1 为什么需要 Context WaitGroup 和信道(channel)是常见的 2 种并发控制的方式。 如果并发启动了多个子协程,需要等待所有的子协程完成任务,WaitGroup 非常适合于这类场景,例如下面的例子: ```go var wg sync.WaitGroup func do 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(91)
评论(0)
推荐(0)
摘要:
## 1 gomock 简介 testing包里 介绍了 Go 语言中单元测试的常用方法,包括子测试(subtests)、表格驱动测试(table-driven tests)、帮助函数(helpers)、网络测试和基准测试(Benchmark)等。这篇文章介绍一种新的测试方法,mock/stub 测 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(298)
评论(0)
推荐(0)
摘要:
## [gops](https://github.com/google/gops) (Go Process Status)是Go团队提供的命令行工具,它可以用来获取go进程运行时信息。 可以查看: - 当前有哪些go语言进程,哪些使用gops的go进程 - 进程的概要信息 - 进程的调用栈 - 进程 阅读全文
posted @ 2023-09-29 20:56
larkwins
阅读(421)
评论(0)
推荐(0)
摘要:
## 概述 一个项目中除设计之外,代码质量是一个项目成功与健壮的基础,再好的设计但是实现代码混乱,风格混杂,明显性错误百出,我们仍然会认为这是一个失败的项目;相反,即使一个项目在架构和设计上无新奇之处,但代码实现质量高,例如风格统一,测试完善,接口明确,无冗余代码,实现中无明显错误或不安全用法,圈复 阅读全文
posted @ 2023-09-29 20:55
larkwins
阅读(138)
评论(0)
推荐(0)
摘要:
# [CLI Color](https://github.com/gookit/color) Golang下的命令行色彩使用库, 拥有丰富的色彩渲染输出,通用的API方法,兼容Windows系统 基本颜色预览: 
评论(0)
推荐(0)
摘要:
## [⚡ZAP](https://github.com/uber-go/zap) ## 简介 ### zap 是什么? [⚡ZAP](https://github.com/uber-go/zap) 是uber 开源的提供快速,结构化,高性能的日志记录包。 ### zap 高性能体现在哪里? 在介绍 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(448)
评论(0)
推荐(0)
摘要:
## [zerolog](https://github.com/rs/zerolog) ## 什么是 Zerolog ? zerolog 包提供了一个专门用于 JSON 输出的简单快速的Logger。 zerolog 的 API 旨在为开发者提供出色的体验和令人惊叹的[性能](https://git 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(459)
评论(0)
推荐(0)
摘要:
# [freecache](https://github.com/coocood/freecache) ## 一句话描述 Go缓存库,具有零GC开销和高并发性能 ## 简介 ### freecache是什么? 使用FreeCache,您可以在内存中缓存无限数量的对象,而不会增加延迟和降低吞吐量。 # 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(302)
评论(0)
推荐(0)
摘要:
# [httprouter](https://github.com/julienschmidt/httprouter) ## 一句话描述 httprouter是一个轻量的、高效的`http请求路由器`,对http请求进行路由转发 ## 入门示例 ```go package main import ( 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(228)
评论(0)
推荐(0)
摘要:
# [groupcache](https://github.com/golang/groupcache) ## 一句话描述 groupcache 是一个分布式缓冲库 ## 简介 ### groupcache是什么? - [groupcache](https://github.com/golang/g 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(145)
评论(0)
推荐(0)
摘要:
一个用于字符串、数字、切片和结构体的校验库和过滤库。基于[validator.js](https://github.com/chriso/validator.js)。 ### 安装 在终端中输入以下命令: ```bash go get github.com/asaskevich/govalidato 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(585)
评论(0)
推荐(0)
摘要:
## [go-cache ](https://github.com/patrickmn/go-cache) [https://github.com/patrickmn/go-cache](https://github.com/patrickmn/go-cache) ### 一句话描述 基于内存的 K 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(773)
评论(0)
推荐(0)
摘要:
## 简介 [`testify`](https://github.com/stretchr/testify)可以说是最流行的(从 GitHub star 数来看)Go 语言测试库了。`testify`提供了很多方便的函数帮助我们做`assert`和错误信息输出。使用标准库`testing`,我们需要 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(287)
评论(0)
推荐(0)
摘要:
## 简介 [`testing`](https://golang.google.cn/pkg/testing/)是 Go 语言标准库自带的测试库。在 Go 语言中编写测试很简单,只需要遵循 Go 测试的**几个约定**,与编写正常的 Go 代码没有什么区别。Go 语言中有 3 种类型的测试:单元测试 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(192)
评论(0)
推荐(0)
摘要:
## 简介 当前很多网站直接采用第三方认证登录,例如支付宝/微信/ Github 等。[`goth`](https://github.com/markbates/goth)封装了接入第三方认证的方法,并且内置实现了很多第三方认证的实现: 
评论(0)
推荐(0)
摘要:
## 简介 上一篇文章[《Go 每日一库之 securecookie》](https://go-quiz.github.io/2021/07/23/godailylib/gorilla/securecookie/)中,我们介绍了 cookie。同时提到 cookie 有两个缺点,一是数据不宜过大,二 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(291)
评论(0)
推荐(0)
摘要:
## 简介 cookie 是用于在 Web 客户端(一般是浏览器)和服务器之间传输少量数据的一种机制。由服务器生成,发送到客户端保存,客户端后续的每次请求都会将 cookie 带上。cookie 现在已经被多多少少地滥用了。很多公司使用 cookie 来收集用户信息、投放广告等。 cookie 有两 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(89)
评论(0)
推荐(0)
摘要:
## 简介 [`gorilla/schema`](https://github.com/gorilla/schema) 是 gorilla 开发工具包中用于处理表单的库。它提供了一个简单的方式,可以很方便地将表单数据转为结构体对象,或者将结构体对象转为表单数据。 ## 快速使用 本文代码使用 Go 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(84)
评论(0)
推荐(0)
摘要:
## 简介 上一篇文章中,我们介绍了 gorilla web 开发工具包中的路由管理库[`gorilla/mux`](https://github.com/gorilla/mux),在文章最后我们介绍了如何使用中间件处理通用的逻辑。在日常 Go Web 开发中,开发者遇到了很多相同的中间件需求,[g 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(69)
评论(0)
推荐(0)
摘要:
## 简介 [`gorilla/mux`](https://github.com/gorilla/mux)是 gorilla Web 开发工具包中的路由管理库。gorilla Web 开发包是 Go 语言中辅助开发 Web 服务器的工具包。它包括 Web 服务器开发的各个方面,有表单数据处理包[`g 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(603)
评论(0)
推荐(0)
摘要:
## 简介 几乎所有的编程语言都以`Hello World`作为入门程序的示例,其中有一部分以编写一个 Web 服务器作为实战案例的开始。每种编程语言都有很多用于编写 Web 服务器的库,或以标准库,或通过第三方库的方式提供。Go 语言也不例外。本文及后续的文章就去探索 Go 语言中的各个Web 编 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(94)
评论(0)
推荐(0)
摘要:
## 简介 [`colly`](https://github.com/gocolly/colly)是用 Go 语言编写的功能强大的爬虫框架。它提供简洁的 API,拥有强劲的性能,可以自动处理 cookie&session,还有提供灵活的扩展机制。 首先,我们介绍`colly`的基本概念。然后通过几个 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(1045)
评论(0)
推荐(0)
摘要:
## 简介 今天学个简单点的,[`termtables`](github.com/scylladb/termtables)处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习[`dateparse`](https://go-quiz.gith 阅读全文
posted @ 2023-09-29 20:54
larkwins
阅读(38)
评论(0)
推荐(0)

浙公网安备 33010602011771号