你们相信这是十几年的程序员写的代码吗?!

2025 年 8 月 8 日
 honkew

最近遇到个事想和大家分享一下。 我们业务最近出了一个 bug

我这边通过同事的接口获取快递面单 pdf 具体流程是 [包裹号] -> [资源 ID ] -> [快递面单 pdf ]

也就是说: 拿着包裹号请求接口,拿到资源 ID 再用资源 ID 请求下载地址,获取 PDF

然后发现奇怪的事情,包裹 A 和 包裹 B 获取到的快递面单串了,下载下来是一样的单号 资源 ID res_id 是 32 位数,相同一秒获取到的 pdf 就是一样的,猜测是采用 md5(time()) 这种方式命名文件

然后和 同事 A 反馈了该问题,同事 A 反应已经修复 接下来一段时间还是出现这种问题会导致仓库发错货

老板问我咋回事,我又去查日志发现同一时间 res_id 还是会一样的,这次精度有所提升不是秒了,大概精确到后面两位的样子

然后和老板说了一下,是因为资源 id 还是一样的 这里他还改了一下运单文件在他服务器上的保存的命名方式,这个改动压根解决不了这个问题 然后同事 A 说他已经改了,没问题的,你不应该请求速度这么快 我直接整个大无语

然后开会 我说建议使用 sha1(运单号) 的方式生产资源 id ,或者使用 UUID ,还没有说完直接反驳 说不安全巴拉巴拉,不安全可以 accessToken 验证啊,外部访问不到不就可以了 然后又说改算法耗费服务器性能巴拉巴拉的,老板又好声好气的让他想办法改一下 最后他改了,改成 md5(microtime(true))

然后今天又又又出现这个 bug 了,老板又跑过来问我,我已经要疯了 这个问题前前后后几个月都没有弄好

同事 A 是那种反驳性型人格,而且比较自大那种,我快待不下去了

18462 次点击
所在节点    程序员
140 条回复
rabbbit
2025 年 8 月 8 日
不要当老板和他的传话筒,想办法让老板直接去找他。这样你就轻松了
honkew
2025 年 8 月 8 日
@la2la 只要仓库那边发错了就找到我这边,我还有其它工作要做,被这种问题天天烦。
老板也指挥不动他,老板长期不在国内。只能让我改想让我“兼容”一下
MuSeCanYang
2025 年 8 月 8 日
用 UUID 为啥会不安全啊? 完全没理解他的脑回路是啥。
rabbbit
2025 年 8 月 8 日
不要给他建议,让他自己解决吧。看样子他也不领你情
ooTwToo
2025 年 8 月 8 日
他连 AI 都不用的吗?
Vindroid
2025 年 8 月 8 日
责任已经分清了,会上讨论过,你也给出了方案,你就不要那么在乎了,后续问题全部转给他就行了
la2la
2025 年 8 月 8 日
@honkew 那你也不做,直接让找他就行了。这种情况就比谁更更没有责任心
lixining
2025 年 8 月 8 日
啊我觉得 md5 ( time())又快又好啊。。。难道我是你同事?
coderzhangsan
2025 年 8 月 8 日
不牵扯你,就不要管;如果牵扯到你,就把问题反馈领导,说明原因,剩下让领导处理,固执的人没办法通过沟通解决的。

最后,md5(microtime(true))这种方式生成随机数,最简单的方式加个随机数就可以大幅降低重名的概率,md5(microtime(true).mt_rand(10000000, 99999999)),都 25 年了,ai 都普及了,甚至直接去谷歌随便一搜索就有大把解决方案,我不相信这哥们蠢成这个样子,我猜测大概率是工作上,你让他不爽了。
sojourner
2025 年 8 月 8 日
让老板知道是哪里出了问题,然后你给出解决方案。如果对方不改或不按给定的方案修改,你跟老板说清楚后剩下的和你无关。再次出问题,老板问的时候将问题产生的原因再次说清楚、给出解决方案,对方不改、或不按给定的方案解决,你报给老板,剩下的和你无关。你没有决定权的时候,让老板决定。我之前也总觉得很多人煞笔,现在我想清楚了,如果别人不煞笔,怎么能显出我的牛逼?
Foxkeh
2025 年 8 月 8 日
建议服务端用雪花算法生成,杂凑和随机的都没法保证绝对不碰撞
cryptovae
2025 年 8 月 8 日
@lixining #28 刚毕业吗?或者你们的业务 QPS<1?
frankkly
2025 年 8 月 8 日
不是,直接怼他啊,别给他留面子啊
Subfire
2025 年 8 月 8 日
这个唯一 id 是服务器要保证的, 你这又没 bug 干啥老找你? bug 单转给服务器就行了
angeni
2025 年 8 月 8 日
你这个层级解决不了就找能解决的,你是打工的又不是和公司生死存亡的死士。该和稀泥就和
ATKLLL
2025 年 8 月 8 日
是雪花算法性能不够高 还是 UUID 不够多 非得用这种乱七八糟的 ID
fkdtz
2025 年 8 月 8 日
讲理已经不行了,甩锅就行了。
这个场景需要绝对唯一 ID ,建议记录详尽日志,
出问题直接给老板,说他返回的 ID 不一致,所以导致发错货,
garlics
2025 年 8 月 8 日
你让他改雪花算法 uuid 啥的,他肯定不愿意。让他改成 date("YmdHisv") . mt_rand(1000000, 9999999) . mt_rand(10000000, 99999999) 吧,低并发的情况下肯定不会出现问题。
R1
2025 年 8 月 8 日
这个一般用雪花数吧,MD5 主要用来校验吧
pointerman
2025 年 8 月 8 日
@cryptovae
@lixining
就算你用纳秒好了,还要考虑服务器时钟回拨的可能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1150932

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX