Fork me on GitHub
代码改变世界

随笔分类 -  golang 自学系列

RWMutex——一种细粒度的Mutex互斥锁

2021-07-17 17:38 by 沉睡的木木夕, 660 阅读, 收藏,
摘要: RWMutex —— 细粒度的读写锁 我们之前有讲过 Mutex 互斥锁。这是在任何时刻下只允许一个 goroutine 执行的串行化的锁。而现在这个 RWMutex 就是在 Mutex 的基础上进行了拓展能支持多个 goroutine 持有读锁,而在尝试持有写锁时就会如 Mutex 一样就会陷入等 阅读全文

重新梳理调度器——GMP 调度模型

2021-07-17 01:11 by 沉睡的木木夕, 1295 阅读, 收藏,
摘要: 调度器——GMP 调度模型 Goroutine 调度器,它是负责在工作线程上分发准备运行的 goroutines。 首先在讲 GMP 调度模型之前,我们先了解为什么会有这个模型,之前的调度模型是什么样子的?为什么要改成现在的模式? 我们从当初的Goroutine 调度设计文档得知之前采用了 GM 的 阅读全文

探索互斥锁 Mutex 实现原理

2021-07-15 01:46 by 沉睡的木木夕, 3380 阅读, 收藏,
摘要: Mutex 互斥锁 概要描述 mutex 是 go 提供的同步原语。用于多个协程之间的同步协作。在大多数底层框架代码中都会用到这个锁。 mutex 总过有三个状态 mutexLocked: 表示占有锁 mutexWoken: 表示唤醒 mutexStarving: 表示等待锁的饥饿状态(从正常模式进 阅读全文

深入理解 sync.Once 与 sync.Pool

2021-06-24 18:24 by 沉睡的木木夕, 1012 阅读, 收藏,
摘要: 深入理解 sync.Once 与 sync.Pool sync.Once 代表在这个对象下在这个示例下多次执行能保证只会执行一次操作。 var once sync.Once for i:=0; i < 10; i++ { once.Do(func(){ fmt.Println("execed..." 阅读全文

基于 RabbitMQ-EasyNetQ 实现.NET与Go的消息调度交互

2020-12-02 21:30 by 沉睡的木木夕, 1309 阅读, 收藏,
摘要: 基于 RabbitMQ 实现跨语言的消息调度 微服务的盛行,使我们由原来的单机”巨服务“的项目拆分成了不同的业务相对独立的模块,以及与业务不相关的中间件模块。这样我们免不了在公司不同的模块项目使用不同的团队,而各自的团队所擅长的开发语言也会不一致(当然,我想大多数都是统一了语言体系)。但是在微服务体 阅读全文

golang 自学系列(四)——debug for vscode

2020-03-05 20:35 by 沉睡的木木夕, 735 阅读, 收藏,
摘要: golang 自学系列(四)——(调试)VSCode For Debug 这里如何装 vscode 我就不说了 这里如何在 vscode 正常写代码我也不说了 在能正常用 vscode 写 go 语言的前提下(何为正常?就是写代码有智能提示的那种) 在 终端/cmd/iterm 输出以下命令 在执行 阅读全文

golang 自学系列(三)—— if,for,channel

2020-03-04 22:34 by 沉睡的木木夕, 793 阅读, 收藏,
摘要: golang 自学系列(三)—— if,for,channel 一般情况下,if 语句跟大多数语言的 if 判断语句一样,根据一个 boolean 表达式结果来执行两个分支逻辑。 但凡总是有例外,go 语言还有这种写法: 写法 1 的意思是在判断逻辑前,可以加一个表达式,比如获取 ID 赋值给 i, 阅读全文

GoLang 自学系列(二)—— defer

2020-03-01 22:39 by 沉睡的木木夕, 300 阅读, 收藏,
摘要: defer 关键字 首先来看官网的定义: A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because 阅读全文

Golang自学系列

2020-03-01 13:34 by 沉睡的木木夕, 849 阅读, 收藏,
摘要: 为什么会有这个系列? 因为我要往架构方向靠拢啊。 关于架构,其实架构的书我看了《架构整洁之道》,也有《实现驱动领域设计》。但是我感觉明显还不够,所以我在极客时间买了一个架构相关的专栏,这个专栏写的编程语言是 go,为了更好的学习与理解,所以才有这个系列。 我在使用vscode进行go编程时,总会显示 阅读全文