分类存档: 计算机基础 - 第2页

一个不错的JDBC连接池教程(带具体例子)(转载)

1.前言

数据库应用,在许多软件系统中经常用到,是开发中大型系统不可缺少的辅助。但如果对数据库资源没有很好地管理(如:没有及时回收数据库的游标(ResultSet)、Statement、连接 (Connection)等资源),往往会直接导致系统的稳定。这类不稳定因素,不单单由数据库或者系统本身一方引起,只有系统正式使用后,随着流量、用户的增加,才会逐步显露。

在b基于Java开发的系统中,JDBC是程序员和数据库打交道的主要途径,提供了完备的数据库操作方法接口。但考虑到规范的适用性,JDBC只提供了最直接的数据库操作规范,对数据库资源管理,如:对物理连接的管理及缓冲,期望第三方应用服务器(Application Server)的提供。

本文,以JDBC规范为基础,介绍相关的数据库连接池机制,并就如果以简单的方式,实现有效地管理数据库资源介绍相关实现技术。

2.连接池技术背景

2.1JDBC

JDBC是一个规范,遵循JDBC接口规范,各个数据库厂家各自实现自己的驱动程序(Driver),如下图所示:

应用在获取数据库连接时,需要以URL的方式指定是那种类型的Driver,在获得特定的连接后,可按照固定的接口操作不同类型的数据库,如: 分别获取Statement、执行SQL获得ResultSet等,如下面的例子 :

import java.sql.*;
…

..DriverManager.registerDriver(
new oracle.jdbc.
driver.OracleDriver());
Connection dbConn = DriverManager.getConnection
(“jdbc:oracle:thin:@127.0.0.1:1521:
oracle”,“username”, “password” );
Statement st = dbConn.createStatement();
ResultSet rs = st.executeQuery(
“select * from demo_table” );
…
some data source operation in herers.close();
st.close();
dbConn.close();

在完成数据操作后,还一定要关闭所有涉及到的数据库资源。这虽然对应用程序的逻辑没有任何影响,但是关键的操作。上面是个简单的例子,如果搀和众多的if-else、exception,资源的管理也难免百密一疏。如同C中的内存泄漏问题,Java系统也同样会面临崩溃的恶运。所以数据库资源的管理依赖于应用系统本身,是不安全、不稳定的一种隐患。

2.2JDBC连接池

在标准JDBC对应用的接口中,并没有提供资源的管理方法。所以,缺省的资源管理由应用自己负责。虽然在JDBC规范中,多次提及资源的关闭/回收及其他的合理运用。但最稳妥的方式,还是为应用提供有效的管理手段。所以,JDBC为第三方应用服务器(Application Server)提供了一个由数据库厂家实现的管理标准接口:连接缓冲(connection pooling)。引入了连接池( Connection Pool )的概念 ,也就是以缓冲池的机制管理数据库的资源。

JDBC最常用的资源有三类:

-Connection: 数据库连接。

-Statement: 会话声明。

-ResultSet: 结果集游标。

分别存在以下的关系 :

这是一种 ‘爷-父-子’ 的关系,对Connection的管理,就是对数据库资源的管理。举个例子: 如果想确定某个数据库连接(Connection)是否超时,则需要确定其(所有的)子Statement是否超时,同样,需要确定所有相关的ResultSet是否超时;在关闭Connection前,需要关闭所有相关的Statement和ResultSet。

因此,连接池(Connection Pool)所起到的作用,不仅仅简单地管理Connection,还涉及到 Statement和ResultSet。

2.3连接池(ConnectionPool)与资源管理

ConnectionPool以缓冲池的机制,在一定数量上限范围内,控制管理Connection,Statement和ResultSet。任何数据库的资源是有限的,如果被耗尽,则无法获得更多的数据服务。

在大多数情况下,资源的耗尽不是由于应用的正常负载过高,而是程序原因。

