0X000000该内存不能为read的解决方法
出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
一:先说说硬件:
一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
二、如果都没有,那就从软件方面排除故障了。
先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要 *** 作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的 *** 作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的 *** 作系统中,如Windows等,这个 *** 作会马上被系统的保护机制捕获,其结果就是由 *** 作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于 *** 作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向 *** 作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写 *** 作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被 *** 作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的 *** 作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。
首先建议:
1、 检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致 *** 作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2、 更新 *** 作系统,让 *** 作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候 *** 作系统本身也会有BUG,要注意安装官方发行的升级程序。
3、 尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。
4、 删除然后重新创建 Winnt\System32\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。 在"服务和应用程序"下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。 删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。(在删除前请创建这些文件的备份副本。) 打开"服务和应用程序",单击服务,然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs
下面搜集几个例子给大家分析:
例一:IE浏览器出现“08ba9ef”指令引用的“0x03713644” 内存,或者“0x70dcf39f”指令引用的“0x00000000”内存。该内存不能为“read”。要终止程序,请单击“确定”的信息框,单击“确定”后,又出现“发生内部错误,您正在使用的其中一个窗口即将关闭”的信息框,关闭该提示信息后,IE浏览器也被关闭。解决方法:
1、 开始-运行窗口,输入“regsvr32 actxprxydll”回车,接着会出现一个信息对话 框“DllRegisterServer in actxprxydll succeeded”,确定。再依次运行以下命令。(这个方法有人说没必要,但重新注册一下那些dll对系统也没有坏处,反正多方下手,能解决问题就行。)
regsvr32 shdocvwdll
regsvr32 oleaut32dll
regsvr32 actxprxydll
regsvr32 mshtmldll
regsvr32 msjavadll
regsvr32 browseuidll
regsvr32 urlmondll
2、 修复或升级IE浏览器,同时打上系统补丁。看过其中一个修复方法是,把系统还原到系统初始的状态下。建议将IE升级到了60。
例二:有些应用程序错误: “0x7cd64998” 指令参考的 “0x14c96730” 内存。该内存不能为 “read”。解决方法:Win XP的“预读取”技术这种最佳化技术也被用到了应用程序上,系统对每一个应用程序的前几次启动情况进行分析,然后新增一个描述套用需求的虚拟“内存映像”,并把这些信息储存到Windows\Prefetch文件夹。一旦建立了映像,应用软件的装入速度大大提高。XP的预读取数据储存了最近8次系统启动或应用软件启动的信息。建议将虚拟内存撤换,删除Windows\Prefetch目录下所有PF文件,让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出错,只要打上补丁或升级到最新版本,就没事了。
该内存不能为read或written的解决方案关键词: 该内存不能为"read" 该内存不能为"written"
从网上搜索来的几篇相关文章
文章一
使用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下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除。
〔我个人的最后解决和看法〕
我今天尝试了多种办法,最后我发现问题出在微软的NETFramework上面。我升级了这个软件,并打齐了补丁,短暂平安后,有出现“内存不能为read”的情况。后来我受上面文章的启发,卸载了微软的NETFramework10和11,世界太平了。
另外:如果是打开“我的电脑”、“我的文档”等的时候出现上述情况,还有一种可能,就是你的右键菜单太臃肿了,此时只要清理右键菜单问题就解决了。
--------------------------------------------------------------------------------
〔试验的结果〕
上面的方法,最管用、最彻底的方法是这个:
运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\dll) do regsvr32exe /s %1
技巧如果怕输入错误的话,可以复制这条指令,然后在命令提示框点击左上角的c:\,使用下面的“编辑-粘贴”功能就不容易输错了。在飞速滚屏完全静止之后,别着急启动其他程序,先耐心等一会儿,因为此时dll们还在找位置。直到你的指示灯不闪了再做别的。
单片机也会死机,这跟程序的健壮性有关。由于受到外界环境影响(温度,电磁 等)有时程序会跑偏,如果跑偏的位置正好是个死循环或者是未编程的存储区,这样系统就瘫痪了也就是通常说的死机,只有复位才能恢复。健壮的程序因为设置了陷阱捕捉和看门狗,可以对付大部分跑偏的情况,死机概率很小。
陷阱捕捉是指在存储区的未编程区域写上一种语句是程序在原地打转(死循环)看门狗的作用正好是让程序从混乱中回到复位点
JAVA语言,就是属于混合型语言,这是属于解释型语言和编译型语言之间的一种语言。学习一门高级程序语言,很多人都推荐JAVA。JAVA能让你学习到一门高级程序语言的方方面面,但又不会造成学习曲线过于陡峭
Java语言是一个支持网络计算的面向对象程序设计语言。Java语言吸收了Smalltalk语言和C++语言的优点,并增加了其它特性,如支持并发程序设计、网络通信、和多媒体数据控制等。主要特性如下:
1) Java语言是简单的。Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如 *** 作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
2) Java语言是一个面向对象的。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。
3) Java语言是分布式的。Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(javanet),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
4) Java语言是健壮的。Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。对指针的丢弃是Java的明智选择。Java的安全检查机制使得Java更具健壮性。
5) Java语言是安全的。Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
6) Java语言是体系结构中立的。Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件), 然后可以在实现这个Java平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。
7) Java语言是可移植的。这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSI C实现的。
8) Java语言是解释型的。如前所述,Java程序在Java平台上被编译为字节码格式, 然后可以在实现这个Java平台的任何系统中运行。在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
9) Java是高性能的。与那些解释型的高级脚本语言相比,Java的确是高性能的。事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
10) Java语言是多线程的。在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable) 的构造子将一个实现了Runnable接口的对象包装成一个线程!
需求分析
项目立项
我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项。较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员。项目实行项目经理制。
客户的需求说明书
第一步是需要客户提供一个完整的需求说明。很多客户对自己的需求并不是很清楚,需要您不断引导和帮助分析。曾经有一次,我问客户:“您做网站的目的是什么?”他回答:“没有目的,只是因为别人都有,我没有!”。这样的客户就需要耐心说明,仔细分析,挖掘出他潜在的,真正的需求。 配合客户写一份详细的,完整的需求说明会花很多时间,但这样做是值得的,而且一定要让客户满意,签字认可。把好这一关,可以杜绝很多因为需求不明或理解偏差造成的失误和项目失败。糟糕的需求说明不可能有高质量的网站。那么需求说明书要达到怎样的标准呢?简单说,包含下面几点:
1正确性:每个功能必须清楚描写交付的功能;
2可行性:确保在当前的开发能力和系统环境下可以实现每个需求;
3必要性:功能是否必须交付,是否可以推迟实现,是否可以在削减开支情况发生时"砍"掉;
4简明性:不要使用专业的网络术语;
5检测性:如果开发完毕,客户可以根据需求检测。
三系统分析
网站总体设计
在拿到客户的需求说明后,并不是直接开始制作,而是需要对项目进行总体设计,详细设计,出一份网站建设方案给客户。总体设计是非常关键的一步。它主要确定:
1网站需要实现哪些功能;
2网站开发使用什么软件,在什么样的硬件环境;
3需要多少人,多少时间;
4需要遵循的规则和标准有哪些。
同时需要写一份总体规划说明书,包括:
1网站的栏目和版块;
2网站的功能和相应的程序;
3网站的链接结构;
4如果有数据库,进行数据库的概念设计;
5网站的交互性和用户友好设计。
网站建设方案
在总体设计出来后,一般需要给客户一个网站建设方案。很多网页制作公司在接洽业务时就被客户要求提供方案。那时的方案一般比较笼统,而且在客户需求不是十分明确的情况下提交方案,往往和实际制作后的结果会有很大差异。所以应该尽量取得客户的理解,在明确需求并总体设计后提交方案,这样对双方都有益处。网站建设方案的包括以下几个部分:
1客户情况分析;
2网站需要实现的目的和目标;
3网站形象说明;
4网站的栏目版块和结构;
5网站内容的安排,相互链接关系;
6使用软件,硬件和技术分析说明;
7开发时间进度表;
8宣传推广方案;
9维护方案;
10制作费用;
11本公司简介:成功作品,技术,人才说明等。
当您的方案通过客户的认可,那么恭喜你!您可以开始动手制作网站了。但还不是真正意义上的制作,你需要进行详细设计:
网站详细设计
总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化。详细设计主要是针对程序开发部分来说的。但这个阶段的不是真正编写程序,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该 包含必要的细节,例如:程序界面,表单,需要的数据等。程序员可以根据它们写出实际的程序代码。
四 项目实施
整体形象设计
在程序员进行详细设计的同时,网页设计师开始设计网站的整体形象和首页。
整体形象设计包括标准字,Logo,标准色彩,广告语等。 首页设计包括版面,色彩,图像,动态效果,图标等风格设计,也包括banner,菜单,标题,版权等模块设计。首页一般设计1-3个不同风格,完成后,供客户选择。
记住:在客户确定首页风格之后,请客户签字认可。以后不得再对版面风格有大的变动,否则视为第二次设计。
开发制作
到这里,程序员和网页设计师同时进入全力开发阶段,需要提醒的是,测试人员需要随时测试网页与程序,发现Bug立刻记录并反馈修改。不要等到完全制作完毕再测试,这样会浪费大量的时间和精力。项目经理需要经常了解项目进度,协调和沟通程序员与网页设计师的工作。
调试完善
在网站初步完成后,上传到服务器,对网站进行全范围的测试。包括速度,兼容性,交互性,链接正确性,程序健壮性,超流量测试等,发现问题及时解决并记录下来。
为什么要记录文档呢?其实本软件工程本身就是一个文档,是一个不断充实和完善的标准。通过不断的发现问题,解决问题,修改,补充文档,使这个标准越来越规范,越来越工业化。进而使得网站开发趋向规范,趋向合理。
宣传推广
宣传推广的基本方法有:
1网页里设置适当的META标签;
2各搜索引擎登录;
3准备新闻稿件在各新闻公告板发表;
4合理使用Email邮件列表;
5广告条交换;
6付费广告。
至此,网站项目建设完毕,将有关网址,使用 *** 作说明文档等提交客户验收。如果需要维护,另行签定维护项目。
维护
网站成功推出后,长期的维护工作才刚刚开始,我们需要做到的是
1及时响应客户反馈;例如可以采取Email自动回复功能,然后在1-3个工作日里解决问题,再次回复;
2网站流量统计分析和相应对策;
3尽量推广和使用您的网址;
4网站内容的及时更新和维护。
五遵循的规范
1网站建设目录规范
2网站文件命名规范
3网站建设尺寸规范
4网站首页head区代码规范
5网站连接结构规范
现在最流行的高级语言主要应该是C/C++(我喜欢统一叫C语系,下文也统一称为C语系),net(无论C#NET还是VBNET,我是使用C#的),JAVA三种语言。
很多人对于这些语言有很大的误区,也没有一个清晰的认识。
这里我来说说这三个语言吧。
首先说说C语系:
C语系和里C和C++基本在语法结构上,还是关键字上还是功能上都没有太大的差别,但是两者还是有一个小小的差别——C是面向过程的,而C++则是在C的基础上采用了面向对象的思路。另外,在一些关键字的用法上有一些差别,主要体现在以下几个方面:
1、基础函数库的不同——包括库内某些函数库的不同;
2、C++引入了命名空间的概念;
3、最直接的感受——输入输出等关键字的不同;
4、类及类相关的概念——C++中出现了面向对象的思想;(很多学习C++的朋友并没有学会这个思想,而是用的面向过程的思想,C++对于这两种编程方式都是支持的)。
而其他的用法都是几乎相同的。C语系的最大的特点就是指针——对内存地址的直接访问和运算。程序员可以直接对内存空间进行各种 *** 作,这为C语系的编程带来了极大的灵活性。但是这也是C语系的一个极大的缺陷——对内存的 *** 作失误经常是导致程序内存空间高消耗从而引发响应问题乃至于崩溃的直接和根本原因而内存 *** 作是否合适,编译器是无法识别的,只有在程序的运行和测试中才能发现,这也是C语系的工程开发进度缓慢的直接原因。
当然,另一个原因就是C语系下的很多代码都需要自己写,很少有人提供各种现成的库供编程者使用,而这些提前编译好,具有各种功能的库在C语系下一般称为 “引擎”。当然了还有一个大家更为熟悉的名称——动态函数库,这个名字在JAVA和NET中也是这样使用的。这是题外话了。
C语系也是目前最完善和稳定的高级程序语言。C语系逻辑严谨,结构清晰。编写的程序具有良好的可读性和高效性。而且如果编程合理,程序健壮性也是非常客观的(当然,这些完全依赖于算法和结构的设计——许多对内存空间的直接访问和直接 *** 作提高程序执行的效率)。
C语系的强大的灵活性使得其称为大型工程中的不可替代的高级编程语言。但是C语系本身的特性也导致了明显的缺陷——编码、编译后的程序体积大;程序的可移植性低,编译后无法修改等。
由此诞生我们熟悉的另外两种语言——net 和java。
下面来谈JAVA:
JAVA 是由SUN公司以C为蓝板研发的,本来开发的目的是为了作驱动编程。用以方便对各种电子设备的联网或者互联 *** 作的语言,所以在设计初期就引入了许多在当时非常先进的思想——体积小(为了能够进行嵌入),高可移植性,高效性,面向对象。同时为了避免内存分配失误引起的尴尬,JAVA取消了C语系给编程人员直接访问内存的权限,内存的分配完全由JAVA解释器来负责。
为了达到高移植性JAVA采用了一个特殊的方式:所有的JAVA程序编写完以后并不是直接编译,而是形成归档文件包——一种可以被JAVA解释器解释的中间代码。需要运行的时候由JAVA解释器来解压并执行。
而取消了内存的直接 *** 作带来的最直接的影响就是代码体积的迅速减小——JAVA程序员不会费尽心思去想尽办法折腾内存 *** 作了,这使得程序员的所有心思都放到了直接的算法功能上。当然,不能直接 *** 作内存,所有跟内存相关的类型也都自然而然的取消了,这就不存在了那么多“乱七八糟”的地址引用了。这些都使得程序代码迅速减小。
各种各样的改进之后,我们熟悉的JAVA出现了——在具备了以上的特性之外,JAVA的缺点也逐渐显示了出来:由于无法进行复杂的 *** 作,所以如果要编写复杂的代码,程序的效率就会瞬间降低(因为要嵌套过多的函数层)。
最后,编程人员们终于认定了一个事实——JAVA不适合用来实现复杂的功能,但是却非常适合那些功能简单,过程并不复杂的功能。于是,除了驱动编程,JAVA最终应用在了我们熟悉的地方——网络小程序,手机应用程序。
好了,最后我们来谈谈NET——同时也谈下C#:
其实C#和NET根本就是一体的,怎么这么说呢?我们现来看看NET,NET是微软为了提高网页编程人员的效率及网页编程的安全性,在ASP的基础上提出了后台代码分离的概念。同时为了简便后台代码开发,微软将许多控件整合编写了大量的(服务器)控件函数。形成了一个高效,安全的网页编程语言net,在ASP时,功能函数都是由Script提供的,主要是基于VB和JAVA,在net里,为了方便许多C语言的程序员转型实现高效的服务器编程——不知道是不是微软也一直觉得C语系的程序员才培养了好的编程习惯啊——于是将C++进行改良,主要是加强了网络和数据处理方面的功能(通过编写了一大堆的网络和数据相关的控件),同时将C语系的指针取消了——看来随意访问内存带来的问题烦倒了真是无数的人啊,同时改变了MFC的界面设计方式(借鉴采用了C++Builder的GUI设计界面的方式)——这就形成了我们现在认识的C#。而当其作为net的后台语言时就是c#net了。
c#主要是为了开发一些和网络相关的程序,c#主要的问题也是net的问题在于运行程序的机器必须安装有相应版本的framwork——微软的东西向来移植性都很低,即便是用C语系开发的程序也完全没有什么移植性,更何况是他们自己研究出来的一个语言了。而net则是专门用于WEB编程的一个架构平台,当然也可以些application,但是并不合适,application还是直接用c#或者c语系好了。
当然,net的优势大家还是有目共睹的,尤其是代码分离后带来的网站安全性的提高,得到了大家一致的赞同,因此现在Linux平台在内的*NIX系统也开始支持net了。
最后总结一下几个语言的特点及现阶段主要的应用方向:
C语系: 稳定,灵活,高效 ——————各种大型应用程序、系统的编写,底层的开发——包括 *** 作系统,内核功能的编写等;
JAVA:高效,体积小,可移植性——————硬件驱动的编写,嵌入式程序,手机应用程序,网络小程序等各种需要在可使用资源较少的功能不太复杂的程序;
NET:开发周期短,代码复用率高,安全性好——————————WebSite及web服务编程;
C#:开发周期短,对网络和数据访问功能——————————各种和网络有关的Applications;
以上就是关于关于网络程序问题全部的内容,包括:关于网络程序问题、电脑为什么会死机单片机也会死机吗、java是运行在什么的脚本语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)