atomic是最轻量级的锁,在一些场景下直接使用atomic包还是很有效的。下面内容摘秒自《GO并发编程实战》—— 原子操作: CAS操作的优势是,可以在不形成临界区和创建互斥量的情况下完成并发安全的值替换操作。这可以大大的减少同步对程序性能的损耗。 当然,CAS操作也有劣势。在被操作值被频繁变更的 ...
分类:
编程语言 时间:
2020-11-16 13:16:59
阅读次数:
8
Go语言中[]byte和string类型相互转换时的性能分析-思维导图
分类:
编程语言 时间:
2020-11-16 13:16:09
阅读次数:
6
mongodb 官方的go驱动包 go.mongodb.org/mongo-driver 使用起来比较繁琐,最近对其进行了二次封装 github地址:https://github.com/w3liu/go-common/tree/master/store/mongo测试用例如下: func Test ...
分类:
数据库 时间:
2020-11-13 13:16:09
阅读次数:
40
本文首发于 Ficow Shen's Blog,原文地址: Docker 中使用 scratch 镜像构建 Go 应用镜像,容器报错:X509: Certificate Signed by Unknown Authority。 内容概览 前言 将证书添加到镜像中 不使用 HTTPS 总结 前言 当使 ...
分类:
其他好文 时间:
2020-11-13 13:14:43
阅读次数:
18
go并不是一个纯面向对象的编程语言。在go中的面向对象,结构体替换了类。 go并没有提供类class,但是它提供了结构体struct,方法method可以在结构体上添加。提供了捆绑数据和方法的行为,这些数据和方法与类类似。 面向对象的基本思想主要体现在封装,继承以及多态等的设计与运用上。下面来看看封 ...
分类:
编程语言 时间:
2020-11-13 12:45:10
阅读次数:
8
云原生时代,Java还是Go?Java曾经著名的座右铭:"一次编写,到处运行",已经很过时了,因为现在我们只想在容器里运行代码。在容器里,一个"Justintime"的编译器意义不大。出于这个原因,可能为了更好地适应云计算,Java生态系统正处于转型之中。Oracle的GraalVm允许将字节码编译成Linux可执行文件(ELF),而RadHeat的Quar
分类:
编程语言 时间:
2020-11-13 12:37:46
阅读次数:
10
Go新版泛型使用:80余行代码构建一个哈希表2018年,我使用Go语言实现了一个玩具性质的哈希表(1),以便学习Go的map等数据类型如何工作。这个版本只支持字符串作为key以及value。1.https://github.com/mdlayher/misc/blob/master/go/algorithms/hashtable/hashtable.go两年后的2020年6月,Go团队发布了一篇题
分类:
其他好文 时间:
2020-11-13 12:35:22
阅读次数:
3
因为Go语言自带高性能服务器,且支持http、TCP/UDP,这得益于内置了net/http包,这个包提供了HTTP客户端和服务端的实现, 所以用Go语言创建Web服务器,代码很简洁。 说明: 1、导入了net/http包 2、http.HandleFunc("/", hello)是创建一个http ...
分类:
编程语言 时间:
2020-11-13 12:20:28
阅读次数:
6
一、用到的工具 Gitlab Jenkins Shell go test 二、实现原理 在gitlab上配置jenkins的webhook,当有代码变更时自动触发jenkins构建job,job内的shell脚本负责把覆盖率报告以钉钉群通知的方法发送出去。 三、Jenkins job配置 点击上图中 ...
分类:
其他好文 时间:
2020-11-13 12:14:17
阅读次数:
7
一、背景 在golang中,最主要的一个概念就是并发协程 goroutine,它只需用一个关键字 go 就可以开起一个协程,并运行。 一个单独的 goroutine运行,倒也没什么问题。如果是一个goroutine衍生了多个goroutine,并且它们之间还需要交互-比如传输数据,那彼此怎么传输数据 ...
分类:
其他好文 时间:
2020-11-12 13:34:28
阅读次数:
6