用户
 找回密码
 立即注册
搜索

各类电脑故障处理方法

[复制链接]
发表于 2007-12-9 08:18:59

Linux教程(27)-vi命令(1)

在屏幕上移动
Vi提供了三个关于光标在全屏幕上移动并且文件本身不发生滚动的命令。它们分别是H、M和L命令。

H命令

该命令将光标移至屏幕首行的行首(即左上角),也就是当前屏幕的第一行,而不是整个文件的第一行。利用此命令可以快速将光标移至屏幕顶部。若在H命令之前加上数字n,则将光标移至第n行的行首。

[例9] 屏幕显示如下内容:

#include

main ( )

{ int k ;

for ( k=0 ; k<3 ; k++) add( ); }

add( )

{ static int x=0;

x++ ;

printf(“x=%d\n”, x);

}

~

~

~

~

~

“ example.c” [ New File]

在命令模式下输入4H命令后,光标移到以for开头的这一行的字母f上。

值得一提的是,使用命令dH将会删除从光标当前所在行至所显示屏幕首行的全部内容。

M命令

该命令将光标移至屏幕显示文件的中间行的行首。即如果当前屏幕已经充满,则移动到整个屏幕的中间行;如果并未充满,则移动到文本的那些行的中间行。利用此命令可以快速地将光标从屏幕的任意位置移至屏幕显示文件的中间行的行首。例如,在上面屏幕显示的情况下(不论光标在屏幕的何处),在命令模式下,输入命令M之后,光标都将移到add这一行的字母a上。

同样值得一提的是,使用命令dM将会删除从光标当前所在行至屏幕显示文件的中间行的全部内容。

L命令

当文件显示内容超过一屏时,该命令将光标移至屏幕上的最底行的行首;当文件显示内容不足一屏时,该命令将光标移至文件的最后一行的行首。可见,利用此命令可以快速准确地将光标移至屏幕底部或文件的最后一行。若在L命令之前加上数字n,则将光标移至从屏幕底部算起第n行的行首。例如,在上面屏幕显示的情况下(不论光标在屏幕的何处),在命令模式下,输入命令3L之后,光标都将移到x++这一行的字母x上。

同样值得一提的是,使用命令dL将会删除从光标当前行至屏幕底行的全部内容。

按字移动光标

首先介绍一下Vi中“字”的概念。在Vi中“字”有两种含义。一种是广义的字,它可以是两个空格之间的任何内容。

[例10] 在文件example.c 中的第4行:

