如何欺骗 Go Mod ?

2021-08-30
阅读 5 分钟
1.5k
我为什么将标题称为:如何欺骗 Go mod 呢?这个挺有意思的,这里先卖个关子,不过确实是突破了 Go mod 的相关特性。(嗯,曹大的 Go mod 十宗罪又可以增加一宗了)

见微知著| 带你透过内存看 Slice 和 Array的异同

2021-08-24
阅读 3 分钟
1.3k
hi, 大家好,我是 hhf。有这么一个 Go 面试题:请说出 slice 和 array 的区别?这简直就是送分题。但是你如何回答才能让面试官满意呢?我这里就不贴这道题的答案了。但是我想内存方面简单分析下 slice 和 array 的区别。Array {代码...} 这段很简单的代码,声明了一个 array。当然输出结果也足够简单。我们现在玩点花活...

不懂汇编,也能看懂的 Go interface 原理(一)

2021-08-10
阅读 5 分钟
2.5k
可能你看过的 interface 剖析的文章比较多了,这些文章基本都是从汇编角度分析类型转换或者动态转发。不过随着 Go 版本升级,对应的 Go 汇编也发生了巨大的变化,如果单从汇编角度去分析 interface 变的非常有难度,本篇文章我会从内度分配+汇编角度切入 interface,去了解 interface 的原理。

Go sync.Pool 浅析

2021-05-18
阅读 5 分钟
4.1k
sync.Pool 应该是 Go 里面明星级别的数据结构,有很多优秀的文章都在介绍这个结构,本篇文章简单剖析下 sync.Pool。不过说实话 sync.Pool 并不是我们日常开发中使用频率很高的的并发原语。

这一次,彻底搞懂 Go Cond

2021-04-23
阅读 3 分钟
6.4k
本篇文章会从源码角度去深入剖析下 sync.Cond。Go 日常开发中 sync.Cond 可能是我们用的较少的控制并发的手段,因为大部分场景下都被 Channel 代替了。还有就是 sync.Cond 使用确实也蛮复杂的。

你真的懂 golang reslice 吗

2021-04-20
阅读 4 分钟
1.4k
{代码...} 看到这个题, 你的第一反应是啥? {代码...} 第一感觉: 肯定能编译过, 但是运行时一定会panic的. 但事与愿违竟然能够正常运行, 结果是:[]疑问 {代码...} a1 和 a2 共享同样的底层数组, len(a1) = 1, a1[1]绝对会panic, 但是a[1:]却能正常输出, 这是为何?从表面入手整体上看下整体的情况 {代码...} 结果: {代码.....

疑惑: Go const 会导致程序结果错乱 ?

2021-04-20
阅读 5 分钟
852
某公司某次营销活动中, 会根据用户 VIP 级别送用户一些优惠券, 最大面值520. 某用户发现自己购买的 500 元钱的商品, 使用 520 的优惠券来支付, 理论上能 0 元购买的商品, 最后却需要支付一个天文数字.

当 Go struct 遇上 Mutex

2021-04-20
阅读 5 分钟
2.1k
如果你看出来问题在哪里的话, 那我再悄悄告诉你, 这段代码是 github 某 3k star Go 框架的底层核心代码, 那你是不是就觉得这个话题开始有意思了 ?

一文完全掌握 Go math/rand

2021-04-20
阅读 5 分钟
4.1k
Go 获取随机数是开发中经常会用到的功能, 不过这个里面还是有一些坑存在的, 本文将完全剖析 Go math/rand, 让你轻松使用 Go Rand.

最清晰易懂的 Go WaitGroup 源码剖析

2021-04-20
阅读 4 分钟
4k
本篇主要介绍 WaitGroup 的一些特性,让我们从本质上去了解 WaitGroup。关于 WaitGroup 的基本用法这里就不做过多介绍了。相对于《这可能是最容易理解的 Go Mutex 源码剖析》来说,WaitGroup 就简单的太多了。

这可能是最容易理解的 Go Mutex 源码剖析

2021-04-20
阅读 7 分钟
5k
上一篇文章《一文完全掌握 Go math/rand》,我们知道 math/rand 的 global rand 有一个全局锁,我的文章里面有一句话:“修复方案: 就是把 rrRand 换成了 globalRand, 在线上高并发场景下, 发现全局锁影响并不大.”, 有同学私聊我“他们遇到线上服务的锁竞争特别激烈”。确实我这句话说的并不严谨。但是也让我有了一个思考...

看过这篇剖析,你还不懂 Go sync.Map 吗?

2021-04-16
阅读 5 分钟
2k
本篇文章会从使用方式和源码角度剖析 sync.Map。不过不管是日常开发还是开源项目中,好像 sync.Map 并没有得到很好的利用,大家还是习惯使用 Mutex + Map 来使用。