go1.6中sort排序bug问题
场景 线上广告系统需要对广告进行排序,这一块其实蛮复杂的,涉及流量规划,点击反馈。不过为了快速上线,这些先不考虑,使用官方库 sort 进行排序,只要实现 Less Swap Len 三个涵数就可以,非常简单。问题对于不同类型广告,正式,预上线,运营卡片,严格遵守排序的,但是同一类型的要随机一个位置 ,这样用户匹配时从数组超始位置匹配即可。升级go1.6后,不定期的会发生 sort panic panic 我们的 Swap 函数实现大致如下: 原始sort 对于同等地位的广告做随机排序,使用 rand ,压测稳定复现panic。后来把 rand 逻辑扔到了外面,在广告生成时,随机给一个权重,不使用rand排序,压测后就不会复现。 新版sort 最后这是个已知问题,在官方 issue 里面提到...阅读全文