{int k;

它只有2个字,一个是{int ,另一个是k;

Vi中另一种字是狭义上的字,在此种意义之下,英文单词、标点符号和非字母字符(如!、@、#、$、%、^、&、*、(、)、-、+、{、}、[、]、~、|、\、<、>、/等)均被当成是一个字。因此,上面那一行中就包括{、int、k、;这4个字。 Vi中使用大写命令一般就是指将字作为广义来对待,使用小写命令就是作为狭义对待。

搞清楚Vi中字的含义后,我们就可以介绍按字移动光标的命令了。

Vi 一共提供了三组关于按字移动光标的命令,分别是:

w和W命令

将光标右移至下一个字的字首;

[例11] 屏幕上显示如下:

printf(“Hello Mr.Huang!\n”);

现在使用w命令,把光标移到下一个字(狭义)的字首“(”上:

printf(“Hello Mr.Huang!\n”);

下面使用W命令,将把光标移到下一个字(广义)的字首“M”上:

printf(“Hello Mr.Huang!\n”);

e和E命令

如果光标起始位置处于字内(即非字尾处),则该命令将把光标移到本字字尾;如果光标起始位置处于字尾,则该命令将把光标移动到下一个字的字尾。

b和B

如果光标处于所在字内(即非字首),则该命令将把光标移至本字字首;如果光标处于所在字字首,则该命令将把光标移到上一个字的字首。

[例12] 屏幕显示如下:

printf(“Hello Mr.Huang!\n”);

现在使用b命令,由于光标处于该字中间,所以光标移动到本字字首“H”处:

printf(“Hello Mr.Huang!\n”);

如果使用B命令,则如下所示:

printf(“Hello Mr.Huang!\n”);

按句移动光标

在Vi中,一个句子被定义为是以逗号(,)、句号(.)、问号(?)和感叹号(!)结尾,且其后面跟着至少两个以上(含两个)空格或一个换行符的字符序列。

Vi提供了关于按句移动光标的两个命令,分别为:

1. ( 命令

将光标移至上一个句子的开头。

2. ) 命令

该命令将光标移至下一个句子的开头。

按段移动光标

在Vi中,一个段被定义为是以一个空白行开始和结束的片段。Vi提供了关于按段移动光标的两个命令,分别为:

1. { 命令

该命令将光标向前移至上一个段的开头;

2. } 命令

该命令将光标向后移至下一个段的开头。 屏幕滚动

屏幕命令是以屏幕为单位移动光标的,常用于文件的滚屏和分页。需要注意的是,屏幕命令不是光标移动命令,不能作为文本限定符用于删除命令中。

在命令模式下和文本输入模式下均可以使用屏幕滚动命令。


1. 滚屏命令

关于滚屏命令有两个:

· < Ctrl+u > 将屏幕向前(文件头方向)翻滚半屏;

· < Ctrl+d > 将屏幕向后(文件尾方向)翻滚半屏。

可以在这两个命令之前加上一个数字n,则屏幕向前或向后翻滚n行。并且这个值被系统记住,以后再用< Ctrl+u >和< Ctrl+d >命令滚屏时,还滚相应的行数。

2. 分页命令

关于分页命令也有两个:

· < Ctrl+f > 将屏幕向文件尾方向翻滚一整屏(即一页);

· < Ctrl+b > 将屏幕向文件首方向翻滚一整屏(即一页)。

同样也可以在这两个命令之前加上一个数字n,则屏幕向前或向后移动n页。

3. 状态命令< Ctrl+G >

命令显示在vi状态行上的vi状态信息,包括正在编辑的文件名、是否修改过、当前行号、文件的行数以及光标之前的行占整个文件的百分比。

4. 屏幕调零命令

Vi 提供了三个有关屏幕调零的命令。它们的格式分别为:

· [行号] z [行数] <回车>

· [行号] z [行数] .

· [行号] z [行数] _

若省略了行号和行数,这三个命令分别为将光标所在的当前行作为屏幕的首行、中间行和最末行重新显示;若给出行号,那么该行号所对应的行就作为当前行显示在屏幕的首行、中间行和最末行;若给出行数,则它规定了在屏幕上显示的行数。

[例13]

8z16<回车> :将文件中的第8行作为屏幕显示的首行,并一共显示16行。

15z . :将文件中的第15行作为屏幕显示的中间行,显示行数为整屏。

15z 5_ :将文件中的第15行作为屏幕显示的最末行,显示行数为5行。

文本插入操作

在命令模式下用户输入的任何字符都被Vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将Vi的工作模式从命令模式切换到文本输入模式。切换的方式是使用下面的命令。

插入(Insert)命令

Vi提供了两个插入命令:i和 I。


 


i命令

插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。此时Vi处于插入状态,屏幕最下行显示“--INSERT--”(插入)字样。

[例14] 有一正在编辑的文件,如下所示:

Welcome to vi world!Come on!

~

~

光标位于第一个“!”上,需在其前面插入:

This is an example!

使用i命令,并输入相应文本后,屏幕显示如下:

Welcome to vi world This is an example!!Come on!

~

~

由此例可以看到,光标本来是在第一个“!”处,但是由于是从光标所在位置前开始插入,所以这个“!”就被挤到了新插入的文本之后。

I命令

该命令是将光标移到当前行的行首,然后在其前插入文本。
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:19:40

使用 GDB 调试 Linux 软件

内容:

编译
运行 gdb
调试会话示例
使用断点
更多断点和观察点
Core 文件
堆栈跟踪
连接到其它进程
其它小技巧
结束语
参考资料
关于作者

GNU 调试器简介
作者avid Seager


Linux 的大部分特色源自于 shell 的 GNU 调试器,也称作 gdb。gdb 可以让您查看程序的内部结构、打印变量值、设置断点,以及单步调试源代码。它是功能极其强大的工具,适用于修复程序代码中的问题。在本文中,我将尝试说明 gdb 有多棒,多实用。

编译
开始调试之前,必须用程序中的调试信息编译要调试的程序。这样,gdb 才能够调试所使用的变量、代码行和。如果要进行编译,请在 gcc(或 g++)下使用额外的 '-g' 选项来编译程序:

gcc -g eg.c -o eg

运行 gdb
在 shell 中,可以使用 'gdb' 命令并指定程序名作为参数来运行 gdb,例如 'gdb eg';或者在 gdb 中,可以使用 file 命令来装入要调试的程序,例如 'file eg'。这两种方式都假设您是在包含程序的目录中执行命令。装入程序之后,可以用 gdb 命令 'run' 来启动程序。

调试会话示例
如果一切正常,程序将执行到结束,此时 gdb 将重新获得控制。但如果有错误将会怎么样?这种情况下,gdb 会获得控制并中断程序,从而可以让您检查所有事物的状态,如果运气好的话,可以找出原因。为了引发这种情况,我们将使用一个示例程序:

代码示例 eg1.c
#include

int wib(int no1, int no2)
{
int result, diff;
diff = no1 - no2;
result = no1 / diff;
return result;
}

int main(int argc, char *argv[])
{
int value, div, result, i, total;

value = 10;
div = 6;
total = 0;

for(i = 0; i < 10; i++)
{
result = wib(value, div);
total += result;
div++;
value--;
}

printf("%d wibed by %d equals %dn", value, div, total);
return 0;
}




这个程序将运行 10 次 for 循环,使用 'wib()' 计算出累积值,最后打印出结果。

在您喜欢的文本编辑器中输入这个程序(要保持相同的行距),保存为 'eg1.c',使用 'gcc -g eg1.c -o eg1' 进行编译,并用 'gdb eg1' 启动 gdb。使用 'run' 运行程序可能会产生以下消息:


Program received signal SIGFPE, Arithmetic exception.
0x80483ea in wib (no1=8, no2=8) at eg1.c:7
7 result = no1 / diff;
(gdb)



gdb 指出在程序第 7 行发生一个算术异常,通常它会打印这一行以及 wib() 的自变量值。要查看第 7 行前后的源代码,请使用 'list' 命令,它通常会打印 10 行。再次输入 'list'(或者按回车重复上一条命令)将列出程序的下 10 行。从 gdb 消息中可以看出,第 7 行中的除法运算出了错,程序在这一行中将变量 "no1" 除以 "diff"。

要查看变量的值,使用 gdb 'print' 命令并指定变量名。输入 'print no1' 和 'print diff',可以相应看到 "no1" 和 "diff" 的值,结果如下:


(gdb) print no1
$5 = 8
(gdb) print diff
$2 = 0



gdb 指出 "no1" 等于 8,"diff" 等于 0。根据这些值和第 7 行中的语句,我们可以推断出算术异常是由除数为 0 的除法运算造成的。清单显示了第 6 行计算的变量 "diff",我们可以打印 "diff" 表达式(使用 'print no1 - no2' 命令),来重新估计这个变量。gdb 告诉我们 wib 函数的这两个自变量都等于 8,于是我们要检查调用 wib() 函数的 main() ,以查看这是在什么时候发生的。在允许程序自然终止的同时,我们使用 'continue' 命令告诉 gdb 继续执行。


(gdb) continue
Continuing.

Program terminated with signal SIGFPE, Arithmetic exception.
The program no longer exists.



使用断点
为了查看在 main() 中发生了什么情况,可以在程序代码中的某一特定行或函数中设置断点,这样 gdb 会在遇到断点时中断执行。可以使用命令 'break main' 在进入 main() 函数时设置断点,或者可以指定其它任何感兴趣的函数名来设置断点。然而,我们只希望在调用 wib() 函数之前中断执行。输入 'list main' 将打印从 main() 函数开始的源码清单,再次按回车将显示第 21 行上的 wib() 调用。要在那一行上设置断点,只需输入 'break 21'。gdb 将发出以下响应:


(gdb) break 21
Breakpoint 1 at 0x8048428: file eg1.c, line 21.



以显示它已在我们请求的行上设置了 1 号断点。'run' 命令将从头重新运行程序,直到 gdb 中断为止。发生这种情况时,gdb 会生成一条消息,指出它在哪个断点上中断,以及程序运行到何处:


Breakpoint 1, main (argc=1, argv=0xbffff954) at eg1.c:21
21 result = wib(value, div);



发出 'print value' 和 'print div' 将会显示在第一次调用 wib() 时,变量分别等于 10 和 6,而 'print i' 将会显示 0。幸好,gdb 将显示所有局部变量的值,并使用 'info locals' 命令保存大量输入信息。

从以上的调查中可以看出,当 "value" 和 "div" 相等时就会出现问题,因此输入 'continue' 继续执行,直到下一次遇到 1 号断点。对于这次迭代,'info locals' 显示了 value=9 和 div=7。

与其再次继续,还不如使用 'next' 命令单步调试程序,以查看 "value" 和 "div" 是如何改变的。gdb 将响应:


(gdb) next
22 total += result;



再按两次回车将显示加法和减法表达式:


(gdb)
23 div++;
(gdb)
24 value--;



再按两次回车将显示第 21 行,wib() 调用。'info locals' 将显示目前 "div" 等于 "value",这就意味着将发生问题。如果有兴趣,可以使用 'step' 命令(与 'next' 形成对比,'next' 将跳过函数调用)来继续执行 wib() ,以再次查看除法错误,然后使用 'next' 来计算 "result"。

现在已完成了调试,可以使用 'quit' 命令退出 gdb。由于程序仍在运行,这个操作会终止它,gdb 将提示您确认。
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:20:05

关于窗口、进程和线程的初步探讨

A.无窗口的线程
#i nclude "stdafx.h"
INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,  LPSTR lpszCmdParam,INT nCmdShow)
{
MSG message;
while(GetMessage(&message,NULL,0,0)) //建立消息循环
{
  TranslateMessage(&message); //翻译键盘消息
  DispatchMessage(&message); //向消息处理模块发送消息
}
return 0;
}


B.默认回调的窗口程序

#i nclude "stdafx.h"
LRESULT CALLBACK WndProc(HWND hMainwnd, UINT message, WPARAM wParam, LPARAM lParam);


HINSTANCE myhInst;//自己定义实例句柄名称!!
char szAppName[]="WinAPIDemo";//应用程序名
char szAppTitle[]="利用应用程序的Windows应用程序";//程序标题
INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpszCmdParam,INT nCmdShow)
{
//主窗口句柄(句柄为窗口windows中的标识)
HWND hMainwnd;
                  WNDCLASS myWC;

//定义窗口类
{
  myWC.style =CS_HREDRAW|CS_VREDRAW;
  myWC.lpfnWndProc=DefWindowProc;//默认回调的窗口程序(窗口过程)
  myWC.cbClsExtra=0;
  myWC.cbWndExtra=0;
  myWC.hInstance=hInstance;
  myWC.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  myWC.hCursor=LoadCursor(NULL,IDC_ARROW);
  myWC.hbrBackground=HBRUSH(GetStockObject(WHITE_BRUSH));
  myWC.lpszMenuName=NULL;
  myWC.lpszClassName=szAppName;
}

RegisterClass(&myWC);

//创建应用程序窗口
hMainwnd=CreateWindow(szAppName,//窗口类名
  szAppTitle,//窗口标题
  WS_OVERLAPPEDWINDOW,//窗口风格
  200,//初始X坐标
  200,//初始Y坐标
  400,//初始宽度
  500,//初始高度
  NULL,//父窗口句柄
  NULL,//窗口菜单句柄
  hInstance,//程序当前句柄
  NULL);//创建参数
  
ShowWindow(hMainwnd,SW_SHOWMAXIMIZED); //显示窗口
UpdateWindow(hMainwnd); //刷新窗口用户区


//定义windows消息(下面部分可以省略,没有线程-没有消息)
MSG message;
while(GetMessage(&message,NULL,0,0)) //建立消息循环
{
  TranslateMessage(&message); //翻译键盘消息
  DispatchMessage(&message); //向消息处理模块发送消息
}
return 0;
}

C.用SPY++以及设置断点可以追踪到最简单的WIN32程序都具有进程和线程(没有窗口的程序)
(个人理解:进程是指整个程序的实体,线程是程序内一个一个的代码执行片段)

#i nclude "stdafx.h"
INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpszCmdParam,INT nCmdShow)
{
              WNDCLASS myWC;
{
  myWC.style =CS_HREDRAW|CS_VREDRAW;
  myWC.lpfnWndProc=NULL;
  myWC.cbClsExtra=0;
  myWC.cbWndExtra=0;
  myWC.hInstance=hInstance;
  myWC.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  myWC.hCursor=LoadCursor(NULL,IDC_ARROW);
  myWC.hbrBackground=HBRUSH(GetStockObject(WHITE_BRUSH));
  myWC.lpszMenuName=NULL;
  myWC.lpszClassName=“szAppName”;
}
                  RegisterClass(&myWC);//可以去掉此句
return 0;
}

//MessageBox(NULL,"HelloWorld!","caption",1);//也可以用本句进行调试!


D.完整一点的窗口及单线程(线程下含窗口)程序,利用了MFC的类库中的类WNDCLASS

#i nclude "stdafx.h"
LRESULT CALLBACK WndProc(HWND hMainwnd, //窗口句柄
UINT message, //消息标识
                   WPARAM wParam, //消息附加信息
LPARAM lParam); //消息附加信息

HINSTANCE myhInst;//实例句柄

INT PASCAL WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,      

LPSTR lpszCmdParam,INT nCmdShow)
{

char szAppName[]="WinAPI应用程序名";//应用程序名
char szAppTitle[]="利用应用程序的Windows应用程序";//程序标题

//主窗口句柄(句柄为窗口windows中的标识)
HWND hMainwnd;


WNDCLASS myWC;
//定义窗口类
{
  myWC.style =CS_HREDRAW|CS_VREDRAW;
  myWC.lpfnWndProc=WndProc;//没有执行,占据位置(空间)
  myWC.cbClsExtra=0;
  myWC.cbWndExtra=0;
  myWC.hInstance=hInstance;
  myWC.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  myWC.hCursor=LoadCursor(NULL,IDC_ARROW);
  myWC.hbrBackground=HBRUSH(GetStockObject(WHITE_BRUSH));
  myWC.lpszMenuName=NULL;
  myWC.lpszClassName=szAppName;
}

RegisterClass(&myWC);

//创建应用程序窗口
hMainwnd=CreateWindow(szAppName,//窗口类名
  szAppTitle,//窗口标题
  WS_OVERLAPPEDWINDOW,//窗口风格
  200,//初始X坐标
  200,//初始Y坐标
  400,//初始宽度
  500,//初始高度
  NULL,//父窗口句柄
  NULL,//窗口菜单句柄
  hInstance,//程序当前句柄
  NULL);//创建参数
  
ShowWindow(hMainwnd,SW_SHOWMAXIMIZED); //显示窗口
UpdateWindow(hMainwnd); //刷新窗口用户区


//定义windows消息
MSG message;
while(GetMessage(&message,NULL,0,0)) //建立消息循环
{
  TranslateMessage(&message); //翻译键盘消息
  DispatchMessage(&message); //向消息处理模块发送消息(系统指令)
}
       return message.wParam;//return 0;是一样的!
}

