首页编程java编程java为什么设置缓存文件夹 java中输入流去读取文件时为什么要创建一个缓存数组

java为什么设置缓存文件夹 java中输入流去读取文件时为什么要创建一个缓存数组

编程之家2023-10-11110次浏览

今天给各位分享java为什么设置缓存文件夹的知识,其中也会对java中输入流去读取文件时为什么要创建一个缓存数组进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

java为什么设置缓存文件夹 java中输入流去读取文件时为什么要创建一个缓存数组

java google 的内存缓存为什么总调用cacheloader

首先,看一下使用范例:

Java代码

LoadingCache<Key,Graph> graphs=CacheBuilder.newBuilder()

java为什么设置缓存文件夹 java中输入流去读取文件时为什么要创建一个缓存数组

.maximumSize(1000)

.expireAfterWrite(10,TimeUnit.MINUTES)

.removalListener(MY_LISTENER)

java为什么设置缓存文件夹 java中输入流去读取文件时为什么要创建一个缓存数组

.build(

newCacheLoader<Key,Graph>(){

publicGraph load(Key key)throwsAnyException{

return createExpensiveGraph(key);

}

});

适用性

缓存在很多情况下都是非常有用的。比如,我们需要多次根据给定的输入获取值,而且该值计算或者获取的开销是非常昂贵的。

缓存和ConcurrentMap是非常相像的,但是它们也不完全一样。最根本的区别就是,ConcurrentMap会持有所有添加的对象,直到被显示的移除。而缓存为了限制其内存的使用,通常都会配置成可以自动的将对象移除。在某些情况下即使不自动移除对象也是非常有用的,如LoadingCache它会自动加载缓存对象。

一般,Guava缓存适用于以下几种情况:

你愿意花费一些内存来换取性能提升;

你预测到某些键会多次进行查询;

你的缓存数据不超过内存(Guava缓存是单个应用中的本地缓存。它不会将数据存储到文件中,或者外部服务器。如果不适合你,可以考虑一下 Memcached)。

如果你的需要符合上面所说的每一条,那么选择Guava缓存绝对没错。

使用CacheBuilder的构建模式可以获取一个Cache,如上面的范例所示。但是如何进行定制才是比较有趣的。

注意:如果你不需要缓存的这些特性,那么使用ConcurrentHashMap会有更好的内存效率,但是如果想基于旧有的ConcurrentMap复制实现Cache的一些特性,那么可能是非常困难或者根本不可能。

加载

对于缓存首先需要明确的是:有没有一个方法可以通过给定的键来计算/加载相应的值?如果有,那么可以使用CacheLoader。如果没有这样的方法,或者你想复写缓存的加载方式,但你仍想保留“get-if-absent-compute”语义,你可以在调用get方法时传入一个Callable实例,来达到目的。缓存的对象可以通过Cache.put直接插入,但是自动加载是首选,因为自动加载可以更加容易的判断所有缓存信息的一致性。

From a CacheLoader

LoadingCache缓存是通过一个CacheLoader来构建缓存。创建一个CacheLoader仅需要实现V load(K key) throws Exception方法即可。下面的范例就是如何创建一个LoadingCache:

Java代码

LoadingCache<Key,Graph> graphs=CacheBuilder.newBuilder()

.maximumSize(1000)

.build(

newCacheLoader<Key,Graph>(){

publicGraph load(Key key)throwsAnyException{

return createExpensiveGraph(key);

}

});

...

try{

return graphs.get(key);

}catch(ExecutionException e){

thrownewOtherException(e.getCause());

}

通过方法get(K)可以对LoadingCache进行查询。该方法要不返回已缓存的值,要不通过CacheLoader来自动加载相应的值到缓存中。这里需要注意的是:CacheLoader可能会抛出Exception,LoaderCache.get(K)则可能会抛出ExecutionException。假如你定义的CacheLoader没有声明检查型异常,那么可以通过调用getUnchecked(K)来获取缓存值;但是一旦当CacheLoader中声明了检查型异常,则不可以调用getUnchecked。

Java代码

LoadingCache<Key,Graph> graphs=CacheBuilder.newBuilder()

.expireAfterAccess(10,TimeUnit.MINUTES)

.build(

newCacheLoader<Key,Graph>(){

publicGraph load(Key key){// no checked exception

return createExpensiveGraph(key);

}

});

