一个好的程序员至少应该具备哪些条件

一个好的程序员至少应该具备哪些条件,第1张

楼上的几位显然误会我的意思了,我并不是说不应当写文档加注释注重团队精神,看看下面的一篇文章,那位三天就写出UNIX的他需要写文档注释和团队精神吗,他用不着。哪个高手没有一点傲气和自信,他之所以敢对用户说:拿到你想要的,然后滚蛋,你已经很幸运了!是因为他有这个资本。天才本就不循规蹈矩,那样他就不叫天才了。

MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder,

and why”。我觉得挺有意思的,也来凑个热闹。排名不分先后。

Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还

是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据

说他想看看自己能不能写个 *** 作系统,就在三天里写了个自己的Unix, 也就是BSD的前

身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在

Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN

TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封

喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP

Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿

个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你

怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯

伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把

Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同

事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯

发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI

的主要作者之一。

John Carmack,ID Software的founder和Lead Programmer。上个月和一个搞图形的师兄

聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实

战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC

上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了石破天惊的Castle Wolfstein,

然后再接再励,doom, doomII, Quake每次都把3-D技术推到极限。J哥哥的简历上说

自己的专长是"Exhaust 3-D technology",真是牛人之言不我欺的说。做J哥哥这样的人

是很幸福的,因为各大图形卡厂家一有了新产品就要向他“进贡"

,不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听

取他的意见,修改了不少API。当然,J哥哥在结婚前十数年如一日地每天编程14小时以

上,也是偶们凡人望尘莫及的。对了,J哥哥高中肆业(?),可以说是自学成才。不过

呢,谁要用这个例子来为自己学习不好辩护,就大错特错了。那 Leonardo Da Vinci还

是自学成才呢(人是私生子,不能上学)。普通人和天才还是有区别的。对了,其实偶们

叫“达分奇”是相当不对的,因为Vinci是地名,而Da Vinci就是从Vinci来的人的意

思。换句话说,Leonardo Da Vinci就是“从Vinci来的Leonardo”的意思。叫别

人“Da Vinci”就不知所谓乐。嗯,扯远了,打住。

David Cutler,VMS和Windows NT的首席设计师,去微软前号称硅谷最牛的kernel开发

员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来,然

后说:“who can't write an OS in a week",也是牛气冲天的说。顺便说一句,D爷

爷到NT35时,管理1500名开发员,自己还兼做设计和编程,不改coder本色啊。

D爷爷天生脾气火爆,和人争论时喜欢双手猛击桌子以壮声势。 日常交谈fuck不离口。

他面试秘书时必问:"what do you think of the word 'fuck'" ,让无数美女刹羽而

归。终于有一天,一个同样火爆的女面对这个问题脱口而出:"That's my favorite

word"。于是她被录取乐,为D爷爷工作到NT35发布。

Don Knuth。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,

学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到 Anders Hejlsberg,

或者学Linux不知道Linus Torvalds一样,不可原谅啊。为了让文章完整,就再罗唆几句

吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别

人时收一两千美元,那些公司拿了code,加工一下卖出去就是上万上十万。不过也没见高

爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞

出了个 Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比

赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n

美分奖励等等都是耳熟能详的,偶就不饶舌乐。

顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可

谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没

有学究气,不失轻快跳脱。记得几年前读Concrete Mathemathics,时不时开怀大笑,让

老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那

完全是高爷爷的功劳。说到写作高手,不能不提Stephen A Cook。他的文章当年就被我

们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带

谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。

高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他

捐献了好多作品,都可以在网上看到,比如著名的Mathematical Writing,MMIXWare,

The Tex Book等,更不用说足以让他流芳百世的Tex乐。

Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M Riche

老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, *** 作系统Plan 9的主