//只能被回调!!!
LRESULT CALLBACK WndProc(HWND hMainwnd, //窗口句柄
       UINT message, //消息标识
       WPARAM wParam, //消息附加信息
       LPARAM lParam) //消息附加信息
{
char MsgLBTN[]="你刚按下了鼠标左键!";
char MsgRBTN[]="你刚按下了鼠标右键!";

//消息处理分支
switch(message)
{

case WM_RBUTTONDOWN: //右鼠标键被按下
  {
   MessageBeep(MB_ICONINFORMATION);
   MessageBox(GetFocus(),MsgRBTN,"Message",MB_OK|MB_ICONINFORMATION);
   break;
  }

case WM_LBUTTONDOWN: //左鼠标键被按下
  {
   MessageBeep(MB_ICONINFORMATION);
   MessageBox(GetFocus(),MsgLBTN,"Message",MB_OK|MB_ICONINFORMATION);
   break;
  }

case WM_DESTROY: //关闭窗口,非常关键!没有则线程消息循环无法退出,造成资源泄露!!!
  {
   
  PostQuitMessage(0);//使GetMessage(&message,NULL,0,0)不成立,退出循环(线程)
  return 0;//可以去掉此句。
  }

default:
  return DefWindowProc(hMainwnd,message,wParam,lParam);

}
return 0;
}

