摘要: ## 简介 今天学个简单点的,[`termtables`](github.com/scylladb/termtables)处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习[`dateparse`](https://go-quiz.gith 阅读全文
posted @ 2023-09-28 14:24 luckzack 阅读(31) 评论(0) 推荐(0) 编辑
摘要: ## 简介 [`resty`](https://github.com/go-resty/resty)是 Go 语言的一个 HTTP client 库。`resty`功能强大,特性丰富。它支持几乎所有的 HTTP 方法(GET/POST/PUT/DELETE/OPTION/HEAD/PATCH等),并 阅读全文
posted @ 2023-09-28 14:24 luckzack 阅读(55) 评论(0) 推荐(0) 编辑
摘要: ## 简介 不管什么时候,处理时间总是让人头疼的一件事情。因为时间格式太多样化了,再加上时区,夏令时,闰秒这些细枝末节处理起来更是困难。所以在程序中,涉及时间的处理我们一般借助于标准库或第三方提供的时间库。今天要介绍的[`dateparse`](https://github.com/araddon/ 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(41) 评论(0) 推荐(0) 编辑
摘要: ## 简介 [`ozzo-validation`](https://github.com/go-ozzo/ozzo-validation)是一个非常强大的,灵活的数据校验库。与其他基于 struct tag 的数据校验库不同,`ozzo-validation`认为 struct tag 在使用过程中 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(33) 评论(0) 推荐(0) 编辑
摘要: ## 简介 `[bubbletea](https://github.com/charmbracelet/bubbletea)`是一个简单、小巧、可以非常方便地用来编写 TUI(terminal User Interface,控制台界面程序)程序的框架。内置简单的事件处理机制,可以对外部事件做出响应, 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(50) 评论(0) 推荐(0) 编辑
摘要: ## 简介 之前写过一篇文章介绍了`ants`这个 goroutine 池实现。当时在网上查看相关资料的时候,发现了另外一个实现[`tunny`](https://github.com/Jeffail/tunny)。趁着时间相近,正好研究一番。也好比较一下这两个库。那就让我们开始吧。 ## 快速开始 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(34) 评论(0) 推荐(0) 编辑
摘要: ## 简介 继上一篇[Go 每日一库之 ants](https://go-quiz.github.io/2021/06/03/godailylib/ants),这篇文章我们来一起看看`ants`的源码。 ## `Pool` 通过上篇文章,我们知道`ants`池有两种创建方式: - `p, _ := 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(127) 评论(0) 推荐(0) 编辑
摘要: ## 简介 处理大量并发是 Go 语言的一大优势。语言内置了方便的并发语法,可以非常方便的创建很多个轻量级的 goroutine 并发处理任务。相比于创建多个线程,goroutine 更轻量、资源占用更少、切换速度更快、无线程上下文切换开销更少。但是受限于资源总量,系统中能够创建的 goroutin 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(89) 评论(0) 推荐(0) 编辑
摘要: ## 简介 反射是一种机制,在编译时不知道具体类型的情况下,可以透视结构的组成、更新值。使用反射,可以让我们编写出能统一处理所有类型的代码。甚至是编写这部分代码时还不存在的类型。一个具体的例子就是`fmt.Println()`方法,可以打印出我们自定义的结构类型。 虽然,一般来说都不建议在代码中使用 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(70) 评论(0) 推荐(0) 编辑
摘要: ## 简介 [`fasttemplate`](https://github.com/valyala/fasttemplate)是一个比较简单、易用的小型模板库。`fasttemplate`的作者[valyala](https://github.com/valyala)另外还开源了不少优秀的库,如大名 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(19) 评论(0) 推荐(0) 编辑
摘要: ## 简介 [`gotalk`](https://github.com/rsms/gotalk)专注于进程间的通信,致力于简化通信协议和流程。同时它: - 提供简洁、清晰的 API; - 支持 TCP,WebSocket 等协议; - 采用非常简单而又高效的传输协议格式,便于抓包调试; - 内置了 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(31) 评论(0) 推荐(0) 编辑
摘要: ## 简介 在编程开发中,我们经常会需要**频繁**创建和销毁同类对象的情形。这样的操作很可能会对性能造成影响。这时,常用的优化手段就是使用**对象池**(object pool)。需要创建对象时,我们先从对象池中查找。如果有空闲对象,则从池中移除这个对象并将其返回给调用者使用。只有在池中无空闲对象 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(50) 评论(0) 推荐(0) 编辑
摘要: ## 简介 [ReactiveX](http://reactivex.io/#),简称为 Rx,是一个异步编程的 API。与 **callback**(回调)、**promise**(JS 提供这种方式)和 **deferred**(Python 的 twisted 网络编程库就是使用这种方式)这些 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(42) 评论(0) 推荐(0) 编辑
摘要: ## 简介 [goquery](https://github.com/PuerkitoBio/goquery)是用 Go 语言编写的一个类似于 jQuery 的库。它基于 HTML 解析库[net/html](https://pkg.go.dev/golang.org/x/net/html)和 CS 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(48) 评论(0) 推荐(0) 编辑
摘要: ## 简介 [`air`](github.com/cosmtrek/air)是 Go 语言的热加载工具,它可以监听文件或目录的变化,自动编译,重启程序。大大提高开发期的工作效率。 ## 快速使用 本文代码使用 Go Modules,在 Mac 上运行。 先创建目录并初始化: ```bash $ mk 阅读全文
posted @ 2023-09-28 14:21 luckzack 阅读(133) 评论(0) 推荐(0) 编辑
摘要: ## 简介 最近在整理我们项目代码的时候,发现有很多活动的代码在结构和提供的功能上都非常相似。为了方便今后的开发,我花了一点时间编写了一个生成代码框架的工具,最大程度地降低重复劳动。代码本身并不复杂,且与项目代码关联性较大,这里就不展开介绍了。在这个过程中,我发现 Go 标准的模板库`text/te 阅读全文
posted @ 2023-09-28 14:20 luckzack 阅读(26) 评论(0) 推荐(0) 编辑
摘要: ## 简介 最近在整理我们项目代码的时候,发现有很多活动的代码在结构和提供的功能上都非常相似。为了方便今后的开发,我花了一点时间编写了一个生成代码框架的工具,最大程度地降低重复劳动。代码本身并不复杂,且与项目代码关联性较大,这里就不展开介绍了。在这个过程中,我发现 Go 标准的模板库`text/te 阅读全文
posted @ 2023-09-28 14:20 luckzack 阅读(48) 评论(0) 推荐(0) 编辑
摘要: ## 简介 有时,我们会遇到一些需要使用字符串的匹配和查找的任务。并且我们知道这种情况下,使用正则表达式是最简洁和优雅的。为了完成某个任务特地去系统地学习正则表达式费时费力,而且一段时间不用又很容易遗忘。下次遇到问题还要再重复这个过程。[`commonregex`](https://github.c 阅读全文
posted @ 2023-09-28 14:20 luckzack 阅读(11) 评论(0) 推荐(0) 编辑
摘要: ## 简介 有时,我们会遇到一些需要使用字符串的匹配和查找的任务。并且我们知道这种情况下,使用正则表达式是最简洁和优雅的。为了完成某个任务特地去系统地学习正则表达式费时费力,而且一段时间不用又很容易遗忘。下次遇到问题还要再重复这个过程。[`commonregex`](https://github.c 阅读全文
posted @ 2023-09-28 14:20 luckzack 阅读(17) 评论(0) 推荐(0) 编辑
摘要: ## 简介 JSON 是一种非常流行的数据交换格式。每种编程语言都有很多操作 JSON 的库,标准库、第三方库都有。Go 语言中标准库内置了 JSON 操作库`encoding/json`。我们之前也介绍过专门用于**查询** JSON 串的库[gjson](https://go-quiz.gith 阅读全文
posted @ 2023-09-28 14:20 luckzack 阅读(24) 评论(0) 推荐(0) 编辑