• 请不要在回答技术问题时复制粘贴 AI 生成的内容
honkew
V2EX  ›  程序员

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

  •  1
     
  •   honkew · Aug 8, 2025 · 20404 views
    This topic created in 460 days ago, the information mentioned may be changed or developed.

    最近遇到个事想和大家分享一下。 我们业务最近出了一个 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 是那种反驳性型人格,而且比较自大那种,我快待不下去了

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

    调试性能问题可以单用 TSC
    DefoliationM
    DefoliationM
    Aug 8, 2025
    114
    你不是老板就不要管他,诚心给自己添堵吗?他的问题直接让他自己解决,解决不了就上报说是他问题。老板再问你,你直接三个人拉个群 @他。
    opengg
    opengg
    Aug 9, 2025 via Android
    115
    神经病啊,hash time 作为业务 key
    opengg
    opengg
    Aug 9, 2025 via Android
    116
    你们老板是不是拿同事的工资上班啊?你同事是不是才是公司大股东啊?
    老板还得跟下属好声好气哄着他干活?干不了来找你?
    这公司是要玩啊
    AkinoKaedeChan
    AkinoKaedeChan
    Aug 9, 2025 via Android
    117
    Hmm ,都在讨论怎么生成随机 ID ,我觉得这包裹号好像就是唯一的?
    abolast
    abolast
    Aug 9, 2025
    118
    @honkew 反驳性人格这个词用的好,可以用来形容无知又傲慢的人,他们的狭隘的知识储备来理解这个世界,然后得出这个世界好菜
    abolast
    abolast
    Aug 9, 2025
    119
    @coderzhangsan 真的有这样愚蠢的。有个干了不少年的后端,还嘲笑过我在 alpine 里面用 apk 呢而不是 apt-get ,然后觉得我太菜了,笑死我家一大堆路由器的包管理器都是 apk ,无知傲慢是可怕的
    julyclyde
    julyclyde
    Aug 9, 2025
    120
    @Mithril 用 uuid 也避免不了碰撞的。无限的输入产生有限的输出,那必然会碰撞,所有定长输出的都不适用
    abolast
    abolast
    Aug 9, 2025
    121
    @DinnyXu 这看品德素养,我(运维)都用数据复现或者直接告诉他(后端)代码要怎么写能解决,25 年至今打脸不下于 20 次,最后他情绪越来越不稳定,每次对接都直接大声狂吼狂吠我。没关系,我给自己下了个禁制就是绝不看他代码具体内容,在他这我只是个运维
    JFZ
    JFZ
    Aug 9, 2025
    122
    ID 自增?
    whisper1225
    whisper1225
    Aug 9, 2025
    123
    唯一标志的问题,也是他的问题,不能惯着,这是底线,不然以后有你受的,但是要注意斗争方式
    silyboy
    silyboy
    Aug 9, 2025
    124
    人生艰难,别内耗, 自己权衡要不要多走一步. 例如:你已经给出了方案建议, 再进一步就是验证方案的可行性和性能影响. 摆数据讲事实.
    qiany
    qiany
    Aug 9, 2025
    125
    之前写 java 的时候用时间戳生成 id 在并发下很容易出现重复的,你这个不如直接用包裹号加上固定标识
    riceball
    riceball
    Aug 9, 2025
    126
    ❌ md5(microtime(true)) 对这样短的字符串冲突比较大,而且耗资源.

    ✅ microtime + nanoID: https://github.com/hidehalo/nanoid-php (偷懒用)

    这个其实是服务器端开发,优化要找到要点,变化的点,然后加顺序号。其他无论如何都要增加额外开销,只是大小不同。
    devtk
    devtk
    Aug 9, 2025
    127
    @honkew #2 投诉大领导啊,你搞不定的人,那必须得上级来治理啊,不然要领导干什么
    uuundefined
    uuundefined
    Aug 9, 2025
    128
    加锁一个自增的计数就是唯一值了。用毫秒适合并发低的场合,还搞 32 位那么长
    SwaggyMacro
    SwaggyMacro
    Aug 9, 2025
    129
    直接跟领导屌他,臭鲨臂
    esee
    esee
    Aug 9, 2025
    130
    前面加多一个短的随机字符串应该就没问题了
    skipwitit
    skipwitit
    Aug 9, 2025 via iPhone
    131
    你们能在一个地方相处 水平也高不到哪里去
    duan602728596
    duan602728596
    Aug 9, 2025
    132
    哎,我这还遇到明文密码直接从接口里返回来的呢
    soulflysimple123
    soulflysimple123
    Aug 9, 2025
    133
    id 不是用雪花算法吗,这都是很成熟的东西
    xxb
    xxb
    Aug 10, 2025 via iPad
    134
    包裹和同事都用 A 命名了,是不是应该使用 uuid 🐶
    unics
    unics
    Aug 10, 2025
    135
    如果你是乙方,这种事情就是家常便饭,甲方永远不会认为自己出错,总是让乙方修改来适配甲方的错误。
    mingtdlb
    mingtdlb
    Aug 10, 2025
    136
    你这种公司环境,一般混着就行,别想着做好,每次配合排查,证据拿出来,指出问题不在自己这

    当然如果你能力强,老板又是有魄力 大方的那种,愿意给你升值加薪,那你可以干他。很明显 你这个老板没魄力,把他干掉,没人顶他的位置。

    如果格格不入,那只能自己走,你很难推动解决的。
    mingtdlb
    mingtdlb
    Aug 10, 2025
    137
    讲好听点,是研发。难听点,一大帮人都是调参侠、调包仔,他为什么反驳,因为他在自卫啊,水平臭的不行,不自卫按你的方案,他实现不了不是完犊子了。
    realpg
    realpg
    Aug 10, 2025
    138
    @honkew #2
    你就不会写一个完整的 外行都能看明白的问题分析报告给老板?
    就这个帖子里讲的这些要点 为什么出现这个问题
    为什么是同事的问题 为什么不应该用 hash 作为这个 比如 4 楼的答案 形成一个简洁 可找第三方验证的书面报告
    5 分钟都用不了 你老板也有能力找一个他认可的技术人员看这个报告说的对不对

    不要自己给自己做证据支撑
    spritecn
    spritecn
    Aug 11, 2025
    139
    华为 JDK 示例里很多全局变量 ,比如 callId,smsId,哈哈哈哈,抄了就踩坑
    DinnyXu
    DinnyXu
    Aug 11, 2025
    140
    @abolast 正常的,我之前就是遇到过这种人,而且还是我们小组 leader ,打脸次数多了虽然他脸皮够厚,但是他的口碑差了啊,等到裁员那天,他就是先走的那个,我小组 leader 上次裁员已经被裁了,咱干好自己的,这种鸟人远离就行
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2854 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 90ms · UTC 10:21 · PVG 18:21 · LAX 02:21 · JFK 05:21
    ♥ Do have faith in what you're doing.