//MessageBox(NULL,"HelloWorld!","caption",1);//也可以用本句进行调试!
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:20:33

网络上最经典的DOS命令!

tftp vax1 put users.txt users19.txt

Nbtstat

显示本地计算机和远程计算机的基于 TCP/IP (NetBT) 协议的 NetBIOS 统计资料、NetBIOS 名称表和 NetBIOS 名称缓存。Nbtstat 可以刷新 NetBIOS 名称缓存和注册的 Windows Internet 名称服务 (WINS) 名称。使用不带参数的 nbtstat 显示帮助。



语法

nbtstat [-a RemoteName] [-A IPAddress] [-c] [-n] [-r] [-R] [-RR] [-s] [-S] [Interval]



参数

-a remotename

显示远程计算机的 NetBIOS 名称表,其中,RemoteName 是远程计算机的 NetBIOS 计算机名称。NetBIOS 名称表是运行在该计算机上的应用程序使用的 NetBIOS 名称列表。

-A IPAddress

显示远程计算机的 NetBIOS 名称表,其名称由远程计算机的 IP 地址指定(以小数点分隔)。

-c

显示 NetBIOS 名称缓存内容、NetBIOS 名称表及其解析的各个地址。

-n

显示本地计算机的 NetBIOS 名称表。Registered 中的状态表明该名称是通过广播或 WINS 服务器注册的。

-r

显示 NetBIOS 名称解析统计资料。在配置为使用 WINS 的 Windows XP 计算机上,该参数将返回已通过广播和 WINS 解析和注册的名称号码。

-R

清除 NetBIOS 名称缓存的内容并从 Lmhosts 文件中重新加载带有 #PRE 标记的项目。

-RR

重新释放并刷新通过 WINS 注册的本地计算机的 NetBIOS 名称。

-s

显示 NetBIOS 客户和服务器会话,并试图将目标 IP 地址转化为名称。

-S

显示 NetBIOS 客户和服务器会话,只通过 IP 地址列出远程计算机。

Interval

重新显示选择的统计资料,可以中断每个显示之间的 Interval 中指定的秒数。按 CTRL+C 停止重新显示统计信息。如果省略该参数, netstat 将只显示一次当前的配置信息。

/?

在命令提示符显示帮助。
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:20:52

五项屏蔽 让Windows系统速度再快一点

想方设法让系统实现极速启动,一直是各位电脑爱好者不懈的追求。可是,当我们用尽各种优化系统的绝招后,系统启动画面中的进度条仍然需要来回转上十几回系统才能启动成功,这是怎么回事呢,难道是媒体上总结出来的各种系统优化绝招都是用来“忽悠”人的?事实上,许多藏在系统暗处的网络设置功能,是许多系统优化绝招无法触及的,很多情况下就是因为这些设置不当的网络功能拖慢了系统启动速度;为此,我们只要将这些不当的网络功能屏蔽掉,就一定能够为系统提速再加一鞭!

1、屏蔽网络共享功能

要是我们的计算机并没有处于单位局域网网络中,那么已经被启用的网络共享功能其实一点用处都没有,它的存在反而会拖累系统的启动速度;要想尽可能地提高系统启动速度的话,我们完全可以将本地系统已经启用的网络共享功能给屏蔽掉,下面就是具体的屏蔽操作步骤:

