• 这是十几年的程序员能写出的代码?
  • 发布于 3天前
  • 41 热度
    10 评论
  • Jeff
  • 1 粉丝 56 篇博客
  •   
最近遇到个事想和大家分享一下。 我们业务最近出了一个 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 是那种反驳性型人格,而且比较自大那种,我快待不下去了。
用户评论
  • 麻辣码农
  • 又不是你的锅,你急啥?如实向领导反馈就行了,就说接口返回的数据有问题,老板又不傻,谁的问题不是一目了然。到时候如果问题依旧,老板自然会找A的麻烦。
  • 2025/8/9 16:58:00 [ 0 ] [ 0 ] 回复
  • 黄月英
  • 讲理已经不行了,甩锅就行了。
    这个场景需要绝对唯一 ID ,建议记录详尽日志,
    出问题直接给老板,说他返回的 ID 不一致,所以导致发错货,
  • 2025/8/9 12:59:00 [ 0 ] [ 0 ] 回复
  • 王晶
  • 让老板知道是哪里出了问题,然后你给出解决方案。如果对方不改或不按给定的方案修改,你跟老板说清楚后剩下的和你无关。再次出问题,老板问的时候将问题产生的原因再次说清楚、给出解决方案,对方不改、或不按给定的方案解决,你报给老板,剩下的和你无关。你没有决定权的时候,让老板决定。我之前也总觉得很多人煞笔,现在我想清楚了,如果别人不煞笔,怎么能显出我的牛逼?
  • 2025/8/9 12:44:00 [ 0 ] [ 0 ] 回复
  • 卧龙生
  • 不牵扯你,就不要管;如果牵扯到你,就把问题反馈领导,说明原因,剩下让领导处理,固执的人没办法通过沟通解决的。最后,md5(microtime(true))这种方式生成随机数,最简单的方式加个随机数就可以大幅降低重名的概率,md5(microtime(true).mt_rand(10000000, 99999999)),都 25 年了,ai 都普及了,甚至直接去谷歌随便一搜索就有大把解决方案,我不相信这哥们蠢成这个样子,我猜测大概率是工作上,你让他不爽了。
  • 2025/8/9 12:40:00 [ 0 ] [ 0 ] 回复
  • CEBBCt
  • 职场所有同事的问题都是领导的问题,看楼主描述你们是老板不懂技术每两个程序员的小公司,建议尽快早寻出路,你那同事就是一直呆在这种公司才变成现在这样的。
  • 2025/8/9 12:33:00 [ 0 ] [ 0 ] 回复
  • Scys
  • 有什么奇怪的,只要你接触的人多,你就会发现,有些人做一辈子也没长进。我见过多了。像这种情况,你直接说是谁谁谁的问题,你自己不要再去解决这个问题,让上级去接触那个人。
  • 2025/8/9 12:25:00 [ 0 ] [ 0 ] 回复
  • pckillers
  • 哈希算法是给你“验证”用的,不是拿来做“唯一标识”用的。因为它存在碰撞的可能。简而言之,哈希值一样,不代表原始值就一样。而哈希值不同,则肯定原始值不同。这就是为什么科班教学很重要。你这个需求就应该使用 uuid ,你用 SHA1 也避免不了碰撞。
  • 2025/8/9 11:43:00 [ 0 ] [ 0 ] 回复