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中直接调用函数;
但是有时候由于调用的方式不同会存在一些问题;
源代码:
众所周知,HTTP是面向无连接的通信协议,而在构建web应用时,有时还是需要像socket这样的长连接;
同时,传统的web应用依赖于客户端请求的推动,而服务器仅仅作为应用的响应方;
为了能够实现服务器、客户端双端通信,websocket应运而生;
本文通过实现一个简单的websocket应用,来学习如何在go中使用websocket;
源代码:
在Java中使用array、ArrayList或者LinkedList作为数组,而在C++中使用array或是vector作为数组存储,而Golang中使用slice较多,而slice底层到底屎怎么实现的呢?本文将带你深入剖析Golang中Slice的底层实现方式;
文章转自:
源代码:
在前一篇文章Golang中的进度条使用中,我讲解了如何在命令行工具中添加进度条,在这篇文章中,我们使用mpb实现一个可以多线程、多文件下载并含有进度条的下载工具;
源代码: