加载中
golang 高负载问题(二)空转

我们的游戏还没有进入大推阶段,实时在线用户仅 200 左右,但是线上高性能服务器的 cpu 可以达到 8%,且偶现提升到 20%,单核跑满。此时服务器处理任务的效率受到影响,部分玩家在登录时心跳...

06/10 10:28
136
golang 高负载问题(一)乱序

5.1 日,线上服务出现异常,表现为 cpu 负载升高,请求处理缓慢,玩家无法顺畅游戏。登陆游戏后服务器容易触发强刷。 通过对日志的检查,初步认定用户任务队列有问题,任务没有被按照请求的顺...

06/10 10:23
97
Unity PlayerPrefs 的一个坑

本周在测试 deeplink 时遇到一个闪退的问题,提取日志: 03-05 10:46:30.442 2633 2633 D Unity : Uploading Crash Report 03-05 10:46:30.443 2633 2633 E Unity : UnityException: TrySetS...

03/07 12:00
470
golang 官方快排的一个坑

golang 的快排在排序前并不会检查当前 slice 是否已经有序,例如: package main import ( "sort" ) func main() { s := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13} sort.Ints(s) } ...

go
02/21 18:22
23
c# float.Parse / float.TryParse 的一个坑

现象 c# 在 parse 字符串数字时,会根据当前语言环境决定最终结果。Unity 应用也是如此。 例如下面这个例子,在德语环境下,最终的结果放大了 1000 倍。 类似的还有西班牙语,在这些语言中,...

02/21 17:26
551
为什么不建议在 go 中使用“继承"?

TL;DR go 没有虚函数,而 java 函数默认就是虚函数,它会通过动态绑定找到实际应该执行的函数。 严格的说,go 没有继承。我们使用结构体嵌套的方式实现的是一种“伪继承”。 go vs java 我们...

2021/08/28 15:17
56
如何让测试同学理解并发锁

有一天,一个叫做 hulk 的小伙子,挨了一刀,减少了 10 点生命值。 如果不考虑时间地点,不考虑刀子的来源(当然是我),上面这句话可以表现为下图。 其中 get 表示读数据,set 表示写数据,...

2021/02/07 18:58
3.8K
"b = &boy{}" vs "*b = boy{}" 谁不讲武德?golang 逃逸分析入门

背景 最近想要将 protobuf 变量和之前设计的数据对象整合起来,维护在内存中,以减少内存申请和 GC 的性能损耗。 feature or bug,gogoproto 解码疑惑 由于 gogoproto 在 unmarshal 时不保证...

2020/12/19 20:22
3.4K
golang slice append 总结

var r *reward var rs []*reward // [] 0 0 rs = append(rs, nil...) // [] 0 0 rs = append(rs, nil) // [] 1 1 rs = append(rs, r) ......

2020/07/26 03:37
366
wsl & Windows Termianl & expect & oathtool 实现更便捷的 xshell 体验

wsl & Windows Termianl & expect & oathtool 实现更便捷的 xshell 体验 1. wsl 1.1 安装 wsl 的发行版不限。具体的安装教程网上有很多,这里不多说。 笔者使用的发行版为 yuk7/ArchWSL。 2....

expect 实现类似 xshell 的脚本登录

xshell 免费版本只支持 4 个窗口,且用 xshell 打开的终端在某些情况下会失去快捷键支持(例如 command+backspace)。决定在 Linux 上寻找替代方法,偶然在 v2ex 上看到 expect 命令,它的语...

2020/05/06 21:16
827
Pika `get` vs. `mget` Benchmark

Background System Info .. root@p1gd0g .PLTJ. OS: CentOS 6.9 Final <><><><> Kernel: x86_64 ......

Redis get vs. mget Benchmark

Redis get vs. mget Benchmark 0. Background Scripts #!/bin/bash key="testkey" value="testvalue" int=0 while (($int <= 1024)); do echo -e $key$int $value redis-cli set $key$int $v...

2020/04/14 18:05
1.5K
Prometheus & Grafana 初探

拿到一个新需求,通过 Prometheus & Grafana 监控接口。 有点晚了,长话短说,早点回家。 整合 Prometheus 到 go 项目中 可以参考官方示例。 重点只有这一句,表示记录一个值。对于我们来说就...

2020/01/03 00:09
214
如何利用 pprof 查询 go 内存占用

最近领导看到某个服务的内存占用很高,吩咐我查一下是啥问题。 前提 服务引用了 pprof 包 import ( _ "runtime/pprof" ) 监听了 http 端口 err := http.ListenAndServe(fmt.Sprintf(":%d", ...

2019/12/24 14:14
9K
golang context 的一个小坑

项目最近几个版本开始使用 context 包,主要用于透传参数。由于不够熟悉 context,我在优化代码时遇到了这样的问题。 func main() { ctx := context.WithValue(context.Background(), true,...

2019/11/12 17:55
1K

没有更多内容

加载失败,请刷新页面

返回顶部
顶部