Golang sync中map和once
1. sync.Once介绍 Go语言中的sync包中提供了一个针对只执行一次场景的解决方案–sync.Once。 1.1. 函数格式 sync.Once只有一个Do方法,其格式如下: func (o *Once) Do(f func()) {} type Once struct { // done indicates whet… 阅读更多 »Golang sync中map和once
1. sync.Once介绍 Go语言中的sync包中提供了一个针对只执行一次场景的解决方案–sync.Once。 1.1. 函数格式 sync.Once只有一个Do方法,其格式如下: func (o *Once) Do(f func()) {} type Once struct { // done indicates whet… 阅读更多 »Golang sync中map和once
1. Golang基础正则库 Go语言中使用正则校验需要用到 regexp 包 1.1. 使用MatchString函数 基础函数 func Match(pattern string, b []byte) (matched bool, err error) func MatchString(pattern string, s s… 阅读更多 »Golang正则库使用
1. 概述 基准测试(benchmark)是 go testing 库提供的,用来度量程序性能,算法优劣的利器。 在日常生活中,我们使用速度 m/s(单位时间内物体移动的距离)大小来衡量一辆跑车的性能,同理,我们可以使用”单位时间内程序运行的次数“来衡量程序的性能。 注意:在进行基准测试时,硬件资源直接影响测试结果,为了保证测试… 阅读更多 »Golang test模块benchmark性能测试(转载)
1. atomic介绍 sync/atomic包提供了原子操作的能力,直接有底层CPU硬件支持,因而一般要比基于操作系统API的锁方式效率高些;这些功能需要非常小心才能正确使用。 除特殊的底层应用程序外,同步更适合使用channel或sync包的功能。 通过消息共享内存; 不要通过共享内存进行通信。 原子操作是在执行中不能被中断… 阅读更多 »Golang sync_atomic元子操作
go test命令是一个按照一定的约定和组织来测试代码的程序。在包目录内,所有以_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分,它们是go test测试的一部分。 在*_test.go文件中,有三种类型的函数:功能测试函数、基准性能测试(benchmark)函数、示例函数。 1. test文件和函… 阅读更多 »Golang test模块使用
1. Goroutine(Golang Coroutine) 使用多核CPU实现并行处理,使应用在多核cpu实现并行处理的方案主要是多进程与多线程两种方式,多进程模型相对简单,但是有着资源开销大及进程间通信成本高的问题。多线程模型相对复杂,会有死锁,线程安全,模型复杂等问题,但却因为资源开销及易于管理等优点适用于对于性能要求较高… 阅读更多 »Golang并发调度GMP原理(转载)
1. golang中的指针类型 指针有三个类型: 一种是我们常见的,用去表示的指针; 一种是unsafe.Pointer,Pointer是unsafe包下的一个类型; 最后一种是uintptr,uintptr 这玩意是可以进行运算的也就是可以++–; 他们之间有这样的转换关系: *<=> unsafe.Pointer… 阅读更多 »Golang unsafe 和 uintptr 指针(转载)