一个因全局变量引发的故事!
前言
科比问道:“你知道洛杉矶每天早上四点钟是什么样子嘛?”,我没见过,但是我经常见广州白云区四点钟的样子。
是不是在早晨阳光下看着跟随自己前行的身影道:“起的比鸡早,睡的比狗晚,或许这是我最后一次努力的挣扎”。
睡梦惊醒
我有一个中午空出半个小时看书的习惯,那天中午看到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语言吗?哪里知道这么多?”
气死
一个因全局变量引发的故事!相关推荐
- 工作记录 - 使用全局变量引发的问题
使用全局变量引发的问题 前言 一:问题代码 二:修正代码 总结 有个经典的面试题:static final 修饰的全局变量List, 其地址是不变的,但是内容是可变的. 前言 最近在工作中遇到了这个问 ...
- 一个小程序引发的思考
既然是一个小程序引发的思考,那么我们就先看看这个小程序,看看他有何神奇之处: namespace ConsoleApplication1 {class Program{static void Main ...
- Mysql中where条件一个单引号引发的性能损耗
日常写SQL中可能会有一些小细节忽略了导致整个sql的性能下降了好几倍甚至几十倍,几百倍.以下这个示例就是mysql语句中的一个单引号('')引发的性能耗损,我相信很多朋友都遇到过,甚至还在这样写. ...
- 一个purge参数引发的惨案——从线上hbase数据被删事故说起
一个purge参数引发的惨案--从线上hbase数据被删事故说起 在写这篇blog前,我的心情久久不能平静,虽然明白运维工作如履薄冰,但没有料到这么一个细小的疏漏会带来如此严重的灾难.这是一起其他公司 ...
- 一个插排引发的设计思想 (三) 委托与事件
一个插排引发的设计思想 (一) 观察者模式 一个插排引发的设计思想 (二) 抽象类与接口 一个插排引发的设计思想 (三) 委托与事件 ...待续.... 前两篇文章循序渐进的介绍了观察者模式.抽象类和 ...
- 一个插排引发的设计思想 (一) 观察者模式
一个插排引发的设计思想 (一) 观察者模式 一个插排引发的设计思想 (二) 抽象类与接口 一个插排引发的设计思想 (三) 委托与事件 ...待续.... 不知道聊到设计模式, 经常给人两种感觉: 1 ...
- tensorflow tf.global_variables_initializer()(返回一个初始化全局变量的对象)
from tensorflow\python\ops\variables.py @tf_export("initializers.global_variables", " ...
- 教程 | 一个基于TensorFlow的简单故事生成案例:带你了解LSTM
在深度学习中,循环神经网络(RNN)是一系列善于从序列数据中学习的神经网络.由于对长期依赖问题的鲁棒性,长短期记忆(LSTM)是一类已经有实际应用的循环神经网络.现在已有大量关于 LSTM 的文章和文 ...
- 罗永浩2011年保利剧院演讲(一个理想主义者的创业故事II)
很喜欢 老罗: 视频地址如下: 2010年老罗全国巡演完结篇--海淀剧院 http://v.youku.com/v_show/id_XMjI2MzU1NDQ0.html 罗永浩2011年保利剧院演讲( ...
- python怎么建立项目经理部的基本原则_一个关于项目经理的故事
一个关于项目经理的故事 项目经理的养成日记 L在2001年毕业之后加入到了福建实达公司. 在今天这个公司几乎是很少有人听说了,但在当年实达还是在IT这片江湖里有些地位的.当年实达的产品线非常全,有网络 ...
最新文章
- Linux之进程管理
- “error : unknown filesystem”的解决办法
- Android深度探索HAL与驱动开发—第8章
- 山东旅游学院2021高考成绩查询,2021年山东旅游职业学院录取查询入口,高考录取结果查询网址登录...
- HDU 3488 KM
- ORACLE RAC运行在300G内存以上需要考虑的东西
- XMPP作为一个工具的意义
- python采用强制自动缩进使代码具有极佳的可读性_Python的详细介绍
- C++异常处理之terminate函数和set_terminate()函数
- 域网批量装系统通用版服务器,局域网批量网刻Ghost
- python毕业设计作品基于django框架 教室图书馆座位预约系统毕设成品(6)开题答辩PPT
- cad横断面图转文本
- Oracle EBS 笔记8
- 蘑菇街2016校园招聘之编程题解析-技术类
- ubuntu下终端命令修改图片像素
- java.lang.AbstractMethodError: dm.jdbc.driver.DmdbConnection.isValid(I)Z
- python 创建目录时间_python实现根据当前时间创建目录并输出日志
- json.stringify()函数
- SWFObject 2.0
- 如何选择适合自己的吉他弦(下)
热门文章
- JAVA求解【乱序整数序列两数之和绝对值最小】
- Error: Delta RPMs disabled because /usr/bin/applyd
- 类的继承——cancas绘制五彩小球
- 【系统测试报告】苏科大App系统测试报告
- 作为运营,如何在职场上野蛮生长
- php注入过程详解,PHP注入代码详解
- Spark实用议题系列(02)--- DataFrame的各种join总结和实例
- sql server创建数据库代码模板
- 使用ASP.NET MVC Web SignalR 构建单身聊天室(一)
- Matplotlib中显示汉字,Times New Roman字体,公式的相关设置(1)