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

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 条回复
EchoTong
2025 年 8 月 8 日
你为什么要做这个中间人?不让老板直接找他?
Fallever
2025 年 8 月 8 日
工作中我总是秉信一个观点: 什么人干什么事。
事能不能做好跟工作了多久关系并不正相关
imokkkk
2025 年 8 月 8 日
@lixining uuid 现成的 API 成熟的实现,为啥还非要自己搞哩
ruke
2025 年 8 月 8 日
懒一点 直接用 Id 来 hash
pweng286
2025 年 8 月 8 日
@honkew #2 他找你你就找老板,让老板治他
jzphx
2025 年 8 月 8 日
才疏学浅,才知道还有这种生成 id 的方式
hefish
2025 年 8 月 8 日
你得学会甩锅。 光跟我们讲问题有啥用。
SanjinGG
2025 年 8 月 8 日
@xz410236056 #59 这种领导纯纯逗逼吧,我顶多排查下问题是那里的,上游改好再跟进,照常到点下班
SanjinGG
2025 年 8 月 8 日
@evan1 #71 你直接让后端把数据库账号密码给你,让他滚蛋把
Wandefu91
2025 年 8 月 8 日
@foufoufm 治不了他,只能远离他
Steaven
2025 年 8 月 8 日
php 不是有 uniqid() 这个方法么
lthon
2025 年 8 月 8 日
@ryd994 开机开始计算,那么重启不就会重复了吗?
ryd994
2025 年 8 月 8 日
@lthon 要配合机器 ID 和其它数据生成,这些可以在程序启动时存到内存。

调试性能问题可以单用 TSC
DefoliationM
2025 年 8 月 8 日
你不是老板就不要管他,诚心给自己添堵吗?他的问题直接让他自己解决,解决不了就上报说是他问题。老板再问你,你直接三个人拉个群 @他。
opengg
2025 年 8 月 9 日
神经病啊,hash time 作为业务 key
opengg
2025 年 8 月 9 日
你们老板是不是拿同事的工资上班啊?你同事是不是才是公司大股东啊?
老板还得跟下属好声好气哄着他干活?干不了来找你?
这公司是要玩啊
AkinoKaedeChan
2025 年 8 月 9 日
Hmm ,都在讨论怎么生成随机 ID ,我觉得这包裹号好像就是唯一的?
abolast
2025 年 8 月 9 日
@honkew 反驳性人格这个词用的好,可以用来形容无知又傲慢的人,他们的狭隘的知识储备来理解这个世界,然后得出这个世界好菜
abolast
2025 年 8 月 9 日
@coderzhangsan 真的有这样愚蠢的。有个干了不少年的后端,还嘲笑过我在 alpine 里面用 apk 呢而不是 apt-get ,然后觉得我太菜了,笑死我家一大堆路由器的包管理器都是 apk ,无知傲慢是可怕的
julyclyde
2025 年 8 月 9 日
@Mithril 用 uuid 也避免不了碰撞的。无限的输入产生有限的输出,那必然会碰撞,所有定长输出的都不适用

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

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

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

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

© 2021 V2EX