首先在Windows系统“开始”菜单中依次执行“设置”/“控制面板”/“网络连接”命令,打开本地计算机的网络连接列表窗口,找到其中的“本地连接”图标,并用鼠标右键单击该图标,从其后出现的快捷菜单中执行“属性”命令,打开本地连接属性设置窗口;

其次在该窗口的“常规”标签页面中,找到“此连接使用下列项目”列表框中的“Microsoft网络的文件和打印机共享”选项,并将该选项前面方框中的勾号取消掉,最后单击“确定”按钮关闭属性设置窗口,这么下来系统在下次启动时就不会花费时间去检查网络共享方面的内容了。

2、屏蔽完全控制功能

计算机系统每次启动时都会自动对本地硬盘中的相关共享文件夹进行搜索和扫描,而共享文件夹的访问属性设置不同的话,那么系统扫描该目标共享文件夹的时间也会不相同;比方说,要是某一共享文件夹被设置为“只读”权限时,系统扫描该共享文件夹的时间可能只需要1毫秒,而当将共享文件夹的访问权限设置为“完全控制”时,系统扫描该共享文件夹的时间可能就需要1.5毫秒,由此可见,当开通共享文件夹的“完全控制”功能时,系统的启动速度也会受到一定程度的影响。为此,当我们不希望自己的共享资源让别人随意编辑修改时,只需要简单地将共享文件夹的属性设置为“只读”就可以了,而不要想当然地将它设置成“完全共享”,毕竟在这种访问属性下,共享文件夹的安全不但得不到保证,而且还会影响系统的启动速度。要将目标共享文件夹的“完全控制”功能屏蔽掉的话,可以按照如下步骤进行操作:

首先打开系统的资源管理器窗口,并在该窗口中找到目标共享文件夹,然后用鼠标右键单击对应文件夹图标,从其后出现的快捷菜单中选择“共享和安全”命令选项,打开到目标共享文件夹的属性设置窗口。

其次单击该属性设置窗口中的“安全”标签,打开标签设置页面,在该页面的“组或用户名称”列表框中,选中自己经常登录系统的那个特定用户帐号,例如这里笔者选择的是“ower”帐号。

接下来在对应“ower的权限”列表框中,选中“完全控制”项目,并在对应该选项的“允许”方框中取消选中状态,这样我们就能将目标共享文件夹的“完全控制”功能给屏蔽掉了,之后根据实际访问需要,开通目标共享文件夹的“读取”权限或“写入”权限,最后单击“确定”按钮,相信这么一来系统的启动速度就能更进一步了。

3、屏蔽自动搜索功能

当启动安装有WindowsXP系统的计算机时,该计算机一般会自做主张地搜索局域网环境中的所有共享资源,很显然这种自做主张的“行为”也会影响计算机系统的快速启动。为了提高系统启动速度,我们可以按照如下方法将本地系统自动搜索共享资源的功能屏蔽掉:

首先打开本地系统的资源管理器窗口,单击该窗口菜单栏中的“工具”选项,从其后出现的下拉列表中单击“文件夹选项”,进入到系统的文件夹选项设置界面,单击其中的“查看”标签,打开选项设置窗口;

找到该窗口中的“自动搜索网络文件夹和打印机”选项,并将该选项前面方框中的勾号取消,再单击一下“确定”按钮,这样的话该计算机系统下次启动时就不会耗费时间去自动搜索局域网环境中的其他共享资源了,那么系统启动速度应该就会明显提升许多。

4、屏蔽自动分配功能

这里所提到的“自动分配功能”,其实指的是Windows系统在默认状态下为本地网卡设备自动分配IP地址的功能;一旦将本地网卡的IP地址设置成自动获取的话,那么计算机系统每次启动时,都会耗费一定的时间向局域网网络中的DHCP服务器申请可以使用的动态IP地址,要是访问不到DHCP服务器时,计算机系统还会尝试反复连接、访问DHCP服务器,直到访问超时为止,这么一来系统的启动速度将会受到非常严重的影响,甚至会出现系统假死状态。为了避免系统在启动过程中耗费时间去连接、访问DHCP服务器,我们只要事先为网卡设备设置好一个可以使用的静态IP地址就可以了,为网卡设备分配静态IP地址可以按照如下步骤进行操作:

首先依次单击“开始”/“设置”/“网络连接”/“本地连接”命令,直接进入到本地系统的“本地连接”属性设置界面,在该设置界面的“常规”标签页面中,选中“Internet协议(TCP/IP)”选项,并单击对应页面中的“属性”按钮,打开属性设置界面,将该设置界面中的“使用下面的IP地址”选项选中,同时为网卡设备指定一个与ADSL设备地址同处一个子网的IP地址;比方说,ADSL设备的IP地址一般为“192.168.1.1”,那么我们就可以将网卡IP地址设置为“192.168.1.11”,同时将子网掩码地址设置成“255.255.255.0”,网关地址设置为“192.168.1.1”。

接下来再将“使用下面的DNS服务器地址”选中,然后将本地ISP的真实DNS服务器IP地址填写在这里,比方说,ISP真实的DNS地址要是为“61.172.7.1”时,那我们就可以将该地址填写在这里,同时单击一下“确定”,以便将上面的IP地址参数保存起来,相信这么一来计算机系统日后就不需要在启动的时候花时间访问DHCP服务器了,那么系统启动速度肯定会更上一层楼的。

5、屏蔽网络映射功能

为了方便每次开机后就能快速访问到对方计算机中的共享文件夹,许多人往往会通过网络映射功能将对方的共享文件夹映射成本地计算机中的一个磁盘分区。这种方式虽然给共享访问带来了很大方便,但是它给系统的启动带来了不小的影响,毕竟系统在每次启动时都需要耗费时间去搜索、扫描、连接对方共享文件夹,实际上我们并不是每次开机时都需要访问对方共享文件夹,很明显随意开通共享文件夹的网络映射功能,会严重拖慢计算机系统的启动速度。

为了让系统启动速度不受影响,我们可以按照如下操作步骤将本地计算机中暂时不用的网络映射连接断开:

