newticker go

Go每日一库之167:emoji(emoji表情)

大家在使用微信或钉钉聊天时,一定使用过表情符号。今天就给大家介绍一个能够在终端上显示emoji表情符号的包:[emoji](https://github.com/kyokomi/emoji)。 **实现原理:**emoji表情符号实际上就是在unicode编码表中有定义的一个编码。通过将符号的文字表 ......
emoji 表情 167

Go每日一库之176:filetype(文件类型鉴别)

filetype(https://github.com/h2non/filetype)是一个 Go 语言的第三方库,可以根据文件的魔数(magic numbers)签名来推断文件的类型和 MIME 类型。它支持多种常见的文件类型,包括图片、视频、音频、文档、压缩包等。它还提供了一些便捷的函数和类型匹 ......
filetype 类型 文件 176

Go每日一库之187:singleflight(合并重复调用)

本文主要介绍Go语言中的`singleflight`包,包括什么是`singleflight`以及如何使用singleflight合并请求解决缓存击穿问题。 [singleflight](https://pkg.go.dev/golang.org/x/sync/singleflight) 目前(Go ......
singleflight 187

Go每日一库之169:dongle(编解码、加解密)

一个轻量级、语义化、对开发者友好的 golang 编码解码、加密解密库。 ## 安装使用 ```go // 使用 github 库 go get -u github.com/golang-module/dongle import ( "github.com/golang-module/dongle" ......
dongle 169

Go每日一库之184:katana(新一代爬虫框架)

## 项目链接 > [https://github.com/projectdiscovery/katana](https://github.com/projectdiscovery/katana) ## 项目简介 ![](https://mmbiz.qpic.cn/sz_mmbiz_png/BOAj ......
爬虫 新一代 框架 katana 184

Go每日一库之168:redsync(redis分布式锁)

今天给大家推荐的是基于redis的Go版本的分布式锁工具:[redsync]()。该工具也是redis官网上推荐的。redsync 基于redis的高可用、高性能、防死锁、防误删的分布式锁实现,具有高性能、高可用、防死锁、防误删的特点。 ## 一、分布式锁基础知识 **什么是分布式锁** 锁,在编程 ......
分布式 redsync redis 168

Go每日一库之186:sonic(高性能JSON库)

## 介绍 我们在日常开发中,常常会对JSON进行序列化和反序列化。Golang提供了`encoding/json`包对JSON进行`Marshal/Unmarshal`操作。但是在大规模数据场景下,该包的性能和开销确实会有点不够看。在生产环境下,JSON 序列化和反序列化会被频繁的使用到。在测试中 ......
高性能 sonic JSON 186

Go每日一库之183:vegeta(http压力测试工具库)

项目地址:[https://github.com/tsenart/vegeta](https://github.com/tsenart/vegeta) > [https://mp.weixin.qq.com/s/J0PiqTifr_rs_S2CzMRoWg](https://mp.weixin.qq ......
测试工具 压力 工具 vegeta http

Go每日一库之173:Pie (高性能、类型安全的slice操作库)

在Go语言中,对slice和map是我们最常用的数据结构。比如,计算两个切片的交集、差集;判断切片中的元素是否都满足某个条件的等。我推荐大家使用这个包:`[elliotchance/pie](https://github.com/elliotchance/pie)`。 该包封装了**对切片和map的 ......
高性能 类型 slice 173 Pie

Go每日一库之179:env(将系统环境变量解析到结构体的库)

该包的实现是基于标准库os/env包中的相关函数(比如Getenv)来获取系统的环境变量的。获取到环境变量值后,再通过结构体中的tag,将值映射到对应的结构体字段上。 ### 使用示例 下面是将系统的一些环境变量映射到config结构体的示例。如下: 我们可以像以下这样运行该代码: ```shell ......
变量 结构 环境 系统 179

Go每日一库之182:RuleGo(轻量级高性能嵌入式规则引擎)

# ◆ 一、开源项目简介 ![](https://mmbiz.qpic.cn/sz_mmbiz_png/RQueXibgo0KNH6A281w2suibhkebibiakFZAM97kypujbVw5UfL2Upib97JlricuGvWBzwPHzmQw5GGL1fG7XA4zPY3A/640?w ......
轻量 轻量级 高性能 嵌入式 规则

Go每日一库之180:fastcache(协程安全且支持大量数据存储的高性能缓存库)

> fastcache 是一个线程安全并且支持大量数据存储的高性能缓存组件库。 这是官方 `Github` 主页上的项目介绍,和 `fasthttp` 名字一样以 `fast` 打头,作者对项目代码的自信程度可见一斑。此外该库的核心代码非常轻量, 笔者本着学习的目的分析下内部的代码实现。 ## 基准 ......
高性能 fastcache 数据 180

Go每日一库之178:chromedp(一个基于Chrome DevTools协议的库,支持数据采集、截取网页长图)

该库提供了一种简单、高效、可靠的方式来控制Chrome浏览器进行自动化测试和爬取数据。 项目地址:[https://github.com/chromedp/chromedp](https://github.com/chromedp/chromedp) **它可以模拟用户在浏览器中执行各种操作**,* ......
数据采集 chromedp DevTools 网页 数据

Go每日一库之141:go-bindata(嵌入静态文件)

使用 Go 开发应用的时候,有时会遇到需要读取静态资源的情况。比如开发 Web 应用,程序需要加载模板文件生成输出的 HTML。在程序部署的时候,除了发布应用可执行文件外,还需要发布依赖的静态资源文件。这给发布过程添加了一些麻烦。既然发布单独一个可执行文件是非常简单的操作,就有人会想办法把静态资源文 ......
静态 go-bindata bindata 文件 141

Go每日一库之146:bbs-go(bbs框架)

## 概要 [bbs-go](https://github.com/mlogclub/bbs-go) 是一款基于Go语言研发的`开源`、`前后端分离`、`精美小巧`、`跨平台`的社区系统。初期该项目仅用过学习和交流,开源之后越来越多的小伙伴儿开始喜欢和关注他,这也是我长期升级和维护的动力。 bbs- ......
bbs 框架 bbs-go 146 go

Go每日一库之130:go-humanize(人性化显示)

[go-humanize](https://github.com/dustin/go-humanize)是一个「人性化」的Go语言库,人性化的意思不是形容这个Go语言库,而是这个Go语言库实现的功能,它可以把数字、时间、容量等转换为我们人类容易理解的词语,比如硬盘的容量是 82854982 byte ......
go-humanize humanize 人性 130 go

Go每日一库之136:gopherjs(将Go代码编译成JS)

## 简介 [GopherJS](https://github.com/gopherjs/gopherjs) 可以将 Go 代码编译成纯 JavaScript 代码。其主要目的是为了让你可以使用 Go 来编写前端代码,这些代码可执行在浏览器上运行。你可以通过这里尝试下 GopherJS: [Goph ......
gopherjs 代码 136

Go每日一库之144:go-obs-websocket(OBS连接器)

# 推荐理由 互联网的兴起带动了直播行业的火热,除了少数直播网站有自己的推流工具之外,OBS是主流的推流工具,广泛应用在直转播技术之上。 # 简介 [go-obs-websocket](https://github.com/christopher-dG/go-obs-websocket)是一个与OB ......
go-obs-websocket 连接器 websocket 144 OBS

Go每日一库之132:wasm与tinygo

WASM 的概念,这几年还是挺火的,新的语言,比如 Rust、Go、Swift 等,都对 WASM 提供支持。相比之下,Go 语言的简单性,使得对 WASM 的支持,使用起来也较简单。本文是目前公开资料中为数不多较完整的教程,希望能对你有帮助。 ## WASM 是什么 标题说:“Golang 中的 ......
tinygo wasm 132

Go每日一库之137:easeprobe(探活工具)

服务探活在现实场景中应用广泛,比如:服务发现、服务负载均衡、服务调度、服务状态监控等。然而,“探活”往往是作为一个功能模块或者组件集成在各个平台系统中。本次要介绍的easeprobe是一款轻量级的,可独立运行的探活工具,利用easeprobe,无需其他系统支持,就可以对多种类型的服务/中间件等探活。 ......
easeprobe 工具 137

Go每日一库之139:cmux (连接多路复用)

如果一个应用需要同时对外提供 HTTP 和 gRPC 服务,通常情况下我们会为两个服务绑定不同的监听端口,而本文要介绍的 cmux 为我们提供了一种连接多路复用的新选择,使用 cmux 可以将不同服务绑定在同一个网络端口上! # 简介 多路复用是个很常见的概念,我们在编写 HTTP 服务时通常会用 ......
cmux 139

Go每日一库之134:fsm(基有限状态机库)

开发中,我们经常会遇到这种情况,服务模块有多种状态,它们有一定的顺序,先后执行,逐步切换。这时,fsm这个库可以帮助我们更好的管理多个状态。 fsm库,它主要基于两个FSM实现,增加了golang版本的实现: - Javascript Finite State Machine, [https://g ......
机库 状态 有限 134 fsm

Go每日一库之138:dive(Docker 镜像分析)

## 什么是 dive? 用于探索 Docker 镜像、每一层中的内容以及发现缩小 Docker/OCI 镜像大小的方法的工具。 ## 安装 dive `go get github.com/wagoodman/dive` ## dive 特性 - 按层分解 Docker 镜像 - 可视化展示每一层变 ......
镜像 Docker dive 138

Go每日一库之129:promu(Prometheus构建发布工具)

众所周知,Go语言中打包命令是 go build。在项目中,你可以单独使用 go build 命令对项目进行编译打包,也可以根据自己的需要,在该命令后加各种参数。prometheus官方为了统一项目(包括 prometheus、alertmanager和各种官方的 exporter)的编译和打包,开 ......
Prometheus 工具 promu 129

Go每日一库之145:MinIO(高性能对象存储)

1. MinIO 简介 MinIO 是一个基于 Go 实现的高性能、兼容 S3 协议的对象存储。它采用 GNU AGPL v3 开源协议,项目地址是 https://github.com/minio/minio,官网是 https://min.io。 它适合存储海量的非结构化的数据,例如说图片、音频 ......
高性能 对象 MinIO 145

Go每日一库之131:caddy(轻量web服务器)

一直以来,我都是使用 Nginx 作为 Web 服务器,但是配置可以说是非常麻烦了。每次我要新开一个域名,都要先使用 [acme.sh](https://github.com/Neilpang/acme.sh) 签发 SSL 证书,然后再写配置,大概要花上 5 分钟的时间。曾经想过写个脚本自动完成这 ......
轻量 服务器 caddy 131 web

Go每日一库之140:Zinc(轻量级搜索引擎)

# ‍项目介绍 [Zinc](https://github.com/zinclabs/zinc) 是一个轻量级替代 Elasticsearch 的开源搜索引擎。 Elasticsearch 真的好用,但是 Elasticsearch 安装和配置也是真的繁琐,后续的一些维护也有一定成本。另外一个 El ......
轻量 轻量级 搜索引擎 引擎 Zinc

Go每日一库之143:servicegroup(进程内优雅管理多个服务)

## 前言 在 go-zero 社区里,经常会有同学问,把 `API gateway` 和 `RPC service` 放在同一个进程内可不可以?怎么弄?有时也会有同学把对外服务和消费队列放在一个进程内。咱们姑且不说此种用法合理与否,因为各个公司的业务场景和开发模式的差异,我们就只来看看此类问题怎么 ......
servicegroup 进程 多个 143

Go每日一库之135:Ent(Facebook 开源 Golang 实体框架)

> 对于**后端开发者**来说,一款好用的框架能够大大提升应用的开发效率。为了降低开发者使用 TiDB 的门槛,**方便开发者快速连接到 TiDB**,我们也在和合作伙伴一起,逐步完善**面向主流开发语言和框架的连接支持**。 ![每日一库之135:Ent(Facebook%20开源%20Golan ......
实体 框架 Facebook Golang 135

Go每日一库之128:podinfo(k8s微服务模板)

## 项目介绍 官方 Github: [Podinfo](https://github.com/stefanprodan/podinfo) Podinfo 是一个用 Go 制作的小型 web 应用程序,它展示了在 Kubernetes 中运行微服务的最佳实践。 它已实现的技术指标(截选自官方 [RE ......
模板 podinfo 128 k8s k8