在实际工作中,数据资源往往是瓶颈资源,不同的应用都会访问同一数据源。其中某个应用耗尽了数据库资源后,意味其他的应用也无法正常运行。因此,ConnectionPool的第一个任务是限制:每个应用或系统可以拥有的最大资源。也就是确定连接池的大小(PoolSize)。

ConnectionPool的第二个任务:在连接池的大小(PoolSize)范围内,最大限度地使用资源,缩短数据库访问的使用周期。许多数据库中,连接(Connection)并不是资源的最小单元,控制Statement资源比Connection更重要。以Oracle为例:

每申请一个连接(Connection)会在物理网络(如 TCP/IP网络)上建立一个用于通讯的连接,在此连接上还可以申请一定数量的Statement。同一连接可提供的活跃Statement数量可以达到几百。 在节约网络资源的同时,缩短了每次会话周期(物理连接的建立是个费时的操作)。但在一般的应用中,多数按照2.1范例操作,这样有10个程序调用,则会产生10次物理连接,每个Statement单独占用一个物理连接,这是极大的资源浪费。 ConnectionPool可以解决这个问题,让几十、几百个Statement只占用同一个物理连接, 发挥数据库原有的优点。

通过ConnectionPool对资源的有效管理,应用可以获得的Statement总数到达 :

(并发物理连接数) x (每个连接可提供的Statement数量)

例如某种数据库可同时建立的物理连接数为 200个,每个连接可同时提供250个Statement,那么ConnectionPool最终为应用提供的并发Statement总数为: 200 x 250 = 50,000个。这是个并发数字,很少有系统会突破这个量级。所以在本节的开始,指出资源的耗尽与应用程序直接管理有关。

对资源的优化管理,很大程度上依靠数据库自身的JDBC Driver是否具备。有些数据库的JDBC Driver并不支持Connection与Statement之间的逻辑连接功能,如SQLServer,我们只能等待她自身的更新版本了。

对资源的申请、释放、回收、共享和同步,这些管理是复杂精密的。所以,ConnectionPool另一个功能就是,封装这些操作,为应用提供简单的,甚至是不改变应用风格的调用接口。

3.简单JDBC连接池的实现

根据第二章中原理机制,Snap-ConnectionPool(一种简单快速的连接池工具)按照部分的JDBC规范,实现了连接池所具备的对数据库资源有效管理功能。

3.1体系描述

在JDBC规范中,应用通过驱动接口(Driver Interface)直接方法数据库的资源。为了有效、合理地管理资源,在应用与JDBC Driver之间,增加了连接池: Snap-ConnectionPool。并且通过面向对象的机制,使连接池的大部分操作是透明的。参见下图,Snap-ConnectionPool的体系:

图中所示,通过实现JDBC的部分资源对象接口( Connection, Statement, ResultSet ),在 Snap-ConnectionPool内部分别产生三种逻辑资源对象: PooledConnection, PooledStatement和 PooledResultSet。它们也是连接池主要的管理操作对象,并且继承了JDBC中相应的从属关系。这样的体系有以下几个特点:

-透明性。在不改变应用原有的使用JDBC驱动接口的前提下,提供资源管理的服务。应用系统,如同原有的 JDBC,使用连接池提供的逻辑对象资源。简化了应用程序的连接池改造。

-资源封装。复杂的资源管理被封装在 Snap-ConnectionPool内部,不需要应用系统过多的干涉。管理操作的可靠性、安全性由连接池保证。应用的干涉(如:主动关闭资源),只起到优化系统性能的作用,遗漏操作不会带来负面影响。

-资源合理应用。按照JDBC中资源的从属关系,Snap-ConnectionPool不仅对Connection进行缓冲处理,对Statement也有相应的机制处理。在2.3已描述,合理运用Connection和Statement之间的关系,可以更大限度地使用资源。所以,Snap-ConnectionPool封装了Connection资源,通过内部管理PooledConnection,为应用系统提供更多的Statement资源。