首先用鼠标双击系统桌面中的“我的电脑”图标,在其后弹出的窗口中单击菜单栏中的“工具”项目,从随后出现的下拉菜单中执行“断开网络驱动器”命令,之后选中其中一个暂时不用的网络驱动器分区盘符,再单击“确定”按钮就可以了。

当然,我们也可以直接使用“netuse”命令实现断开网络映射连接的目的,在使用这种方法屏蔽网络映射功能时,只需要先打开系统的运行对话框,并在其中执行“cmd”字符串命令,将系统界面切换到MS-DOS命令行状态;接着在DOS提示符下执行“netusex:/del”字符串命令,就能将网络磁盘分区为“X”的网络映射连接断开了,要想快速地将本地计算机中所有的网络映射连接断开的话,只需要执行“netuse*/del”字符串命令就可以了。
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:21:14

使系统最优 谈虚拟内存的合理设置

现在内存的价钱越来越便宜,很多新装机的朋友都已经在使用1GB的内存,而还有很多人也在给老电脑的内存升级。在升级了物理内存之后,如何有效设置虚拟内存才能获得最大限度的性能提升?网上流传的一些优化虚拟内存的方法真的有效吗?这些就是本文将要讨论的内容。

网上有很多广泛流传的关于虚拟内存优化的技巧,其实很多都是经不起推敲的。大家一起来看看吧。

观点一:对于拥有大容量物理内存的用户,可以完全禁用虚拟内存。要彻底了解这个问题,首先得明白什么是虚拟内存,以及虚拟内存有什么作用。在早期,因为内存价格非常昂贵,因此一般电脑上都不会配置太多,那么有时候如果操作系统和应用程序需要的内存数量超过了计算机中安装的物理内存数量,操作系统就会暂时将不需要访问的数据通过一种叫做“分页”的操作写入到硬盘上一个特殊的文件中,从而给需要立刻使用内存的程序和数据释放内存。这个位于硬盘上的特殊文件就是分页文件(也就是虚拟内存文件或叫做交换文件)。对于Windows 2000/XP/2003操作系统,分页文件名为pagefile.sys,默认情况下位于操作系统所在分区的根目录下。

既然知道了虚拟内存的由来和作用,那么持这种理论的人认为,硬盘和内存的速度具有天壤之别,如果禁用了虚拟内存,系统就不需要花时间将内存中的数据分页到硬盘上,从而提高了系统的运行效率。然而根据传统的设计,Windows 的许多核心功能都需要使用分页文件,而如果你禁用了所有分页文件,有些第三方的应用软件都可能会遇到内存不足的错误。其实在不需要的时候,Windows 并不会使用分页文件,因此这样调整系统你并不能获得任何性能上的提高。

观点二:对于虚拟内存,建议的设置是物理内存数量的1.5-2倍(分别为虚拟内存的最小值和最大值)。在讨论这个问题之前首先看两种情况:有两台电脑,除了内存,其他所有配置都相同。电脑A拥有128MB内存,电脑B拥有1GB内存,这两台电脑都运行Windows XP操作系统。按照这个观点的方法设置,电脑A的虚拟内存将会设置为192MB-256MB,而电脑B的虚拟内存将会设置为1.5GB-2GB。那么实际使用中呢,电脑A很可能会在运行大型软件或者游戏的时候产生虚拟内存不足的问题,而电脑B则会因为设置了如此大的分页文件而导致硬盘空间的浪费。如何根据实际情况设置虚拟内存,这个我们会在下文中介绍。

观点三:我们可以使用内存释放软件将运行中的程序占用的内存释放出来,提高系统运行效率。在否定这个观点之前我们首先要明白一件事,任何程序,只要被执行,就会占用一定的内存空间(具体占用多少内存则取决于程序自己的体积以及载入的数据文件的大小),那么这种所谓的内存释放软件是如何生效的?软件并没有退出,从哪里释放内存呢?原来这种“优化”软件会把程序占用的内存全部分页到虚拟内存中,从而造成了物理内存被释放的“假象”。

安装有这类软件的朋友可以试试看,打开Windows任务管理器,打开进程选项卡,接着在“查看”菜单下选择“选择列”命令,在随后出现的选择列对话框中选中“虚拟内存大小”这一选项。

记住几个占用内存比较多的进程各自使用的内存数和虚拟内存数,然后使用内存释放软件进行释放。本文将会使用微软发布的Windows Server 2003 Resource Kit工具empty.exe,该工具前段时间在网上非常风光,很多人都宣称具有释放空闲内存的作用(虽然还有其他释放内存的工具,不过原理上都是一样的)。运行“empty *.*”,可以看到,在短时间内,之前占用了大量物理内存的进程占用的物理内存数量都变得很少,而虚拟内存用量增加了,但是这种现象只持续了很短的时间。马上,这些进程占用的物理内存数量又开始回升了。

因此可以说,这类释放内存的软件根本没有太大作用。相反,有些软件可以在内存占用达到一定程序之后自动释放内存,这可能会对本身就已经很繁忙的计算机雪上加霜。想象这种情况,当你内存数量不多,而又运行了比较大型的程序后,必然导致物理内存数急剧减少,而在这种情况下所谓的“优化软件”开始自作聪明,把占用内存的数据往硬盘上进行分页,而程序的运行需要这些数据,这可能导致了在同一时间内,“优化软件”试图将数据分页到硬盘,而操作系统试图将数据从硬盘读取到内存,极大增加了硬盘的读写。

其实在早期,这类程序还是有一定作用的,那时候主流的Windows 9x操作系统本身在内存管理上存在问题,而且有些设计不严谨的程序也可能存在内存泄露的Bug,因此这类软件应运而生。但是现在基于NT技术的 Windows操作系统在内存管理上得到了极大提高,同时大部分软件的设计也越来越合理,因此我们完全可以和这类软件说再见了。
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:21:36

一分钟清除Windows系统的垃圾

想要轻松流畅上网你是否注意到你的电脑系统磁盘的可用空间正在一天天在减少呢?是不是像老去的猴王一样动作一天比一天迟缓呢?

