臭名昭著的几个软件缺陷

news/2025/3/20 16:22:25/文章来源:https://www.cnblogs.com/jane4321/p/18783333

一、迪斯尼的狮子王,1994-1995

1994年秋天,迪斯尼公司发布了第一个面向儿童的多媒体光盘游戏—狮子王动画故事书。尽管已经有许多其他公司再儿童游戏市场上运作多年,但是这次是迪斯尼公司首次进军这个市场,所以进行了大量促销宣传。结果,销售额非常可观,该游戏成为孩子们那年节假日的“必买游戏”。然而后来却飞来横祸。12月26日,圣诞节的后一天,迪斯尼公司的客户支持电话开始响个不停。很快,电话支持技术员们就淹没在来自于愤怒的家长并伴随着玩不成游戏的孩子们哭叫的电话之中。报纸和电视新闻进行了大量的报道。

后来证实,迪斯尼公司未能对市面上投入的许多不同类型的PC机型进行广泛的测试,软件啊在极少数系统中工作正常(迪斯尼程序开发游戏的新系统),但在大多数公众使用的系统中却不能运行。

二、爱国者导弹防御系统,1991

美国爱国者导弹防御系统是里根总统提出的战略防御计划(即星球大战计划)的缩略版本,它首次应用在海湾战争中对抗伊拉克飞毛腿导弹的防御战中。尽管对此系统赞誉的报道不绝于耳,但是它确实在对抗几枚导弹中失利,包括一次在很小的计时错误积累起来到14小时后,跟踪系统不再准确。在多哈的这次袭击中,系统已经运行了100多个小时。

三、千年虫,大约1974

在计算机初期,由于技术限制和昂贵的存储成本,程序员们在编写代码时必须精打细算每一个字符。为了节省内存,有位名为格雷斯霍珀的女性程序员巧妙地提出了用6位数表示时间的方法,例如将1989年10月1日简写为891001。然而,正是这一看似巧妙的解决方案,为后来的混乱埋下了伏笔。

霍珀所发明的6位数时间记录法,因其简单且内存节省的特性,被广泛采纳。然而,这种方法的广泛应用也为千年虫的潜伏提供了契机。当千禧年到来时,这种时间记录法的缺陷终于暴露无遗。由于年份的前两位被抹去(例如,1989年简写为89),计算机在进入21世纪时无法正确识别时间,导致时间回退的现象。具体来说,2000年时,计算机误以为当前仍是1900年,从而引发时间混乱。

时间流转至20世纪90年代,随着计算机的日益普及,越来越多的人开始认识到千年虫问题的紧迫性。特别是在1999年,由于计算机的误判,三大日子相继出现大规模的bug,这无疑给人们敲响了警钟,预示着千年虫的影响可能比预想的更为严重。

当时,虽然计算机尚未广泛普及至普通家庭,但在银行、证券、股票交易、工厂、机场、发电站等关键领域,计算机已经深度渗透,且这些地方几乎都潜藏着千年虫的威胁。这些领域无一不关系到人类的生存与发展。

一旦千年虫爆发,后果将不堪设想。银行账户可能被清零,交通秩序将陷入混乱,电力和水利系统可能面临瘫痪,飞机航线可能会消失。最令人恐惧的是,核电站可能面临核弹爆炸般的危机,直接经济损失可能高达1.6万亿元。

这种恐慌情绪迅速在全球蔓延,人们纷纷从银行提取现金,抢购食物和生活用品,甚至有人开始寻找附近的防空洞,仿佛世界末日即将来临。

程序员们采用了windowing修复法来应对千年虫,然而这种方法并未从根本上解决问题,仅仅是将千年虫的爆发时间推迟了二十年。因此,在2020年,除了新冠疫情这一大挑战外,千年虫这一老问题也再次浮出水面。

幸运的是,人们在过去的二十年里并未忘记千年虫,已经做好了充分的准备。所以,尽管千年虫再次出现,但并未造成重大损失,当年人们对它的感知也相对较小。

除了6位数时间表达法导致的明显Bug外,还有一种更为隐蔽的问题——2038年问题。这种问题是如何产生的呢?了解计算机的朋友都知道,计算机的计时基准是1970年1月1日。我们的电脑内部时间就是以此为起点,统计从那时起到现在的秒数。

在过去,32位操作系统是主流,其时间表达极限是2147483647(第一位是符号位),换算成时间就是2038年01月19日03时14分07秒。这意味着,当时间超过这个极限时,电脑就可能无法正确处理时间数据,从而引发各种问题。

为了解决2038年问题,我们扩展了Unix时间长度,采用64位来表示时间,从而能够支持到292,277,026,596年12月4日15时30分08秒。然而,那个时间点对于人类文明而言可能已经不复存在。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902067.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

