Go设计模式08-装饰器模式
代码实现下面是一个简单的画画的例子,默认的 Line 只有基础的画画功能, ColorLine 为他加上了颜色,本质上是对现有功能类进行包装,增加新功能点
Code1234567891011121 ...
Go设计模式07-桥接模式
代码实现Code1234567891011121314151617181920212223242526272829303132333435363738394041424344package bridg ...
Go设计模式03-构造模式
代码实现其实在 Golang 中对于创建类参数比较多的对象的时候,我们常见的做法是必填参数直接传递,可选参数通过传递可变的方法进行创建。本文会先实现课程中的建造者模式,然后再实现我们常用的方式。
建造 ...
序
序
Go 设计模式实现,包含 23 种常见的设计模式实现,同时这也是 极客时间-设计模式之美 的笔记
一些基础原则和思想
“好”代码的几个标准
如何评价代码质量的高低?代码质量的评价有很强的主观性, ...
GMP 原理与调度
基本概念M(machine): 代表着真正的执行计算资源,可以认为它就是os thread(系统线程)。P(processor): 表示逻辑processor,是线程M的执行的上下文。G(gorout ...
Golang Sync.Mutex 详解
lock逻辑:
第一次上锁的时候,直接走第一步CAS上锁,成功返回
Mutex已经被另一个g上锁,那么state的g等待数+1,更新当前的锁状态,然后就进入队列,等待被唤醒,等到另个g调用了Unloc ...
Go设计模式01-单例模式
序代码实现单例模式采用了 饿汉式 和 懒汉式 两种实现,个人其实更倾向于饿汉式的实现,简单,并且可以将问题及早暴露,懒汉式虽然支持延迟加载,但是这只是把冷启动时间放到了第一次使用的时候,并没有本质上解 ...
Golang Channel 详解
channel 1011. 引子单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。
虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发 ...
并发编程
goroutine超时处理123456789101112131415161718192021222324252627282930313233package mainimport ( " ...
go 反射
Name and Kind可调用函数和含义,以及结果一览
123456789101112typeOfCat := reflect.TypeOf(cat{})typeOfCat.Na ...
Golang Context 详解
go 并发控制实际生产中,WaitGroup 和 Channel 是常见的 2 种并发控制的方式。如果有一系列任务,需要这些任务全部完成以后才能继续执行,WaitGroup 非常适合于这类场景,例如下 ...