没错!在Windows在安装和使用过程中都会产生相当多的垃圾文件,包括临时文件(如:*.tmp、*._mp)日志文件(*.log)、临时帮助文件(*.gid)、磁盘检查文件(*.chk)、临时备份文件(如:*.old、*.bak)以及其他临时文件。特别是如果一段时间不清理IE的临时文件夹“Temporary Internet Files”,其中的缓存文件有时会占用上百MB的磁盘空间。这些LJ文件不仅仅浪费了宝贵的磁盘空间,严重时还会使系统运行慢如蜗牛。这点相信你肯定忍受不了吧!

所以应及时清理系统的LJ文件的淤塞,保持系统的“苗条”身材,轻松流畅上网!朋友来吧,现在就让我们一起来快速清除系统垃圾吧!!

下面是步骤很简单就两步!

在桌面上点鼠标右键,选择新建一个“文本文档”,把下面的双虚线之间的字复制进去,点“另存为”,把文件名定为“清除系统LJ.bat”就完成,记住后缀名一定要是.bat,文件类型为所有类型,好ok了!你的垃圾清除器就这样制作成功了!

双击它就能很快地清理垃圾文件,大约一分钟不到。

==========================================================

@echo off

echo 正在清除系统垃圾文件,请稍等……

del /f /s /q %systemdrive%\*.tmp

del /f /s /q %systemdrive%\*._mp

del /f /s /q %systemdrive%\*.log

del /f /s /q %systemdrive%\*.gid

del /f /s /q %systemdrive%\*.chk

del /f /s /q %systemdrive%\*.old

del /f /s /q %systemdrive%\recycled\*.*

del /f /s /q %windir%\*.bak

del /f /s /q %windir%\prefetch\*.*

rd /s /q %windir%\temp & md %windir%\temp

del /f /q %userprofile%\cookies\*.*

del /f /q %userprofile%\recent\*.*

del /f /s /q “%userprofile%\Local Settings\Temporary Internet Files\*.*”

del /f /s /q “%userprofile%\Local Settings\Temp\*.*”

del /f /s /q “%userprofile%\recent\*.*”

echo 清除系统LJ完成!

echo. & pause

===========================================================

以后只要双击运行该文件,当屏幕提示“清除系统LJ完成!就还你一个“苗条”的系统了!!
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:21:55

Windows XP 引导启动过程概述

从按下计算机开关启动计算机,到用户登入到桌面完成启动,一共经过了以下几个阶段:

  1. 预引导(Pre-Boot)阶段;
  2. 引导阶段;
  3. 加载内核阶段;
  4. 初始化内核阶段;
  5. 登陆。

  每个启动阶段的详细介绍

  a) 预引导阶段

  在按下计算机电源使计算机启动,并且在Windows XP专业版操作系统启动之前这段时间,我们称之为预引导(Pre-Boot)阶段,在这个阶段里,计算机首先运行Power On Self Test(POST),POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BIOS(基础输入/输出系统)是即插即用的,那么计算机硬件设备将经过检验以及完成配置。计算机的基础输入/输出系统(BIOS)定位计算机的引导设备,然后MBR(Master Boot Record)被加载并运行。在预引导阶段,计算机要加载Windows XP的NTLDR文件。

  b) 引导阶段

  Windows XP Professional引导阶段包含4个小的阶段。

  首先,计算机要经过初始引导加载器阶段(Initial Boot Loader),在这个阶段里,NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中,系统为MS-DOS保留640kb内存,其余内存视为扩展内存,而在32位平面内存模式中,系统(Windows XP Professional)视所有内存为可用内存。接着,NTLDR启动内建的mini-file system drivers,通过这个步骤,使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区,以便发现以及加载Windows XP Professional,到这里,初始引导加载器阶段就结束了。

  接着系统来到了操作系统选择阶段,如果计算机安装了不止一个操作系统(也就是多系统),而且正确设置了boot.ini使系统提供操作系统选择的条件下,计算机显示器会显示一个操作系统选单,这是NTLDR读取boot.ini的结果。

  在boot.ini中,主要包含以下内容:

  [boot loader]

  timeout=30

  default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS

  [operating systems]

  multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect

  multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows Windows 2000 Professional"

  其中,multi(0)表示磁盘控制器,disk(0)rdisk(0)表示磁盘,partition(x)表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。如果在boot.ini中只有一个操作系统选项,或者把timeout值设为0,则系统不出现操作系统选择菜单,直接引导到那个唯一的系统或者默认的系统。在选择启动Windows XP Professional后,操作系统选择阶段结束,硬件检测阶段开始。

  在硬件检测阶段中,ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR,这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware中。

  硬件检测完成后,进入配置选择阶段。如果计算机含有多个硬件配置文件列表,可以通过按上下按钮来选择。如果只有一个硬件配置文件,计算机不显示此屏幕而直接使用默认的配置文件加载Windows XP专业版。

  引导阶段结束。在引导阶段,系统要用到的文件一共有:NTLDR,Boot.ini,ntdetect.com,ntokrnl.exe,Ntbootdd.sys,bootsect.dos(可选的)

  c) 加载内核阶段

  在加载内核阶段,ntldr加载称为Windows XP内核的ntokrnl.exe。系统加载了Windows XP内核但是没有将它初始化。接着ntldr加载硬件抽象层(HAL,hal.dll),然后,系统继续加载HKEY_LOCAL_MACHINE\system键,NTLDR读取select键来决定哪一个Control Set将被加载。控制集中包含设备的驱动程序以及需要加载的服务。NTLDR加载HKEY_LOCAL_MACHINE\system\service\...下start键值为0的最底层设备驱动。当作为Control Set的镜像的Current Control Set被加载时,ntldr传递控制给内核,初始化内核阶段就开始了。

  d) 初始化内核阶段

  在初始化内核阶段开始的时候,彩色的Windows XP的logo以及进度条显示在屏幕中央,在这个阶段,系统完成了启动的4项任务:

  1. 内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。

  2. 内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建了Clone Control Set。Clone Control Set配置是计算机数据的备份,不包括启动中的改变,也不会被修改。

  3. 系统完成初始化以及加载设备驱动程序,内核初始化那些在加载内核阶段被加载的底层驱动程序,然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\...下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化,如果有错误发生,内核使用ErrorControl键值来决定如何处理,值为3时,错误标志为危机/关键,系统初次遇到错误会以LastKnownGood Control Set重新启动,如果使用LastKnownGood Control Set启动仍然产生错误,系统报告启动失败,错误信息将被显示,系统停止启动;值为2时错误情况为严重,系统启动失败并且以LastKnownGood Control Set重新启动,如果系统启动已经在使用LastKnownGood值,它会忽略错误并且继续启动;当值是1的时候错误为普通,系统会产生一个错误信息,但是仍然会忽略这个错误并且继续启动;当值是0的时候忽略,系统不会显示任何错误信息而继续运行

  4. Session Manager启动了Windows XP高级子系统以及服务,Session Manager启动控制所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程,初始化内核完毕

  e) 登陆

  1. Winlogon.exe启动Local Security Authority,同时Windows XP Professional欢迎屏幕或者登陆对话框显示,这时候,系统还可能在后台继续初始化刚才没有完成的驱动程序。

  2.提示输入有效的用户名或密码。

  3.Service Controller最后执行以及扫描HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servives来检查是否还有服务需要加载,Service Controller查找start键值为2或更高的服务,服务按照start的值以及DependOnGroup和DepandOnService的值来加载。

  只有用户成功登陆到计算机后,Windows XP的启动才被认为是完成,在成功登陆后,系统拷贝Clone Control Set到LastKnownGood Control Set,完成这一步骤后,系统才意味着已经成功引导了。
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:22:50

