前言

科比问道:“你知道洛杉矶每天早上四点钟是什么样子嘛?”,我没见过,但是我经常见广州白云区四点钟的样子。

是不是在早晨阳光下看着跟随自己前行的身影道:“起的比鸡早,睡的比狗晚,或许这是我最后一次努力的挣扎”。

睡梦惊醒

我有一个中午空出半个小时看书的习惯,那天中午看到1点钟的时候,确实有点困了,就急忙合上书躺椅子上睡一觉,正在做梦呢!突然一把被同事(妹子)推醒了:“快快快,起来帮我看看,出问题了!”

我睁开眼看着同事已经急的满头大汗,紧紧张张望着我,仿佛在抓着一棵救命稻草;有点眼泪汪汪的样子。

“火急火燎的,咋啦这是?地震了吗?”

“wocao(估计急很了),不是不是,线上活动出问题了,快帮我看看,我看了几遍了,找不到问题。”

“啥活动啊,我咋不知道?”

“就是前两天运营给的一个520情人节活动。”

“哦哦,现在线上具体出现什么问题?”

“线上用户每天排行榜发道具礼物,出现部分人的名次按照第一名的奖励发放了。”

“不是吧?影响了多少用户了?”

10000个用户了。”

一脸懵逼。我当时内心是有点奔溃的,这影响人数加上道具是有价值(rmb),岂不是会被上报通告,扣分。忽然间想起来了多年前刚刚踏入程序员行业,因为做活动code review代码没看到问题,导致损失3w+并且被客户投诉,当时被老板,运营经理,测试经理各种diss(公司通报);当晚一个人站在外滩的一个角落里:偷偷抹眼泪,还被别人偷拍。外滩冷风,也冷透了我的心。

“代码在哪个分支,发给我我拉代码看看下?是不是没有给我review代码?”

feature/#87656-Valentine-Day,是这个分支,企业微信很快发给我了。”

我看着她那无助的眼神,现在变成有了依靠一般。

“别着急,我看看代码先!”

我大概看了几分钟(1000多行代码),基本上已经确定了问题。估计她是看到我停下翻滚代码了,气氛也缓和了不少。

“你是不是没有看到lua规范wiki文档?不知道禁止使用全局变量嘛?”

“啥?我有使用全局变量嘛?我不知道啊,我没用啊,不是一样的嘛?”

看着慌张的解释,我欲言又止。是该怎样心平气和的跟她讲自己的细节处理问题,犯了很低级的问题,本可以避免但是犯的错误。

“你头伸过来看看这里,这里和这里,是不是,你在全局设置了道具全局变量,但是下面查询的时候有把变量值变更了,导致第一名以外的用户都拿到了第一名的奖励;全局数据被污染了”

lua语言中的全局变量和局部变量有具体了解过嘛?全局变量:顾名思义,生命周期是全局,整个lua文件都可以访问使用,设置完全局变量就可以在 _G表 通过 table表 访问;存在 污染文件 的变量,维护起来很麻烦。局部变量:只在某些特定的 范围内 有效的变量,称为局部变量,用local修饰;所以平常为了方便维护,尽量使用局部变量。

“哦哦,原来如此,我是看别人代码也会这样写,所以就照抄了,谁知道发生这种事情。”

你作为一个两年后端开发,不能只会ctrl+c + ctrl+v,要清楚别人为什么这么写?文档也要看的哦,我像是一个大哥在教育小妹妹(96)。

“我也不想啊,这不是刚刚从java语言转lua语言吗?哪里知道这么多?”

气死

