V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  xuletter2021  ›  全部回复第 1 页 / 共 1 页
回复总数  3
2021-03-20 17:16:05 +08:00
回复了 xuletter2021 创建的主题 Go 编程语言 golang 协程读写上下文变量 一直为 0
@carlclone 嗯,我也想知道编译器如何处理的,数据竞争是确实的,但为什么这样就没有竞争了呢
```
func main() {
var x int
go func() {
for {
x++
fmt.Println("ddd")
}
}()
time.Sleep(time.Duration(2) * time.Second)
fmt.Println("**************")
fmt.Println(x)
fmt.Println("**************")
}
```

执行上面的代码
```
~/go/src/awesomeProject/test go run -race testX.go | grep -v 'ddd'
**************
676626
**************
```
2021-03-20 16:27:24 +08:00
回复了 xuletter2021 创建的主题 Go 编程语言 golang 协程读写上下文变量 一直为 0
关闭内联优化 ```go build -gcflags "-N -l" testX.go```,结果还是一样
2021-03-09 23:24:28 +08:00
回复了 BinYang 创建的主题 Java 咨询一个 redis 穿透的问题,看看大佬有什么解决方案没有
@HanLi2021 赞同 79 楼的做法,但逻辑顺序可以,先查询布隆过滤器,布隆过滤器根据业务周期性更新,结果是不存在直接返回,存在再去查 DB 或 redis,这样先拦截 90%的流量,后面的流量具体看 DB 是否能抗住,实在不行分库分表的做法也可以,这样整体方案简单;如果不能可以用 redis 缓存下大部分的流量,但需要同步 DB 中的数据到 redis,一种方式是双写,复杂度高,一种是只写 DB,使用自动同步工具同步 DB 中的数据到 redis,稍微简单。但这些都引入了额外的复杂性。其实还是倾向只用布隆过滤器和 DB 分库分表,实现方案简单。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3382 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 11:45 · PVG 19:45 · LAX 03:45 · JFK 06:45
Developed with CodeLauncher
♥ Do have faith in what you're doing.