要作者(另一个是大牛人Rob Pike,

前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是

计算机史前时代,普通人都认为只有大型机才能运行通用的 *** 作系统,小型机只有高山

仰止的份儿。至于用高级语言来写 *** 作系统,更是笑谈。Ken爷爷自然不是池中物,于是

他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不

知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,

于是C在随后20年成就了不知多少豪杰的梦想和光荣。

Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很

快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell

Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX

代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清

净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只

好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码

里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器

编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译

器。

(6)Rob Pike, AT&T Bell Lab前Member of Technical Staff ,现在google研究 *** 作系

统 。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M Ritche开

发 Unix的猛人,UTF-8的设计人。他还在美国名嘴David

Letterman的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的

是,罗伯伯还是1980年奥运会射箭的银牌得主。他还是个颇为厉害的业余天文学家,设

计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典,The Unix

Programming Environment 和 The Practice of Programming 的作者之一。如果初学者

想在编程方面精益求精,实在该好好读读这两本书。它们都有中文版的说。罗伯伯还写

出了Unix下第一个基于位图的窗口系统,并且是著名的blit终端的作者。当然了,罗伯

伯还是号称锐意革新的 *** 作系统,Plan9,的主要作者。可惜的是,Plan9并没有引起多

少人的注意。罗伯伯一怒之下,写出了振聋发聩的雄文 Systems Software Research is

Irrelevant,痛斥当下系统开发的不思进取,固步自封的弊病。虽然这篇文章是罗伯伯

含忿出手,颇有偏激之词,但确实道出了系统开发的无奈:开发周期越来越长,代价越

来越大,用户被统一到少数几个系统上,结果越来越多的活动是测量和修补,而真正的

革新越来越少。

就在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在还有一家大众公司在不

遗余力地把系统开发推向极致的话,也就是google乐。随便看看google的成果就知道

了。具有超强容错和负载平衡能力的分布式文件系统GFS

(现在能够用100,000台廉价PC搭起一个巨型分布系统,并且高效便宜地进行管理的系统

也不多哈),大规模机器学习系统(拼写检查,广告匹配,拼音搜寻。。。哪个都很牛的

说),更不用说处理海量并行计算的各式google服务了。Rob在System Software

Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前沿成果了。想不到

他错了,应为google关心。google网络了大批功成总是试图吸取系统研究的最新成果。

想必Rob Pike在google很幸福。愿他做出更棒的系统。

Dennis M Ritchie, 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis M

Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前

身是B,而B是Ken Thompson一手做出来的)。两人1983年分享图灵奖,是有史以来少数几

个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan Kay才因为SmallTalk得奖,

所以就成了唯二的乐) 一个人一生能做出一个卓越的系统已经不易,DMR的C和UNIX长盛

不衰近30年,至今生机勃勃,DMR此生可以无憾的说。

D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并在电路设计方面卓有

成就,还出了本颇有影响的书The Design of Switching Circuits,据说在交换理论和

逻辑设计方面有独到的论述。当然,D爷爷和他老爸是不同时代的人:他老爸的研究成

形于晶体管发明之前,而D爷爷的工作离了晶体管就玩儿不转乐。:-D

不要看D爷爷搞出了C,其实他最爱的编程语言是Alef,在Plan9上运行,支持并行编程。

Alef的语法和C相似,但数据类型和执行方式都和C大大不同。说到语言,D爷爷对后来

人有非常中肯的建议:抱着学习的目的来开发你自己的语言,不要冀望于它被众人接

受。这个建议不光对语言开发有用,也适用于其它大型系统的开发。别的不说,DMR后来

领导自己的团队在1995年和1996分别推出了Plan9和Inferno *** 作系统,又用多少人知道

呢?其实,D爷爷当初也没想过C会风行世界。他开发C的初衷和Eric S Raymond

在Cathedral and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁

知D爷爷无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次

采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当

然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言出色的审美意

识奠定了C广为流传的基础。

最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜

欢开NASCAR,而KM独爱巨无霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就

是Ken Thompson了。现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开

发部的头,整日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也

就长留你我心中乐。

PS, 很多人都以为Brian W Kernighan是C的作者。其实BWK只是写了那本经典K&R C。

据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最能写文章,他次之,而Ken写

得最少;但说到编程,Ken爷爷才是当之无愧的老大。