-资源连锁管理。Snap-ConnectionPool包含的三种逻辑对象,继承了JDBC中相应对象之间的从属关系。在内部管理中,也依照从属关系进行连锁管理。例如:判断一个Connection是否超时,需要根据所包含的Statement是否活跃;判断Statement也要根据ResultSet的活跃程度。

3.2连接池集中管理ConnectionManager

ConnectionPool是Snap-ConnectionPool的连接池对象。在Snap-ConnectionPool内部,可以指定多个不同的连接池(ConnectionPool)为应用服务。ConnectionManager管理所有的连接池,每个连接池以不同的名称区别。通过配置文件适应不同的数据库种类。如下图所示:

通过ConnectionManager,可以同时管理多个不同的连接池,提供通一的管理界面。在应用系统中通过ConnectionManager和相关的配置文件,可以将凌乱散落在各自应用程序中的数据库配置信息(包括:数据库名、用户、密码等信息),集中在一个文件中。便于系统的维护工作。

3.3连接池使用范例

对2.1的标准JDBC的使用范例,改为使用连接池,结果如下:

import java.sql.*;
import net.snapbug.util.dbtool.*;
…
..ConnectionPool dbConn = ConnectionManager
.getConnectionPool("testOracle" );
Statement st = dbConn.createStatement();
ResultSet rs = st.executeQuery(
“select * from demo_table” );
…
some data source operation
in herers.close();
st.close();

在例子中,Snap-ConnectionPool封装了应用对Connection的管理。只要改变JDBC获取Connection的方法,为获取连接池(ConnectionPool)(粗体部分),其他的数据操作都可以不做修改。按照这样的方式,Snap-ConnectionPool可帮助应用有效地管理数据库资源。如果应用忽视了最后资源的释放: rs.close() 和 st.close(),连接池会通过超时(time-out)机制,自动回收。

4.小结

无论是Snap-ConnectionPool还是其他的数据库连接池,都应当具备一下基本功能:

-对源数据库资源的保护

-充分利用发挥数据库的有效资源

-简化应用的数据库接口,封闭资源管理。

-对应用遗留资源的自动回收和整理,提高资源的再次利用率。

在这个前提下,应用程序才能投入更多的精力于各自的业务逻辑中。数据库资源也不再成为系统的瓶颈。

注: 在网站 www.snapbug.net可免费下载Snap-ConnectionPool及更详细的文档。

作者Blog:http://blog.csdn.net/JavaProgramers/

如何在JBuilder 2006中打Jar包,并生成Exe文件

我把文件放在我的网盘上,位于“java书籍”内

http://disk2.718728.cn/?zhufeng1987

java优秀学习站点

http://www.2ed.cn/ 第二课堂 jsp学习
http://www.javaresearch.org/
http://www.54bk.com 我是博客
http://www.java-cn.com java中文网
http://java.sun.com sun官方网站
http://www.comejava.com 动网先锋
http://www.sawin.cn 小龙亭
http://www.java.com.cn java讨论区
http://www.cn-java.com 中文java技术网
http://www.chinajavaworld.com java开发者
http://www-900.ibm.com.developerWorks/cn 技术专区
http://www.sourceforge.net java开源
http://www.jdon.com/ jdon论坛,是一个J2EE专业技术论坛
http://www.cnjsp.org/ jsp技术网站
http://www.javaresearch.org/ java研究组织
http://www.theserverside.com/ 一个著名的面向java server端应用的网站
http://www.huihoolcom 灰狐动力,很专业的J2EE网站,可参考
http://www.javaworld.com 很多新技术的讨论和新闻
httP://dev2dev.bea.com.cn/index.jsp BEA开发园地,在weblogic上做开发的必进
http://www.chinaunix.net ChinaUnix——我们在努力打造一个Unix时代!
http://www.onjava.com O’REILLY ON java.com
http://www.matrix.org.cn Matrix与Java共舞
http://www.javajia.com Java家
http://www.javalobby.org JavaLobby
http://www.java-source.net JavaSource
http://www.cnjsp.org 中国JSP技术网站
http://www.jspcn.net JSP中文
http://www.cnjavaclub.com 中国JAVA俱乐部
http://www.uml.org.cn UML软件工程组织
http://www.xuejava.com 学Java——学习Java的精髓
http://tech.ccidnet.com 赛迪网技术天地
http://dev2dev.bea.com.cn/index.jsp BEAdev2dev在线
http://www.kissjava.com 爪哇流氓
http://java.about.com 来自About.com的Java新闻和技术文章
http://www.chedong.com/ 车东
http://www.javayou.com/ Java自有人
http://www.jcp.org/en/home/index Java Community Process
http://bbs.chinajavaworld.com ChinaJavaWorld技术论坛
http://www.javaworld.com.tw/jute/index.html JavaWorld技术论坛
http://forum.javaeye.com Java视线论坛
http://www.jdon.com/jive/index.jsp J道论坛
http://gceclub.sun.com.cn/NASApp/sme/jive/index.jsp Sun技术社区论坛
http://www.cjsdn.com 中国Java开发网
http://spring.jactiongroup.net SpringFramework中文论坛
http://www.javafan.net/jive/index.jsp JavaFan论坛

