程序员进阶攻略
胡峰
京东成都研究院技术专家
立即订阅
7492 人已学习
课程目录
已完结 65 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 程序行知:走在同样的路上,遇见自己的风景
免费
征途:启程之初 (4讲)
01 | 初心:为什么成为一名程序员?
02 | 初惑:技术方向的选择
03 | 初程:带上一份技能地图
04 | 初感:别了校园,入了江湖
修炼:程序之术 (10讲)
05 | 架构与实现:它们的连接与分界?
06 | 模式与框架:它们的关系与误区?
07 | 多维与视图:系统设计的思考维度与展现视图
08 | 代码与分类:工业级编程的代码分类与特征
09 | 粗放与精益:编程的两种思路与方式
10 | 炫技与克制:代码的两种味道与态度
11 | 三阶段进化:调试,编写与运行代码
12 | Bug的空间属性:环境依赖与过敏反应
13 | Bug的时间属性:周期特点与非规律性
14 | Bug的反复出现:重蹈覆辙与吸取教训
修行:由术入道 (24讲)
15 | 根源:计划的愿景——仰望星空
16 | 方式:计划的方法——脚踏实地
17 | 检视:计划的可行——时间与承诺
18 | 评估:计划的收获——成本与收益
19 | 障碍:从计划到坚持,再到坚持不下去的时候
20 | 执行:从坚持到持续,再到形成自己的节奏
21 | 信息:过载与有效
22 | 领域:知识与体系
23 | 转化:能力与输出
24 | 并行:工作与学习
25 | 时间:塑造基石习惯(上)——感知与测量
26 | 时间:塑造基石习惯(下)——切割与构建
27 | 试试:一种“坏”习惯
28 | 提问:从技术到人生的习惯
29 | 偏好:个人习惯的局限与反思
30 | 写作:写字如编码
31 | 画图:一图胜千言
32 | 演讲:表达的技术
33 | 定义:阶梯与级别
34 | 晋升:评定与博弈
35 | 关系:学徒与导师
36 | 核心:安全与效率——工程技术的两个核心维度
37 | 过程:规模与协作——规模化的过程方法
38 | 思维:科学与系统——两类问题的两种思维解法
徘徊:道中彷徨 (15讲)
39 | 职业倦怠:如何面对?
40 | 局部最优:如何逃离?
41 | 沟通之痛:如何改变?
42 | 技术停滞:如何更新?
43 | 无法实现:困扰与反思
44 | 完成作品:理想与现实
45 | 代码评审:寄望与哀伤
46 | 人到中年:失业与恐惧
47 | 该不该去创业公司?
48 | 该不该接外包?
49 | 技术干货那么多,如何选?
50 | 技术分歧,如何决策?
51 | 技术债务,有意或无意的选择?
52 | 选择从众,还是唯一?
53 | 选择工作,还是生活?
寻路:路在何方 (7讲)
54 | 侠客行:一技压身,天下行走
55 | 江湖路:刀剑相接,战场升级
56 | 御剑流:一击必杀,万剑归心
57 | 三维度:专业、展现与连接
58 | 三人行:前辈、平辈与后辈
59 | 三角色:程序员、技术主管与架构师
60 | 三视角:定位、自省与多维
蜕变:破茧成蝶 (3讲)
61 | 工作之余,专业之外
62 | 跨越断层,突破边界
63 | 成长蓝图,进化跃迁
结束语 (1讲)
尾声 | 始于知,终于行
程序员进阶攻略
登录|注册

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

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

环境过敏

环境,即程序运行时的空间与依赖。
程序运行的依赖环境是很复杂的,而且一般没那么可靠,总是可能出现这样或那样的问题。曾经我经历过一次因为运行环境导致的故障案例:一开始系统异常表现出来的现象是,有个功能出现时不时的不可用;不久之后,系统开始报警,不停地接到系统的报警短信。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《程序员进阶攻略》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(8)

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

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

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

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

    2018-08-29
    3
  • third
    火车上,一个洞接一个洞,网速有点爆炸。
    简略心得

    1.我记得曾经看过,bug是被一个非常厉害的女程序员发现的,有兴趣的同学可以搜搜一下

    2.我个人对bug的理解和感受是,创造过程中,难免会出现的瑕疵

    3.技术性bug

    4.技术性bug分为两类
    空间:环境过敏
    时间:周期规律

    5.“程序过敏反应” :“程序将存在问题的环境当作正常处理,从而产生的异常。”

    6.应对空间纬度上bug,是理解环境,同时保持检测

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

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

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

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

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

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

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

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

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

    2018-08-31
    1
  • 戴益波
    好干,快看不下去了
    2019-11-19
收起评论
8
返回
顶部