Edsger Wybe Dijkstra, 对,就是EW Dijkstra 一提到EWD,很多人就会想起找最短

路径的Dijkstra Algorithm,就好像一提到Sir Tony Hoare,就想起Quick Sort一样。

其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,

无非是戴爷爷在1956年为了展示新计算机

ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最

短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒

太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙

着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专

业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表

在Numerische Mathematik的创刊号上,权为捧场。:-)

EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较

深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。

戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工

作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要

知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情

愿,但经不住项目负责人Bram和Carel的轮番 “吹捧”:我们知道实时中断让您工作变

得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮d彻底击穿,

接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博

士论文,顺利戴上博士帽。

让戴爷爷真正成名立万的还是在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日

没夜地工作了8个月,就搞出了Algo60,也因此获得了 1972年的图灵奖。因为Algo60,

戴爷爷发表了一篇石破天惊的文章:Recursive

Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,

所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。

而且Algo60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员

都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科

学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。

说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是

专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴

爷爷这样的牛人创造历史。他一边教数值分析(:-D) ,一边开始开发一个新的 *** 作系

统,并培养计算机科学家。几年后,THE Multiprogramming

System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统

没有死锁变得容易的 *** 作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小

组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就

喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作

来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷

从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好乐。

EWD太牛,结果他的故事也太多。先到这里吧。1973起,他的故事就在美国发生了。

Anders Hejlsberg,微软NET的首席架构师,编程语言设计和实现的顶尖高手。他一手

做出了 Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和NET的主要作者。这些作

品的名字足以为他立传。作为一个程序员,我在这样的大师面前实在无语。生子当

如Anders的说。李维的<>里已详细讲述了Anders的传奇故事,我就不用费舌了:

>

有的,一般一个软件系统都是有漏洞的。

软件开发者开发软件时的疏忽,或者是编程语言的局限性,比如c语言家族比java效率高但漏洞也多,电脑系统几乎就是用c语言编的,所以常常要打补丁。软件漏洞有时是作者日后检查的时候发现的,然后修正;还有一些人专门找别人的漏洞以从中做些非法的事,当作者知道自己的漏洞被他人利用的时候就会想办法补救。多年以来,在计算机软件(包括来自第三方的软件,商业的和免费的软件)中已经发现了不计其数能够削弱安全性的缺陷(bug)。黑客利用编程中的细微错误或者上下文依赖关系,已经能够控制Linux,让它做任何他们想让它做的事情。缓冲区溢出是一种常见的编程错误,也是一种牵扯到复杂因素的错误。开发人员经常预先分配一定量的临时内存空间,称为一个缓冲区,用以保存特殊信息。如果代码没有仔细地把要存放的数据大小同应该保存它的空间大小进行对照检查,那么靠近该分配空间的内存就有被覆盖的风险。熟练的黑客输入仔细组织过的数据就能导致程序崩溃,更糟糕的话能执行代码。

使用Windows *** 作系统的人有时会遇到这样的错误信息:

「“0X”指令引用的“0x00000000”内存,该内存不能为“read”或“written”」,然后应用程序被关闭。

如果去请教一些「高手」,得到的回答往往是「Windows就是这样不稳定」之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的一般原因。

一、应用程序没有检查内存分配失败

程序需要一块内存用以储存数据时,就需要使用 *** 作系统提供的「功能函数」来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是「动态内存分配」,内存地址也就是编程中的「光标」。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值「0」已不表示新启用的游标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的「健壮性」。若应用程序没有检查这个错误,它就会按照「思维惯性」认为这个值是给它分配的可用游标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的「中断描述符表」,绝对不允许应用程序使用。在没有保护机制的 *** 作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的 *** 作系统中,如Windows等,这个 *** 作会马上被系统的保护机制捕获,其结果就是由 *** 作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的「写内存」错误,并指出被引用的内存地址为「0x00000000」。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于 *** 作系统使用很长时间后,安装了多种应用程序(包括无意中「安装」的病毒程序),更改了大量的系统参数和系统档案之后。

二、应用程序由于自身BUG引用了不正常的内存光标