JAVA如何调用DOS命令(转载CSDN.NET)

用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式:

Process process = Runtime.getRuntime().exec(“.\p.exe”);
process.waitfor( );

在上面的程序中,第一行的“.\p.exe”是要执行的程序名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。第二条语句的目的等待子进程完成再往下执行。
但在windows平台上,如果处理不当,有时并不能得到预期的结果。下面是笔者在实际编程中总结的几种需要注意的情况:
1、执行DOS的内部命令
如果要执行一条DOS内部命令,有两种方法。一种方法是把命令解释器包含在exec()的参数中。例如,执行dir命令,在NT上,可写成exec(“cmd.exe /c dir”),在windows 95/98下,可写成“command.exe /c dir”,其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。另一种方法是,把内部命令放在一个批命令my_dir.bat文件中,在Java程序中写成exec(“my_dir.bat”)。如果仅仅写成exec(“dir”),Java虚拟机则会报运行时错误。前一种方法要保证程序的可移植性,需要在程序中读取运行的操作系统平台,以调用不同的命令解释器。后一种方法则不需要做更多的处理。
2、打开一个不可执行的文件
打开一个不可执行的文件,但该文件存在关联的应用程序,则可以有两种方式。 以打开一个word文档a.doc文件为例,Java中可以有以下两种写法:
exec(“start .\a.doc”);
exec(” c:\Program Files\Microsoft Office\office\winword.exe .\a.doc”);
显然,前一种方法更为简捷方便。
3、执行一个有标准输出的DOS可执行程序
在windows 平台上,运行被调用程序的DOS窗口在程序执行完毕后往往并不会自动关闭,从而导致Java应用程序阻塞在waitfor( )。导致该现象的一个可能的原因是,该可执行程序的标准输出比较多,而运行窗口的标准输出缓冲区不够大。解决的办法是,利用Java提供的Process 类提供的方法让Java虚拟机截获被调用程序的DOS运行窗口的标准输出,在waitfor()命令之前读出窗口的标准输出缓冲区中的内容。一段典型的程序如下:

String ls_1;
Process process = Runtime.getRuntime().exec(“cmd /c dir \windows“);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream());
while ( (ls_1=bufferedReader.readLine()) != null)
System.out.println(ls_1);

process.waitfor( );

以上内容为转载~下面内容为原创!

今天在做客户端程序的自动更新,简单描述一下,就是从服务器上将更新包下载下来,然后在本地解压缩,最后删掉~功能很简单~

但是问题出在使用JAVA的ZIP模块做文件的解压缩不是想象的那么简单,资源需要释放,一个不小心就没有办法删除掉原有ZIP文件了~资源的占用确实是个大问题,但是好在,客户端程序更新完是要重启的,一切都烟消云散了~对于删除不掉ZIP文件的问题,我也流氓一下~用DEL硬删除~此处一定要注意!