...

return graphs.getUnchecked(key);

批量查询可以使用getAll(Iterable<? extends K>)方法。缺省,getAll方法将循环每一个键调用CacheLoader.load方法获取缓存值。当缓存对象的批量获取比单独获取更有效时,可以通过复写CacheLoader.loadAll方法实现缓存对象的加载。此时当调用getAll(Iterable)方法时性能也会提升。

需要注意的是CacheLoader.loadAll的实现可以为没有明确要求的键加载缓存值。比如,当为某组中的一些键进行计算时,loadAll方法则可能会同时加载组中其余键的值。

From a Callable

所有Guava缓存,不论是否会自动加载,都支持get(K, Callable(V))方法。当给定键的缓存值已存在时则直接返回,否则通过指定的Callable方法进行计算并将值存放到缓存中。直到加载完成时,相应的缓存才会被更改。该方法简单实现了"if cached, return; otherwise create, cache and return"语义。

Java代码

Cache<Key,Value> cache=CacheBuilder.newBuilder()

.maximumSize(1000)

.build();// look Ma, no CacheLoader

...

try{

// If the key wasn't in the"easy to compute" group, we need to

// do things the hard way.

cache.get(key,newCallable<Value>(){

@Override

publicValue call()throwsAnyException{

return doThingsTheHardWay(key);

}

});

}catch(ExecutionException e){

thrownewOtherException(e.getCause());

}

直接插入

使用cache.put(key, value)方法可以将值直接插入到缓存中,但这将会覆盖缓存中已存在的值。通过使用Cache.asMap()所导出的ConcurrentMap对象中的方法也可以对缓存进行修改。但是,请注意asMap中的任何方法都不能自动的将数据加载到缓存中。也就是说,asMap中的各方法是在缓存自动加载范围之外来运作。所以,当你使用CacheLoader或Callable来加载缓存时,应该优先使用Cache.get(K, Callable<V>),而不是Cache.asMap().putIfAbsent。

缓存回收

残酷的现实是我们可以肯定的说我们没有足够的内存来缓存一切。你必须来决定:什么时候缓存值不再值得保留?Guava提供了三种基本的缓存回收策略:基于容量回收策略,基于时间回收策略,基于引用回收策略。

基于容量回收策略

使用CacheBuilder.maximumSize(long)可以设置缓存的最大容量。缓存将会尝试回收最近没有使用,或者没有经常使用的缓存项。警告:缓存可能会在容量达到限制之前执行回收,通常是在缓存大小逼近限制大小时。

另外,如果不同的缓存项有不同的“权重”,如,缓存项有不同的内存占用,此时你需要使用CacheBuilder.weigher(Weigher)指定一个权重计算函数,并使用CacheBuilder.maxmumWeight(long)设定总权重。和maximumSize同样需要注意的是缓存也是在逼近总权重的时候进行回收处理。此外,缓存项的权重是在创建时进行计算,此后不再改变。

Java代码

LoadingCache<Key,Graph> graphs=CacheBuilder.newBuilder()

.maximumWeight(100000)

.weigher(

newWeigher<Key,Graph>(){

publicint weigh(Key k,Graph g){

return g.vertices().size();

}

})

.build(

newCacheLoader<Key,Graph>(){

publicGraph load(Key key){// no checked exception

return createExpensiveGraph(key);

}

});

基于时间回收策略

CacheBuilder为基于时间的回收提供了两种方式:

expireAfterAccess(long, TimeUnit)当缓存项在指定的时间段内没有被读或写就会被回收。这种回收策略类似于基于容量回收策略;

expireAfterWrite(long, TimeUnit)当缓存项在指定的时间段内没有更新就会被回收。如果我们认为缓存数据在一段时间后数据不再可用,那么可以使用该种策略。

就如下面的讨论,定时过期回收会在写的过程中周期执行,偶尔也会读的过程中执行。

测试定时回收

测试定时回收其实不需要那么痛苦的,我们不必非得花费2秒来测试一个2秒的过期。在构建缓存时使用Ticker接口,并通过CacheBuilder.ticker(Ticker)方法指定时间源,这样我们就不用傻乎乎等系统时钟慢慢的走了。

基于引用回收策略

