Go 程序取消子 Goroutine 的几种方式
5月 21, 2020
Go 代码中如果有的 Goroutine 永远都不会退出,随着 Goroutine 的数量增长,内存泄露的风险也会变高。因此必须需要一种方法能够控制 Goroutine 的野蛮生长,在需要退出的场景下必须要主动退出。下面介绍几种方法来主动退出 Goroutine。 Context ...
Go 代码中如果有的 Goroutine 永远都不会退出,随着 Goroutine 的数量增长,内存泄露的风险也会变高。因此必须需要一种方法能够控制 Goroutine 的野蛮生长,在需要退出的场景下必须要主动退出。下面介绍几种方法来主动退出 Goroutine。 Context ...
最近 typroa 用的比较多,然后又想着继续维护在 github pages 的博客,觉得把 typora 编辑完的东西再复制到博客项目里很麻烦,于是开始了一番折腾。 目标是啥 # 在 typora 写的笔记放在了 iCloud,然后可以一键同步到我的线上博客 使用 hugo # hugo 是 ...
工作中需要用 Go 读写一些 Excel 表等类型的文件,发现 Go 提供了很多关于 I/O 操作的包,比如 io、ioutil、bufio 等,于是在这里总结一下,主要目标是理清几个包之间在使用时如何选择。 io # io 库提供了底层的接口定义 ...
为什么需要分布式锁 # 锁机制用于管理对共享资源的并发访问控制,当同一服务的多台机器间需要控制并发的时候,需要保证服务间在同一时间只能被一个线程访问。由于 Redis 的特点是单进程,并且具有高性能的特点,所以一般用 ...
婚礼上为了给媳妇制造一个印象深刻的惊喜,我提前三个月去学了钢琴,现在回想起来也算是一件有意思的事情。6 月底报名后,经过和钢琴老师的讨论,对于我这种零基础短期想突击的,同时后期还想继续学下去的,最后老师 ...
Github Actions 发布有一段时间了,自己用的也挺嗨,过来总结一下。我主要在两个地方用到了,一个是博客,另一个是打包、发布前端项目。整体功能上 Actions 和 GitLab CI/CD 差不多,同样实现了项目的自动化测试、打包、部署,不过 Actions 利用了 GitHub 开源 ...
布隆过滤器(Bloom Filter,BF),能够确定一个东西一定不存在或可能存在,常用于在海量并发情况下防止缓存击穿,相比较传统的 List、Set、Map 数据结构,布隆过滤器能够在大数据量的情况下,相 ...
Redis 介绍 # 历史 # Redis 是一个使用 ANSI C 编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库,由来自意大利西西里岛的 Salvatore Sanfilippo(Antirez)发起并编写。从2015年6月开始,Re ...
业务背景 # 最近已经转到 Go 下面进行日常工作的开发,我的一个后台项目有一些内部轻量的数据查询需要,考虑需求的复杂度不高,就平常自己和同事几个人使用,没必要专门开发一个前端项目来进行数据查询,于是我想到了老 ...
背景 # 接触 GraphQL 是工作中需要有一个项目,用来聚合内部很多其他微服务的接口然后统一暴露给外部使用,在这样的场景下,对项目有几点需求: 能够让外部业务方对接方便,当然最好有接口文档。 各个业务方可以根据他们自己的 ...