打开隐藏文件的方法

1、断开网络连接

2、打开“任务管理器”,应该有个SVOHOST.EXE进程,把它结束掉。到C:\WINDOWS\system32里找到SVOHOST.EXE把它删除。(注:系统进程是 svchost.exe,第三个字母是c不是o)

3、执行“开始”-“运行”-输入“regedit”打开注册表

4、找到HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\explorer\Advanced\Folder\Hidden\SHOWALL中的CheckedValue,检查它的类型是否为REG_DWORD,如果不是则删掉CheckedValue,然后单击右键“新建”--〉“Dword值”,并命名为CheckedValue,然后修改它的键值为1。(不做这一步,第6、7步将无法查看到隐藏的系统文件)

5、打开各硬盘(“我的电脑”里右键“打开”或“资源管理器”右侧选择)。

6、“文件夹选项”-“查看”-选择“显示所有文件和文件夹”,并把“隐藏受保护的系统文件”复选框去除选择。

7、可以看到各个硬盘根目录下都有autorun.inf和sxs.exe文件,把它们都删掉。如果U盘上也有,也删掉。U盘上的可能删了又会出现,那就再检查一下“任务管理器”里有没有SOVHOST.EXE进程,把它结束掉(见2)。

8、这样就该差不多了。

9、如果安装的是瑞星,防火墙和杀毒软件应该可以打开了,其他杀毒软件应该也可以打开了。

10、如果瑞星计算机监控无法打开,或者打开后是收着的小红伞,并且所有的监控开启都失败,那么到“控制面板”-“管理工具”-“服务”,找到“Rising Process Communication Center”,应该是被禁用了,右键“属性”,启动类型一项改为“自动”,然后启用该服务。

11、至此,计算机恢复正常。
使用道具 举报 回复 支持 反对
发表于 2007-12-9 08:23:09

电脑无忧:死机的原因及其预防

如今的计算机已经接近全面普及的程度了,它给人们在工作和学习上提供了极大的方便,不过,计算机的“死机”对于普通的计算机用户来说,却成为了一个解不开、挣不脱的烦 恼。每当在计算机开机时、或启动操作系统时、或使用一些应用程序时、或正准备退出操作系统时,“死机”这一头“猛兽”随时都有可能迎面扑来。那么,怎么做才能避免计算机“死机”的烦恼呢?下面,笔者就根据导致“死机”的原因和预防的方法分为几点给大家介绍一下,希望下面的文章能给遇到此类问题的朋友一些帮助。

一、导致计算机“死机”的原因:

1.BIOS设置不当所造成的“死机”

每种硬件有自己默认或特定的工作环境,不能随便超越它的工作权限进行设置,否则就会因为硬件达不到这个要求而死机。例如:一款内存条只能支持到DDR 266,而在BIOS设置中却将其设为DDR 333的规格,这样做就会因为硬件达不到要求而死机,如果就算是能在短时间内正常的工作,电子元件也会随着使用时间的增加而逐渐老化,产生的质量问题也会导致计算机频繁的“死机”。

2.硬件或软件的冲突所造成的“死机”

计算机硬件冲突的“死机”主要是由中断设置的冲突而造成的,当发生硬件冲突的时候,虽然各个硬件勉强可以在系统中共存,但是不能同时的进行工作,比如能够上网的时候就不能听音乐等等。时间一长,中断的冲突就会频频的出现,最后将导致系统不堪重负,造成“死机”。 同样,软件也存在这种情况。由于不同的软件公司开发的软件越来越多,且这些软件在开发的过程中不可能做到彼此之间的完全熟悉和配合,因此,当一起运行这些软件的时候,很容易就发生大家都同时调用同一个DLL或同一段物理地址,从而发生冲突。此时的计算机系统由于不知道该优先处理哪个请求,造成了系统紊乱而致使计算机“死机”。

3.硬件的品质和故障所造成的“死机”

由于目前一些小品牌的计算机硬件产品往往没经过合格的检验程序就投放市场,其中,有很多质量不过关的硬件产品在品质完好计算机硬件的笼罩下是非常隐蔽的,普通人是不容易看出来的。就这些硬件产品来说,造成计算机经常“死机”的原因和它们有着非常直接的关系。另外,还有些硬件的故障是由于使用的年限太久而产生的。一般来说,内存条、CPU和硬盘等部件的寿命在超过三年后就很难保证了,从而也会产生很多隐蔽的“死机”问题。
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则