一个因全局变量引发的故事!相关推荐

  1. 工作记录 - 使用全局变量引发的问题

    使用全局变量引发的问题 前言 一:问题代码 二:修正代码 总结 有个经典的面试题:static final 修饰的全局变量List, 其地址是不变的,但是内容是可变的. 前言 最近在工作中遇到了这个问 ...

  2. 一个小程序引发的思考

    既然是一个小程序引发的思考,那么我们就先看看这个小程序,看看他有何神奇之处: namespace ConsoleApplication1 {class Program{static void Main ...

  3. Mysql中where条件一个单引号引发的性能损耗

    日常写SQL中可能会有一些小细节忽略了导致整个sql的性能下降了好几倍甚至几十倍,几百倍.以下这个示例就是mysql语句中的一个单引号('')引发的性能耗损,我相信很多朋友都遇到过,甚至还在这样写. ...

  4. 一个purge参数引发的惨案——从线上hbase数据被删事故说起

    一个purge参数引发的惨案--从线上hbase数据被删事故说起 在写这篇blog前,我的心情久久不能平静,虽然明白运维工作如履薄冰,但没有料到这么一个细小的疏漏会带来如此严重的灾难.这是一起其他公司 ...

  5. 一个插排引发的设计思想 (三) 委托与事件

    一个插排引发的设计思想 (一) 观察者模式 一个插排引发的设计思想 (二) 抽象类与接口 一个插排引发的设计思想 (三) 委托与事件 ...待续.... 前两篇文章循序渐进的介绍了观察者模式.抽象类和 ...

  6. 一个插排引发的设计思想 (一) 观察者模式

    一个插排引发的设计思想 (一) 观察者模式 一个插排引发的设计思想 (二) 抽象类与接口 一个插排引发的设计思想 (三) 委托与事件 ...待续.... 不知道聊到设计模式,  经常给人两种感觉: 1 ...

  7. tensorflow tf.global_variables_initializer()(返回一个初始化全局变量的对象)

    from tensorflow\python\ops\variables.py @tf_export("initializers.global_variables", " ...

  8. 教程 | 一个基于TensorFlow的简单故事生成案例:带你了解LSTM

    在深度学习中,循环神经网络(RNN)是一系列善于从序列数据中学习的神经网络.由于对长期依赖问题的鲁棒性,长短期记忆(LSTM)是一类已经有实际应用的循环神经网络.现在已有大量关于 LSTM 的文章和文 ...

  9. 罗永浩2011年保利剧院演讲(一个理想主义者的创业故事II)

    很喜欢 老罗: 视频地址如下: 2010年老罗全国巡演完结篇--海淀剧院 http://v.youku.com/v_show/id_XMjI2MzU1NDQ0.html 罗永浩2011年保利剧院演讲( ...

  10. python怎么建立项目经理部的基本原则_一个关于项目经理的故事

    一个关于项目经理的故事 项目经理的养成日记 L在2001年毕业之后加入到了福建实达公司. 在今天这个公司几乎是很少有人听说了,但在当年实达还是在IT这片江湖里有些地位的.当年实达的产品线非常全,有网络 ...

最新文章

  1. Linux之进程管理
  2. “error : unknown filesystem”的解决办法
  3. Android深度探索HAL与驱动开发—第8章
  4. 山东旅游学院2021高考成绩查询,2021年山东旅游职业学院录取查询入口,高考录取结果查询网址登录...
  5. HDU 3488 KM
  6. ORACLE RAC运行在300G内存以上需要考虑的东西
  7. XMPP作为一个工具的意义
  8. python采用强制自动缩进使代码具有极佳的可读性_Python的详细介绍
  9. C++异常处理之terminate函数和set_terminate()函数
  10. 域网批量装系统通用版服务器,局域网批量网刻Ghost
  11. python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(6)开题答辩PPT
  12. cad横断面图转文本
  13. Oracle EBS 笔记8
  14. 蘑菇街2016校园招聘之编程题解析-技术类
  15. ubuntu下终端命令修改图片像素
  16. java.lang.AbstractMethodError: dm.jdbc.driver.DmdbConnection.isValid(I)Z
  17. python 创建目录时间_python实现根据当前时间创建目录并输出日志
  18. json.stringify()函数
  19. SWFObject 2.0
  20. 如何选择适合自己的吉他弦(下)

热门文章

  1. JAVA求解【乱序整数序列两数之和绝对值最小】
  2. Error: Delta RPMs disabled because /usr/bin/applyd
  3. 类的继承——cancas绘制五彩小球
  4. 【系统测试报告】苏科大App系统测试报告
  5. 作为运营,如何在职场上野蛮生长
  6. php注入过程详解,PHP注入代码详解
  7. Spark实用议题系列(02)--- DataFrame的各种join总结和实例
  8. sql server创建数据库代码模板
  9. 使用ASP.NET MVC Web SignalR 构建单身聊天室(一)
  10. Matplotlib中显示汉字,Times New Roman字体,公式的相关设置(1)