在使用动态分配的应用程序中,有时会有这样的情况出现:程序试突读写一块「应该可用」的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是「忘记了」向 *** 作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而「没有留意」等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写 *** 作也同样会触发系统的保护机制,企图「违法」的程序唯一的下场就是被 *** 作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的 *** 作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为「0x00000000」,而是其它随机数字。如果系统经常有所提到的错误提示,下面的建议可能会有说明 :

1检视系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,

从而导致 *** 作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。

2更新 *** 作系统,让 *** 作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。

有时候 *** 作系统本身也会有BUG,要注意安装官方发行的升级程序。

3试用新版本的应用程序。

Mode:

将虚拟内存撤换

答案:

目前为止是肯定的,也就是如在下次冷天到来时亦没再发生,就代表这是主因

追加:

如果你用 Ghost 恢复 OS 后建议 删除WINDOWS\PREFETCH目录下所有PF文件因为需让windows重新收集程序的物理地址

有些应用程序错误 "0x7cd64998" 指令参考的 "0x14c96730" 内存。该内存不能为 "read"推论是此原因

源由:

Win XP的「预读取」技术

这种最佳化技术也被用到了应用软件上,系统对每一个应用软件的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟「内存映像」,并把这些信息储存到WINDOWSPREFETCH数据夹。一旦建立了映像,应用软件的装入速度大大提高。XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。

后叙:

目前此方法亦是独步网络的(其码自己针对此问题查了许久),也是常见问题,原本几乎每天睡前关闭软件时一些程序都会发生read

现在就没发生了。

运行某些程序的时候,有时会出现内存错误的提示(0x后面内容有可能不一样),然后该程序就关闭。

“0x”指令引用的“0x”内存。该内存不能为“read”。

“0x”指令引用的“0x”内存,该内存不能为“written”。

不知你出现过类似这样的故障吗?

一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。

下面先说说硬件:

一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。

假如你是双内存,而且是不同品牌的内存条混插或者买了二手内存时,出现这个问题,这时,你就要检查是不是内存出问题了或者和其它硬件不兼容。

如果都没有,那就从软件方面排除故障了。

先简单说说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在其一位置时,因为没有足够空间,就会发生溢出现象。举个例子:一个桶子只能将一斤的水,当你放入两斤的水进入时,就会溢出来。而系统则是在屏幕上表现出来。这个问题,经常出现在windows2000和XP系统上,Windows 2000/XP对硬件的要求是很苛刻的,一旦遇到资源死锁、溢出或者类似Windows 98里的非法 *** 作,系统为保持稳定,就会出现上述情况。另外也可能是硬件设备之间的兼容性不好造成的。

下面我从几个例子给大家分析:

例一:打开IE浏览器或者没过几分钟就会出现"0x70dcf39f"指令引用的"0x00000000"内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。 解决方法:修复或升级IE浏览器,同时打上补丁。看过其中一个修复方法是,Win2000自升级,也就是Win2000升级到Win2000,其实这种方法也就是把系统还原到系统初始的状态下。比如你的IE升级到了60,自升级后,会被IE50代替。

例二:在windows xp下双击光盘里面的“AutoRunexe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。 解决方法:这可能是系统的兼容性问题,winXP的系统,右键“AutoRunexe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:\winnt\apppatch\slayeruidll。右键,属性,也会出现兼容性的选项。

例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。 解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。

例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“0x060692f6”(每次变化)指令引用的“0xff000011”内存不能为“read”,终止程序请按确定。 解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。

例五:双击一个游戏的快捷方式,“0x77f5cd0”指令引用“0xffffffff”内 存,该内存不能为“read” ,并且提示Clientdat程序错误。 解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX90。

例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0x772b548f”指令引用的“0x00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。 解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。

1 内存条坏了 更换内存条

2 双内存不兼容 使用同品牌的内存或只要一条内存

3 内存质量问题 更换内存条

4 散热问题 加强机箱内部的散热

5 内存和主板没插好或其他硬件不兼容 重插内存或换个插槽

