Golang 读写锁设计

在《Go精妙的互斥锁设计》一文中,我们详细地讲解了互斥锁的实现原理。互斥锁为了避免竞争条件,它只允许一个线程进入代码临界区,而由于锁竞争的存在,程序的执行效率会被降低。

Go 1.17 新特性:Module 有哪些变化?

但我们知道,studymod 模块实际根本不需要模块 c,因此,我们尝试在 studymod 模块中删除模块 c 的引用,即删除 go.mod 中 replace 部分的 c v0.1.0 => ./c,再次执行 go build:可见模块 c 不能少。

Go语言学习 – Chan的工作原理

dataq_size uint // 缓冲槽大小。一个select在初始化的时候, 然后把所有的通道从chan类型包装成 scase 类型, 添加上一个字段叫做Kind,这个字段可以是“接收者通道”/“发送者通道”, 最后还有一个“default”类型通道, 表明这是一个default case.

Golang 的引用类型底层实现

其中新数组的长度一般是老数组的俩倍,当然,如果一直是俩倍增加,那也会极大的浪费内存.所以在老数组长度大于1024时候,将每次按照不小于25%的涨幅扩容.slice增加长度的源码在src/runtime/slice.go的growslice函数中.golang字典mapmap字典是

TCMalloc 内存分配原理简析

因为golang的内存分配算法绝大部分都是来自 TCMalloc ,golang只改动了其中的一小部分。

面向容器技术资源调度关键技术深度对比

导语:本文以资源分配理念:拍卖、预算、抢占出发,引出Borg、Omega、Mesos、Kubernetes架构、数据、API的特点比较。然后梳理资源共享各种不同共享形式的内容,接着对比任务类型,最后回到资源利用率和基于数据预测角度,看相关系统是如何运用的和实现各自场景目标的。

RPC 是通信协议吗?→ 我们来看下它的演进过程

开心一刻  一实习小护士给我挂针,拿着针在我胳膊上扎了好几针也没找到血管  但这位小姑娘真镇定啊,表情严肃认真,势有不扎到血管不罢休的意思  十几针之后,我忍着剧痛,带着敬畏的表情问小护士:你这针法跟容嬷嬷学的么?

Golang 中的微服务-第 4 部分-使用 JWT 做认证

之前的文章里,我们创建了一个用户服务,保存了一些用户。现在我们看下如何在用户服务中安全的保存用户密码,同时,通过微服务写几个功能,来验证用户,发布安全令牌。注意,我现在已经把我们的服务拆分到几个不同的仓库里。 我觉得这样部署起来容易些。

golang2021数据格式(50)map遍历过程

本来 map 的遍历过程比较简单:遍历所有的 bucket 以及它后面挂的 overflow bucket,然后挨个遍历 bucket 中的所有 cell。每个 bucket 中包含 8 个 cell,从有 key 的 cell 中取出 key 和 value,这个过程就完成了。

Go语言编程,开发一个错题本

概要:回顾一下这些天来GoLang学习知识点,并开始一个错题本开发。IDE使用GoLand 2020.1。