加载中
Go timer 是如何被调度的?

hi,大家好,我是 haohongfan。 本篇文章剖析下 Go 定时器的相关内容。定时器不管是业务开发,还是基础架构开发,都是绕不过去的存在,由此可见定时器的重要程度。 我们不管用 NewTimer, ti...

06/08 08:37
7.2K
我的第一个技术群

hi,大家好,我是 haohongfan。 我一直以来都没有建立微信群,主要原因是我的公众号受众群体太小了,因此也就缺少了和众多大佬交流的重要平台,鉴于这些问题我的第一个技术群就诞生了。 大家...

06/07 10:46
0
Go sync.Pool 浅析

hi, 大家好,我是 haohongfan。 sync.Pool 应该是 Go 里面明星级别的数据结构,有很多优秀的文章都在介绍这个结构,本篇文章简单剖析下 sync.Pool。不过说实话 sync.Pool 并不是我们日常开发...

05/18 08:37
2K
疑惑: Go const 导致程序结果错乱 ?

const 是 Go 里面我们经常使用的关键字, 基本上很难玩出花来. 不过某些特殊情况下 const 会出现你意想不到的结果 场景模拟 某公司某次营销活动中, 会根据用户 VIP 级别送用户一些优惠券, 最大...

2020/12/20 13:08
0
当 Go struct 遇上 Mutex

struct 是我们写 Go 必然会用到的关键字, 不过当 struct 遇上一些比较特殊类型的时候, 例如: Mutex, 你注意过你的程序是否依然正常吗 ? 一段代码 type URL struct { Ip string Port ......

一文完全掌握 Go math/rand

Go 获取随机数是开发中经常会用到的功能, 不过这个里面还是有一些坑存在的, 本文将完全剖析 Go math/rand, 让你轻松使用 Go Rand. 开篇一问: 你觉得 rand 会 panic 吗 ? rand panic 源码剖析...

go
02/22 10:24
0
这可能是最容易理解的 Go Mutex 源码剖析

Hi,大家好,我是 haohongfan。 上一篇文章《一文完全掌握 Go math/rand》,我们知道 math/rand 的 global rand 有一个全局锁,我的文章里面有一句话:“修复方案: 就是把 rrRand 换成了 gl...

03/25 08:10
0
你应该知道的 Go WaitGroup 剖析

hi,大家好,我是haohongfan。 本篇主要介绍 WaitGroup 的一些特性,让我们从本质上去了解 WaitGroup。关于 WaitGroup 的基本用法这里就不做过多介绍了。相对于《这可能是最容易理解的 Go M...

04/11 16:51
483
看过这篇剖析,你还不懂 Go sync.Map 吗?

hi, 大家好,我是 haohongfan。 本篇文章会从使用方式和源码角度剖析 sync.Map。不过不管是日常开发还是开源项目中,好像 sync.Map 并没有得到很好的利用,大家还是习惯使用 Mutex + Map 来使...

04/14 08:58
1.2K
这一次,彻底搞懂 Go Cond

hi,大家好,我是 haohongfan。 本篇文章会从源码角度去深入剖析下 sync.Cond。Go 日常开发中 sync.Cond 可能是我们用的较少的控制并发的手段,因为大部分场景下都被 Channel 代替了。还有就...

04/23 10:45
4.3K
我换新号了...

各位童鞋们, 大家好. 由于这个公众号(HHF技术博客)没有留言功能, 缺少了与大家交流的机会. 偶然间发现我 2017 年竟然申请过公众号, 经过一番操作, 竟然找回了这个号. 因此, 从今天开始将换到...

2020/12/17 23:19
160
你真的懂 golang reslice 吗

package main func a() []int { a1 := []int{3} a2 := a1[1:] return a2 } func main() { a() } 看到这个题, 你的第一反应是啥? (A) 编译失败 (B) panic: runtime error: index out o......

2020/10/23 10:19
513
限流器系列(3)--自适应限流

漏斗桶/令牌桶确实能够保护系统不被拖垮, 但不管漏斗桶还是令牌桶, 其防护思路都是设定一个指标, 当超过该指标后就阻止或减少流量的继续进入,当系统负载降低到某一水平后则恢复流量的进入。...

Golang是否真的没有指针运算?

答案是肯定的: 没有指针运算(哈哈, 别着急慢慢往后面看) func main() { a1 := []int{1, 2, 3} p1 := &a1[0] fmt.Println(reflect.TypeOf(p1)) // *int fmt.Println("p1: ", *p1) // 1 ......

2019/08/14 19:24
42
gin的路由算法

gin的是路由算法其实就是一个Radix Tree. 有关数据结构的可以自己去网上找相关资料查看. 注册路由预处理 我们在使用gin时通过下面的代码注册路由 普通注册 router.POST("/somePost", func(co...

2019/09/15 14:10
392
gin牛逼的context

Gin封装的最好的地方就是 context和对response的处理. github的README的介绍, 基本就是对这两个东西的解释. 本篇文章主要解释context的使用方法, 以及其设计原理 为什么要将Request的处理封装...

2019/09/15 14:10
129
揭开gin的神秘面纱

上一篇简单介绍了gin, 以及 net/http是如何数据流转的, 本篇将详细介绍gin 数据如何在gin中流转 package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() ......

2019/09/15 14:10
67
gin源码阅读

最近公司大部分项目开始往golang换, api的框架选定使用gin, 于是将 gin的源码看了一遍, 会用几篇文章将gin的流程及流程做一个梳理, 下面进入正题. gin框架预览 上图大概是 gin里面比较重要的...

2019/09/15 14:10
53
[每日一译] Tags in Golang

原文地址: Tags in Golang 我们声明golang struct时可以在struct字段后面添加一些字符串来丰富这个字段, 这些字符串称为 tag. Tags可以被当前package或者包外使用. 让我们首先看看struct是如...

go
2019/09/16 18:19
38
[每日一译]golang range与iteration之间的关系

原文地址 package main import ( "fmt" ) type T struct { id int } func main() { t1 := T{id: 1} t2 := T{id: 2} ts1 := []T{t1, t2} ts2 := []*T{} fo......

2019/09/16 18:19
29

没有更多内容

加载失败,请刷新页面

返回顶部
顶部