6 硬件有问题 更换硬盘

7 驱动问题 重装驱动,如果是新系统,应先安装主板驱动

8 软件损坏 重装软件

9 软件有BUG 打补丁或更新到最新版本

10 软件和系统不兼容 给软件打上补丁或是试试系统的兼容模式

11 软件和软件之间有冲突 如果最近安装了什么新软件,卸载了试试

12 软件要使用其他相关的软件有问题 重装相关软件,比如播放某一格式的文件时出错,可能是这个文件的解码器有问题

13 病毒问题 杀毒

14 杀毒软件与系统或软件相冲突 由于杀毒软件是进入底层监控系统的,可能与一些软件相冲突,卸载试试

15 系统本身有问题 有时候 *** 作系统本身也会有BUG,要注意安装官方发行的更新程序,象SP的补丁,最好打上如果还不行,重装系统,或更换其他版本的系统。

〔又一说〕

在控制面板的添加/删除程序中看看你是否安装了微软NETFramework,如果已经安装了,可以考虑卸载它,当然如果你以后在其它程序需要NETFramework时候,可以再重新安装。

另外,如果你用的是ATI显卡并且你用的是SP2的补丁(一些ATI的显卡驱动需要在NETFramework正常工作的环境下)。这种情况你可以找一款不需要NETFramework支持的ATI显卡驱动。

如果以上两种方法并不能完全解决问题,你试着用一下“IE修复”软件,并可以查查是否有病毒之类的。

〔微软NETFramework升级到11版应该没问题了〕

〔还有一说〕

方法一:

微软新闻组的朋友指点:开始--运行:regsvr32 jscriptdll

开始--运行:regsvr32 vbscriptdll

不过没解决---但提供了路子-----一次运行注册所有dll

搜索查找到方法如下:

运行 输入cmd 回车在命令提示符下输入

for %1 in (%windir%\system32\dll) do regsvr32exe /s %1

这个命令老兄你慢慢输 输入正确的话会看到飞快地滚屏 否则……否则失败就是没这效果。回车后慢慢等(需要点时间1-2分钟) 都运行完再打开看

方法二:

这是个典型问题~~~~~引起这个问题的原因很多。一般来讲就是给系统打上补丁和更换内存、给内存换个插槽这3种方法来解决。[系统补丁只要到Microsoft Update网站在线更新就可以了]

(偶见)

造成这种问题的原因很多,不能单纯的下结论,尽量做到以下几点可能对你有帮助:

1。确保使用的是未修改过的软件(非汉化、破解版)

2。使用改软件时尽量不要运行其他软件。(这是个临时文件,可能某些软件也在使用临时文件夹,所以产生干扰)

3。把那些什么桌面工具,内存整理工具通通关掉(你至少有2个类似的工具在运行)”

处理方法:

运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellExecuteHooks下,应该只有一个正常的键值", 将其他的删除。

〔我个人的最后解决和看法〕

我今天尝试了多种办法,最后我发现问题出在微软的NETFramework上面。我升级了这个软件,并打齐了补丁,短暂平安后,有出现“内存不能为read”的情况。后来我受上面文章的启发,卸载了微软的NETFramework10和11,世界太平了。

另外:如果是打开“我的电脑”、“我的文档”等的时候出现上述情况,还有一种可能,就是你的右键菜单太臃肿了,此时只要清理右键菜单问题就解决了。

--------------------------------------------------------------------------------

〔试验的结果〕

上面的方法,最管用、最彻底的方法是这个:

运行 输入cmd 回车在命令提示符下输入

for %1 in (%windir%\system32\dll) do regsvr32exe /s %1

如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:\,使用下面的“编辑-粘贴”功能就不容易输错了。在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。直到你的指示灯不闪了再做别的。

-----------转载“zc197 - 大魔法师 九级”。 个人觉得讲得很好,遂拿来共享

以上就是关于一个好的程序员至少应该具备哪些条件全部的内容,包括:一个好的程序员至少应该具备哪些条件、什么是BUG、e听说有没有漏洞等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10132783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存