Process process = Runtime.getRuntime().exec(“cmd /c del f:\aaa.doc”);
这样的调用是没有问题~

Process process = Runtime.getRuntime().exec(“del f:\aaa.doc”);
这样写是不可能对的~

关于XP安装SQL2000失败的解决办法!

为了研究数据库。装了个SQL2000.但是貌似XP上不能安装企业版,只好下载了一个4in1的版本,其实也就是个人版!但是安装到程序的最后总是提示“安装程序配置服务器失败,请参阅……日志”,本人在网上海找了半天才找到解决办法,下面我把自己从网上转载加整理后的资料添出来,希望能帮助遇到相同问题的朋友!

本人犯了以下第四个错误!

———————————————————————————————————————————–

sql server 2000安装出错,无法找到动态链接库sqlunirl.dll
安装文件肯定没有错,因为以前安装过,绝对可以用

机子之前有装了sql server 2000,而且可以正常使用,只是今天突然无法连接到本地数据库,打算重装,我删了program files里的ms sql的目录,然后重装sql,结果在最后一步的时候提示,无法完成配置。后来又删除了一些注册表中的sql server信息(有备份注表),再安装时,就出现这样的提示了,更糟的是,备份的注册表却无法还原

============================
现在问题解决了,总结了一些经验

当安装时出现MDAC组件安装失败时,试着修复或重装microsoft office

当你想重装sql server,而安装时又出现“您的机子上已经安装有一个实例”的提示时,可以删除program filesMicrosoft SQL Server文件夹,再安装

当出现某某动态链接文件找不到时,可以试着在sql server的安装文件中找到这个文件,复制到系统目录下的system和system32文件夹中(一般在出现这个错误消息时,都会提示哪几个文件夹下缺少这个文件)

当出现安装程序配置服务器失败时,可以试着用一下方法解决
此错误消息可以在系统目录下找到,例如我的系统是win2000,则该文件在C:WINNTsqlstp.log

失败一:
正在与服务?

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC 驱动程序 管理器] 驱动程序的 SQLAllocHandle on SQL_H

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC 驱动程序 管理器] 驱动程序的 SQLAllocHandle on SQL_H

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC 驱动程序 管理器] 驱动程序的 SQLAllocHandle on SQL_H

SQL Server 配置?

###############################################################################

13:40:06 Process Exit Code: (-1)
13:40:09 安装程序配置服务器失败。参考服务器错误日志和 C:WINNTsqlstp.log 了解更多信息。
13:40:09 Action CleanUpInstall:
当出现这个错误时,试一下重装系统文件
我的机子是win2000,在dos下重新运行win2000的安装,然后选择修复,而不是全新安装
修复系统文件之后,再装sql server,则不会出现此错误消息

失败二:
正在与服务?

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC 驱动程序 管理器] 未发现数据源

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC 驱动程序 管理器] 未发现数据源

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC 驱动程序 管理器] 未发现数据源

SQL Server 配置?

###############################################################################

13:50:07 Process Exit Code: (-1)
13:50:10 安装程序配置服务器失败。参考服务器错误日志和 C:WINNTsqlstp.log 了解更多信息。
13:50:10 Action CleanUpInstall:
当出现这个错误时,是因为在注册表删除了HKEY_LOCAL_MACHINESOFTWAREODBC中有关sql sever的

内容
这时可以选择修复注册表,或安装ODBC修复工具
ODBC修复工具: http://211.101.4.50/download/canyin/tools/MDAC_TYP.EXE

失败三:
在与服务?

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC SQL Server Driver][Named Pipes]连接?

[Microsoft][ODBC SQL Server Driver][Named Pipes]ConnectionRead (ReadFile()).

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC SQL Server Driver][Named Pipes]连接?

[Microsoft][ODBC SQL Server Driver][Named Pipes]ConnectionRead (GetOverLappedResult()).

