一、现象
线上应用突然收到报警,提示单机内存使用率超过80%,紧急去抓profile数据,分析发现是一个数据下载的逻辑占用内存过大
继续阅读
分类目录归档:Golang
Excel库excelize使用笔记
Excel是Microsoft电子表格软件,目前常用的是xlsx格式(Microsoft Excel 2007 及以上版本创建的电子表格文档)。Go语言操作xlsx格式excel文件,有3个常见的库:
● xlsx [github地址:https://github.com/tealeg/xlsx]
● unioffice [github地址:https://github.com/unidoc/unioffice]
● excelize [github地址: https://github.com/qax-os/excelize]
一句话总结差异:xlsx和excelize只支持xlsx文件读写,unioffice支持office三件套;xlsx比较早,目前已经不维护;excelize提供的API和文档比较易用, 流式读写处理大数据集性能较高,特别活跃;unioffice API不易用
继续阅读
Go并发实践笔记二(进阶用法)
第二部分 进阶用法-并发度控制
在基础用法中,我们很简单的实现了并发处理数据,但是随着数据量增多,隐藏的问题就会浮出水面。
并发操作数据库,随数据增加,goroutine增多,会出现部分routine invalid connection DB, 可能是超过了DB的连接数
并发调用下游API,随数据增加,goroutine增多,会触发下游API限流,导致部分请求失败
这个时候就需要进行并发度控制
继续阅读
Go并发实践笔记一(基础用法)
不得不说Go很方便实现并发处理,这里针对实际工作中用的到并发做个笔记
本文分两篇,这一篇是基本用法,另一篇涉及到并发度控制,参考《Go并发实践笔记二(进阶用法)》
第一部分 基本用法
一、并发任务是隔离的
对一组数据,进行处理,不需要对处理结果进行聚合返回
继续阅读
sync.Map源码阅读笔记
Go sync.Map笔记
Go 迭代变量的陷阱
在并发的goroutine中遇到这个问题,还以为是goroutine的问题,或者Go闭包的问题, 一层一层分析下来,才知道是Go本身迭代变量的问题,想起了PHP的foreach陷阱【PHP引用理解之神奇的foreach面试题】,不仅感慨深入掌握一门语言何其不易呀
先说结论:Go在循环体中,每次遍历的变量是同一个,指向同样的内存地址,这是语言本身的一个陷阱
问题先行,我们先来看看问题
继续阅读
gojsonp学习使用笔记
Go 版本管理工具学习笔记
在使用Goland 进行Debug的时候,提示需要Go 1.16以上版本,看来需要多个版本,了解了下Go版本管理工具,还是比较多的,做个笔记
一、goup
主要因为这个是用Go实现的,用了下好用到飞起
1、github地址
2、安装
curl -sSf https://raw.githubusercontent.com/owenthereal/goup/master/install.sh | sh
注:有时候会因为网络原因提示curl失败
3、安装不同go版本
go1.17.4
goup install 1.17.4
go1.16.11
goup install 1.16.11
4、查看
salmonl@B-3BD9Q05P-2155 amap-aos-mozhu-srp % goup show | VERSION | ACTIVE | |---------|--------| | 1.16.11 | * | | 1.17.4 | |
Goland高效使用笔记
Goland是JetBrains公司的付费Go语言IDE,改公司的编辑器还有IntelliJ IDEA(Java语言),PyCharm(python), WebStorm(js/css)等。没有特别说明以下内容都是在Mac环境下
一、常用快捷键
继续阅读
Gopher China2021 参会笔记
一、背景
6月26、27日,第七届 Gopher China 技术分享大会在北京市朗丽兹西山花园酒店举行。有机会去体验了一次今年国内的Gopher盛会,过去一个多星期了,还是想留下点痕迹,以示纪念
继续阅读