程序员进阶攻略
胡峰
京东成都研究院技术专家
33679 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 65 讲
蜕变:破茧成蝶 (3讲)
结束语 (1讲)
程序员进阶攻略
15
15
1.0x
00:00/00:00
登录|注册

12 | Bug的空间属性:环境依赖与过敏反应

程序过敏反应的定义
过敏在医学上的解释
例子:红色疱疹病人
程序过敏反应
环境过敏
时间维度
空间维度
逐层深入
广度和深度
服务端编程
客户端编程
时空特征分类
对环境的理解
编写抗过敏代码
收集足够多相关的信息
环境的复杂性
硬盘故障案例
程序部署和运行的环境
非技术性 Bug
技术性 Bug
飞蛾成为第一个程序 Bug
发现了一只飞蛾
1947年哈佛大学计算机哈佛二代停止运行
空间即环境
收集信息
了解环境
Bug分类
程序错误的起源
下一篇
应对环境过敏的 Bug
Bug
参考文章

该思维导图由 AI 生成,仅供参考

从今天开始,咱们专栏进入 “程序之术” 中关于写代码的一个你可能非常熟悉,却也常苦恼的小主题:Bug。
写程序的路上,会有一个长期伴随你的 “同伴”:Bug,它就像程序里的寄生虫。不过,Bug 最早真的是一只虫子。
1947 年,哈佛大学的计算机哈佛二代(Harvard Mark II)突然停止了运行,程序员在电路板编号为 70 的中继器触点旁发现了一只飞蛾。然后把飞蛾贴在了计算机维护日志上,并写下了首个发现 Bug 的实际案例。程序错误从此被称作 Bug。
这只飞蛾也就成了人类历史上的第一个程序 Bug。
回想下,在编程路上你遇到得最多的 Bug 是哪类?我的个人感受是,经常被测试或产品经理要求修改和返工的 Bug。这类 Bug 都来自于对需求理解的误差,其实属于沟通理解问题,我并不将其归类为真正的技术性 Bug。
技术性 Bug 可以从很多维度分类,而我则习惯于从 Bug 出现的 “时空” 特征角度来分类。可划为如下两类:
空间:环境过敏
时间:周期规律
我们就先看看 Bug 的空间维度特征。

环境过敏

环境,即程序运行时的空间与依赖。
程序运行的依赖环境是很复杂的,而且一般没那么可靠,总是可能出现这样或那样的问题。曾经我经历过一次因为运行环境导致的故障案例:一开始系统异常表现出来的现象是,有个功能出现时不时的不可用;不久之后,系统开始报警,不停地接到系统的报警短信。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文通过对程序Bug的起源和分类进行详细阐述,引用医学上的过敏概念,生动形象地阐述了程序在特定环境下产生异常的情况。作者以自身经历为例,详细描述了环境过敏引发的Bug,以及如何应对这类Bug。文章强调了对程序Bug产生原因和解决方法的理解,适合程序员和技术人员阅读。文章内容通俗易懂,有助于提高对Bug问题的认识和解决能力。文章还介绍了应对环境过敏的方法,包括了解环境、收集信息、编写“抗过敏代码”等。总之,本文通过生动的案例和技术概念,帮助读者更好地理解程序Bug的产生原因和解决方法,对技术人员具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《程序员进阶攻略》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 亚林
    上联:为系统而生,为框架而死,为debug奋斗一辈子 下联:吃符号的亏,上大小写的当,最后死在需求上!

    作者回复: 哈哈哈,还差横批

    2018-08-30
    28
  • Bug,会想一下,遇到比较多的基本也是测试测出来的,不过大部分是无害的。最严重还是产品翻译业务需求有误这种危害最大,轻则返工,重则重来。 另外,就是那些没覆盖到的,上线后才发现,电商系统又是核心模块,影响可就大了,分分钟几十万。 空间和时间的划分非常妙,人是三维生物,这两个维度几乎可以划分N多的领域也都贴切。 空间上交互也是容易产生差异和不和谐,与人交互,系统间交互都类似,且交越多越容易产生差异和问题。比如:与数据库交互、与缓存交互、系统间调用、系统间发消息等等。但是不交互是不现实的。

    作者回复: 是的,翻译的Bug是最多的,所以在提升技术能力的同时也提升下沟通理解能力,收益更大😄

    2018-08-29
    5
  • 艾尔欧唯伊
    不是,是采集硬件设备运行指标的组件。。。客户有大有小,小客户嘛,一台服务器跑一整套软件平台,几十个应用。。我们只是其中一小部分

    作者回复: 那估计很多相互干扰的因素呢😓

    2018-09-01
    3
  • third
    火车上,一个洞接一个洞,网速有点爆炸。 简略心得 1.我记得曾经看过,bug是被一个非常厉害的女程序员发现的,有兴趣的同学可以搜搜一下 2.我个人对bug的理解和感受是,创造过程中,难免会出现的瑕疵 3.技术性bug 4.技术性bug分为两类 空间:环境过敏 时间:周期规律 5.“程序过敏反应” :“程序将存在问题的环境当作正常处理,从而产生的异常。” 6.应对空间纬度上bug,是理解环境,同时保持检测

    作者回复: 火车上还写总结呢,赞👍

    2018-08-29
    3
  • 逝光无痕
    其实好多的bug是沟通不明确,翻译出来的问题!

    作者回复: 这类占主要部分,不过一般能测试和走查出来

    2018-12-06
    2
  • 艾尔欧唯伊
    现在的项目,对内存限制特别大,出现的问题根本不知道,到底是基本配置不满足还是程序优化不够。。。 暴露问题大多有时间属性,还经常没有关键日志。。。定位分析真的想吐血。

    作者回复: 硬件嵌入式领域的?

    2018-08-31
    2
  • 热勇
    确实,学习了!毕业一年!系统偏向业务!我是不是可以理解成写的大多都是(业务代码)呢?我发现自己的理解能力确实存在较大问题!所以存在很多问题!老师,该如何提升自身沟通理解能力呢?还在摸索学习中…

    作者回复: 没有通用的方法,具体情况具体对待,凡事多想一步,多琢磨,多反思

    2018-09-20
    1
  • Sch0ng
    Java工作中JVM之上,JVM工作在OS之上,OS工作在硬件之上,硬件工作在物理化学原理之上。 从Java到硬件,都是属于人造的东西,人造的一个特点就是不可靠。 物理化学原理,属于神造的东西,是可靠的。 人造的不可靠不是非黑即白的,而是一个概率事件。 人造的东西不能在设计的时候完全避免bug,只能通过事后测试把问题找出来再解决掉,一般认为所有的测试都通过,就算达标。 经过多年测试验证,产生了一个结果--越是下层越是经历了时间的考验可靠性越高越稳定。 由此可以推出离自己创造的最近一层出问题的概率是最高的。 这与作者“至少必须关心与程序运行直接相关联的那一层环境”是不谋而合的。 软件是一个人造系统,要清醒的认识bug到不能根除的.开发者所做的所有努力都是为了避免bug的发生,努力到成本和收益达到某种均衡为止。 越简单的东西越稳定,所以前面篇章中所说的炫技,对于一个软件来讲无疑是最毒的毒药。
    2021-02-25
    2
  • 戴益波
    好干,快看不下去了
    2019-11-19
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部