前言
最近遇到了一个需求:后台根据存储数据生成一个PDF报表,里面还会有各种分析图表,经过技术调研后,大体技术栈如下
- 使用
poi-tl
来作为报表模板,生成word文档 - 使用
jfreechart
来进行各种分析图表生成 - 随后将生成word文档转换为PDF即可
开放思路理清后,下面就来了解一下怎么编码把~
总所周知,Go中内置容器Map是线程不安全的,当有多个协程同时进行操作,会抛出fatal error: concurrent map writes
的错误,例如下面的例子
1 | func testMap() { |
因此如果我们有多个协程同时操作map的需求,就不能直接使用map啦。通常我们可以通过加读写锁(sync.RWMutex)或者使用sync.Map来保证线程安全。