driver={sql server};server=ZHL;UID=sa;PWD=;database=master

[Microsoft][ODBC SQL Server Driver][Named Pipes]连接?

[Microsoft][ODBC SQL Server Driver][Named Pipes]ConnectionRead (GetOverLappedResult()).

SQL Server 配置?

###############################################################################

17:17:41 Process Exit Code: (-1)
17:17:45 安装程序配置服务器失败。参考服务器错误日志和
当出现这个错误时,必须安装ODBC修复工具
ODBC修复工具: http://211.101.4.50/download/canyin/tools/MDAC_TYP.EXE

失败四:

在与服务?

… driver={sql server};server=Aurora;UID=sa;PWD=;database=master
[Microsoft][ODBC SQL Server Driver][Shared Memory]一般性网络错误。
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionRead (WrapperRead()). driver={sql server};server=Aurora;UID=sa;PWD=;database=master
[Microsoft][ODBC SQL Server Driver][Shared Memory]一般性网络错误。
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionRead (WrapperRead()). driver={sql server};server=Aurora;UID=sa;PWD=;database=master
[Microsoft][ODBC SQL Server Driver][Shared Memory]一般性网络错误。
[Microsoft][ODBC SQL Server Driver][Shared Memory]ConnectionRead (WrapperRead()).

SQL Server 配置?

####################################################################

17:17:41 Process Exit Code: (-1)

17:17:45 安装程序配置服务器失败。参考服务器错误日志和C:WINDOWSsqlstp.log 了解更多信息。

___________________________________________________________________

此问题属于sql server的bug, GetComputerName 用于获取本地计算机名。客户端网络库组件 (DBMSLPCn.dll) 将该名称转换为全部大写。服务器网络库组件 (SSMSLPCn.dll) 保留返回时的名称。

当 Windows 计算机名称包含大写字母和小写字母或者都是小写字母时安装会失败,提示一般性网络错误!

解决办法 就是将计算机名称改为全部大写!重启安装成功。(本人就是这里错了!)


木马病毒的通用解法

由于很多新手对安全问题了解不多,所以并不知道自己的计算机中了“木马”该怎么样清除。虽然现在市面上有很多新版杀毒软件都可以自动清除“木马”,但它们并不能防范新出现的“木马”程序,因此最关键的还是要知道“木马”的工作原理,这样就会很容易发现“木马”。相信你看了这篇文章之后,就会成为一名查杀“木马”的高手了。

“木马”程序会想尽一切办法隐藏自己,主要途径有:在任务栏中隐藏自己,这是最基本的只要把Form的Visible属性设为False、ShowInTaskBar设为False,程序运行时就不会出现在任务栏中了。在任务管理器中隐形:将程序设为“系统服务”可以很轻松地伪装自己。 当然它也会悄无声息地启动,你当然不会指望用户每次启动后点击“木马”图标来运行服务端,,“木马”会在每次用户启动时自动装载服务端,Windows系统启动时自动加载应用程序的方法,“木马”都会用上,如:启动组、win.ini、system.ini、注册表等等都是“木马”藏身的好地方。下面具体谈谈“木马”是怎样自动加载的。

  在win.ini文件中,在[WINDOWS]下面,“run=”和“load=”是可能加载“木马”程序的途径,必须仔细留心它们。一般情况下,它们的等号后面什么都没有,如果发现后面跟有路径与文件名不是你熟悉的启动文件,你的计算机就可能中上“木马”了。当然你也得看清楚,因为好多“木马”,如“AOL Trojan木马”,它把自身伪装成command.exe文件,如果不注意可能不会发现它不是真正的系统启动文件。

  在system.ini文件中,在[BOOT]下面有个“shell=文件名”。正确的文件名应该是“explorer.exe”,如果不是“explorer.exe”,而是“shell= explorer.exe 程序名”,那么后面跟着的那个程序就是“木马”程序,就是说你已经中“木马”了。