通过键或缓存值的弱引用(weak references),或者缓存值的软引用(soft references),Guava可以将缓存设置为允许垃圾回收。

CacheBuilder.weakKeys()使用弱引用存储键。当没有(强或软)引用到该键时,相应的缓存项将可以被垃圾回收。由于垃圾回收是依赖==进行判断,因此这样会导致整个缓存也会使用==来比较键的相等性,而不是使用equals();

CacheBuilder.weakValues()使用弱引用存储缓存值。当没有(强或软)引用到该缓存项时,将可以被垃圾回收。由于垃圾回收是依赖==进行判断,因此这样会导致整个缓存也会使用==来比较缓存值的相等性,而不是使用equals();

CacheBuilder.softValues()使用软引用存储缓存值。当响应需要时,软引用才会被垃圾回收通过最少使用原则回收掉。由于使用软引用造成性能上的影响,我们强烈建议使用可被预言的maximum cache size的策略来代替。同样使用softValues()缓存值的比较也是使用==,而不是equals()。

显示移除

在任何时候,你都可以可以通过下面的方法显式将无效的缓存移除,而不是被动等待被回收:

使用Cache.invalidate(key)单个移除;

使用Cache.invalidteAll(keys)批量移除;

使用Cache.invalidateAll()移除全部。

怎么将一个文件移到文件夹列表最顶层

谓的“万能预装”就是利用GHOST和微软的封装技术,经过处理后制作成的一个ghost映像,然后通过普通的ghost方式“安装”到c盘。“预装”名词我是从品牌机上引用过来的。毕竟这样方式和普通安装有很大的区别。这个制作方式经过众多网友的讨论研究,不断完善、不断改进,已经基本实现所谓的“万能”。为了让更多的网友和系统爱好者了解制作的过程,编辑整理了制作过程。

一、安装前的准备

准备一张完整的系统安装盘(当然iso之类也可以,只要你会安装就可以)。一般2000选用专业版(pro);xp有好几个版本:按激活的方式也有“上海政府”免激活版本(推荐)、OEM、俄罗斯破解零售版等;2003有免激活企业版的标准版(推荐)和企业版等。

下载死性不改提供的自动选择电源模式解决方案()

建议使用一个串口鼠标,因为usb在封装时可能不能使用。

二、安装操作系统(以下均以xp为例)及软件

正常安装完整操作系统,系统文件格式建议采用NTFS,优点就不用说了。

升级所有的补丁,为了减少体积,NET Framework可以不安装,这样可以节省20多m的空间。安装DirectX9.0b、wmp9.0、ms java、GB18030支持等,最好重新启动一下系统。

安装常用应用软件(裸版可以直接跳过这一步),个人推荐以下软件:

QQ最新的去广告ip版

Winamp5.X汉化版或foobar

优化大师注册版

MSN MESSENGER 6.2+去广告多用户补丁

WINRAR3.X最新汉化注册版

Flashget 1.6破解注册版

Flashfxp 2.2以后的注册版

媒体播放器经典版最新版本或realone plus版

MYIE2、GreenBrowser或其他外壳浏览器

紫光拼音3.0以后的版本

极典五笔或其他五笔输入法(xp、2003自己都没有五笔)

Emeditor 4.X汉化注册版—最好的文本编辑器

Symantec AntiVirus 8.1或其他可升级的杀毒软件

天网防火墙或其他——针对2000,xp和2003可以不安装

Raspppoe安装版——针对2000,xp和2003可以不安装

时可通时间增强工具

office2000或office 2003完整安装

AIDA32 3.8或其他检测系统信息,精小强大。对于使用ghost用户安装驱动之类的有用

Kugoo,下载mp3的p2p软件,很不错——他们可没有给我广告费哦,呵呵

选择一个bt下载软件,现在很多也用到

………

不宜安装Daemon manager,新的方法封装后会不能使用,因为它作为一个驱动会被删除。所以有驱动(硬件)性质的也不能安装。不过再多也安装不下了。

另外还要对这些软件做些适当的调整,如flashget、bt等默认下载地址改为d:\download之类的,有时间最好运行一下,检查注册是否完成、并将注册方法放到安装目录,封装后可能变成未注册的就可以用上。

三、优化系统

现在安装完,大概有2.Xg,这对于我们的要求还差很多,所以要进行优化和删除系统没用的文件,所谓的“减肥行动”!我们的目标是1.3g,这样ghost(high)后可以控制在650m左右。

1、禁用系统还原,封装后又会恢复、这不影响;

2、转移分页文件(虚拟内存),可移到d盘或禁用,反正封装后又会恢复。Ghost8.0可以直接屏蔽这个大块头;

3、转移临时文件夹,推荐d:\temp;

4、禁用休眠,可以节省和内存一样大的空间;

5、转移IE的临时文件夹(缓存),也放到d:\temp;OE的存储位置改为D:\My Documents\oe;

6、转移我的文档的位置,推荐D:\My Documents

7、可选卸载不需要的windows组件,在运行中输入“%systemroot%/inf/sysoc.inf”,打开这个文件后在记事本的“编辑”菜单下点击“替换”,然后在“查找内容”中输入“hide”(不包括引号),然后点击右侧的“全部替换”按钮,之后保存文件并关闭。重新打开控制面板中的添加删除程序,然后点击“添加删除Windows组件”,现在可以直接卸载很多以前并不允许卸载的组件了。请大家谨慎使用;

8、关闭内存转储。在“系统属性”对话框的“高级”选项卡下,点击“启动和故障恢复”按钮,然后在“写入调试信息”下拉菜单中选择“无”。并且你可以搜索所有的“*.dmp”文件并删除它们。同时,在运行中输入“drwtsn32”并回车,打开华生医生工具,在这里取消对“转储全部线程上下文”、“附加到现有日志文件”和“创建故障转储文件”这三项的选择。

9、删除大的中文字体。一般保留宋体(含18030的那种)、黑体、仿宋体就可以了。

10、删除系统文件备份,就是dllcache。在运行中输入“CMD”并回车,打开命令提示行窗口,然后在其中输入“sfc/purgecache”并回车,这将会删除前面提到的c:\windows\system32\dllcache文件夹中所有的备份文件,接着继续输入“sfc/cachesize=0”并回车。可能会提示windows文件保护的框。

11、禁止windows文件保护。从注册表中找到

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon,修改“SFCDisable”键值为“FFFFFF9D”,如果需要重新启用该功能,重新设置为“0”就可以了。

12、删除帮助文件。直接删除Windows目录下的“Help”文件夹,不过有几个最好保留:agt0407.hlp这种数字格式的,不然封装后启动可能要源光盘,反正只有几k,留着。

13、多余的输入法。这个不能完全删除,不然封装后会提示插入源光盘!除了中文输入法,Windows XP中还带有日文和韩文等输入法,这对我们当然没什么用处,也可以在“c:\windows\ime”文件夹下选择性删除除了“CHSIME”和“SHARED”之外的其他文件夹中的内容。结果如图:

尤其imjp8_1和imkr6_1需要保留文件夹和部分dll文件,如果不是很大就尽量保留。删除ime后从80多m减少到2.36m就可以了。

C:\windows\ime保留文件列表.

│ mscandui.dll

│ SOFTKBD.DLL

│ SPGRMR.dll

│ SPTIP.dll

├—CHSIME

│└—APPLETS

│ PINTLCSA.DLL

│ PINTLCSD.DIC

│ PINTLCSD.DLL

│ PINTLCSK.DIC

├—CHTIME

│└—Applets

├—imejp

│└—applets

├—imejp98

├—IMJP8_1

│└—APPLETS

├—IMKR6_1

│├—Applets

│└—Dicts

│ hanja.lex

│ hanjadic.dll

│ imekr.lex

└—SHARED

│ imepaden.hlp

│ imepadsm.dll

│ imepadsv.exe

│ imlang.dll

└—RES

PADRS404.DLL

padrs411.dll

padrs412.dll

padrs804.dll

14、可选删除Service Pack备份文件。Service Pack是Windows的大补丁文件,在安装Service Pack后硬盘上会占用一部分空间保存备份出来的系统文件;可删除windows下“ServicePackFiles”文件夹

15、减少开机滚动条时间每次启动Windows XP,蓝色的滚动条都要走上好多次,其实这里我们也可以把它的滚动时间减少,以加快启动速度。打开注册表编辑器,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters,在右边找到EnablePrefetcher主键,把它的默认值3改为1,这样滚动条滚动的时间就会减少。然后可到C:\WINDOWS\Prefetch目录中,删除里面的内容.

16、删除所有windows下$NtUninstallQ******$”(******是一个数字)文件;

17、可选删除Driver Cache/i386”文件夹下的除了Driver.cab和sp1.cab外所有文件。千万别删除这两个,否这封装后的系统认识驱动会有麻烦。

18、删除c:\windows\cursors\,这个文件夹中包含了所有的鼠标指针;

19、删除c:\windows\srchasst,这个文件夹中保存了Windows XP的搜索助理,也就是你搜索文件时出现的小狗或者其他什么人物造型。你可以直接删除这个文件夹,这样你将会使用Windows 2000模式的经典搜索方式;建议删除!

20、可选删除c:\windows\downloaded installations\,这个文件夹中保存了一些程序的安装文件(主要是使用Windows Installer技术安装的程序),这样如果以后这个程序需要修复或者进行其他操作,就可以直接通过保存在这里的安装文件进行。不过通常把这个文件夹清空对系统的使用也没有什么太大的影响,所以建议删除。

21、可选删除c:\windows\media\,这里是用来保存Windows的系统声音,没有十分必要就不要删除;22、可选删除c:\windows\system32\usmt\,这个文件夹中是文件和设置转移向导的相关文件。

23、可选删除c:\program files\msn,c:\program files\netmeeting\,这两个文件夹中是MSN Explorer

和Netmeeting的可执行文件。不推荐,因为预装系统建新用户的时候可能用到msn4.6的一个dll文件,虽然不影响系统,因为6.1已经安装了或有人不使用msn,可提示缺少文件不舒服。

24、删除C:\windows\system32\oobe——适用企业版,零售版或者OEM版,那最好不要动它。

25、可选删除c:\windows\msagent,这里保存了Agent的文件,这里的Agent就跟微软Office应用程序中的Office助手一样,是一些动态的卡通形象,通常我们用不到这些东西。注意保留intl目录中类似agt0407.dll的所有dll文件。

26、可选清理C:\WINDOWS\Web\Wallpaper中的桌面,可以自己换个喜欢的。如果想更深入,就删除屏幕保护,C:\WINDOWS\system32\*.scr

27、加速网上邻居。访问网上邻居是相当恼人的,系统会搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务,然后才显示出来,显然这样速度就会比Windows 9x中慢很多。其实这些功能我们并没有使用上,与其不用还不如删除它们,这样速度就会明显加快。打开注册表编辑器,找到HKEY_LOCAL_MACHINE\sofeware\Microsoft\Windows\Current Version\Explore

\RemoteComputer\NameSpace,删除其下的(打印机)和(计划任务),重新启动电脑,再次访问网上邻居,你会发现快了很多。

28、Windows XP默认支持.ZIP文档,但系统会为此耗费大量资源,如果已经安装了winrar,你可以将这一功能关闭,只需在“开始”选单的“运行”中输入“regsvr32/u zipfldr.dll”即可。

29、打开服务,找到“Messenger”和“Alerter”,你可以安全地把它改为手动,这样就可以禁止了ip消息。

30、仔细再想一想其他自己认为可改进的地方,其他的可删除东西就不推荐了。清空回收站!

31、使用优化大师(注册版)清理系统.

32、优化整个系统包括硬件和网络的!这里的操作也很重要,大家也可使用类似的优化软件优化系统。

四、重新封装

1、更改 IDE ATA/ATAPI控制器,这一步就是XP系统万能GHOST的主要步骤所在!!为了适应现在各种不同的主板,(如Inter主板,VIA主板,SIS主板)则必须将你本机的IDE控制器改成标准的双通道 PCI IDE控制器,如图

2、再把计算机的电源改为Standard PC,方法和上面的一样!

3、再删除剩下的驱动,除”系统设备”中的不要乱删除外,其它的驱动都可以删,

4、删掉磁盘驱动器里面的所有设备信息

5、删掉端口里面的所有信息(为什么要删掉.经过我的试验超过20台(老机器)......

.不删掉的情况下某些主板的打印机和COM设备找不到或者错误的识别打印机和某些COM设备~

例如红外线控制设备)大家如果想做通用的如装机盘之类的最好删掉,不然小问题也能害死你啊.....

6、删掉监视器里面的所有设备信息

7、删掉键盘里面的所有设备信息

8、删掉其他设备里面的所有设备信息

9、删掉软盘控制器里面的所有信息

10、删掉声音.视频和游戏控制器里面的声卡信息(就是指系统自动识别的你的声卡驱动或你已经安装好了的驱动)

11、删掉鼠标和其他指针设备(干净嘛)

12、删掉通用串行总线控制器里面的所有信息也就是USB控制器

13、删掉网卡里面的所有系统信息

14、卸载掉你的显卡驱动是卸载啊.......呵呵系统自带的删除就行了

当然你可以用更方便的方法,用命令行:devcon.exe remove*删除剩下的驱动,

15、接下来在xp安装光盘中打开\SUPPORT\TOOLS\DEPLOY.CAB文件,先在 C:盘根目录下建议一个名为Sysprep的文件夹,并将DEPLOY.CAB压缩包文件用Winrar解压缩到 c:\sysprep,

16、运行setupmgr.exe逐步制作sysprep.inf.如图

可以自己指定计算机名称,也可以让计算机自动产生.

其它都用默认就好了,最后到

sysprep文件一定要在默认的目录中,不可以更改!sysprep文件建好后,就可以运行死性不改的程序了!

运行不改的程序后,会自动解压文件到以c:\sysprep文件中,完整的执行过程如下:

16、让电脑支持SATA,SCSI,RAID控制器

1)更改注册表“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root”权限如图:

2)安装S&R&S V4.3.exe,然后把c:\sysprep\sxbg.chk重命名为sxbg.exe复制到c:\program files目录。

3)运行c:\sysprep\sxbg.exe(必须有sysprep.exe,因为sxbg.exe有条件判断),

sysprep.exe启动时点击取消不执行封装,但必须让后台的cmd窗口执行完毕,

4)到c:\program files目录执行sxbg.exe就可以分离出只含有SATA,SCSI,RAID控制器驱动支持的功能,同时可以清除boot控制功能。

17、安装全自动检测附件,适合2000/XP/2003。

运行autohal.exe将会自动解压ta.exe,autohal.cmd setcmd.chk,和regset.cmd文件到c:\sysprep目录,封装时运行regset.cmd间接启动sysprep.exe即可。

注:1)全自动检测附件有2个

第1个,如果你的主板支持超线程CPU或者多CPU,检测完成后会出现两个菜单,显示时间为4秒钟,默认(第一项,适合超线程/多处理器),第二项适合普通处理器配置的计算机。

第2个,加入了杨大侠的doscpuid对超线程/多处理器的识别,全自动完成,

请自行选择采用哪一个。

2)发现单独安装的微软拼音输入法2003,在克隆恢复之后会打回原形(变成微软拼音输入法3.0),所以加入了对这个问题的修复功能。(与office 2003一起安装的好像没这个问题,另外,我是在Win2003中发现这个问题)。

3)加入了一个比较特别的功能:克隆到目标计算机时,如果你不想使用克隆文件中的自动应答设置,例如计算机名、工作组、注册名、安装序列号等等,那么你可在克隆之前根据自己的需要重新建立一个sysprep.inf,把它放在任意一个分区的根目录下(克隆的目标分区除外),那么这个sysprep.inf就会成为封装过程的自动应答文件。

运行regset.cmd,会自动启动封闭装程序,出现如图的画面.

点“确定”出现下面画面.

关机模式选择”退出”

第一项(不重置激活的宽限期)和第三项的(不重新产生安全标识符)都是XP以上系统专用,也就是正版用户激活用的,而我们所建议用的系统是上海政府版,或俄罗斯电话激活破解版,于是这两项其实选与不选无所谓,对GHOST克隆后的系统在使用上都无影响

第二项的(使用最小化安装)既所谓的 PNP安装,好象也叫无残留驱动安装,这也正是我们需要的,因此这项一定要选上。

第四项的(检测非即插即用硬件),这一选项不用选上,因为即使有非即插即用的古董级硬件,关机模式一定要选择“退出”,点击”重新封装”,过几分就可以完成封装了,然后手动关机,再用启动盘启动到dos下,不要重新启动系统了!用ghost做镜像就可以了!!完成!

至此!所有工作就算完成了!~~晕啊!~第一次写了这么多东西!~~

希望对一些还不会做万能ghost的网友,有帮助!~!~~~~~~~~~~

死性不改的封装程序可以去jujumao下载,网址:程序的使用方法,上面都是有的!~

五、常见的一些问题:

1、安装XP大部分人用NTFS格式,也有人用FAT32格式,怎样让做出的GHO文件都满足需要呢,这个好办,创建GHO文件时我们用FAT32格式,在用setupmgr.exe创建系统自动应答文件时,在“运行一次”一步中输入以下命令“convert c:/FS:NTFS”,安装时有个转换格式的选择,需要NTFS格式的选Y,不需要就选N就行了。

2、WinXP/Win2K克隆包恢复后OfficeXP需要重新激活的解决方法

说明:

(1)、我采用的officeXP版本的破解方法是用一个mso.dll文件替换原有的mso.dll,从而免激活

(2)、OfficeXP在安装过程中需要收集电脑硬件信息,从而作为是否需要重新激活的判断,当WinXP/Win2000的克隆包在另一台电脑上恢复后,officeXP会因为硬件变化大而重新要求激活。因此在制作克隆包前,要避免officeXP收集硬件信息。

方法如下:

A、在要生成克隆包的电脑上,安装officeXP不要双击setup.exe,而是采用命令行方式安装,格式如下:%OfficeXP Install Path%setup NOUSERNAME=True ENTERPRISE_IMAGE=True运行此命令行进行OfficeXP的正常安装,其中%OfficeXP Install Path%是指Office安装文件所在的路径,比如光盘e:NOUSERNAME=True,

使将来不同的用户可以在第一次使用OfficeXP时输入自己的用户名ENTERPRISE_IMAGE=True,告诉OfficeXP安装程序在安装过程中不收集硬件信息,而是在第一次运行时才收集硬件信息。

B、安装完成后,不要运行任何Office程序,不然OfficeXP会自动收集本机的硬件信息。

C、用破解文件mso.dll替换programe files\common files\microsoft shared\office10目录下的同名文件。可以先备份原来的文件,以防出错。

D、开始制作WinXP/Win2k的克隆包,这样克隆包在另一台电脑上恢复后,在用户第一次运行office程序时,officeXP会自动收集当前电脑的硬件信息,避免再次重新激活

3、安装GHOST2K,不能“软关机”

答:可能导致这个问题的原因很多,但是主要还是由于电源管理设置以及主板和Windows 2000的兼容性上。可以到BIOS的电源管理中把相应的项目激活(Enable),然后再进入Windows2000,在控制面板-电源选项里面也把支持ACPI的选项选上。如果,在电源选项里没有“支持ACPI的选项”,先在BIOS中把“ACPI Function”设为“Enabled”,再重新安装。

在某一个杂志上看到的解决方法,不知道行不行:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon下更改PowerdownAfterShutdown=0就可以正常关机

现在网上的 Windows 2003服务器,基本上都VOL的免激活版,操作步骤也和XP一样,只是在创建自应答文件时多几个选项,如授权多少用户等,并且,2003在重新封装时,(使用最小化安装)PNP选项是灰色的,也就是强迫选上,这其实也是我们希望的!!(2000和XP和2003各版的光盘都自带重新封装工具,并且不通用),但操作步骤基本都是一样!

java中输入流去读取文件时为什么要创建一个缓存数组

IO流自定义字节流的缓冲区:

思路:BufferedInputStream类中read()方法的工作原理

1)先一个一个从字节流中读取字节,读取一定量(自定义)之后,存储在一个字节数组(缓冲区)(FileInputStream.read(byte[] b)),并获得存储数量(read方法的返回值)。

2)一个一个字节返回,返回一个,存储数量减1,然后指针往后移一位,准备取下一个。

3)如果存储数量为0,代表当前数组中所有数据已经全部取完,此时再来一次读取(read(byte[] b)),再获得此次存储数量。

4)如果存储数量(即read方法返回-1),代表读到文件末尾,返回-1。

因此,需要用到以下几个变量:

读取的字节数量,指向数组中准备取哪一个的指针,将要返回的字节变量。

OK,本文到此结束,希望对大家有所帮助。

狄仁杰三部 狄仁杰三部电视剧全集48剧情java什么时候用方法 在java中,set和get方法什么时候用