V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ebony0319
V2EX  ›  职场话题

分享在职业生涯中遇到那些让人瞠目结舌的奇技淫巧

  •  2
     
  •   ebony0319 · 13 天前 · 9926 次点击

    最让我震撼的一次,一个项目为了将分库做到极致,项目里面有 15 万个数据库。当时用 DataGrip 打开的时候卡死了(因为要拉取数据库信息),过了两个多小时才恢复。

    103 条回复    2024-04-18 17:09:51 +08:00
    1  2  
    GOOD21
        1
    GOOD21  
       13 天前
    某项目合作方把图片的 base64 存到了数据库里。
    ebony0319
        2
    ebony0319  
    OP
       13 天前
    @GOOD21 其实我有一个自己的项目就是这样干的,就所有的资源比如音频,图片,啥的万物都 byte 转 base64 存数据库。给人的感觉就是是一个前端网站,但是实际上纯后端。
    corcre
        3
    corcre  
       13 天前   ❤️ 3
    数据库里面存的 所有 日期/时间字段都是字符串格式的
    WashFreshFresh
        4
    WashFreshFresh  
       13 天前
    @corcre 日期/时间存字符串适合迁移 实习的时候带我的大佬和我说的...
    corcre
        5
    corcre  
       13 天前
    @WashFreshFresh 但是我们那个项目没有迁移的需求的同时伴随着很多需要进行时间比较的操作😹😹😹
    sakeven
        6
    sakeven  
       13 天前   ❤️ 2
    说一个非技术上的。
    有一个同事离职主动要求竞业协议,然后去美国陪老婆生孩子。
    marquina
        7
    marquina  
       13 天前
    @corcre #3 我碰到一个同事,数据库里的整数字段(可用 int 表示)也被设置成了字符类型……
    kkk123
        8
    kkk123  
       13 天前
    某高手的系统,会员登陆时实时去主库算会员积分,查优惠券. 客户发推文用户点进去服务器就挂了
    老板问原因? --> 服务器配置低\网络问题\IIS 的缺陷\windows 的问题,反正朕的逻辑没有问题
    jccily
        9
    jccily  
       13 天前
    @WashFreshFresh 没错,我现在有个项目 mysql 迁移,时间字段默认值 0000-00-00 00:00:00 ,目标库不支持
    RightHand
        10
    RightHand  
       13 天前 via Android
    插入 1 像素,然后删掉,强制刷新。(该框架留下的 bug )
    asche910
        11
    asche910  
       13 天前
    @sakeven 竞业有钱拿的,如果不去那些公司(都 run 了,去了也管不到)
    lambdaq
        12
    lambdaq  
       13 天前
    @corcre 而且这个骚操作最让我震惊的是还有人直接拿字符串比大小。。。而且好像还真的能比。。。
    corcre
        13
    corcre  
       13 天前
    嗯, 我也来个非技术的
    我老东家, 靠 ppt 吹到了个市内的什么奖, 然后企业找我们做项目会补贴 30%(有上限), 但是这个补贴需要评审通过了才有, 然后我们老板就跟人家工厂说, 我们的系统卖得便宜, 还有补贴 blablabla 拿不到补贴这个项目不收钱之类的, 但是人家并不想要系统, 只想要补贴, 所以其实人家厂里面根本没用起来, 数据都是评审前几天现造上去的, 评审的人员都是现学或者直接是我们公司的人假装的...

    后来我就跳槽了, 再后来就听说大老板和小老板都被抓进去了(听说也没有公诉, 就软禁那种, 让他把补贴全吐出来就当无事发生)😹😹😹
    Seria
        14
    Seria  
       13 天前   ❤️ 1
    所有数据全查出来,然后在前端分页...导致网站越来越卡。
    laobobo
        15
    laobobo  
       13 天前
    @GOOD21 这个不稀奇吧,好多项目都这样干!
    me1onsoda
        16
    me1onsoda  
       13 天前
    @Seria 这就是喜欢搞分库分表需求要跨库查询又要分页带来的。。你不能让我手动分页吧
    Mithril
        17
    Mithril  
       13 天前
    一个非常牛逼的,VTK 在 C++项目代码里有个文件,是一个已经初始化好的静态数组,内容看起来是一些乱码。

    但实际上它是个字体文件的二进制,后续也是直接当字体用的。

    当时年幼的我第一次见这种操作,把二进制资源直接当字符硬编码到代码里。
    WashFreshFresh
        18
    WashFreshFresh  
       13 天前
    @lambdaq 常规操作了,比大小是根据 ASCII 值比,而数字的 ASCII 值就是本身,就是不知道和时间字段比性能损失多少。
    sakeven
        19
    sakeven  
       13 天前
    @asche910 我知道呀。他半年不工作就拿竞业的钱,挺爽的。
    Chad0000
        20
    Chad0000  
       13 天前
    至少 OP 的案例让我放心采用所谓的“每个应用一个数据库”的想法。哈哈。
    k9982874
        21
    k9982874  
       13 天前 via Android
    @jccily 客户的项目后端用 go 支持 0000-00-00 00:00:00 的时间格式,但是 js 或别的语言就直接火葬场了,给客户提整改建议,人家说没有用其它语言做后端的计划。。。
    june4
        22
    june4  
       13 天前
    二进制文件存数据库不是问题,有问题是为啥要转一次 base64,白白增大了空间占用,处理还不方便
    BeiChuanAlex
        23
    BeiChuanAlex  
       13 天前   ❤️ 1
    直接在 html 页面里面写 sql ,惊为天人。。。。。。。
    emeab
        24
    emeab  
       13 天前
    @WashFreshFresh 都不用等到要迁移的时候, 字符串存时间性能损失巨大.
    clue
        25
    clue  
       13 天前
    某次看了一个 nodejs 多线程+断点续传的下载器代码, 发现加上注释总共只有几百行, 而我看不懂... 感觉就像麻瓜看到了魔法

    对了, 那是我第一次知道 RxJs
    ecloud
        26
    ecloud  
       13 天前
    @Mithril 这算什么,见没见过 oracle 的安装“脚本”,你以为它是个.sh ,其实只有一点点 shell ,其余的就是个二进制可执行文件
    tim9527
        27
    tim9527  
       13 天前
    刚入职接手前人的代码,变量是 i j k l,temp1,temp2. 看了几天头昏脑涨,后面自己全部重写
    pkoukk
        28
    pkoukk  
       13 天前
    @june4 接口/网关 不支持 post form ,前端只能以 base64 的 json 字段把图片传回后端。
    后端想着反正以后还给你也只能是 json ,那这 base64 我就不解了呗。
    butanediol2d
        29
    butanediol2d  
       13 天前
    @ecloud #26 这个好像还挺常见的,Wolfram Engine 的安装包也是这样
    standchan
        30
    standchan  
       13 天前
    @GOOD21 #1 这个以前老东家有些时候也这么做,量比较小的话,这么做轻松快捷挺好的
    standchan
        31
    standchan  
       13 天前
    @tim9527 #27 批量改一下还行,就是刚开始理解的时候比较费功夫
    SilencerL
        32
    SilencerL  
       13 天前
    十几年前看到一个嵌入式的页面,原生的纯 SQL 直接放在 query 里传给服务端无差别执行。反正普通用户也看不到那个页面到底是啥地址,但是架不住抓包小子乱搞嘛:-)
    现在看来,这算是 GraphQL 的某种超原始前身实现吧...
    liaojl
        33
    liaojl  
       13 天前 via iPhone
    @ecloud 安装脚本不都这样的吗? shell 只是把二进制文件的安装过程自动化了而已。
    GreenHand
        34
    GreenHand  
       13 天前   ❤️ 20
    把用户的账号密码通过 API 读到 App 端,在端上做登录校验😳
    ecloud
        35
    ecloud  
       13 天前
    @SilencerL CS 结构就是这样的啊,不过人家正经 CS 是二进制编码传过去(其实也能破解)
    Seria
        36
    Seria  
       13 天前
    @GreenHand 倒反天罡
    QlanQ
        37
    QlanQ  
       13 天前
    @GreenHand 这个屌!
    idealhs
        38
    idealhs  
       13 天前
    @GreenHand 看了这么多还是你这个牛批
    go522000
        39
    go522000  
       13 天前
    @marquina #7 哈,我遇到这样的,不过我是设置 QQ 号为 varchar 格式的人。
    是一个外包项目,甲方在开始的时候各种想法,要采集 QQ 空间、微信公众号、微博等信息,那么采集目标地址就可能是纯数字的 QQ 号或字符串的目标等,第一期为 QQ 空间,然后第二期客户找了他们本地的开发公司,不让我们这边开发了,在对接的时候就被对方喷了,说什么 QQ 号是纯数字的,要设置为 bigint ,吧拉吧拉。。。
    Saulee
        40
    Saulee  
       13 天前
    @Seria #36 逆大天
    GeruzoniAnsasu
        41
    GeruzoniAnsasu  
       13 天前
    @ecloud
    https://github.com/megastep/makeself


    @Mithril
    那你有没有见过把数据结构定义文件编译成二进制静态数组的编译器(其实相当熟悉):
    https://github.com/v2fly/v2ray-core/blob/c7459b30e454ecda4c392429c7409ea19a2384cf/app/tun/config.pb.go#L151-L209
    GeruzoniAnsasu
        42
    GeruzoniAnsasu  
       13 天前   ❤️ 1
    要我说技术上的奇技淫巧都还算好理解,商务那边的销售才是骚操作瞠目结舌超出我的理解范畴。

    我见过一个人顶三家身份,既是甲方又是乙方的…… 这个产品属于机构 A 「推荐」企业的「强买强卖」产品,A 机构自己不进行研发,让 B 研发卖给 C 企业。 然后这个销售是 A 的人,但他去 C 谈采购的时候用的是 D 总包的身份,再去 D 谈合作分包的时候用的是 B 实际研发公司的身份。 然后由于他是 A 的人,所以他能向 B 提需求,是甲方;但他又是要卖 B 做的产品的人,所以他又是乙方……


    还有什么拉友商来围标几个厂商聊好这个项目你拿那个项目我拿的,亦敌亦友,是真看不明白。
    Part2
        43
    Part2  
       13 天前   ❤️ 2
    foursking
        44
    foursking  
       13 天前
    @Mithril 很多项目外置字体打包就是这么打的,算是比较正常
    winterbells
        45
    winterbells  
       13 天前
    @corcre #3 改了几个这种 bug 了,关键是服务器™时区不一样啊,格式化存储搞毛
    winterbells
        46
    winterbells  
       13 天前
    @corcre #3 还有客户端按当前 locale 存值的,qa 说每次切换语言就重置设置了
    chairuosen
        47
    chairuosen  
       13 天前
    说个前端的,整个网页就是一张图,上面绝对定位一堆框框做点击事件
    xwayway
        48
    xwayway  
       13 天前
    @go522000 #39 就算只采集 QQ 空间,用 varchar 来保存也没有问题,难不成他还要用来做运算不成
    sagaxu
        49
    sagaxu  
       13 天前
    1. 某大项目(过亿),表名和字段名都是无意义的字母和数字,他们内部有对照表,为的是增加二次开发难度,有活还得找他们做。
    2. 某高级后端写的界面,一个日期选择功能,相同的几百行代码在同一个项目里复制粘贴里 10 多次。
    3. 某高级后端写的 kv 配置中心,db 里 key 没加索引,只要 cache miss ,每次都扫全表。
    4. 某大佬(名字说出来估计写 PHP 大都听过)自研的 RPC 客户端,服务端重启断开 TCP 连接的情况,它无法处理。上面扫全表的那个项目也是他带的团队做的。
    kingfighters
        50
    kingfighters  
       13 天前   ❤️ 1
    一个同事写的 crud 逻辑,估计他不知道 id 自增,每次要做 insert ,先查询最后一行,取出 id 的值,加一,然后写入数据库。
    GeruzoniAnsasu
        51
    GeruzoniAnsasu  
       13 天前   ❤️ 1
    @chairuosen 你可能是新生代前端。在我上小学的时候书上都这么教……
    chairuosen
        52
    chairuosen  
       13 天前
    @GeruzoniAnsasu 6 哇,上小学就看前端书了。。
    DoraYao
        53
    DoraYao  
       13 天前
    我们有个网关公网固定 ip ,密码 123456 被国外的 ip 登录了,昨天网警大队来之前改了个复杂密码,然后甩锅到使用方
    damila
        54
    damila  
       13 天前   ❤️ 2
    之前有个需求要做谷歌那边的爬虫,为了解决验证码识别买了个第三方服务。我一开始以为他们好牛逼用什么什么技术能破解验证码而且成功率相当之高,后来发现就是雇了好多人一天 24 小时坐在电脑前,人工解决后再将结果回传。真就是大道至简
    hasayake979
        55
    hasayake979  
       13 天前
    @sagaxu 你说的这个大佬,是不是在希悦做过。
    linch97
        56
    linch97  
       13 天前
    @damila “人工”智能
    MoonWalker
        57
    MoonWalker  
       13 天前
    @GOOD21 并不稀奇吧,取决于场景。比如一个用户 avatar 用 base64 直接存了也没什么不好
    n2l
        58
    n2l  
       13 天前
    同事交来的任务如果不想做直接拒绝也不好,那就拖,最后再给一半,那么下次他再找你他就得想好了。
    dlmy
        59
    dlmy  
       13 天前   ❤️ 1
    来个非技术的

    我毕业后待的第一家公司,老板跟某位退休的省级领导攀上了关系,为了投中政府项目的标,全员学历造假,比如:核心人员都是 985/211 硕士,还有一些博士;每人身上挂了十几二十个证书,比如:PMP 、软考架构师证等......

    最后通过关系一番操作下来,公司中标了。

    那中标之后,就必须招人进来做项目,但公司又想节省掉一部分成本,因此公司就跟一些大学合作,挑选优秀的大学生来公司实习,最后这项目大多数功能都是实习生写的。

    这个骚操作是相当的炸裂。
    pipaseqin
        60
    pipaseqin  
       13 天前
    道听途说的不知算不算:

    防止回不了款,在程序里添加到期时间判断,客户不给钱就用不了。

    希望客户多加钱,在程序里添加`Thread.sleep(30000);`,让程序运行慢一点。
    x86
        61
    x86  
       13 天前
    alert('优化成功')
    yangxiaopeipei
        62
    yangxiaopeipei  
       13 天前
    @GOOD21 我干过哈哈哈
    pipaseqin
        63
    pipaseqin  
       13 天前   ❤️ 2
    #61
    <a href="javascript:alert('清除成功')"> 清除缓存 </a>
    philsky28
        64
    philsky28  
       13 天前
    @GOOD21 我还真存过 hhh 不过是在学校里写东西的时候
    rahuahua
        65
    rahuahua  
       13 天前
    @dlmy 有没有可能这是常态化的操作,只是咱们见识少,哈哈哈哈
    Varobjs
        66
    Varobjs  
       13 天前
    分享一个,短信验证码在接口返回并放到表单隐藏字段,然后再带给后端校验
    Seves
        67
    Seves  
       13 天前
    请求 API 要加密密码,但是又好像没加密

    ```json
    {
    account: "admin",
    password: "密码密文 密钥"
    }
    ```
    Tink
        68
    Tink  
       13 天前
    @GOOD21 #1 这不奇怪吧
    Tink
        69
    Tink  
       13 天前
    @lambdaq #12 这个是比的 ascii 值
    Tink
        70
    Tink  
       13 天前
    @Seria #14 这个其实这么操作的还挺多
    me1onsoda
        71
    me1onsoda  
       13 天前
    @Part2 做过 his 或者其他政务、银行系统,这都常规操作。很多名词没法翻译
    hi1lojing
        72
    hi1lojing  
       13 天前
    乙方无法实现 PDF 文件的直接生成,通过一个第三方的插件实现 PNG 转 PDF 。然后跟我说其他项目也是只回传 PNG 的,之后使用 Chrome 调用不了 PDF 文件,就跟我扯谷歌离开中国大陆多久了,阿巴啊吧啊吧。
    GeruzoniAnsasu
        73
    GeruzoniAnsasu  
       13 天前
    @chairuosen 有种东西叫「 frontpage 网页制作 / dreameweaver 网站设计入门」…… 那时候还没有「前端」这个术语,这些入门书上就会教你用 js 和静态图片实现按钮 😏
    guguji5
        74
    guguji5  
       13 天前
    @GOOD21 我也遇到过,同事说这 kafka 为啥吃内存这么大啊,,,性能上不去啊,,,
    EchoGroot
        75
    EchoGroot  
       13 天前
    @me1onsoda #71 是的,之前做过法院的审判系统,都是用拼音首字母,因为专用名词不好翻译,程序员的英语水平参差不齐。
    quibu
        76
    quibu  
       13 天前
    以前互联网医院的项目,小程序代码不会,直接拿 h5 套在小程序里,然后通过 sdk 调小程序 API ;传参不会用 vue 的传参,直接自己写一个 2000 多行的 switch 去处理参数
    SD10
        77
    SD10  
       13 天前 via iPhone
    @damila 打码就是这个呀,很早之前还有同学干过这个事情呢
    vipfts
        78
    vipfts  
       13 天前
    @kingfighters 有避免 id 跳跃的作用, 还挺好的
    eastjoehan
        79
    eastjoehan  
       13 天前
    请教下,15W 个库是通过什么方式分出来的? 如何做的查询路由
    ecloud
        80
    ecloud  
       13 天前
    @chairuosen 这个不奇怪,古早很多网站都做成这个样子的
    eastjoehan
        81
    eastjoehan  
       13 天前
    @Part2 #43 这都是中文拼音缩写,做个政务项目很正常,基本属于惯例了,因为很多业务字段名字如果用英文完整描述出来的话会特别的长,密密麻麻的
    LeeJianhua
        82
    LeeJianhua  
       13 天前
    我们同事调试客户程序,某个函数 return error 。过不了测试,同事上去把这个改成 return ok
    zhw2590582
        83
    zhw2590582  
       13 天前
    以前做一个在线教育网站,前端需要知道当前用户是否购买当前课程,后端直接在课程里返回一个数组,数组是都购买过这个课程的用户 id ,我问他假如有一千个用户购买了这个课程,你可以照样返回一千个用户 id 吗,他说:是的,这样后端也更快些
    idapro1
        84
    idapro1  
       13 天前
    遇到一个大厂的系统,在登录密码错误的情况下会提示:
    密码错误,正确的密码是:xxxxx

    ---------
    后面反馈后说是把 debug 用的开关错误地打开了
    hellopz
        85
    hellopz  
       13 天前
    @Seria #14 aws 都是这么搞的,第一次看到我也惊呆了
    kkwa56188
        86
    kkwa56188  
       13 天前
    "又不是不能用"
    subframe75361
        87
    subframe75361  
       13 天前
    @BeiChuanAlex 其实是可以的,笔记类的数据用 sqlite wasm 存在浏览器本地然后用 github 同步
    lchynn
        88
    lchynn  
       13 天前
    @june4 可能方便把表数据导出为 CSV 或者 SQL 。
    adoal
        89
    adoal  
       12 天前
    @GOOD21 其实真要关系数据库里存图片的花,有 binary 类型的数据库系统可以直接存原始数据,没必要编码成 ascii-compatible
    Adelell
        90
    Adelell  
       12 天前 via iPhone
    dota2 五人黑,一级出门直接去把肉山盾抢了。
    adoal
        91
    adoal  
       12 天前
    @jccily mysql 的数据里出现 14 个 0 的默认时间,明显是草台设计导致的……有条件好好做设计时,这个真的不鼓励
    adoal
        92
    adoal  
       12 天前
    @ecloud shar 了解一下
    vfxx
        93
    vfxx  
       12 天前   ❤️ 1
    之前用 discuz ,升级后发现不好用,想降级,根本就没有降级程序。

    我就把 旧版本程序文件 连接了新版的数据库,然后在后台,数据库校验,发现很多跟旧版本出厂数据库格式有很多改动,可以一键修复。 修复成功后,就降级成功了。

    我把这个方法发到了 discuz 官方论坛,被管理员删除了。
    CEBBCAT
        94
    CEBBCAT  
       12 天前
    V2 头像不允许使用别人照片的,楼主尽早改掉吧,不然被管理看到就惨了
    dododada
        95
    dododada  
       12 天前
    @GOOD21 我正打算这么干,不过是一些头像,总共就几千条
    QlanQ
        96
    QlanQ  
       12 天前
    @pipaseqin #60 常规操作呀,没有给全款之前,加时间判断,然后清空一个文件的内容。
    有的是在依赖里面改,你自己还升级不了的,部署也要 开发的人来才行,都是外包很常见的手法,不过也是没办法
    davin
        97
    davin  
       12 天前
    @chairuosen 当年在 Dreamweaver 里面用 img, map, area 画多边形热区,别提多爽了😜
    dog82
        98
    dog82  
       12 天前
    @tim9527 我的代码里局部变量会用 ijk ,特别是循环里,全局变量会认真取名字
    gil99998888
        99
    gil99998888  
       12 天前
    不懂就问,图片存数据库除了 base64 还有啥其他方案
    LXGMAX
        100
    LXGMAX  
       12 天前
    @gil99998888 存路径+文件
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2544 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:00 · PVG 21:00 · LAX 06:00 · JFK 09:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.