加载中
Go testing.B数据结构源码剖析

简介 跟据前面章节,我们可以快速的写出一个性能测试并执行,最令我感到神奇的是b.N的值,虽然官方资料中说b.N会自动调整以保证计时可靠,可还是想了解具体的实现机制。 本节,我们先分析tes...

Go testing.T数据结构源码剖析

简介 在了解过testing.common后,我们进一步了解testing.T数据结构,以便了解更多单元测试执行的更多细节。 数据结构 源码包src/testing/testing.go:T定义了其数据结构: type T struct { co...

Go testing.TB接口

简介 TB接口,顾名思义,为testing.T(单元测试)和testing.B(性能测试)共用的接口。TB接口通过在接口中定义一个名为private()的私有方法,保证了即使用户实现了类似的接口,也不会跟testing...

Go 子测试使用说明

简介 简单的说,子测试提供一种在一个测试函数中执行多个测试的能力,比如原来有TestA、TestB和TestC三个测试函数,每个测试函数执行开始都需要做些相同的初始化工作,那么可以利用子测试将这...

Go testing.common公共类源码剖析

简介 我们知道单元测试函数需要传递一个testing.T类型的参数,而性能测试函数需要传递一个testing.B类型的参数,该参数可用于控制测试的流程,比如标记测试失败等。 testing.T和testing.B属于...

GO itoa实现原理剖析

前言 我们知道iota常用于const表达式中,我们还知道其值是从零开始,const声明块中每增加一行iota值自增1。 使用iota可以简化常量定义,但其规则必须要牢牢掌握,否则在我们阅读别人源码时可...

Go
2018/11/22 11:14
87
GO 读写锁实现原理剖析

前言 前面我们聊了互斥锁Mutex,所谓读写锁RWMutex,完整的表述应该是读写互斥锁,可以说是Mutex的一个改进版,在某些场景下可以发挥更加灵活的控制能力,比如:读取数据频率远远大于写数据频...

Go
2018/11/19 17:31
38
GO 互斥锁实现原理剖析

前言 互斥锁是并发程序中对共享资源进行访问控制的主要手段,对此Go语言提供了非常简单易用的Mutex,Mutex为一结构体类型,对外暴露两个方法Lock()和Unlock()分别用于加锁和解锁。 Mutex使用...

Go
2018/11/14 17:32
144
Go defer实现原理剖析

前言 defer语句用于延迟函数的调用,每次defer都会把一个函数压入栈中,函数返回前再把延迟的函数取出并执行。 为了方便描述,我们把创建defer的函数称为主函数,defer语句后面的函数称为延迟...

Go
2018/11/05 16:50
240
Go range实现原理及性能优化剖析

前言 range是Golang提供的一种迭代遍历手段,可操作的类型有数组、切片、Map、channel等,实际使用频率非常高。 探索range的实现机制是很有意思的事情,这可能会改变你使用range的习惯。 2....

Go
2018/11/01 16:06
161
Go slice实现原理剖析

前言 Slice又称动态数组,依托数组实现,可以方便的进行扩容、传递等,实际使用中比数组更灵活。 正因为灵活,如果不了解其内部实现机制,有可能遭遇莫名的异常现象。Slice的实现原理很简单,...

Go
2018/10/30 20:06
929
Go select实现原理剖析

前言 select是Golang在语言层面提供的多路IO复用的机制,其可以检测多个channel是否ready(即是否可读或可写),使用起来非常方便。 本章试图根据源码总结其实现原理,从而发现一些使用误区或解...

Go
2018/10/29 12:10
279
Go 并发控制context实现原理剖析

前言 Golang context是Golang应用开发常用的并发控制技术,它与WaitGroup最大的不同点是context对于派生goroutine有更强的控制力,它可以控制多级的goroutine。 context翻译成中文是"上下文"...

2018/10/19 18:35
399
Go WaitGroup实现原理

1 前言 WaitGroup是Golang应用开发过程中经常使用的并发控制技术。 WaitGroup,可理解为Wait-Goroutine-Group,即等待一组goroutine结束。比如某个goroutine需要等待其他几个goroutine全部完...

Go goroutine调度

前言 Goroutine调度是一个很复杂的机制,尽管Go源码中提供了大量的注释,但对其原理没有一个好的理解的情况下去读源码收获不会很大。下面尝试用简单的语言描述一下Goroutine调度机制,在此基...

Go
2018/09/29 12:25
446
Go struct tag深入理解

前言 Go的struct声明允许字段附带Tag来对字段做一些标记。 该Tag不仅仅是一个字符串那么简单,因为其主要用于反射场景,reflect包中提供了操作Tag的方法,所以Tag写法也要遵循一定的规则。 ...

Go 反射机制

前言 个人觉得,反射讲得最透彻的还是官方博客。官方博客略显晦涩,多读几遍就慢慢理解了。 本文既是学习笔记,也是总结。 官方博客地址:https://blog.golang.org/laws-of-reflection 2. 反...

Go
2018/09/03 19:03
50
装修助手支持

占位

2014/12/18 23:11
134
CppUtest发现的STL容器内存泄漏问题

STL内存分配及回收策略有时会悄悄的吃掉你的内存,尤其是容器对象做为全局存在时

2014/09/16 15:28
872
系统函数dlopen()被劫持导致symbol找不到的问题记录

由于C语言没有命名空间的概念,用户可以实现与系统函数同名的函数以覆盖系统函数,这个特性带来了无限的创造性的同时也带来了无限的伤害,影响大小完全取决你怎么使用,这正是C语言的魅力所在...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部