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. 哈希表(Hash table) 也称为 哈希表 。是字典的一种抽象。比如说你要查一个字,通过这个字的拼音首字母,找到这个字的页码,然后翻到那页找就行了。这种方法直接把查找 时间复杂度 降到了常数。但是要牺牲一定的计算索引的时间。计算索引的那个函数称为 哈希函数 ( 散列函数“)。 1.1. 常见的三种哈希结构: 数组; … 阅读更多 »哈希冲突解决(转载)
Golang并发原理及GPM调度策略 1. Goroutine(Golang Coroutine) 使用多核CPU实现并行处理,使应用在多核cpu实现并行处理的方案主要是多进程与多线程两种方式,多进程模型相对简单,但是有着资源开销大及进程间通信成本高的问题。多线程模型相对复杂,会有死锁,线程安全,模型复杂等问题,但却因为资源开销… 阅读更多 »Golang并发调度GMP原理(转载)