深度思维者

永远年轻,永远热泪盈眶

上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页
摘要: 简介 简单的说,子测试提供一种在一个测试函数中执行多个测试的能力,比如原来有TestA、TestB和TestC三个测试函数,每个测试函数执行开始都需要做些相同的初始化工作,那么可以利用子测试将这三个测试合并到一个测试中,这样初始化工作只需要做一次。 除此之外, 子测试还提供了诸多便利, 下面逐一说明 阅读全文
posted @ 2021-07-18 11:59 failymao 阅读(568) 评论(0) 推荐(0) 编辑
摘要: Go语言提供了go test 命令行工具,使用该工具可以很方便的进行测试。 不仅Go语言源码中大量使用go test,在各种开源框架中的应用也极为普遍。 目前go test支持的测试类型有: 单元测试 性能测试 示例测试 1.单元测试 1.1项目结构 项目中单元测试的结构如下: [GoExpert] 阅读全文
posted @ 2021-07-17 10:10 failymao 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 反射概念 反射提供一种让程序检查自身结构的能力: “反射是一种检查interface变量的底层类型和值的机制 反射是困惑的源泉 关于静态类型 你肯定知道Go是静态类型语言,比如int、float32、[]byte等等。每个变量都有一个静态类型,且在编译时就确定了。 那么考虑一下如下一种类型声明: t 阅读全文
posted @ 2021-07-14 23:19 failymao 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 go并控制一--Channel go并发控制二--WaitGroup context翻译成中文是”上下文”,即它可以控制一组呈树状结构的goroutine,每个goroutine拥有相同的上下文。 典型的使用场景如下图所示: 图中由于goroutine派生出子goroutine,而子go 阅读全文
posted @ 2021-07-13 08:02 failymao 阅读(550) 评论(0) 推荐(1) 编辑
摘要: 1. 前言 上一篇介绍了 Go并发控制--Channel 下一篇会介绍 Go并发控制--Context 使用channel来控制子协程的优点是实现简单,缺点是当需要大量创建协程时就需要有相同数量的channel,而且对于子协程继续派生出来的协程不方便控制。 2. 使用WaitGroup控制 Wait 阅读全文
posted @ 2021-07-12 07:47 failymao 阅读(2054) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 我们考虑这么一种场景,协程A执行过程中需要创建子协程A1、A2、A3…An,协程A创建完子协程后就等待子协程退出。 针对这种场景,GO提供了三种解决方案: Channel: 使用channel控制子协程 WaitGroup : 使用信号量机制控制子协程 Context: 使用上下文控制子 阅读全文
posted @ 2021-07-12 07:36 failymao 阅读(1968) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 所谓的逃逸分析(Escape analysis)是指由编译器决定内存分配的位置吗不需要程序员指定。 函数中申请一个新的对象 如果分配在栈中, 则函数执行结束后可自动将内存回收 如果分配在堆中, 则函数执行借宿可交给GC(垃圾回收)处理 有了逃逸分析,返回函数局部变量将变得可能,除此之外, 阅读全文
posted @ 2021-07-08 23:09 failymao 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 1.前言 所谓垃圾就是不再需要的内存块,这些垃圾如果不清理就没办法再次被分配使用,在不支持垃圾回收的编程语言里,这些垃圾内存就是泄露的内存。 Golang的垃圾回收(GC)也是内存管理的一部分,了解垃圾回收最好先了解前面介绍的内存分配原理。 2. 垃圾回收算法 业界常见的垃圾回收算法有以下几种: 引 阅读全文
posted @ 2021-07-06 07:31 failymao 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 1. 前言 编写过C语言程序的肯定知道通过malloc()方法动态申请内存,其中内存分配器使用的是glibc提供的ptmalloc2。 除了glibc,业界比较出名的内存分配器有Google的tcmalloc和Facebook的jemalloc。二者在避免内存碎片和性能上均比glibc有比较大的优势 阅读全文
posted @ 2021-07-04 23:39 failymao 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 前言 Goroutine调度是一个很复杂的机制, 尽管Goy源码中提供了大量的注释,但对起原理没有一个好的理解情况下去读源码收获不是很大。 1. 线程池的缺陷 我们知道,在高并发应用中频繁创建线程会造成不必要的开销,所以有了线程池。线程池中预先保存一定数量的线程,而新任务将不再以创建线程的方式去执行 阅读全文
posted @ 2021-07-02 07:06 failymao 阅读(553) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 14 下一页