在注册表中的情况最复杂,通过regedit命令打开注册表编辑器,在点击至:“HKEY-LOCAL-MACHINE Software Microsoft Windows CurrentVersionRun”目录下,查看键值中有没有自己不熟悉的自动启动文件,扩展名为EXE,这里切记:有的“木马”程序生成的文件很像系统自身文件,想通过伪装蒙混过关,如“Acid Battery v1.0木马”,它将注册表“HKEY-LOCAL-MACHINE SOFTWARE Microsoft Windows CurrentVersion Run”下的 Explorer 键值改为Explorer=“C:WINDOWSexpiorer.exe”,“木马”程序与真正的Explorer之间只有“i”与“l”的差别。当然在注册表中还有很多地方都可以隐藏“木马”程序,如:“HKEY-CURRENT-USER Software Microsoft Windows CurrentVersion Run”、“HKEY-USERS **** Software Microsoft Windows CurrentVersion Run”的目录下都有可能,最好的办法就是在"HKEY-LOCAL-MACHINE Software Microsoft Windows CurrentVersion Run”下找到“木马”程序的文件名,再在整个注册表中搜索即可。

  知道了“木马”的工作原理,查杀“木马”就变得很容易,如果发现有“木马”存在,最安全也是最有效的方法就是马上将计算机与网络断开,防止黑客通过网络对你进行攻击。然后编辑win.ini文件,将[WINDOWS]下面,“run=“木马”程序”或“load=“木马”程序”更改为“run=”和“load=”;编辑system.ini文件,将[BOOT]下面的“shell=‘木马’文件”,更改为:“shell=explorer.exe”;在注册表中,用regedit对注册表进行编辑,先在“HKEY-LOCAL-MACHINE Software Microsoft Windows CurrentVersion Run”下找到“木马”程序的文件名,再在整个注册表中搜索并替换掉“木马”程序,有时候还需注意的是:有的“木马”程序并不是直接将“HKEY-LOCAL-MACHINE SoftwareMicrosoft Windows CurrentVersion Run”下的“木马”键值删除就行了,因为有的“木马”如:BladeRunner“木马”,如果你删除它,“木马”会立即自动加上,你需要的是记下“木马”的名字与目录,然后退回到MS-DOS下,找到此“木马”文件并删除掉。重新启动计算机,然后再到注册表中将所有“木马”文件的键值删除。至此,我们就大功告成了.

交换机共享上网--单网卡方式(原创)

目的:本人所在的寝室在开学初买了交换机和别的寝室公用一根线上网,后来学校禁止乱拉线,寝室寝室间不能拉线了,交换机失去的作用,一些寝室都去买了路由器来共享上网,但路由器价格相对较高,于是想到了使用代理的方式共享上网,但使用代理学要一台电脑做主机,且要双网卡,十分麻烦,于是本人在网上奔波数日,只能终于找到一个软件可以实现“交换机共享上网”的方法。

软件:HomeShare

方法:

两台Windows XP电脑,使用LAN宽带,LAN宽带通常使用自动获取IP的方式,所以连接类型选的是“动态获取(DHCP)”。

A电脑(假设为主机):1.设IP:10.0.0.2或192.168.0.2 两个都可以要改就改最后1位,范围在1-255内

2.设掩码:255.255.255.0 最后一位0代表,子机的台数为0-255台

3.设网关:10.0.0.1或192.168.0.1 这里与设IP的地址绝对不能重复,是虚拟主机的地址

4.设网络号:主机的不要改,默认为主

B电脑(假设子机):1.设IP:10.0.0.3或192.168.0.3 不能与虚拟主机和A电脑相同

2.设掩码:255.255.255.0

3.设网关:10.0.0.1或192.168.0.1 虚拟主机的地址

4.设网络号:主机的不要改,默认为主

注意以上两台电脑的设置仅内网IP不一样,其它设置都一样。Windows 2000的电脑同Windows XP的电脑安装方法相同。