goroutine 作为 golang 并发实现的核心组成部分,非常容易上手使用,但却很难驾驭得好。我们经常会遭遇各种形式的 goroutine 泄漏,这些泄漏的 goroutine 会一直存活直到进程终结。它们的占用的栈内存一直无法释放、关联的堆内存也不能被GC清理,系统的可用内存会随泄漏 goroutine 的增多越来越少,直至崩溃!
Uber开源了goleak库可以帮助我们检测代码中可能存在的goroutine泄露问题;
源代码:
goroutine 作为 golang 并发实现的核心组成部分,非常容易上手使用,但却很难驾驭得好。我们经常会遭遇各种形式的 goroutine 泄漏,这些泄漏的 goroutine 会一直存活直到进程终结。它们的占用的栈内存一直无法释放、关联的堆内存也不能被GC清理,系统的可用内存会随泄漏 goroutine 的增多越来越少,直至崩溃!
Uber开源了goleak库可以帮助我们检测代码中可能存在的goroutine泄露问题;
源代码:
Golang在1.16中加入了embed包,可以将文件直接打包为二进制;除此之外,github的开源库rakyll/statik也提供了类似的功能,并且使用起来也很方便;
本文使用rakyll/statik库,以一个TODO List应用为例,打包了一个二进制的React SPA应用;
源代码:
服务端事件推送SSE可以说是WebSocket的轻量级实现,SSE只能用于服务端单向流推送。
本文讲述了SSE的基本概念,并给出了Go的实现案例;
源代码:
dolthub/go-mysql-server是一个使用纯Go实现的MySQL数据库。目前已经兼容了大量MySQL的语法。可以使用这个库来做项目的测试;
示例源代码:
Go的中国身份证号校验库guanguans/id-validator,提供了身份证号正确性校验、随机生成身份证号、身份证号信息提取等功能;
示例源代码:
GraphQL是目前比较火热的技术,以高度灵活性著称;
本文讲述了如何使用Go和MySQL构建一个GraphQL API;
源代码:
在Go中可以直接通过go关键字直接创建一个goroutine并在子goroutine中直接调用函数;
但是有时候由于调用的方式不同会存在一些问题;
源代码:
在Java中使用array、ArrayList或者LinkedList作为数组,而在C++中使用array或是vector作为数组存储,而Golang中使用slice较多,而slice底层到底屎怎么实现的呢?本文将带你深入剖析Golang中Slice的底层实现方式;
文章转自:
源代码:
在前一篇文章Golang中的进度条使用中,我讲解了如何在命令行工具中添加进度条,在这篇文章中,我们使用mpb实现一个可以多线程、多文件下载并含有进度条的下载工具;
源代码:
使用Golang开发命令行应用是个不错的选择,但是有时候我们希望加入进度条来优化用户体验;本文就讲述了如何在Golang中加入进度条;
源代码: