| 宸 的个人资料Yurina Space照片日志列表 | 帮助 |
|
|
1月26日 解决家中电脑问题今天解决家中电脑的一个小问题,任务栏托盘的图标总是莫名奇妙的丢失,找网上的资料:
(转)
可能和SSDP DISCOVERY SERVICE服务有关,关闭这个可以把消失的图标找回来。
我突然想到自己为了BT下载是开启了UPNP和SSDP这2个网络服务,应该就是这里的问题了。 可是网上说的解决办法是禁用SSDP这个服务. 这样固然可以解决问题,但始终觉得会影响到BT下载的速度。 我研究了一下,原来真的问题不是这2个服务上面,而是"添加删除程序"里面"添加删除WINDOWS程序"--"网络服务"里面有作更改的关系。 因为开启UPNP需要在里面钩选"UPNP用户界面". 你一旦在这里作了改变就会导致某些任务栏图标消失。 解决办法: 1. 将这个"UPNP用户界面"钩取消. 2. 到XP防火墙设置里面将"UPNP"框架"例外 3. 服务里面SSDP和UPNP都可以照常开启 这样就即保留了UPNP和SSDP这2个网络服不影响BT下载,也不会造成任务栏图标消失。 而我自己在做的时候发现按照上面的方法要插入xp安装盘,我家的找不到了。。。狠心一下,把服务关了,现在貌似还行。
1月10日 Htm和Html文件图标丢失不知道安装了什么软件,htm和html文件图标丢失了,看得极度不爽,不过还是让我找到了解决方法,网上有人写的,我佩服作者。
以下就是转自作者的:
病因:装了某个改变Htm/Html文件设置的程序
处理:修改注册表,将Htm/Html文件默认的图标关联改回默认。
具体操作:主要在注册表里确认两处默认值。一处是HKEY_CLASSES_ROOT\htmlfile\ShellEx\IconHandler,确认其右侧默认值为{42042206-2D85-11D3-8CFF-005004838597}(XP下面为此值,不保证其他系统下相同),如果不是请改回此值(包括花括号);另一处是HKEY_CLASSES_ROOT\CLSID\{42042206-2D85-11D3-8CFF-005004838597}\Old Icon\htmlfile\DefaultIcon,确认其右侧默认值是C:\Program Files\internet explorer\IEXPLORE.EXE,1(我的系统就是这个地方不对),否则请改回此值。保存,刷新,这个时候应该就OK了。 补充:做完上述几步,如果只有Html图标恢复正常,而Htm图标还是没改回来,请确认HKEY_CLASSES_ROOT\.htm右侧默认值是htmlfile,否则请改回,再保存、刷新,一切就OK了。 PS:我自己补充一句,这两种文件改起来很麻烦,其他文件的图标丢失因为不修改注册表,不会太麻烦,只要在“文件夹选项”里的“文件类型”选项卡里改改就行了。 教授的言论美国纽约大学的两位计算机科学系退休教授发表一篇公开文章,标题是“计算机科学教育:明日的软件工程师在何处?”。
在文中,他们强烈的批评了纽约大学和其他大学,没有向学生传授纯粹的语言如C、C++、Lisp和ADA。 “学生从当前教育实践课程中获取的技能不足以应付今日软件行业的发展(尤其是安全和安全目的方面)。更不幸的是,与外部行业需要过于匹配了,我们训练了许多容易被取代的软件工程师....由于web应用程序的流行,java成为入门课程中使用最普遍的语言。但是存在的缺陷使java语言课程不是作为学生的第一课准备的,更不用提其它的更高级的语言。学生发现很难在一个没有图像界面的语言上编写程序,不清楚源程序和硬件如何执行之间的关系,更具有危险性的是一点也不了解指示器的语义,这使得使用C语言编程也成为挑战。” 教授们认为真正的程序员能够使用任何语言(C,java,Lisp,Ada)。 个人认为,计算机学科的学生应该对于计算机基础有一个深刻的理解,以我的经验,掌握一些内部机制的知识可以帮助我们在日常工作中快速理解和运用技能(当然,不需要非常深入,有一个提纲挈领的理解就可以了,在遇到问题时能稍微知其所以然就可以了)。对于教授们说的程序员能够使用任何语言,我认为这在于一个学习能力的问题,我们培养的不是某一方面特别突出的所谓精英,而是能够快速掌握新知识和新技术,能够及时融入他人的思维方式中的工程师。这也是我们在本科和研究生必须学会的能力。 12月3日 正是我想要的看了一遍《Javascript高级程序设计》,正准备开始Javascript的正式学习,正好发现了这个,非常好。
还有一个Ext框架的,貌似很值得一学的样子。。。 9月21日 关于Java类加载记得在刚学JAVA的时候,类的加载机制和初始化顺序经常被弄的糊里糊涂,其实当我们不太了解某些事情的时候,不防去做一做实验,让代码的运行结果
说话,这或许能帮助我们更好地了解一些事情.今天我们就用一些代码来看一下类是如何被加载的,并且当有继承关系的时候,类的加载顺序又是怎么样的. /*
* Test4.java * * Created on 2007-9-21, 9:33:31 * * To change this template, choose Tools | Templates * and open the template in the editor. */ package test1; /** * * @author hadeslee */ public class Test4 { private void testClassForName(String name) throws ClassNotFoundException{ Class c=Class.forName(name); } private void testNewInstance(String name) throws ClassNotFoundException, InstantiationException, IllegalAccessException{ Class c=Class.forName(name); Object obj=c.newInstance(); System.out.println(obj); } public static void main(String[] args)throws Exception { Test4 t=new Test4(); t.testClassForName("test1.B"); new B(); new B(); } } class A{ private int aj; { aj=20; System.out.println("A成员初始化块"); } private static int ai; static { ai=10; System.out.println("A静态初始化块"); } public A(){ System.out.println("A构造函数"); } } class B extends A{ private static int bi; static { bi=30; System.out.println("B静态初始化块"); } private int bj; { bj=40; System.out.println("B成员初始化块"); } public B(){ System.out.println("B构造函数"); } } 在代码里面我们总共有三个类,一个是做测试用的Test4,一个是A,一个是A的子类B,我们在A和B类里面都有很多输出,一个是静态初始化的输出,一个是成员初始化的输出,一个是在构造函数里面的输出,从这些输出我们可以知道代码的执行顺序,以上代码运行输出如下: A静态初始化块 B静态初始化块 A成员初始化块 A构造函数 B成员初始化块 B构造函数 A成员初始化块 A构造函数 B成员初始化块 B构造函数 从上面我们可以看出,A和B的静态初始化块只被执行了一次,也就是类的对象将要被生成的时候,它会执行,并且执行的顺序如下:父类的静态成员,子类的静态成员,父类的成员变量和构造方法,子类的成员变量和构造方法.当再用这个类生成对象的时候,静态的部份就不再被调用了.因为静态是类的所有实例所共享的,所以它在整个虚拟机的生命周期内只执行一次. 如果我们加上一个t.testClassForName("test1.B");放在main函数的最后面,我们会发现输出还是和刚刚一样,没有任何改 变,这个时候,我们知道,当我们调用Class.forName(name);的时候,类是不会自动初始化的,它默认只是把这个类的字节码读入内存,但是 并没有初始化这个类.只有我们调用了newInstance()的时候,它才会被初始化.在这里我们再这样试一下:把A和B生成的class文件去掉,然 后再分别调用Class.forName和new B(),看看会怎么样,我们会发现当我们调用Class.forName的时候,当我们要for的Name找不到的时候,只会抛出ClassNotFoundException,注意,它只是一个异常而已,而当我们new B()的时候,B的class文件却被我们删掉了,那就事大了,那就将抛出NoClassDefFoundError, 呵呵,它就是一个Error了,这点区别我们可要注意啦,当我们在做这些事情的时候,一个只要捕获异常就可以了,一个却需要捕获一个Error,一般来 说,Error级别的错误是不希望程序员去捕获的.了解了类的基本加载顺序以及加载机制后,对我们了解JAVA是有一定的帮助的.好了,先讲这些吧,有关 类的加载机制以后再继续分享:) 9月19日 重设数组大小private static Object resizeArray (Object oldArray, int newSize) {
int oldSize = java.lang.reflect.Array.getLength(oldArray); Class elementType = oldArray.getClass().getComponentType(); Object newArray = java.lang.reflect.Array.newInstance(elementType,newSize); int preserveLength = Math.min(oldSize,newSize); if (preserveLength > 0) System.arraycopy (oldArray,0,newArray,0,preserveLength); return newArray; } 顺便提一下,Java中数组的单纯赋值比System.arraycopy()相比,字符串越长,则后者更快,大家可以试试。 9月15日 随便列的9月12日 关于Spring开发的链接其中有一个地方比较重要:
log4j配置
首先,在 web.xml 文件中加入如下配置:
log4j.properties 文件放在 /WEB-INF/ 目录下, 文件内容如下例,其中根日志级别为 warn ,而在包 cn.idtag 中的类的日志级别为 info 。
转:Hibernate包作用总结Hibernate一共包括了23个jar包,令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用,便于你在应用中根据自己的需要进行取舍。 下载Hibernate,例如2.0.3稳定版本,解压缩,可以看到一个hibernate2.jar和lib目录下有22个jar包: hibernate2.jar: Hibernate的库,没有什么可说的,必须使用的jar包 cglib-asm.jar: CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包 dom4j.jar: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j,直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包, Hibernate用它来读写配置文件。 odmg.jar: ODMG是一个ORM的规范,Hibernate实现了ODMG规范,这是一个核心的库,必须使用的jar包。 commons-collections.jar: Apache Commons包中的一个,包含了一些Apache开发的集合类,功能比java.util.*强大。必须使用的jar包。 commons-beanutils.jar: Apache Commons包中的一个,包含了一些Bean工具类类。必须使用的jar包。 commons-lang.jar: Apache Commons包中的一个,包含了一些数据类型工具类,是java.lang.*的扩展。必须使用的jar包。 commons-logging.jar: Apache Commons包中的一个,包含了日志功能,必须使用的jar包。这个包本身包含了一个Simple Logger,但是功能很弱。在运行的时候它会先在CLASSPATH找log4j,如果有,就使用log4j,如果没有,就找JDK1.4带的 java.util.logging,如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾,当初Apache极力游说Sun把log4j加入JDK1.4,然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了,因此拒绝了Apache的要求,使用自己的java.util.logging,这个包的功能比log4j差的很远,性能也一般。 后来Apache就开发出来了commons-logging.jar用来兼容两个 logger。因此用commons-logging.jar写的log程序,底层的Logger是可以切换的,你可以选择log4j, java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j,因为log4j性能很高,log输出信息时间几乎等于System.out,而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件,你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。 使用Hibernate必须的jar包就是以上的这几个,剩下的都是可选的。 ant.jar: Ant编译工具的jar包,用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码,那么就没有什么用,可选的jar包 optional.jar: Ant的一个辅助包。 c3p0.jar: C3PO是一个数据库连接池,Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池,就需要这个jar包。 proxool.jar: 也是一个连接池,同上。 commons-pool.jar, commons-dbcp.jar: DBCP数据库连接池,Apache的Jakarta组织开发的,Tomcat4的连接池也是DBCP。 实际上Hibernate自己也实现了一个非常非常简单的数据库连接池,加上上面3个,你实际上可以在Hibernate上选择4种不同的数据库连接池,选择哪一个看个人的偏好,不过DBCP可能更通用一些。另外强调一点,如果在EJB中使用Hibernate,一定要用App Server的连接池,不要用以上4种连接池,否则容器管理事务不起作用。 connector.jar: JCA 规范,如果你在App Server上把Hibernate配置为Connector的话,就需要这个jar。不过实际上一般App Server肯定会带上这个包,所以实际上是多余的包。 jaas.jar: JAAS是用来进行权限验证的,已经包含在JDK1.4里面了。所以实际上是多余的包。 jcs.jar: 如果你准备在Hibernate中使用JCS的话,那么必须包括它,否则就不用。 jdbc2_0-stdext.jar: JDBC2.0的扩展包,一般来说数据库连接池会用上它。不过App Server都会带上,所以也是多余的。 jta.jar: JTA规范,当Hibernate使用JTA的时候需要,不过App Server都会带上,所以也是多余的。 junit.jar: Junit包,当你运行Hibernate自带的测试代码的时候需要,否则就不用。 xalan.jar, xerces.jar, xml-apis.jar: Xerces是XML解析器,Xalan是格式化器,xml-apis实际上是JAXP。一般App Server都会带上,JDK1.4也包含了解析器,不过不是Xerces,是Crimson,效率比较差,不过Hibernate用XML只不过是读取配置文件,性能没什么紧要的,所以也是多余的。 给出Java类的完整路径public class JWhich {
/**
* Prints the absolute pathname of the class file * containing the specified class name, as prescribed * by the current classpath. * * @param className Name of the class. */ public static void which(String className) { if (!className.startsWith("/")) {
className = "/" + className; } className = className.replace('.', '/'); className = className + ".class"; java.net.URL classUrl =
new JWhich().getClass().getResource(className); if (classUrl != null) {
System.out.println("\nClass '" + className + "' found in \n'" + classUrl.getFile() + "'"); } else { System.out.println("\nClass '" + className + "' not found in \n'" + System.getProperty("java.class.path") + "'"); } } public static void main(String args[]) { if (args.length > 0) { JWhich.which(args[0]); } else { System.err.println("Usage: java JWhich <classname>"); } } } 转:JSP乱码解决思路总结对于Java由于默认的编码方式是 UNICODE,所以用中文也易出问题,常见的解决是 9月10日 带提示的JTextFieldimport java.awt.BorderLayout;
import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Font; import java.awt.Point; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.Icon;
import javax.swing.ImageIcon; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JLayeredPane; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.border.EmptyBorder; import net.java.balloontip.BalloonBorder; /** * Custom JTextField. * * @version 0.1.1, 2007-9-9 * @author ruislan <a href="mailto:z17520@126.com"/> */ public class MyJTextField extends JTextField { private static final Color TIP_COLOR = new Color(255, 255, 225); private int limit = Integer.MAX_VALUE; private boolean numberOnly; private CoolToolTip numberTip; private CoolToolTip limitTip; private ImageIcon tipIcon; public MyJTextField() { initComponents(); initEventListeners(); } private void initComponents() {
tipIcon = new ImageIcon(MyJTextField.class.getResource("tip.gif")); numberTip = new CoolToolTip(this, TIP_COLOR, getColumns(), 10); numberTip.setText("只能输入数字!"); numberTip.setIcon(tipIcon); numberTip.setIconTextGap(10); limitTip = new CoolToolTip(this, TIP_COLOR, getColumns(), 10); limitTip.setIcon(tipIcon); limitTip.setIconTextGap(10); } private void initEventListeners() { addKeyListener(new KeyAdapter() { @Override public void keyTyped(KeyEvent e) { if (getText().length() + 1 > limit) { deleteInputChar(e); limitTip.setVisible(true); return; } else { limitTip.setVisible(false); } if (numberOnly) { char input = e.getKeyChar(); if (!Character.isDigit(input)) { numberTip.setVisible(true); deleteInputChar(e); } else { numberTip.setVisible(false); } } } private void deleteInputChar(KeyEvent source) { source.setKeyChar((char) KeyEvent.VK_CLEAR); } }); } public void setMaxTextLength(int limit) { if (limit < 0) { return; } this.limit = limit; limitTip.setText(String.format("超过最大长度 \"%d\"", limit)); } public int getMaxTextLength() { return limit; } public void setNumberOnly(boolean numberOnly) {
this.numberOnly = numberOnly; } public boolean isNumberOnly() {
return this.numberOnly; } private class CoolToolTip extends JPanel {
private JLabel label = new JLabel(); private boolean haveShowPlace; private Component attachedComponent;
public CoolToolTip(Component attachedComponent, Color fillColor,
int borderWidth, int offset) { this.attachedComponent = attachedComponent; label.setBorder(new EmptyBorder(borderWidth, borderWidth,
borderWidth, borderWidth)); label.setBackground(fillColor); label.setOpaque(true); label.setFont(new Font("system", 0, 12)); setOpaque(false);
this.setBorder(new BalloonBorder(fillColor, offset)); this.setLayout(new BorderLayout()); add(label); setVisible(false);
// if the attached component is moved while the balloon tip is
// visible, we need to move as well attachedComponent.addComponentListener(new ComponentAdapter() { public void componentMoved(ComponentEvent e) { if (isShowing()) { determineAndSetLocation(); } } }); }
private void determineAndSetLocation() {
Point location = attachedComponent.getLocation(); setBounds(location.x, location.y - getPreferredSize().height, getPreferredSize().width, getPreferredSize().height); } public void setText(String text) {
label.setText(text); } public void setIcon(Icon icon) {
label.setIcon(icon); } public void setIconTextGap(int iconTextGap) {
label.setIconTextGap(iconTextGap); } public void setVisible(boolean show) {
if (show) { determineAndSetLocation(); findShowPlace(); } super.setVisible(show); } private void findShowPlace() { if (haveShowPlace) { return; } // we use the popup layer of the top level container (frame or // dialog) to show the balloon tip // first we need to determine the top level container Container parent = attachedComponent.getParent(); JLayeredPane layeredPane; while (true) { if (parent instanceof JFrame) { layeredPane = ((JFrame) parent).getLayeredPane(); break; } else if (parent instanceof JDialog) { layeredPane = ((JDialog) parent).getLayeredPane(); break; } parent = parent.getParent(); } layeredPane.add(this, JLayeredPane.POPUP_LAYER); haveShowPlace = true; } } } 9月8日 如何让Swing控件如JLabel,JButton等显示动态Gif图片public class DynGifLabel extends JLabel implements Runnable {
private static final long serialVersionUID = 45345345355L; // 用以存储Gif动态图片 public Image image; // 用以刷新paint函数 Thread refreshThread; /** * * @param image: * Sample:new ImageIcon(DynGifLabel.class * .getResource("/picture.gif")).getImage() */ public DynGifLabel(Image image) { this.image = image; refreshThread = new Thread(this); refreshThread.start(); } /**
* 重载paint函数
*/ public void paint(Graphics g) { super.paint(g); Graphics2D graph = (Graphics2D) g; if (image != null) { // 全屏描绘图片 graph.drawImage(image, 0, 0, getWidth(), getHeight(), 0, 0, image .getWidth(null), image.getHeight(null), null); } } /** * 隔100毫秒刷新一次 */ public void run() { while (true) { this.repaint();// 这里调用了Paint try { Thread.sleep(100);// 休眠100毫秒 } catch (Exception e) { e.printStackTrace(); } } } } 9月6日 Java冒泡排序算法 public static void sort(int[] values){ int temp; for(int i=0 ; i < values.length ; ++i){ for(int j=0; j <values.length - i - 1; ++j){ if(values[j] > values[j + 1]){ temp = values[j]; values[j] = values[j + 1]; values[j + 1] = temp; } } } Java单链表逆序算法 1 package ch01; 2 3 public class Node 4{ 5 6 int data; 7 8 Node next = null; 9 10 11 12 public Node(int data){ 13 this.data = data; 14 } 15 16 17 public static Node reverse(Node head){ 18 19 Node p = null; 20 Node q = head; 21 22 23 while(head.next != null){ 24 25 p = head.next; 26 head.next = p.next; 27 p.next = q; 28 q = p; 29 30 31 } 32 33 return q; 34 } 35 36 37 public static void main(String[] args){ 38 Node head = new Node(0); 39 Node tail = head; 40 41 42 for(int i = 1 ; i < 10; ++i){ 43 Node p = new Node(i); 44 tail.next = p; 45 tail = p; 46 47 } 48 49 head = reverse(head); 50 while(head.next != null){ 51 52 System.out.println(head.data); 53 head = head.next; 54 55 56 } 57 } 58 59 60} 3月14日 从硬盘安装系统1.Windows98(或Me)启动盘一张。内含
smartdrv.exe
(磁盘高速缓存)
format.com (硬盘分区格式化命令)。 2.准备好Windows XP Professional 简体中文免激活版安装文件。推荐将安装文件复制到硬盘如 F:\XPVLSP1 (这时XPVLSP1文件夹里应包含如下∶DOCS、DOTNETFX、I386、SUPPORT、VALUEADD五个子文件夹和十个文件,存放安装文件的文件夹的名称不能是中文,要用英文或数字,并且长度最好不超过8个英文字母或数字) ,安装文件复制到硬盘,安装速度会快一点,同时避免在安装过程中有提示xxx文件不能复制的问题,亦使到以后运行Windows XP Professional过程(或安装驱动程序)如有系统文件丢失时,系统能自动从该文件夹提取文件修复系统。推荐将 smartdrv.exe
和format.com
复制到F盘根目录F:\ 这样便于操作。 3.可能的情况下,在运行安装程序前用磁盘扫描程序扫描所有硬盘检查硬盘错误并进行修复,否则安装程序运行时如检查到有硬盘错误即会很麻烦。 以上所提到的文件均有超链接,点击文件时均可下载。 5.可能的情况下,用驱动程序备份工具(如:
驱动精灵 2004 V1.9 Beta.exe
)将原Windows XP下的所有驱动程序备份到硬盘上(如∶F:\Drive)。最好能记下主板、网卡、显卡等主要硬件的型号及生产厂家,预先下载驱动程序备用。
6.如果你想在安装过程中格式化C盘或D盘(建议安装过程中格式化C盘),请备份C盘或D盘有用的数据。 7. 系统要求-----微处理器(CPU)在233 兆赫 (MHz) Pentium 或更高的(或与之相当的处理器),内存建议使用大于 128 MB(RAM 最小为 64 MB;最大为 4 GB),大于1.5 GB 的可用硬盘空间。 二、启动DOS系统:
(如果你已经知道方法请转到下一步) 如果你不知道请参考--> 如何进入纯DOS系统。
三、加载磁盘缓存,格式化C盘 。(如果你已经知道方法请转到下一步) 进入dos。
输入“F:”按“Enter”键回车。这时转到了F盘,屏幕显示F:\>_ 输入“smartdrv”按“Enter”键回车。 再输入“smartdrv 200000”按“Enter”键回车。这样就给DOS加载了磁盘高速缓存。如果在DOS下安装Windows 2000或Windows xp不加载磁盘高速缓存,你的安装时间将延长好几倍。加载了磁盘高速缓存后如下图2所示。如果没有看到图2所示的画面表明加载磁盘高速缓存失败。(注∶如果想查看当前路径下的文件夹和文件,可输入“DIR”后回车,想返回根目录可输入“CD\”后回车。) 四、格式化C盘
加载磁盘缓存后,接着输入“FORMAT C:”后按“Enter”键回车,准备格式化C盘。格式化C盘将删除C盘的所有数据。出现如图3的画面。(注∶在xp系统中制作为MS-DOS启动盘不支持FORMAT.EXE命令,会提示FORMAT不是有效的DOS命令)
这里是问你是否要执行格式化命令?如果确定要格式化C盘,请输入“Y”后按“Enter”键回车。否则输入“N”后按“Enter”键回车退出格式代C盘。 输入“Y”后按“Enter”键回车将格式化C盘。 这里等待你为刚格式化的C盘起名,一般不用起名,直接按回车即可。
五、安装Windows XP Professional
如果你的安装文件放在F盘的XPVLKSP1目录下,格式化C盘后在屏幕出现提示“F:\>_”时输入“CD XPVLKSP1\I386”即转到安装目录下的i386文件夹。 出现“F:\XPVLKSP1\I386>_”后,输入“WINNT”后回车,将准备开始安装Windows xp。
确认是否从这里复制文件,直接按“Enter”回车,开始复制文件,复制文件期间约停顿几分钟,再开始第二次复制文件(如果你没有运行smartdrv加载磁盘缓存,第一次复制文件后会停顿4-5个小时后再开始第二次复制文件,切记!切记!)
这里提示你取出启动软盘,取出启动软盘后按“Enter”键回车将会重新启动进行下一步安装。重新启动。
在这里我们按“Enter”键回车。 |
|
|