文章506
标签266
分类65
使用Uber开源的goleak库进行goroutine泄露检测

使用Uber开源的goleak库进行goroutine泄露检测

goroutine 作为 golang 并发实现的核心组成部分,非常容易上手使用,但却很难驾驭得好。我们经常会遭遇各种形式的 goroutine 泄漏,这些泄漏的 goroutine 会一直存活直到进程终结。它们的占用的栈内存一直无法释放、关联的堆内存也不能被GC清理,系统的可用内存会随泄漏 goroutine 的增多越来越少,直至崩溃!

Uber开源了goleak库可以帮助我们检测代码中可能存在的goroutine泄露问题;

源代码:


使用Go打包二进制React单页面应用

使用Go打包二进制React单页面应用

Golang在1.16中加入了embed包,可以将文件直接打包为二进制;除此之外,github的开源库rakyll/statik也提供了类似的功能,并且使用起来也很方便;

本文使用rakyll/statik库,以一个TODO List应用为例,打包了一个二进制的React SPA应用;

源代码:


使用Go实现服务端事件推送SSE

使用Go实现服务端事件推送SSE

服务端事件推送SSE可以说是WebSocket的轻量级实现,SSE只能用于服务端单向流推送。

本文讲述了SSE的基本概念,并给出了Go的实现案例;

源代码:


使用纯Go实现的MySQL数据库

使用纯Go实现的MySQL数据库

Go的中国身份证号校验库

Go的中国身份证号校验库

使用Go构建GraphQL API

使用Go构建GraphQL API

Go创建Goroutine时显式调用时的坑

Go创建Goroutine时显式调用时的坑

使用golang构建简单的websocket应用

使用golang构建简单的websocket应用

众所周知,HTTP是面向无连接的通信协议,而在构建web应用时,有时还是需要像socket这样的长连接;

同时,传统的web应用依赖于客户端请求的推动,而服务器仅仅作为应用的响应方;

为了能够实现服务器、客户端双端通信,websocket应运而生;

本文通过实现一个简单的websocket应用,来学习如何在go中使用websocket;

源代码:


【转】Golang中Slice底层实现

【转】Golang中Slice底层实现

使用Go实现一个进度条并发下载器

使用Go实现一个进度条并发下载器