• 根因人家说的很清楚了:

    • Lua 是动态类型语言,常用习惯里变量不需要定义类型,只需要为变量赋值即可。

    • Lua 在对一个数字字符串进行算术操作时,会尝试将这个数字字符串转成一个数字。

    • 在 Lua 语言中,如果执行数学运算 n % 0,则结果会变为 nan(Not A Number)。

    • _gcd 函数对入参没有做类型校验,允许参数 b 传入:"0"。同时因为"0" != 0,所以此函数第一次执行后返回是 _gcd("0",nan)。如果传入的是 int 0,则会触发 [ if b == 0 ] 分支逻辑判断,不会死循环。

    • _gcd("0",nan) 函数再次执行时返回值是 _gcd(nan,nan),然后 Nginx worker 开始陷入死循环,进程 CPU 100%。

    晓光说这个问题是业务发展发展带来的技术债的累积,其实这是个很宏观的认知,从微观上来说,我觉得可以提示我们几点:

    • 弱类型的语言往往依靠更高的单体技术能力和更加充分的团队沟通,靠团队的知识传承(不管是文档还是口头)来获取【参数 b 不要传:"0"】这个约定,而如果你用 C# 或者 Java,int b 的定义,传"0"直接编译就过不了,所以弱类型语言更适合精英小团队,注意……不是说它们不行,而是说它们需要被更好的掌控,不要曲解;
    • 对基础设施,比如文中提到的 OpenResty(核心是 nginx),往往需要更高的性能和可靠性,这部分功能应该是部分资深核心工程师才可以碰的东西,不能随便拿来交给新人去实施,哪怕 ta 的技术很好,也难免考虑不全周边的影响;
    • 性能(要求)越高的程序,对质量要求越高,这个契合晓光观点的说法。一般来说,性能越高,一旦出错,造成的损失越大,可以参考历史上各种高频交易的故障案例。所以这种基础设施模块涉费模块,都需要一整套的质量保障手段,从 CR、静态扫描到单元测试、系统、性能测试,从安全测试到故障注入和混沌模拟,都得老实认真上……只考虑实现、够用,最终会死得很惨~
  • 恕我直言,比你那个科学多了😂

  • 任何情况下,开发改一行测试也就改一个 case,为啥要改 500 个?
    是改了 1 个分支影响了其他 499 个分支的预期结果?还是说改了管理着 500 个分支的策略实现只能通过全跑 500 个 case 才能验证?恐怕都不是吧……看那意思就是连公用组件都没有封装、剥离出来,case 只是根据业务逻辑无限加,而根本不在乎程序的设计实现了……这种自动化很值得夸耀吗


  • 看这傲娇劲……自己干了啥还不知道,还傲娇呢

  • 回归点点点 at 2022年07月06日

    你刚进一个公司,啥也不知道就去给人家做这个框架那个架构?
    了解业务,在一线体会痛点不是必经之路吗,这有啥可奇怪的?
    哪怕像你说的,现在这家公司做的产品很烂呢……也不影响这条该走的路

  • 有一种东西叫 sql……

  • 中文编程,真的赏心悦目 at 2022年06月30日

    在 PUA Language 面前一无是处😎
    传送门:https://github.com/flaneur2020/pua-lang

  • 就问你从场景考虑全面了吗,你这么算科学吗,就不考虑一下少年班毕业吗😂

  • 菜算吗😂

  • 外包挺好的,除了没前途之外

  • 新蜂商城项目不是被慕课白嫖过,还在网上申诉引发了很大的反应的那个么,慕课被鄙视惨了

  • 公司越来越卷怎么办 at 2022年06月10日

    基操,不认可就自己当老板

  • 按照基础教育的宗旨来说,题目的本意会是:本手代表务实,妙手代表创造性,创造的源泉来自扎实的基本功
    我觉得卤煮大约会错题意了,想啥都占,估计分不会太高吧,最多及格线上,60 得 40 就不错了
    其实围棋还有诸如无理手这种词,以弱战强(参考《雪中》徐凤年战陆诩)或者强者心理战的时候可能会用到,得则为妙,失则为俗,赌博成分很大,所以题目未敢提及……但是我觉得肯定会有懂围棋的考生去围绕无理手写的,毕竟现在年轻人早熟早慧,很能理解弱者的无奈,或内心渴盼逆袭……

  • 很久没发帖了,聊聊 at 2022年06月06日

    mino 是啥?MinIO?

  • 面试被问到优缺点 at 2022年05月30日

    你为什么来我们公司面试? -------------------因为我在找工作
    你为什么觉得我们公司会录用你? ---------------------因为你们缺人

  • 至少 wiki 百科、百度、谷歌搜出来的都是 Behavior-driven development,bahave 是动词,不明白黄瓜官网为啥会犯这种低级错误

  • 1、基于 behavior 而不是 behave
    2、代码味道实在是……
    程序员的英文水平决定了代码水平😂

  • 每次领导跟我说,这次你的涨薪比例是 xx%,我都很 “诧异”:咋又给我涨薪,感觉不加班对不起公司啊……然后差不多半年之后就又会收到涨薪通知,就这样,不到 10 年,我的薪水就从 1500 涨到了 15000😎

  • 德鲁克《卓有成效的管理者》
    布鲁克斯《人月神话》
    《人件》……类似的多的很

  • mysql 和 oracle 优化器都会基于数据分布特征去选择是否走索引、走哪个索引,所以搞清楚业务形态和数据分布特征非常重要,不然无法有效优化
    测试的方法很简单:性能基线对比,直接用接口性能压测进行对比就可以了,基线里面有两点:

    • sql 所涉及的所有表的数据量的分布情况,分析结果的时候需要参考这种变化,并且深刻理解优化器原理
    • 测试结果 (RT) 的值,观测各 sql 在修改前后的响应时间

    至于 explain 结果,其实不用那么麻烦去同步数据,请 dba 把线上的 explain 结果导出来给你就行了,你拿测试环境 explain 的结果去比对看一下是否一致,不一致的地方就是开发需要关注甚至优化的地方

  • 晚上:从不找工作,都是甲方委托猎头来找我……不,是来求我
    早上:又特么醒了,刚爽到一半,唉~
    😂 😂 😂

  • 后端 java+springboot
    第四步:启动引擎 python3 startup.py

    ……一下子给我整懵逼了~

  • 记一次测试开发面试题 at 2022年05月03日

    就算他是宇宙厂,鬼扯什么 “中台” 做数据存储或者核心算法,我都能把他喷成翔

  • 小孩子才做选择,成年人都要

  • 我就问一句:mq 是什么服务中间件?RabbitMQ、RocketMQ、Kafka、ZeroMQ、AvtiveMQ、Redis 这些的合集吗?
    面试官最喜欢的就是挑刺,刚真,我看到这句就直接 pass 掉这份简历了