|
Product Name |
Product Keys |
|
MTP6Q-D868F-448FG-B6MG7-3DBKT |
|
|
QB6MH-Q82HX-BFWPK-8TXTY-HHJT6 |
|
|
Microsoft® Office Outlook® 2007 with Business Contact Manager |
Not Applicable |
|
BWPMX-XY8XF-KGBQ6-XKT8R-GHXD3 |
|
|
GP24P-FC3DP-HXY7Q-YG3JR-J4G3G |
|
|
R83W8-GJQ82-GJ378-XQW9W-JBYKT |
|
|
PGT8R-VBMBC-6V7GY-TW3HT-8FP36 |
|
|
DY7FP-TGTKC-2366R-8VJMB-DGYKT |
|
|
TFKGD-9VXBG-T22DK-FQB9P-MBPG6 |
|
|
VQCR8-6KP8Q-Y2FTW-3YQD7-R22G6 |
|
|
FDJDK-66WCT-2HD9C-4TY63-38C4G |
|
|
FDJDK-66WCT-2HD9C-4TY63-38C4G |
|
|
FDJDK-66WCT-2HD9C-4TY63-38C4G |
|
|
FDJDK-66WCT-2HD9C-4TY63-38C4G |
分类: 经验技巧
“软件工业奥斯卡”SYS-CON 读者选择奖: Java开发
SYS-CON 媒体(www.sys-con.com)在近日揭晓了一年一度的" 读者选择奖" .这个奖项有“软件工业奥斯卡”之称.今年是第10届,有超过1.7万的SYS-CON读者参与了投票,分别评选出了在SOA、Web Services, Java 和 XML技术等领域的最佳产品、工具以及最佳提名。
1) 最佳 Java 应用服务器
获胜者:BEA WebLogic Server (BEA Systems)
提名:
1) JBoss Application Server (JBoss)
2) Sun Java Application Server (Sun Microsystems)
3) IBM WebSphere Application Server (IBM)
2) 最佳 Java 应用程序
获胜者: Eclipse (Eclipse Foundation)
提名:
1) IntelliJ IDEA (JetBrains)
2) BEA WebLogic Server (BEA Systems)
3) IBM WebSphere Application Server (IBM)
3) 最佳企业级数据库
获胜者: Oracle Database 10g (Oracle)
提名:
1) IBM DB2 Universal Database (IBM)
2) HSQLDB (HSQLDB Development Team)
3) Sybase Adaptive Server Enterprise (Sybase)
4) 最佳 Java IDE
获胜者: IntelliJ IDEA (JetBrains)
提名:
1) Eclipse (Eclipse Foundation)
2) NetBeans Java Studio Enterprise (Sun Microsystems)
3) IBM Rational Application Developer (IBM)
5) 最佳 Java 安装
获胜者:InstallAnywhere (Macrovision)
提名:
1) InstallShield (Macrovision)
2) Install4j (ej-technologies)
3) Advanced Installer for Java (Caphyon)
6) 最佳Java 应用程序监控工具
获胜者: IBM Tivoli (IBM)
提名:
1) APM Suite for Java 2 Platform (Quest)
2) Borland Deployment Op-Center (Borland)
3) Veritas Java 2 Adaptive Instrumentation (Veritas/Symantec)
7) 最佳 Java? BI 工具
获胜者:SAP Business Intelligence Development Kit (SAP)
提名:
1) Crystal Enterprise (Business Objects)
2) Oracle Business Intelligence Beans (Oracle)
3) JReport (Jinfonet Software)
8) 最佳移动数据库
获胜者: IBM DB2 Everyplace (IBM)
提名:
1) PointBase Micro (DataMirror)
2) SQL Anywhere Studio (Sybase)
3) Berkeley DB Java Edition (Sleepycat Software)
9) 最佳Java 报表工具
获胜者: Style Report (InetSoft)
提名:
1) Crystal Reports (Business Objects)
2) JReport (Jinfonet Software)
3) JasperAssistant (JasperAssistant Software)
10)最佳Rich Client平台
获胜者: Eclipse Rich Client Platform (Eclipse Foundation)
提名:
1) Ultra Light Client for Java 2 (Canoo)
2) Nexaweb Platform (Nexaweb Technologies)
3) Laszlo Presentation Server (Laszlo Systems)
11) 最佳Java 组件
获胜者: Oracle ADF Business Components (Oracle)
提名:
1) IMS DL/I Model Utility (IBM)
2) Chart FX for Java (Software FX)
3) JClass (Quest Software)
12) 最佳Java 数据库访问工具
获胜者: IBM Rational Application Developer (IBM)
提名:
1) Oracle Application Server TopLink 10g (Oracle)
2) DBVisualizer (Minq Sofware)
3) Kodo JDO (SolarMetric/BEA Systems)
13) 最佳 Java 消息发送工具
获胜者: IBM WebSphere MQ (IBM)
提名:
1) Sun Java System Message Queue (Sun Microsystems)
2) TIBCO Enterprise Message Service (TIBCO)
3) JORAM (ScalAgent Distributed Technologies)
14) 最佳Java Profiling / Testing工具
获胜者:JProfiler (ej-technologies)
提名:
1) IBM Rational Application Developer for WebSphere (IBM)
2) Optimizeit Enterprise Suit (Borland)
3) Oracle JDeveloper (Oracle)
15) 最佳Java 培训
获胜者: Java BluePrints (Sun Microsystems)
提名:
1) developerWorks Java Tutorials (IBM)
2) dev2dev (BEA Systems)
3) Essential Java (DevelopMentor)
16)最佳Java 虚拟机
获胜者: Java SE (Sun Microsystems)
提名:
1) BEA WebLogic JRockit (BEA Systems)
2) IBM Java SDK (IBM)
3) Kaffe (Kaffe.org)
17)最佳Java 团队开发工具
获胜者: Eclipse IDE (Eclipse Foundation)
提名:
1) IBM WebSphere Studio with Rational ClearCase (IBM)
2) Oracle JDeveloper (Oracle)
3) BEA WebLogic Workshop (BEA Systems)
18) 最佳Java 创新工具
获胜者: Eclipse IDE (Eclipse Foundation)
提名:
1) Java Studio Creator (Sun Microsystems)
2) IntelliJ IDEA (JetBrains)
3) BEA WebLogic Workshop (BEA Systems)
19) 最佳 Java SOA Kit
获胜者:BEA WebLogic Workshop (BEA Systems)
提名:
1) Java Web Services Developer Pack (Sun Microsystems)
2) IBM Emerging Technologies Toolkit (IBM)
3) Oracle JDeveloper (Oracle)
20) 最佳 Java 无线应用
获胜者: IBM WebSphere MQ Everyplace (IBM)
提名:
1) RIM Blackberry Wireless Handheld (Research in Motion)
2) Ericsson Wireless Office (Ericsson)
3) ValueFirst Velocity Plus (ValueFirst)
21) 最佳 Java 类库
获胜者: SWT (Eclipse Foundation)
提名:
1) Asynchronous IO Java Package (IBM)
2) Quest JClass (Quest)
3) Unified IO for Java (Andrey Kuznetsov)
22) 最佳 数据库工具或者驱动程序
获胜者:MagicDraw UML (No Magic)
提名:
1) Oracle JDeveloper (Oracle)
2) IBM Rational Rose Data Modeler (IBM)
3) AllFusion ERwin Data Modeler (CA)
23) 最佳 Java 持久层架构
获胜者:Oracle Application Server TopLink 10g (Oracle)
提名:
1) WebObjects (Apple)
2) iBatis SQL Map (Open Source: iBatis)
3) Kodo JDO (SolarMetric)
24) 最佳 Java 调试工具
获胜者: Eclipse (Eclipse Foundation)
提名:
1) NetBeans (Sun Microsystems)
2) Enerjy Code Analyzer (Enerjy Software)
3) IBM Rational (IBM)
25) 最佳 Java 应用开发框架
获胜者: Sun Java Studio Enterprise (Sun Microsystems)
提名:
1) IBM Rational (IBM)
2) IntelliJ IDEA (JetBrains)
3) BEA WebLogic Workshop (BEA Systems)
26) 最佳 Java 书
获胜者:Hibernate in Action (Manning Publications)
提名:
1) J2EE BluePrints (Sun Microsystems)
2) Core Java 2 (Sun Microsystems)
3) Java Developer’s Guide to Eclipse (IBM)
内存不能读写问题的解决方案
近期,一些朋友总提出内存不能为“read”或者“written”的问题,鉴于产生这些问题的原因多样复杂,判断和处理这些问题比较麻烦,现在将网上找到的这篇较为全面的资料,加上自己收集到的部分例子奉上,供大家共享。
问题
运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“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升级到了6.0,自升级后,会被IE5.0代替。
例二:在windows xp下双击光盘里面的“AutoRun.exe”文件,显示“0x77f745cc”指令引用的“0x00000078”内存。该内存不能为“written”,要终止程序,请单击“确定”,而在Windows 98里运行却正常。
解决方法:这可能是系统的兼容性问题,WinXP的系统,右键“AutoRun.exe”文件,属性,兼容性,把“用兼容模式运行这个程序”项选择上,并选择“Windows 98/Me”。win2000如果打了SP的补丁后,只要开始,运行,输入:regsvr32 c:winntapppatchslayerui.dll。右键,属性,也会出现兼容性的选项。
例三:RealOne Gold关闭时出现错误,以前一直使用正常,最近却在每次关闭时出现“0xffffffff”指令引用的“0xffffffff”内存。该内存不能为“read” 的提示。
解决方法:当使用的输入法为微软拼音输入法2003,并且隐藏语言栏时(不隐藏时没问题)关闭RealOne就会出现这个问题,因此在关闭RealOne之前可以显示语言栏或者将任意其他输入法作为当前输入法来解决这个问题。
例四:我的豪杰超级解霸自从上网后就不能播放了,每次都提示“Ox060692f6”(每次变化)指令引用的“Oxff000011”内存不能为“read”,终止程序请按确定。
解决方法:试试重装豪杰超级解霸,如果重装后还会,到官方网站下载相应版本的补丁试试。还不行,只好换就用别的播放器试试了。
例五:双击一个游戏的快捷方式,“Ox77f5cdO”指令引用“Oxffffffff”内存,该内存不能为“read” ,并且提示Client.dat程序错误。
解决方法:重装显卡的最新驱动程序,然后下载并且安装DirectX9.0。
例六:一个朋友发信息过来,我的电脑便出现了错误信息:“0*772b548f”指令引用的“0*00303033”内存,该内存不能为“written”,然后QQ自动下线,而再打开QQ,发现了他发过来的十几条的信息。
解决方法:这是对方利用QQ的BUG,发送特殊的代码,做QQ出错,只要打上补丁或升级到最新版本,就没事了。
例七:我的笔记本电脑用的XP系统,有时关闭网页时会弹出tbrowser.exe遇到问题需要关闭,然后有弹出0x03e7c738指令引用的0x03e7c738内存,该内存不能为read,请问是怎么回事?
解决方法:先查杀一下病毒,另外如果你安装了浏览增强之类的软件,请卸掉。
例八:从桌面或开始菜单中打开任何一个程序, 出现错误提示:"0x…….."指令引用的"0x00000000"内存,该内存不能为"read"。省略号代表可变值。而从运行中打开程序没问题。
解决方法:运行regedit进入注册表, 在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerShellExecuteHooks下,应该只有一个正常的键值"{AEB6717E-7E19-11d0-97EE-00C04FD91972}, 将其他的删除(默认键值当然不要删除)。这一条很常见。
例九:我三个月前配了台机子。系统比较不稳定,三个月内已经重装过多次系统,四五天前刚装过系统,可是经常随机地出现Explorer-应用程序错误,“0x4a01259d“指令引用的“0x00000000"内存。该内存不能为“read"。要终止程序,请单击“确定“。要调试程序,请单击“取消”。如果点确定,windows桌面就不见了。这种问题在之前的系统也出现过,不知道是不是硬件的问题?
解决方法:内存的兼容性问题!遇到这类问题,用户可以自行打开机器把内存的位置调动一下,看问题是否可以解决,如果问题依旧,可与你的朋友调换内存使用。
通过上面的几个例子,可以看到,出现故障的原因有好多种,下面列出已经提到和有可能发生的原因,方便查阅。
|
问题产生原因 |
解决方法 |
|
内存条坏了 |
更换内存条 |
|
双内存不兼容 |
使用同品牌的内存或只用一条内存 |
|
内存质量问题 |
更换内存条 |
|
散热问题 |
加强机箱内部的散热 |
|
内存和主板没插好或和其它硬件不兼容等 |
重插内存或换个插糟 |
|
硬盘有问题 |
更换硬盘 |
|
驱动问题 |
重装驱动。如果是新系统,要先安装主板驱动 |
|
软件损坏 |
重装软件 |
|
软件有BUG |
打补丁或用最新的版本 |
|
软件和系统不兼容 |
给软件打上补丁或者试试系统的兼容模式 |
|
软件和软件之间有冲突 |
如果最近安装了什么新软件,卸载了试试 |
|
软件要使用到其它相关的软件有问题 |
重装相关软件。比如播放某一格式的文件时出错,可能是这个文件的解码器有问题 |
|
病毒问题 |
杀毒 |
|
杀毒软件与系统或软件冲突 |
由于杀毒软件是进入底层监控系统的,可能与一些软件冲突,卸载了试试 |
|
系统本身有问题 |
有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序,像SP的补丁,最好要打上。如果还不行重装系统或更换其它版本的系统了 |
Windows系统出现内存错误
使用Windows操作系统的人有时会遇到这样的错误信息:“0X????????指令引用的0x00000000内存,该内存不能written”,然后应用程序被关闭。如果去请教一些“高手”,得到的回答往往是“Windows就是这样不稳定”之类的义愤和不屑。其实,这个错误并不一定是Windows不稳定造成的。本文就来简单分析这种错误的常见原因。
一、应用程序没有检查内存分配失败
程序需要一块内存用以保存数据时,就需要调用操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“指针”。
内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的指针,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。
若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用指针,继续在之后的运行中使用这块内存。真正的0地址内存区保存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即死机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的“写内存”错误,并指出被引用的内存地址为“0x00000000”。
内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统文件之后。
二、应用程序由于自身BUG引用了不正常的内存指针
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的指针已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止运行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!
像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效指针不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其他随机数字。
如果系统经常有所提到的错误提示,下面的建议可能会有帮助:
1.查看系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2.更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统文件、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。
3.试用新版本的应用程序。
漫谈硬盘彻底损坏后的数据抢救
漫谈硬盘彻底损坏后的数据抢救
作者:52硬件
伴随着科技的发展,80G、120G的硬盘在普通用户中都已经屡见不鲜了。但是,在长时间的使用硬盘过程中,我们也在承受着硬盘随时也会出错的风险,轻则硬盘的数据丢失,重则整个硬盘报废,造成不可预料的严重后果。采用什么办法,才能解决常见的硬盘数据丢失故障,成为用户十分关注的问题。
一、硬盘的分区
对于你手中硬盘来说,首先要做的事情就是分区了。硬盘分区是否合理直接影响到以后工作的便利性和数据的安全性。我们最常见到的分区表错误也是硬盘的最严重错误,不同错误的程度会造成不同的损失。如果是没有活动分区标志,则计算机无法启动。但从软驱或光驱引导系统后可对硬盘读写,可通过fdisk重置活动分区可进行修复。如果是某一分区类型错误,会造成某一分区的丢失。
在一般情况下完成硬盘分区之后,会形成3种形式的分区状态;即主分区、扩展分区和非DOS分区。在硬盘中非DOS分区(Non-DOS Partition)是一种特殊的分区形式,它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,对主分区的操作系统来讲,是一块被划分出去的存储空间。只有非DOS分区内的操作系统才能管理和使用这块存储区域,非DOS分区之外的系统一般不能对该分区内的数据进行访问。
主分区则是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。其中的主引导程序是它的一部分,此段程序主要用于检测硬盘分区的正确性,并确定活动分区,负责把引导权移交给活动分区的DOS或其他操作系统。此段程序损坏将无法从硬盘引导,但从软区或光区之后可对硬盘进行读写。
而扩展分区的概念是比较复杂的,极容易造成硬盘分区与逻辑磁盘混淆;分区表的第四个字节为分区类型值,正常的可引导的大于32mb的基本DOS分区值为06,扩展的DOS分区值是05。如果把基本DOS分区类型改为05则无法启动系统 ,并且不能读写其中的数据。如果把06改为DOS不识别的类型如efh,则DOS认为改分区不是DOS分区,当然无法读写。很多人利用此类型值实现单个分区的加密技术,恢复原来的正确类型值即可使该分区恢复正常。分区表中还有其他数据用于纪录分区的起蓟蛑罩沟刂贰U庑┦莸乃鸹到斐筛梅智幕炻一蚨В话阄薹ń惺止せ指?,唯一的方法是用备份的分区表数据重新写回,或者从其他的相同类型的并且分区状况相同的硬盘上获取分区表数据,否则将导致其他的数据永久的丢失。由于微机操作系统仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,所以操作系统只允许存储4个分区的数据,实际使用中4个逻辑磁盘往往不能满足需求;我们常说的硬盘扩展分区,它只是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。所以一旦单向链表发生问题,将会导致逻辑磁盘的丢失。
二、硬盘的数据恢复
1、误格式化硬盘数据的恢复
在DOS高版本状态下,格式化操作format在缺省状态下都建立了用于恢复格式化的磁盘信息,实际上是把磁盘的DOS引导扇区,fat分区表及目录表的所有内容复制到了磁盘的最后几个扇区中(因为后面的扇区很少使用),而数据区中的内容根本没有改变 。我们都知道在DOS时代有一个非常不错的工具UnFormat,它可以恢复由Format命令清除的磁盘。如果用户是在DOS下使用Format命令误格式化了某个分区的话,可以使用该命令试试。不过UnFormat只能恢复本地硬盘和软件驱动器,而不能恢复网络驱动器。UnFormat命令除了上面的反格式化功能,它还能重新修复和建立硬盘驱动器上的损坏分区表。
但目前UnFormat已经显得有点“力不从心”了,再使用它来恢复格式化后分区的方法已经有点过时了,我们可以使用多种恢复软件来进行数据恢复,比如使用Easyrecovery 6.0和Finaldata2.0等恢复软件均可以方便的进行数据恢复工作。另外DOS还提供了一个miror命令用于纪录当前的磁盘的信息 ,供格式化或删除之后的恢复使用,此方法也比较有效。
2、零磁道损坏时的数据恢复
硬盘的主引导记录区(MBR)在零磁道上。MBR位于硬盘的0磁道0柱面1扇区,其中存放着硬盘主引导程序和硬盘分区表。在总共512字节的硬盘主引导记录扇区中,446字节属于硬盘主引导程序,64字节属于硬盘分区表(DPT),两个字节(55 AA)属于分区结束标志。零磁道一旦受损,将使硬盘的主引导程序和分区表信息将遭到严重破坏,从而导致硬盘无法引导。0磁道损坏判断:系统自检能通过,但启动时,分区丢失或者C盘目录丢失,硬盘出现有规律的“咯吱……咯吱”的寻道声,运行SCANDISK扫描C盘,在第一簇出现一个红色的“B”,或者Fdisk找不到硬盘、DM死在0磁道上,此种情况即为零磁道损坏!
零磁道损坏属于硬盘坏道之一,只不过它的位置相当重要,因而一旦遭到破坏,就会产生严重的后果。如果0磁道损坏,按照目前的普通方法是无法使数据完整恢复的,通常0磁道损坏的硬盘,可以通过PCTOOLS的DE磁盘编辑器(或者DiskMan)来使0磁道偏转一个扇区,使用1磁道来作为0磁道来进行使用。而数据可以通过Easyrecovery来按照簇进行恢复,但数据无法保证得到完全恢复。
3、分区表损坏时的数据修复
硬盘主引导记录(MBR)所在的扇区也是病毒重点攻击的地方,通过破坏主引导扇区中的DPT(分区表),就可以轻易地损毁硬盘分区信息,达到对资料的破坏目的。分区表的损坏是分区数据被破坏而使记录被破坏的。所以,我们可以使用软件来进行修复。
一般情况下,硬盘分区之后,要备份一份分区表至软盘、光盘或者移动存储活动盘上。在这方面,国内著名的杀毒软件KV3000系列和瑞星都提供了完整的解决方案。但是,对于没有备份分区表的硬盘来说,虽然KV3000也提供了相应的修复方法,不过成功率相对就要低很多了。在恢复分区上,诺顿磁盘医生NDD是绝对强劲的工具,可以自动修复分区丢失等情况,可以抢救软盘坏区中的数据,强制读出后搬移到其它空白扇区。在硬盘崩溃或异常的情况下,它可能带给用户一线希望。在出现问题后,用启动盘启动,运行NDD,选择Diagnose进行诊断。NDD会对硬盘进行全面扫描,如果有错误的话,它会向你提示,然后只要根据软件的提示选择修复项目即可,而且这些问题它都能轻轻松松地解决。
另外,大家非常熟悉的中文磁盘工具DiskMan,在重建分区表方面具有非常实用的功能,用于修复分区表的损坏是最合适不过了。如果硬盘分区表被分区调整软件(或病毒)严重破坏,必将引起硬盘和系统瘫痪的严重后果,而DiskMan可通过未被破坏的分区引导记录信息重新建立分区表。只要在菜单的工具栏中选择“重建分表”,DiskMan即开始搜索并重建分区。使用过程之中,DiskMan将首先搜索0柱面0磁头从2扇区开始的隐含扇区,寻找被病毒挪动过的分区表。紧接着要搜索每个磁头的第一个扇区。整个搜索过程是采用“自动”或“交互”两种方式进行。自动方式保留发现的每一个分区,适用于大多数情况。交互方式对发现的每一个分区都会给出提示,由用户选择是否保留。当采用自动方式重建的分区表一旦出现不正确的故障时,我们可以采用交互方式重新进行搜索。
但是,重建分区表功能也不能保证做到百分之百的修复好硬盘分区表。所以要记住“求谁也不如求自己”还是保护好自己的硬盘吧!尽量避免硬件损伤以及病毒的侵扰,一定要做好分区表的备份工作;如果没有做备份的话,请下载一个DISKGEN软件,然后在工具选项中,选备份分区表,一般默认是备份到软驱上面的,如果你没有软驱,就要改一下路经,输出到硬盘目录里。然后你应该把这个备份文件刻录到光盘或者是拷贝到U盘里,千万不要放到硬盘里哦,那样就与没有备份的效果一个样了!
4、误删除之后的数据恢复
在计算机使用过程中我们最常见的数据恢复就是误删除之后的数据恢复了,但是在这个时候一定要记住,千万不要再向该分区或者磁盘写入信息,因为刚被删除的文件被恢复的可能性最大。实际上当用fdisk删除了硬盘分区之后,表面现象是硬盘中的数据已经完全消失,在未格式化时进入硬盘会显示无效驱动器。如果了解fdisk的工作原理,就会知道,fdisk只是重新改写了硬盘的主引导扇区(0面0道1扇区)中的内容 。具体说就是删除了硬盘分区表信息,而硬盘中的任何分区的数据均没有改变。由于删除与格式化操作对于文件的数据部分实质上丝毫未动,这样,就给文件恢复提供了可能性。我们只要利用一些反删除软件(它的工作原理是通过对照分区表来恢复文件的),用户可以轻松地实现文件恢复的目的。同时误格式化同误删除的恢复方法在使用上基本上没有大的区别,只要没有用Fdisk命令打乱分区的硬盘(利用FDISK命令对于40G以内的硬盘进行分区,还是很方便实用的,所有启动盘上都有,主板支持也没有任何问题),要恢复的文件所占用的簇不被其他文件占用,这样,格式化前的大部分数据仍是可以被恢复的。而且如果你的Windows系统还可以正常使用的话,那么最简单的恢复方法就是用Windows版EasyRecovery软件,它恢复硬盘数据的功能十分强大,不仅能恢复被从回收站清除的文件,而且还能恢复被格式化的FAT16、FAT32或NTFS分区中的文件。
该软件的使用方法十分简单,解压缩安装以后,运行EasyRecovery,出现主界面。左侧4个功能的按钮以及2个软件支持按钮,磁盘诊断可以帮助我们测试潜在硬件故障、监视并报告潜在驱动器故障、查看驱动器空间使用详细资料、IDE硬盘跳线设置、以及分析文件结构和创建可引导的诊断磁盘。而且6个功能按钮提供的数据恢复选项功能,对于我们需要的硬盘资料恢复来说至关重要,EasyRecovery Professional提供了多种数据恢复选项。其中包括:使用高级选项自定义数据恢复功能、查找并恢复已删除文件、从一个已格式化的卷中恢复文件、不以来任何文件系统结构信息进行恢复此软件还可以保存恢复数据进度以及创建可引导的紧急引导软盘。
实际操作中,我们将选择高级选项自定义数据恢复功能来进行数据恢复操作,经过扫描系统会显示磁盘驱动器信息,在这里我们选择了恢复资料的硬盘分区C盘,按照提示要求,点击“下一步”后软件EasyRecovery Professional将自动扫描分区,之后会把所有详细文件信息显示出来,其中包括目前还存在的和已经被删除的文件。紧接着要选中你想恢复的文件,选择“下一步”进入到选择目标位置屏幕,过一会后EasyRecovery成功的找回了丢失的文件,这时选择“取消”退出该工具即可。
以上是当我们遇到硬盘数据丢失后如何进行数据恢复的几种方法,相信这些对于电脑高手的朋友们来说真的不算什么,但还有不少初学电脑的朋友在为硬盘数据的丢失而苦恼啊!通过今天简单介绍的几种方法,衷心希望能对大家有点帮助。
九行代码让windows崩溃原因分析
目前很多地方都转载着利用9行代码史windows崩溃的文章,不过我发现没有关于为什么会使windows崩溃的分析。我先把原文给大家看看。然后把具体的细节说一下。
微软一直声称Windows XP多么多么稳定可靠,但日前一位名为Masaru Tsuchiyama的外国编程爱好者刊出了一小段C语言代码。这一只有9行的小程序如果在Windows XP/2000下运行,则可导致系统完全崩溃,并重新启动。但此程序对其他版本的Windows没有任何影响。这一产生无限循环输出的小程序的代码如下:
#include
int main( void )
{
for(;{
printf( "hung up " );
print("hung up ";
}
return 0;
}
如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。
但愿微软赶快修补这一漏洞。同时提醒大家,此代码只可用于研究,不得用于任何非法勾当。
如果去掉Print语句,此程序还会导致NT 4.0系统出现蓝屏错误。
以上遍是网上纷纷转载的原文。
关于为什么会导致错误,就在看下面的分析吧。
是退格
代码是用退格符把console里的光标退成null,
然后显示任一字符(除 ),即崩溃.
但是一般情况是不能退出规定的区域的,
而如的前一个字符是 则可以退出规定的区域(bug?).
双击运行时,系统将新建一个console,所以我们的显示在console
的左上角,我们只需两个就可退出屏幕(第一个吃掉 ).
原因是win32子系统意外中止导致系统崩溃.smss是windows系统建立的第一个用户进程,他的工作之一是建立csrss和winlogon进程,然后一直等待这两个进程的句柄,如果这两个进程意外中止,
smss将导致系统崩溃.csrss进程就是专门负责所有win32进程和系统进行通信的进程.所有win32进程的系统调用都会由csrss帮你完成,但是这样做因为需要进程切换所以效率太低.所以在windowsNT从3.51升级到4.0时将许多部分从用户态移入内核态,win32进程的系统调用将直接进行以减少进程切换时间.但是仍有少量系统调用需要csrss进程完成,据我所知createprocess
是这样的函数,所有console上的显示是这样的函数(还有其他的).
当我们调用printf(" a")最终将调用WriteFile API.
WriteFile((HANDLE)7," a",NULL,NULL)等同于
printf(" a"),7是console标准输入的句柄.
WriteFile判断句柄类型,如是文件句柄将调用ntdll.dll中的
NtWriteFile函数.如是console句柄将调用WriteConsoleA函数.
WriteConsoleA函数将调用ntdll.dll中的csrClientCallServer
函数通知csrss进程,然后调用NtRequestWaitReplyPort等待结果.
估计是csrss进程在处理这个请求过程中出错了.
几年前侯杰老师分析后我整理出来的。因为没有地方说过,甚至简单的分析都没有,所以我才把他翻出来 :) 细心的人发现csrss出错的细节没有描述,谁有时间就补充一下吧..
应对当前最流行的几种捆绑器技巧
一、传统的捆绑器
这种原理很简单,也是目前用的最多的一种。就是将B.exe附加到A.exe的末尾。这样当A.exe被执行的时候,B.exe也跟着执行了。这种捆绑器的代码是满网都是。我最早是从jingtao的一篇关于流的文章中得知的。就目前来说,已经没什么技术含量了。
检测方法:稍微懂一点PE知识的人都应该知道。一个完整有效的PE/EXE文件,他的里面都包含了几个绝对固定的特点[不管是否加壳]。一是文件以MZ开头,跟着DOS头后面的PE头以PE 开头。有了这两个特点,检测就变得很简单了。只需利用UltraEdit一类工具打开目标文件搜索关键字MZ或者PE。如果找到两个或者两个以上。则说明这个文件一定是被捆绑了。不过值得注意的是,一些生成器也是利用了这个原理,将木马附加到生成器末尾,用户选择生成的时候读出来。另外网上流行的多款“捆绑文件检测工具”都是文件读出来,然后检索关键字MZ或者PE。说到这里,相信大家有了一个大概的了解。那就是所谓的“捆绑文件检测工具”是完全靠不住的一样东西。
二、资源包裹捆绑器
就这原理也很简单。大部分检测器是检测不出来的,但灰鸽子木马辅助查找可以检测出捆绑后未经加壳处理的EXE文件。但一般人都会加壳,所以也十分不可靠。这个学过编程或者了解PE结构的人都应该知道。资源是EXE中的一个特殊的区段。可以用来包含EXE需要/不需要用到的任何一切东西。利用这个原理进行100%免杀捆绑已经让人做成了动画。大家可以去下载看看。那捆绑器是如何利用这一点的呢?这只需要用到BeginUpdateResource、UpdateResource和EndUpdateResource这三个API函数就可以搞定。这三个API函数是用来做资源更新/替换用的。作者只需先写一个包裹捆绑文件的头文件Header.exe.头文件中只需一段释放资源的代码。而捆绑器用的时候先将头文件释放出来,然后用上面说的三个API函数将待捆绑的文件更新到这个头文件中即完成了捆绑。类似原理被广泛运用到木马生成器上。
检测方法:一般这种很难检测。如果你不怕麻烦,可以先将目标文件进行脱壳。然后用“灰鸽子木马辅助查找”或“ResTorator”一类工具将资源读出来进行分析。但这种方法毕竟不通用。所以还是推荐有条件的朋友使用虚拟机。
三、编译器捆绑法
暂时不知用什么名字来形容,所以只能用这个来代替。这种方法相当的阴险。是将要捆绑的文件转换成16进制保存到一个数组中。像这样muma:array[0..9128] of Byte=($4D,$5A,$50….$00);
然后用时再用API函数CreateFile和WriteFile便可将文件还原到硬盘。这里稍稍学过编程的都知道。代码中的数组经过编译器、连接器这么一搞。连影都没了。哪还能有什么文件是吧?所以就这种方法而言,目前还没有可以查杀的方法。这种方法可以利用编程辅助工具jingtao的DcuAnyWhere或Anskya的AnyWhereFileToPas来实现。
四、最最毒辣的一种
因为暂时用的人较少,且危害性及查杀难度太大。[一个被杀的病毒直接捆绑就能免杀,汗~]所以就不公布了。此法查杀方法通用性极差。如果流行,估计大家连动画都不敢下着看了。HOHO~
补充:可以利用一些第三方工具将硬盘和注册表监视起来以后再运行那些你不确定是否被捆绑的程序。这样,一旦硬盘出现变化,或有文件新建,或有文件改变都会被记录在案。就算是查找起来也方便一点。
妙解破解的原理
不可不说一下学习破解的三个阶段:
初级,修改程序,用ultraedit等工具修改exe文件,称暴力破解,简称爆破。
中级,追出软件的注册码。
高级,写出注册机。
先说这爆破。所谓爆破,就是指通过修改可执行文件的源文件,来达到相应的目的。你不明白?呵呵,举个例子好了,比如说某共享软件,它比较用户输入的注册码,如果用户输入的,跟它通过用户名(或其它)算出来的注册码相等的话(也就是说用户输入的注册码正确了),那么它就会跳到注册成功的地方去,否则就跳到出错的地方去。
明白过来了吧,我们只要找到这个跳转指令,把它修改为我们需要的“造型”,这样,我们是不是就可以为所欲为了?(某软件双手放在胸口,你要干嘛?)
常见的修改方法有两种,我给你举例说明:
no.1
在某软件中,这样来进行注册:
00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确)
0045123D JZ 004572E6 (!!!<–此为关键跳转,如果用户输入的注册码正确,就跳向成功处,即004572E6处)
0045XXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
XXXXXXXX 执行到此处,就提示用户注册失败
..提示用户注册码不正确等相关信息
…
004572E6 … <–(注册成功处!!!)
…提示用户注册成功等相关信息
呵呵,看明白了吗?没有的话,我来给你讲一下。在软件执行到00451239处的时候,CALL置0045E02处来进行注册码判断。接着回来后就来一个跳转语句,即如果用户输入的注册码正确就跳到004572E6处,跳到此处,就算是注册成功了。如果用户输入的注册码不正确的话,那么就不会在0045123D处进行跳转,而一直执行下去。在下面等它的,是注册失败部分。
想明白了吗?嘿嘿…没错,我们只要把那个关键跳转JZ给改为JNZ(如果用户输入的注册码错误,就注册成功,输入正确则注册失败)。当然你也可以将JNZ修改为Jmp,这样的话,你输入的注册码无论正确与否。都可以注册成功。
no.2
我们再来讲一下另外的一种情况:
00451239 CALL 00405E02 (关键CALL,用来判断用户输入的注册码是否正确)
0045123D JNZ 004572E6 (!!!<–此为关键跳转,如果用户输入的注册码不正确,就跳向失败处,即004572E6处)
0045XXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
XXXXXXXX YYYYYYYYYY
XXXXXXXX 执行到此处,就提示用户注册成功
…提示用户注册成功等相关信息
…
004572E6 … <–(注册失败处!!!)
…提示用户注册码不正确等相关信息
这次我相信,并且深信不疑。你一定明白了。我还是不明白…倒…
你一定看出跟第一种情况不同的地方了吧。没错!它与第一种不同的,就是第一种情况是如果注册码正确,就跳到注册成功处,如果没有跳走,就会执行到失败处。而这一种情况则是如果注册码不正确,就跳到注册失败处,否则将执行到注册成功处。
这种情况的修改,除了把JNZ改为JZ外,还可以将其改为Nop,Nop这个指令没有任何意义,将该条指令修改为Nop后,便可随意输入注册码来进行注册了。
原理以经给你讲了,下面我们再来讲一下具体的修改办法吧。(我假设你以经明白了我所说的工具的使用方法)
先说一下虚拟地址和偏移量转换的问题,在SoftICE和W32Dasm下显示的地址值是所谓的内存地址(memory offset),或称之为虚拟地址(Virual Address,VA)。而十六进制工具里,如:Hiew、Hex Workshop等显示的地址就是文件地址,称之为偏移量(File offset) 或物理地址(RAW offset)。
所以当我们要通过那些十六进制工具来对可执行文件中的相应指令进行修改的话,先要找到它的File offset。我们没有必要去使用那些专门的转换工具,在W32Dasm中就有这个功能,比如说你W32Dasm中来到0045123D处,在W32Dasm界面下方的状态栏中就会出现该条指令的虚拟地址和偏移地址,即@:0045123D @offset 0005063Dh 后面的这个0005063Dh就是相应的偏移地址。我们得到该地址后,便可用UltraEdit等十六进制工具来对可执行文件进行修改了。比如使用UltraEdit,你先用UltraEdit打开该可执行文件,然后按Ctrl+G,接着输入你得到的偏移地址,就可以来到其相应的机器码处。
再给你讲一下机器码,所谓的机器码。就是你看到的那些个十六进制数据了。还记的它们与汇编指令是一一对应的吗?
以下这几个是爆破时要用到的,其它的如果感兴趣,可自行查看相关资料:
JZ=74;JNZ=75;JMP=EB;Nop=90
爆破的时候,只要对以上机器码进行相应的修改就行了,比如第一种情况的时候,可以将74修改为EB,即将JZ修改为JMP。而第二种情况,责需将75修改为90,即将JNZ修改为Nop。
由于本章只讲原理,具体一点的。如怎样找到关键跳转等,我们在下一章中再讲。(一个砖头飞了上来!嘿嘿,这次被俺接到了)
上边讲了爆破的原理,你需要明白的是。爆破只是你学习Crack的开始,是很简单的手段。刚入门的时候可以玩玩儿,但希望你不要就此不前!
(嘿嘿,再说了。人家的软件中不是都说了嘛,不准对其进行逆向修改。你动了人家的身子,怎么能不买帐呢? )
偶就不喜欢爆破,做不出注册机也要找出注册码。否则我就不会去注册这个软件,既然想不掏钱,就要靠你自己的本事。(等以后我有钱了,会考虑去注册那些优秀的共享软件的 )。所以,从某种意义上来说,我是一个正人君子
其实要找到注册码并不是一件多么难的事,我是指你所针对的软件不太那个的时候 不过你无需惧怕。
刚才我们说爆破的时候不提到过关键CALL吗?一般情况下,这个关键CALL就是对两个注册码(一个是软件自身通过你的注册名或机器什么的计算出来的正确的注册码,令一个就是你输入的错误的注册码)进行比较。我前边提到过,CALL之前一般会把所用到的数据先放到一个地方,CALL过去的时候再从这些地方把先前放入的数据取出来,进行相应的处理。这个关键CALL也是这样,在CALL之前,一般会把那两个注册码放到堆栈或某个寄存器中。嘿嘿,我们只要在调试器中,单步执行到该CALL,在未进去之前通过CALL之前的指令判断其将正确的和不正确的注册码放到哪里了。然后再用相应指令进行查看就成了,我说过不难的。
下面列出两个最常见的情况(可参考相关教程):
no.1
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上,该条指令也可以是pop edx
call 00?????? 关键call
test eax eax
jz(jnz)或jne(je) 关键跳转
看明白了吧,在关键CALL之前,软件会把两个注册码分别放入eax和edx中,你只要在CALL处下d eax或d edx就能看到正确的注册码了。
no.2
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上,该条指令也可以是pop edx
call 00?????? 关键call
jne(je) 关键跳转
以上两种情况最为常见,而那些个不太常见的情况,我们这里就不再提了。到下下一章的时候,我会给你讲相关方法的…
关于查找软件注册码的部分,就到这里。具体内容,下下一章咱们再说。(不是说了吗?我以经可以接到你的砖头了,干嘛还要丢呢? )
最后,再来说最后的所谓的高级阶段,如果你相信自己。并且热爱Crack,那么你一定会熬到这个阶段的,只是时间因人而异。
其实分析软件的算法,是有好多技巧在里面的。呵呵,最起码我刚开始的时候就摸不着头脑,那么多CALL,每个看起来,都很重要,都追一遍?结果连好多API都被追了进去。等你自己真正用心分析了一个软件的算法,并写出了注册机后。你就会明白其中的道理了。
完美的软件项目开发团队结构
项目经理团队(Program Management Team):
设计项目经理(Feature Design PM): 负责具体的产品设计,写Design Spec。PM 队伍中,80%的PM是做这个。
发行项目经理(Release PM): 负责整个项目的流程和进度管理,制定进度表等,协调整个团队的工作。大的PM 队伍中有一人专门做这个。这是整个项目的领头人。大型的项目的成功与否,常常靠得力的发行经理的领导。
协助项目经理(Supporting PM): 负责其它产品发行需要照顾到的事情,如客户交流、和市场开发人员交流、负责beta program (初版试行)、等等。大的PM 队伍中少不了这样的人。20%的PM是做这个。
开发团队(Development Team):
开发团队领导(Development Manager): 负责管理各个开发小组,并对开发编程的工作做总体的规划。
开发组长(Development Lead): 负责管理开发工程师,也参加对开发编程的工作做总体的规划。
开发工程师(Develop Engineer, or Developer): 负责具体的编程开发。
构架师(Architect): 大的产品团队有一两个资深工程师专门做整体系统的设计规划。
测试团队(Quality Assurance or Test Team):
测试团队领导(QA Manager): 负责管理测试小组
测试组长(Test Lead): 负责管理测试工程师, 制定测试计划等
测试工程师(Tester or Test Engineer): 负责具体的测试工作
测试开发工程师(Developer in Test, or STED): 负责测试工具的开发
产品可用性团队(Usability Team):
产品可用性工程师 (Usability Engineer): 做使用性能的调查和测试,采访客户或将客户邀请来做调查
界面设计师(UI Designer): 负责具体的界面设计
产品设计师(Product Designer): 负责产品的总体设计, 特别是硬件产品。
以上这个团队并不是所有的产品队伍都有。比较小的队伍就没有这些专人,有的时候向别的队伍借用,或雇佣临时工。
客户教育或文档团队(User Education, or UE Team):
文档组长(UE Lead): 负责管理文档小组
文档编辑(UE Editor): 负责具体的文档编辑和撰写
Web2.0编程思想:16条法则
1、在你开始之前,先定一个简单的目标。无论你是一个Web 2.0应用的创建者还是用户,请清晰的构思你的目标。就像“我需要保存一个书签”或者“我准备帮助人们创建可编辑的、共享的页面”这样的目标,让你保持最基础的需求。很多Web 2.0应用的最初吸引之处就是它的简单,避免并隐藏了那些多余的复杂性。站在创建者的立场,可以想象Google的几乎没有内容的主页,还有del.icio.us的简单的线条。从最终用户的角度来看,与之齐名的就是Diggdot.us所提供的初始化页面。你能够并且希望加入更多功能,但是先做好最开始的。在一个时候只做一个特性,完成一个目标。这听起来很太过于单纯化了,但它将使你更加专注,而且你也会明白我的意思。
2、链接是最基础的思想。这就是我们称之为Web的一个理由。链接是把Web中各种实体连接起来的最基本的元素。你的信息、你的关系、你的导航,甚至是能够被写成URL的任何内容。这里有一个链接应该遵循的规则(其实你也不必严格的遵守):
(1) Web上的任何东西都是可以被URI或者是URL所连接的。
(2) 把所有的链接都保存为他的原始出处,这样可以让你与任何人、在任何地方、任何时候都能分享它。
(3) 第二条中任何时候的前提是链接必须是持久的,它不会在没有任何缘由的情况下被改变或者是消失。
(4)链接应该是人类可读的、稳定的、并且能够自我诠释的。
3、数据应该属于创建它的人。是的,你听我的。任何用户创建的、贡献的或分享的都是他们自己的,除非他们很明显的放弃这个权力来让你自由处置。他们贡献到Web上的任何信息都应该是可编辑的、能被删除的、并且能够取消共享,无论在任何时候,只要用户愿意。这也包含了那些间接的数据,像他们所关心的记录、日志、浏览历史、网站访问信息,或者是任何可以被跟踪的信息。所有的网站必须清晰简单的陈诉那些信息是用户创建的,并且提供他们停止创建的方法,甚至是清除的方法。
4、数据优先,体验与功能其次。无论它是文本、图片、音频还是视频,Web最终还是把这些解析为数据。换句话说,你无法脱离数据去呈现内容。所有这些数据都通过那些易于发现的URL来定位(参见第2条)。通过另一种形式来看待这些,Web最终是名词优先,动词其次,虽然最近正在向动词偏移。来看看名词的例子:日历的条目、家庭照片、股票价格。还有一些动词的例子:定一个约会、共享一张图片、买一份股票。
5、做好积极分享一切的准备。尽可能的分享一切,你所拥有的所有数据,你所提供的所有服务。鼓励不遵循原有意图的使用,提倡贡献,不要那些需要分享的内容坚持设置为私有的。在分享与发现之后,提供易于使用的浏览方式是显而易见的需求。为什么呢:话说回来,你会从别人的共享之中受益匪浅。注意:这里没有许可让你去侵犯版权保护的法律,你不能够去分享你刻录的DVD或者是拥有商业版权音乐,因为你已经同意不会去分享这些东西。但是你可以发现并分享那些完全开放的媒体内容。一个小小的建议,你可以学习一下Creative Commons license(共创协议)。
6、Web是一个平台;要让它成长。当然,我们还有很多其他的平台(Windows、Linux、Mac),但是那些已经不是重点了。换句话说,Web是无法脱离的平台,不会中断的平台,你可以通过各种方式去扩展的平台。你在Web上提供的数据与服务将会成为Web一部分,最终你会在Web平台的某一处扮演你的角色。扮演好你的角色并照顾好后来者。
7、理解与信奉“阶梯性”。现在的Web越来越大,几乎蔓延到了全世界的所有国家,并且已经拥有了10亿用户。我的观点是Web的各个组成部分存在着细微的区别和不同,就像不同地方的用户那样。例如Web的设计部分:易用性永远优先于速度、可靠性、重用性与可集成性。你也应该提供同样的体验给你的用户。它已经被一次又一次的被人们在文档中强调,忠诚的用户很快会成为专业的用户,他们期待更快的速度还有更多。退一步支持他们。同样,也有很多很多的用户会进入这个阶梯的底端,如你所期待的那样。他们可能不会说你的语言,不熟悉你的文化,甚至不知道是如何到这里的。所以你需要向他们表达清楚。
8、任何东西都是可编辑的。或者是它应该被编织的更好。要确定的是,只有很少的东西是不能被编辑的,剩下的都可以,这是一个可写的Web。这并不意味着原始内容的丢失,而通常被理解为用户能够很容易的对内容加以评论,或者评注内容是在那里发现的。如果你对此应用的好,他们能够比你所想象的做的更多(把内容串起来并且给予原始内容来创建自己的,等等)。
9、Web上的身份是神圣的。不幸的是,这并不意味着你能够得到更多的隐私(这完全是上个世纪的想法)。但对身份的验证是必要的,你应该感谢那些只需一个邮件地址就能确定你身份的服务。这意味只要你对你的用户承诺了,你就必须保证他们的隐私安全。必要的时候,在这个世界的某处你还得为你的用户挺身而出,向当地的权威挑战。如果你没有打算那样做,你就得把实际情况告诉你的用户。另一方面,如果身份是必须的,不要试图伪装它,不然在某一天我们将会在Web上放弃我们的最后一点点隐私的权利。
10、了解流行的标准并且使用他们。从一个消费者或者是创作者的立场来看,数据将会以不同的格式与任何一个人交换。同时这样的数据也会反过来促进标准的完善与采纳。这通常意味像RSS、 OPML、XHTML、Simple XML、JSON等简单标准的流行,而避免SOAP、XSD,还有RDF、ATOM也一样,使用它们会给我的内心带来痛苦。请你也为你所钟爱的标准投上一票来支持它们。
11、遵循无意使用的规律。如果你把非常有趣的数据和服务用广泛使用的格式开放和共享出去,你将会得到你所应得的,其他人也将会基于你的那一块Web平台来构建。或许还会从别人那里得到更多,所以为这个做一下准备比较好。我已记不清有多少次我看到一个播客(podcasting)服务因为流行过渡而导致服务垮掉,就是因为他们被 Slashdot和del.icio.us给收录了。这一点要知道:网络上的大量化意味着如果一个内容非常有趣,即使是一个很小的角落也会得到惊人的访问量。鼓励使用这种方式,它还是非常有价值的,前提是你要有所准备。
12、粒化你的数据与服务。我们应该在很早以前就明白这些,大规模集成的数据仅仅适用于无需管理的下载与批量操作。分解你的数据,让他们独立成可描述的URL地址,对你的服务也一样。反过来说,你不要创建一些巨大的、复杂的、像圣诞树那样的数据结构和服务。保持简单,要非常的简单。让这些分离的片断能够容易的被重组和发现。
13、提供用户能够单独受益的数据和服务。渐渐依赖于这种社会化参与是存在风险的,你需要让你的用户有一点点动机来贡献时间、热情和信息,除非他们能够直接受益。社会化分享比个体行为的利益大很多,除非你能够激发用户的个人动机,否这你将无法享受这份厚礼。
14、让用户组织并过滤信息。不一定是必须的,但却是非常重要的。让用户以他们自己的方式来标注和组织数据,因为你自己是永远无法及时的处理他们的。用户会按照他们自己理解的最佳方式来处理并构建。要保证你的Web服务能够按照用户所需所想的方式来工作。这也是标签(tagging)和通俗分类(folksonomies )的方式如此成功的主要因素。
15、提供丰富的用户体验。Web一直都在和本地的应用程序进行着激烈的竞争。为什么?因为本地程序还是感觉上好一些,速度也快一些。但是这不会长久的(确信在5年或者15年后,这种竞争就不存在了)。是的,我在谈论Rich Internet Applications, Ajax, 还有那些不可思议的交互应用。他们让Web成为了一个真正的“无平台”的平台,如果你知道我是怎么想的。
16、信奉并支持快速改进和反馈。这个通常意味着加快步伐,但也意味着使用轻量级的工具、技术和不要做出那些适得其反的痛苦决定(例如使用一个被层层环绕的Ajax框架来代替可以通过混合来实现的,或者用C++来构建所有的东西,其实使用Ruby会更好一些)。这同时也意味着需要一个非常快速的方式来处理错误报告,修复Bug,释放新版本。从一个用户的角度来看,报告你所发现的任何问题,还有那些你经常抱怨的地方,甚至那些都不是一个Bug。
当然,Web 2.0是一个极其广泛和深奥的话题,没有一个人能够列举出它的所有重点和特征。如果你对此充满了兴趣,请花一点时间来补充我没有提到的地方。我想这就是Web 2.0的参与性吧!
原作者的这个标题借鉴了Bruce Eckel的两本畅销书的名字:《Thinking in C++》和《Thinking in Java》,《C++编程思想》与《Java编程思想》,在此说明一下为什么要这样翻译这个题目:)
用非常规手段有效删除怪文件
在Windows系统中,我们难免会遇到用常规方法无法删除文件的情况。尤其是使用Windows XP系统的用户,遭遇此类问题的频率更高。为了解除用户的困惑,我们将尝试通过各种非常规的手段有效地删除那些顽固文件。
一、删除顽固文件的常规方法
1.重新启动Windows操作系统后,再按常规方式删除文件。
2.在DOS(或命令提示符)界面中用Del、Deltree之类的命令删除。
3.利用非Windows资源管理器的第三方工具删除,例如具有浏览文件夹功能的Total Commander、ACDSee、FlashFXP、Nero等软件。
4.如果你安装了两个以上的操作系统,那么就可以在当前系统中删除其它操作系统的文件。
5.在启动时按F8键选择进入安全模式执行删除操作。
下面,我们将针对具体问题做具体分析,为大家介绍因各种原因不能删除文件时应采取的非常规方法。
二、删除“其它程序正在使用”的文件
问题表现:
Windows XP系统中,准备删除一个大容量的AVI格式文件,但系统却总是提示无法执行删除操作,有别的程序在使用,即使刚开机进入Windows系统时也是如此。
问题解决:
方法1:打开记事本,点击菜单栏“文件”→“另存为”,命名文件和你想删除的那个文件名一致(包括扩展名),而后进行替换,会发现容量变为0 KB了。此时,执行删除命令即可。
方法2:在那个AVI文件同目录中新建一个文件夹,然后重新启动。现在,不要选那个AVI文件,先选择适才新建的文件夹,然后再同时按Ctrl键+那个AVI文件,执行删除操作。
方法3:把AVI文件的扩展名改为其它任意无效的文件类型,再执行删除操作。
方法4:有一个一劳永逸的方法就是禁用Windows XP的媒体预览功能,点击“开始”→“运行”,输入:“CMD”后回车。然后在“命令提示符”窗口下输入:regsvr32 /u shmedia.dll
回车确认操作后将卸载视频文件的预览功能。以后在需要恢复视频文件预览功能时,在“命令提示符”中输入:regsvr32 shmedia.dll命令即可。
方法5:启动曾播放过那个AVI文件的媒体播放器,打开另一个文件。此后,再尝试删除即可。
方法6:可用WinRAR程序删除,用鼠标右键单击那个AVI文件,在弹出菜单中选择“添加到压缩文件”,而后在弹出窗口的“常规”标签页中选择“压缩后删除源文件”复选框。确认操作后,执行压缩操作。最后再删除该压缩文件。
方法7:调出“Windows任务管理器”,在其中选择结束Explorer进程,但此时不要关闭该窗口。这时候,会出现像死机一样的状况。我们切换到“应用程序”标签页,点击“新任务”按钮,输入Explorer.exe 并确认操作。此后,桌面又恢复正常了,再执行删除操作即可。
三、巧妙删除“非空文件夹”或“坏文件”
问题表现:
在Windows XP系统下(NTFS分区格式),无论是在资源管理器还是用第三方工具都删除不了指定文件,例如用Total Commander删除,先提示文件夹非空,确认后没任何反应。即使用DOS盘启动,加载ntfs for dos pro可读写版本,也删除不了,提示说是“坏的文件名”,但是可以看到该文件夹。
问题解决:
这种情况下的文件无法删除很有可能是由于在NTFS格式下长文件名造成的。我们可以使用8.3格式缩小长度或更改路径中部分目录名以减少路径的长度。例如可以暂时把路径中某些目录改名字,或在命令行模式下使用8.3格式。例如,“Linux Faq”的目录变成8.3就是“LINUXF~1”了,通过“Linuxf~1”就能进入目录了,此后就可以使用Del命令删除指定文件了。如果需要删除目录,则使用Rd命令。
四、巧妙删除“指定程序或文件正在使用”的文件
问题表现:
在执行删除文件操作时,系统在弹出对话框中提示指定程序或文件正在使用,无法删除之类的警告信息。
问题解决:
方法1:对于此类情况,我们可通过结束预删除文件的相关进程来解决问题。那么,如何能获知指定文件与哪些进程相关联呢?可以使用WhoLockMe这款小工具一探究竟。我们运行“Install.exe”先安装该程序。
下面,进入预删除文件所在目录,用鼠标右键单击该文件,在弹出菜单中选择“Who Lock Me?”。
这时会弹出“Lockers”窗口,在其中我们可以获知当前所有调用该文件的进程。
选定其中的进程名称后,点击“Kill Process”按钮,弹出“Kill-Confirmation”对话框,在此点击“是”按钮确认结束进程操作即可。结束所有相应进程后,就可以通过正常途径删除指定文件了。
小提示:其实这种方法尤其适用于删除木马服务器,这种极有威胁性的小东东只有封杀了与其相关的所有进程后才能删除。
方法2:如果指定程序或文件所调用的DLL动态链接库文件还在内存中未释放,删除时也会提示文件正在使用。这种情况下,我们在DOS环境中删除系统的页面文件即可,Windows 9X系统中是“WIN386.SWP”文件(位于系统盘的Windows目录中),Windows 2000/XP系统中是“pagefile.sys”文件(位于系统盘根目录下)。
方法3:如果系统中常驻病毒防火墙,而它在扫描查毒时正在检查你准备删除的文件,那么系统也会提示文件正在使用。此时,我们只需要暂停实时监控操作即可。
五、巧妙删除其它类别的怪文件
1.用户权限问题导致无法删除文件
如果当前的Windows用户登录身份不具有删除指定文件/文件夹的权限(针对Windows NT/2000/XP/2003操作系统),只要重新以管理员身份登录即可。
2.非法字符导致文件或文件夹无法删除
如果是由于非法字符导致文件或文件夹无法删除,可以在“命令提示符”界面中进入要删除文件的目录,输入“dir>del.bat”,利用DOS的管道命令把当前目录的文件列表自动输入到批处理命令文件“del.bat”中,然后修改该批命令文件,仅保留文件或目录名,并在文件或者目录名称前增加“del ”或者“rd”,然后运行批处理命令即可删除。
3.无法删除系统中的任何文件
查看系统中是否安装了具有反删除功能的防护软件,如果是则将其删除即可。
好了,以上为大家详细介绍了删除顽固文件的几种绝招,相信会了这几招后,你便可以轻松消灭这些怪文件了。