医疗器械行业IPD流程设计:6个关键问题与解决方案

在当今竞争激烈的医疗器械行业,产品的创新与快速上市能力是企业生存和发展的关键。IPD(集成产品开发)流程作为一种先进的产品开发管理模式,正逐渐成为医疗器械企业提升竞争力的重要手段。然而,在实际应用中,许多企业在 IPD 流程设计方面面临着诸多挑战。本文将深入探讨医…

KUKA库卡KR360_R2830机械臂维修减速机卡住了

库卡机器人维修减速机卡死,作为一种常见的机械故障,其成因往往复杂多样,通常可以归结为长时间的高强度工作、外部异物的侵入、安装过程中的疏忽以及润滑系统的失效等多种因素。以下是对这一故障常见原因的详尽阐述,以及一些实用的维修建议:库卡机器人减速机卡死现象的根源…

【原厂】点阵LED数码管驱动/内置显示RAM为8x16位-LED显示驱动芯片VK1640 SOP28

产品品牌:永嘉微电/VINKA 产品型号:VK1640 封装形式:SOP28 概述 VK1640是一种数码管或点阵LED驱动控制专用芯片,内部集成有数据锁存器、LED 驱 动等电路。SEG脚接LED阳极,GRID脚接LED阴极,可支持8SEGx16GRID的点阵LED显示。 适用于小型LED显示屏驱动。采用SOP28的封装形式…

portainer学习笔记1

Portainer是一款非常好用的docker容器管理平台,部署也很easy。# 创建portainer数据卷 docker volume create portainer_data # 拉取镜像启动portainer docker run -d -p 8000:8000 -p 9443:9443 \ --name portainer --restart=always \ -v /var/run/docker.sock:/var/run/dock…

安装Python保姆级教程(Pycharm破解码+解释器安装)

一、进入Python官网首页,下载最新的Python版本 https://www.python.org/downloads/ 选择最新的Python3.10.5,下载64位的版本 二、下载完成后,进行安装 1.双击Python-3.10.5-amd64.exe 3.出现此页面表示安装成功 三、运行Python 1.Win+R打开控制台,输入Python 此时出现了一…

dify知识库

一、概述 知识库功能将 RAG 管线上的各环节可视化,提供了一套简单易用的用户界面来方便应用构建者管理个人或者团队的知识库,并能够快速集成至 AI 应用中。 开发者可以将企业内部文档、FAQ、规范信息等内容上传至知识库进行结构化处理,供后续 LLM 查询。 相比于 AI 大模型内…

DevOps 平台选型对比:功能与价值剖析

在数字化转型加速的当下,高效的软件开发流程成为企业竞争力的关键。DevOps 平台作为整合开发与运维的重要工具,其选型至关重要。Gitee DevOps 是一款在行业内表现出色的平台,能为企业提供从代码管理到部署上线的全流程支持。通过对其功能、价格、用户体验等多方面与市场竞品…

关于如何搭建anythingllm+ollama(deepseekr1、嵌入模型)+milvus的本地知识库语言模型

这里只是对于自己在部署过程中踩到的坑做个记录。 以anythingllm为平台,接入基于ollama运行deepseekr1通用模型、嵌入模型,使用milvus作为向量数据库。其中milvus和anythingllm均在docker desktop中运行。 一、ollama 1.首先在ollama官网下载并安装ollama。 2.然后在官网的mo…

Endnote 修改了参考文献格式后,文献的引用有的上标,有的不是上标

如上图,有的文献引用是正常格式,有的文献引用的的方括号是上标的形式。解决如下: 打开Endnote,找到“编辑”---“输出样式”---“编辑XXXXXX”(XXXXXX表示你正在使用的参考文献格式)---“引用”---“模板”---“Citatian” 将方框中的“Bibliography Number”两边的方括号…

Explain查询Sql效率

Explain分析Sql性能 前言 在我们平时开发中,因为系统可能属于初级阶段,数据库的数据还不是很多,所以自我感觉写的Sql语句上运行起来速度还不错,殊不知,随着时间推移,数据量日益增多,系统的查询效率会在打折扣,所以,Sql性能调优手段还得了解一下下。 Explain是什么?有…

部署mall项目遇到的问题和解决方案

部署mall项目爬坑日记 原作者项目 环境:ubuntu20 docker容器相关的坑 发现容器打印的日志和当前时间有出入,相差了8小时,后面得知容器和宿主机的时区不同导致 !> 解决办法有如下几种:1.在刚开始创建容器的时候,docker run后面加上-v /etc/localtime:/etc/localtime:ro2…

高并发下如何保证幂等性

好文章怕丢失?码起来! 本文转载自原文 高并发下如何保证接口的幂等性? 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。 不知道你有没有遇到过这些场…