posts - 495,  comments - 11,  trackbacks - 0
 
八、高级篇
1、自动清除登录窗口中上次访问者的用户名
  通常情况下,用户在进入WINNT网络之前必须输入自己的用户名称以及口令。但是当你重新启动计算机,登录WINNT时,WINNT会在缺省情况下将上一次访问者的用户名自动显示在登录窗口的“用户名”文本框中。这样一来,有些非法用户可能利用现有的用户名来猜测其口令,一旦猜中的话,将会对整个计算机系统产生极大的安全隐患。为了保证系统不存在任何安全隐患,我们可以通过修改WINNT注册表的方法来也提供了启动时自动以某一个组的用户名称和口令进行访问WINNT,而不需要通过人工设置的方法来自动清除登录窗口中上次访问者的用户名信息。要实现自动清除功能,必须要进行如下配置:  A、在开始菜单栏中选择运行命令,在随后打开的运行对话框里输入REGEDIT命令,从而打开注册表编辑器。
  B、在打开的注册表编辑器中,依次展开以下的键值:  [HKEY_LOCAL_MACHINESOFTWAREMICROSOFTWINDOWS NTCURRENTVERSIONWINLOGON]
  C、在编辑器右边的列表框中,选择“DONTDISPLAYLASTUSERNAME”键值名称,如果没有上面的键值,可以利用“编辑”菜单中的“新建”键值命令添加一个,并选择所建数据类型为“REG_SZ”。
  D、选择指定的键值并双击,当出现“字符串编辑器”对话框时,在“字符串”文本框中输入“1”,其中“1”代表起用该功能,“0”代表禁止该功能。
  E、当用户重新启动计算机登录WINNT时,NT登录对话框中的“用户名”文本框中将是空白的。
2、为一些非SCSI接口光驱进行手工配置
  如果你想在WINNT上安装一个非SCSI接口的光驱,在WINNT版本较高的计算机中这中类型的光驱可能被自动识别并自动由计算机来完成其安装任务,不巧的是,你的计算机中安装了一个低版本的操作系统,例如安装了WINNT3.5,还没有时间来升级,但现在就着急用光驱呢,那该怎么办才好呢?不急,虽然Windows NT3.5不能自动识别非SCSI接口的光驱,但我们可以通过手工安装的方式来帮你轻松搞定这个小问题,具体工作步骤为:
  A、首先必须将你手中的对应的非SCSI接口的CD-ROM驱动程序从安装盘拷贝到WINNTSYSTEM32DRIV ERS目录下。
  B、在WINNT主群组中打开Setup图标。
  C、从OPTION菜单中选择“Add/Remove SCSI Adapters”。  D、用鼠标单击ADD按钮,为你的非SCSI接口CD-ROM选择对应的驱动程序。
  E、接着单击“INSTALL”按钮进行一些相关参数的配置。  F、退出Windows NT,重新启动计算机后光驱就会有用了。
3、增加NTFS性能
  如果用户想增加NTFS的性能,也可以通过修改注册表的方法来达到目的,具体实现步骤如下:
  A、打开注册表编辑器,并在编辑器中依次展开以下键值:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem
  B、在注册表编辑器中用鼠标单击“编辑”菜单,并在下拉菜单中选择“新建”菜单项,并在其弹出的子菜单中单击“DWORD值”。
  C、 在编辑器右边的列表中输入DWORD值的名称为“NtfsDisableLastAccessUpdate”。
  D、 接着用鼠标双击NtfsDisableLastAccessUpdate键值,编辑器就会弹出一个名为“字符串编辑器”的对话框,在该对话框的文本栏中输入数值“1”,其中0代表“取消”该项功能,1代表“启用”该项功能。
  E、设置好后,重新启动计算机就会使上述功能有效。
4、修复镜像组
  A、当镜像磁盘组中的驱动器发生故障时,系统自动向其余的驱动器发出发送数据请求,留下工作驱动器单独运行。此时,用户需要进入Disk Administrator,选择镜像组,再选择FaultTolerance/Break Mirror,将镜像组分为两个独立部分。
  B、工作的驱动器得到磁盘组所用的驱动器盘符,故障驱动器得到系统的下一个有效盘符。关闭NT Server,更换一个相同型号的硬盘驱动器。
  C、重新启动NT Server,运行Disk Administor,在新驱动器上选择分区和未用空间,选择Fault Tolerance/Establish Mirror即可对新驱动器作镜像。
5、自定义启动信息
  每次当WINNT启动时,它都会显示“请按CTRL+ALT+DELETE键来登录”的信息,而如果你希望用户在按完CTRL+ALT+DELETE键后,画面上自动显示用户自己希望所看到的信息,可以通过如下的相关设置来进行:
  A、在开始菜单栏中选择运行命令,在随后打开的运行对话框里输入REGEDIT命令,从而打开注册表编辑器。
  B、在打开的注册表编辑器中,依次展开以下的键值:  [HKEY_LOCAL_MACHINESOFTWAREMICROSOFTWINDOWS NTCURRENTVERSIONWINLOGON]
  C、在编辑器右边的列表框中,选择“LEGALNOTICECAPTION”键值名称,如果没有上面的键值,可以利用“编辑”菜单中的“新建”键值命令添加一个,并选择所建数据类型为“REG_SZ”。
  D、选择指定的键值并双击,当出现“字符串编辑器”对话框时,在“字符串”文本框中输入用户希望看到的信息窗口的标题内容,例如输入“WINNT网络”。
  E、接着在下面一个“字符串”文本框中输入信息窗口要显示的具体内容,例如输入“欢迎使用WINNT网络”。
  F、重新启动计算机后,再次登录进WINNT网络时,用户将会看到自己在上面设置的内容。

6、加速文件管理系统缓存
  大家知道计算机的速度有很大一部分与内存相关,如果内存容量大一点,计算机运行速度就会相应快一点。但是假设在内存一定的情况下,如何来提高计算机的运行速度呢?这就是我们下面通过注册表设置要实现的内容,具体步骤如下:
  A、在开始菜单栏中选择运行命令,在随后打开的运行对话框里输入REGEDIT命令,从而打开注册表编辑器。
  B、在打开的注册表编辑器中,依次展开以下的键值:  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory Management]。
  C、在编辑器右边的列表框中,选择“IoPageLockLimit”键值名称,如果没有上面的键值,可以利用“编辑”菜单中的“新建”键值命令添加一个,并选择所建数据类型为“DWORD”。
  D、选择指定的键值并双击,当出现“字符串编辑器”对话框时,在“字符串”文本框中输入用户需要的数值,系统默认缓存为512K,其他的参考值如下:
  RAM (MB) IoPageLockLimit  32  4096000  64  8192000  128  16384000  256+  65536000
  E、当用户重新启动计算机登录WINNT时,文件管理系统缓存将得到改善。
7、增加“关闭系统”按钮
  在NT计算机中,“关闭系统”按钮作为缺省值在登陆对话框中提供,这个任务按钮允许用户不必先登陆即可关闭系统。在NT SERVER中虽然没有这个功能,但可以通过修改注册表,使系统在登陆对话框中增加一个“关闭系统”的按钮,具体操作方法如下:  
A、打开注册表编辑器,并在编辑器中依次展开以下键值:  [HKEY_LOCAL_MACHINESOFTWAREMICROSOFTWINDOWS NTCURRENTVERSIONWINLOGON]。
  B、在编辑器右边的列表中用鼠标选择“SHUTDOWNWITHOUTLOGON”键值。
  C、接着用鼠标双击“SHUTDOWNWITHOUTLOGON”键值,编辑器就会弹出一个名为“字符串编辑器”的对话框,在该对话框的文本栏中输入数值“1”,其中0代表取消“关闭系统”按钮,1代表增加“关闭系统”按钮。
  D、退出后重新登录,在登录的界面中会增加一个“关闭系统”的按钮。
8、在NT下创建一个镜像集
  A、先用Disk Administerator创建镜像集的第一个分区表,选中该分区,在另一个磁盘驱动器内的磁盘空间的未用区域上进行Ctrl+鼠标单击操作,以把未用的磁盘区域和第一个分区均选上。
  B、从Disk Ad ministor的Fault Tolerlance(容错)菜单中选中Establish Mirror(建立镜像 ),Disk Administor将在被选自由盘区外创建一个磁盘分区。该分区与原有分区一样大,并包含原分区表上所有数据的备份。
  C、如果要取消镜像集(并非删除镜像集),即仅仅停止两个分区之间的数据复制,只需从Disk Administor中选择Fault Tolerance/Break Mirror。
9、登录局域网超时自动断开
  在登录Windows NT网络时,有可能用户不小心输错了登录参数或其他原因,导致了登录网络可能需要花费好长时间,这种情况是我们不想看到的。为了解决这种问题,我们可以通过注册表,来配置为闲置超时断开,以分钟为单位,具体步骤为:
  A、打开注册表编辑器,并在编辑器中依次展开以下键值:  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters]
  B、在编辑器右边的列表中用鼠标选择“AUTODISCONNECT”键值。
  C、接着用鼠标双击“AUTODISCONNECT”键值,编辑器就会弹出一个名为“字符串编辑器”的对话框,在该对话框的文本栏中输入数值“1”,其中0代表取消自动断开功能,1代表使用自动断开功能。
  D、退出后重新登录网络,上述功能就会生效。
10、改变远程访问服务的缺省端口传输速度
  Windows NT远程访问服务为每个RAS串行端口设置两种BPS速度:载波BPS与联接BPS速度,前者是指两个Modem通过电话线传输数据的速度,后者则指Modem与主机串口间的数据传输速度;当远程服务被启动时,计算机首先将其联接BPS速度值存放于System RootSystem32RASModem.INF文件中,以MAXC ARRIERBPS参数形式存放,然后将该值保存在RASSERIAL.INF文件中,以后每次进行传输时对串口作初始化,只需改变SERIAL.INI文件,即可改变串口传输速度,具体操作方法如下:
  A、将SERIAL.INI文件用编辑器打开。
  B、将INITIALBPS参数改为自己所希望的数值。
  C、将上述改动保存成一个文件,文件名仍为SERIAL.INI。
  D、打开“开始”菜单,并单击“运行”命令,在运行栏中输入RasAdmin命令。
  E、从服务器菜单中选择“Stop Remote Access Service”,再选择“Start Remote Access Service”,上述设置就会生效。 自动检测慢网登陆
  上面我们曾经说过,在登录NT网络时有可能很慢。同样地,如果Windows NT检测速度有困难,可以取消。具体实现步骤为:
  A、打开注册表编辑器,并在编辑器中依次展开以下键值:
 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon]
  B、在编辑器右边的列表中用鼠标选择“SlowLinkDetectEnabled”键值,如果没有该键值,必须新建一个DWORD值,名称设置为“SlowLinkDetectEnabled”。
  C、接着用鼠标双击“SlowLinkDetectEnabled”键值,编辑器就会弹出一个名为“字符串编辑器”的对话框,在该对话框的文本栏中输入数值“1”,其中0代表取消自动检测慢网登陆功能,1代表使用自动检测慢网登陆功能。
  D、退出后重新登录网络,上述设置就会起作用。

12、加快网络传输速度
  对于拨号用户来说,时间就是金钱,怎样才能节约时间,节省金钱呢?回答是提高网络传输速度。那又如何提高网络传输速度呢?大家知道,网络速度主要是受网络带宽限制的。增加带宽不是拨号用户所能做到的,他们唯一能做的就是把调制解调器的传输速度能够再提高一点。其实拨号用户还可以从计算机本身运行速度出发,尽量能挖掘计算机在网络加速方面最大的潜能。下面我们就通过一些设置来尽量加快网络传输速度,具体设置如下:
  A、在开始菜单栏中选择运行命令,在随后打开的运行对话框里输入REGEDIT命令,从而打开注册表编辑器。
  B、在打开的注册表编辑器中,依次展开以下的键值:  [HKEY_LOCAL_MACHINESystemCurrent Control SetServicesClassNetTrans00n ],其中n表示个别拔号网络连接项号码。
  C、在编辑器右边的列表框中,选择“MaxMTU”键值名称,如果没有上面的键值,可以利用“编辑”菜单中的“新建”键值命令添加一个,并选择所建数据类型为“DWORD”值。
  D、选择指定的键值并双击,当出现“字符串编辑器”对话框时,在“字符串”文本框中输入“576”,576代表最大传输单元值。
  E、接着在编辑器菜单栏中依次选择“编辑”→“新增”→“字符串值”,右边列表窗口就会多出一个新字符串,把它 命名为“MaxSSS”,再双按这个字符串值并把它设定为“536”。
  F、重新返回到编辑器的主操作界面,并依次展开如下键值: [HKEY_LOCAL_MACHINESystemCurrent Control SetServicesVxDMSTCP]。
  G、按照上述同样的操作方法,在编辑器右边的列表中依次添加字符串值“DefaultRcvWindow”、 “DefaultTTL”,并且把它们的数值分别设置为“2144”,“64”。
  H、当用户重新启动计算机登录WINNT时,上述所有的设置将会生效,这样计算机将会发挥它在网络加速方面最大的能量。

13、自动登陆网络
  通常情况下,用户在进入WINNT网络之前必须输入自己的用户名称以及口令。但是WINNT也提供了启动时自动以某一个组的用户名称和口令进行访问WINNT,而不需要通过人工设置的方法来输入登陆网络的参数。要实现自动登陆功能,必须要进行如下配置:
  A、打开注册表编辑器,并在编辑器中依次展开以下键值:
 [HKEY_LOCAL_MACHINESOFTWAREMICROSOFTWINDOWS NTCURRENT VERSIONWINLOGON]
  B、用鼠标单击右边的“AUTOADMINLOGON”键值名称,编辑器就会弹出一个名为“字符串编辑器”的对话框,在该对话框的文本栏中输入数值“1”。
  C、接着再用鼠标选择右边的“DEFAULTDOMAINNAME”键值名称,并在随后弹出的文本栏中输入所要登陆的域名名称或所要访问的计算机名称,例如输入“DOMAIN”域或“COM”计算机名称,然后单击“确定”按钮。
  D、按照同样的操作方法,选择右面的“DEFAULTUSERNAME”键值名称,并在“字符串”文本框中输入登陆网络的用户名称,例如输入管理员名称“ADMINISTRATOR”,并单击“确定”按钮。
  E、最后在注册表编辑器中,用鼠标单击“编辑”菜单并在下拉菜单中选择“新建键值”命令,然后在注册表右边的列表中,输入键值名称为“DEFAULTPASSWORD”,键值类型为“REG_SZ”,接着单击“确定”按钮。
  F、 用鼠标双击“DEFAULTPASSWORD”键值,在弹出的对话框中输入用户的密码,在这里我们输入系统管理员的口令作为登陆网络的密码,输入完成后单击“确定”按钮结束设置工作。
  G、 让计算机重新启动,缺省设置的用户将会自动登陆到指定的网络中去。
  如果用户日后不再需要自动登陆功能时,只需要把“AUTOADMINLOGON”的键值改为数值“0”即可。
14、禁止光盘的自动运行功能
  大家都很清楚每当光盘放到计算机中时,WINNT就会执行自动运行功能,光盘中的应用程序就会被自动运行,而我们在实际工作中有时不需要这项功能,那么如何屏蔽该功能呢。此时,我们同样可以修改注册表使此功能失效,具体做法如下:
  A、打开注册表编辑器,并在编辑器中依次展开以下键值:  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdrom] 。
  B、在编辑器右边的列表中用鼠标选择“AUTORUN”键值。
  C、接着用鼠标双击“AUTORUN”键值,编辑器就会弹出一个名为“字符串编辑器”的对话框,在该对话框的文本栏中输入数值“0”,其中0代表“禁用”光盘的自动运行功能,1代表“启用”光盘的自动运行功能。
  D、设置好后,重新启动计算机就会使上述功能有效。
15、取消系统检测串口,提高NT系统启动速度
  计算机每次启动都会对计算机的硬件要重新检测一遍,这需要花费一定的时间,也因此就减慢了计算机的启动速度。在这里笔者向大家介绍一下通过一些设置来取消系统检测串口,从而达到提高NT系统启动速度的目的,具体步骤如下:
  A、在开始菜单中,用查找的方法将Boot.INI文件找出来,然后将该文件的“只读”属性屏蔽掉,以便于我们在其中进行一些相关改动。
  B、接着用一个文本编辑器将Boot.INI文件打开,并修改[operating system]段的内容,将其中每一行后加上NoserialMice参数,如下所示:
  修改Boot.INI文件,
  ……
  [operating system]
  multi(0) disk(0) rdisk(0)
  partition(1)WINNT40="Windows NT
  Workstation Version4.0"/NoSerialMice  ……
  C、把上述修改的内容保存起来,文件名仍为Boot.INI。
  D、退出Windows NT,重新启动计算机后上述配置就会生效。

XP六条未公开的秘技
支持137 GB以上大硬盘

  想要使用137 GB以上大硬盘,必须使用48位LBA模式。首先你的主板BIOS必须支持48Bit LBA,其次WinXP 家用版和专业版必须安装SP1补丁。然后打开注册表,在如下路径“HKEY_LOCAL_MACHINE System CurrentControlSet Services Atapi Parameter”找到“EnableBigLba”选项,将其值由“0”改为“1”。如果该项不存在,可以自建“DWORD值”项目,同样设置.最后重新启动即可.

删除共享文档

  如果你不需要共享文件,可以这样移除它:进入HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows CurrentVersion Explorer My computer Namespace DelegateFolders,删除键值“”。

锁定桌面

  想要锁定桌面不被别人肆意修改,可以使用很多工具例如TweakUI,不过其实在注册表里进行小小的改动即可实现:进入HKEY_CURRENT_USER Software Microsoft Windows CurrentVersion Policies Explorer,建立DWORD值“NoDesktop”,将其值修改为“1”即可。

停用“上次访问时间标记(Last Access Time Stamp)”

  不想要这项功能,可以这样修改:进入HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Control File system,新建DWORD值“NtfsDisableLastAccessUpdate”,将其值修改为“1”即可。

设置“远程访问连接服务器(RAS)”

  需要的话可以这样修改:进入HKEY_LOCAL_MACHINE SOFTWARE Microsoft Windows NT CurrentVersion Winlogon,新建字符串值“KeepRasConnections”,将其值修改为“1”即可。

使用明文密码(Lain Text Password)

  访问UNIX或者LINUX服务器的时候,有时需要明文密码这在XP下很容易实现:找到“HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services lanmanworkstation parameter enableplaintextpassword”并将其值设置为“1”即可

控制面板
在Windows 2000的控制面板中有1 9个标准的应用小程序( a p p l e t ),每一个应用小程序都有
影响注册表条目的能力(具有添加硬件和安装软件功能的系统还包括另外一些应用小程序);
添加/删除硬件系统H K E Y _ L O C A L _ M A C H I N E H A R D WA R E
添加/删除程序系统H K E Y _ L O C A L _ M A C H I N E S O F T WA R E
管理工具系统H K E Y _ L O C A L _ M A C H I N E S O F T WA R E
日期/时间系统H K E Y _ L O C A L _ M A C H I N E S O F T WA R E
显示系统和用户H K E Y _ L O C A L _ M A C H I N E S Y S T E M和HKEY _
CURRENT _ USER
文件夹选项系统H K E Y _ L O C A L _ M A C H I N E S O F T WA R E
字体系统H K E Y _ L O C A L _ M A C H I N E S O F T WA R E
I n t e r n e t选项系统H K E Y _ L O C A L _ M A C H I N E S O F T WA R E
键盘系统和用户H K E Y _ L O C A L _ M A C H I N E S O F T WA R E和HKEY _
CURRENT _ USER
鼠标系统和用户H K E Y _ L O C A L _ M A C H I N E S O F T WA R E和HKEY _
C U R R E N T _ U S E R
网络和拨号连接系统H K E Y _ L O C A L _ M A C H I N E S O F T WA R E
电话和调制解调器选项系统H K E Y _ L O C A L _ M A C H I N E S Y S T E M
电源选项系统H K E Y _ L O C A L _ M A C H I N E H A R D WA R E
打印机系统H K E Y _ L O C A L _ M A C H I N E S Y S T E M
区域设置系统H K E Y _ L O C A L _ M A C H I N E S Y ST E M
任务计划系统H K E Y _ L O C A L _ M A C H I N E S O FT WA R E
声音和多媒体系统和用户H K E Y _ L O C A L _ M A C H I N E S O F T WA R E和HKEY _C U R R E N T _ U S E R
系统系统和用户H K E Y _ L O C A L _ M A C H I N E S OF T WA R E,HKEY _
L O C A L _ M A C H I N E S Y S T E M和HKEY_CURRENT_USER

以前,对于在Windows 2000或Windows XP上玩CS的人来说,是否开显卡的垂直同步是个两难的选择。不开垂直同步可以得到更高的FPS,但画面老是抖动,打时间长了眼睛很累;开了垂直同步,FPS就肯定超不过60。但我相信还有很多朋友不知道该怎么办,因此把解决办法公布,希望能对大家有所帮助。

在Window 2000或XP下,开垂直同步后FPS超不过60的原因是:Window 2000或XP在这种情况下会把游戏中的FPS设定为Windows的缺省值60,再好的配置也没用。

解决这个问题的办法很多,可以用第三方程序如PowerStrip等,但这种办法需要外挂程序,可能不安全。最近,我终于找到最根本的解决办法,就是在直接在注册表里把Windows的缺省值改成100(或更高,只要你的显示器支持就可以)。请千万注意:在修改注册表前,一定要确认你的显示器在不同的分辨率下所支持的最高刷新频率。比如,我的电脑在1024*768的分辨率下能达到100Hz的刷新频率,我玩CS也是在这个分辨率下玩,所以,我才敢把Windows的缺省值设为100。另外也请注意,这样修改完注册表后,你电脑桌面的分辨率和刷新频率也会被限定为这个数值。

修改注册表的方法如下:

Open regedit and find this key:
运行regedit命令进入注册表修改界面;
进入[HKEY_LOCAL_MACHINEsystemCurentControlSetControlClass],打开"Class"键,你将看到一大排的键,类似于

{4D36E96E-E325-11CE....}

如果你选中其中一个键你将可以看到一些键值,如"Default"、"Class"等,并指明设备的种类,如"Modem", "Keyboards"等,逐个打开这些{4D36E96E-E325-11CE....}键,直到看到"Class"的键值是"Monitor"。好的,我们已经找到控制显示器的注册信息了,接下来就是在这里面该缺省值了。

打开你刚找到的那个键,里面至少应该有1个键,叫做"0000",这里也可能有其他的键,如"0001"、"0002"等。如果里面只有个"0000",那就简单了,你直接在"0000"里按下面的方法修改就可以了。如果有多个键,你就必须逐个找出来哪个键是控制你的显示器的,方法是逐个键地按照下面说的“修改缺省值的操作”进行修改,修改后立即用下面说的“检查缺省值是否修改”的方法检查,如果相符就说明这个键是控制你显示器的,否则就不是。

“修改缺省值的操作”方法:

打开"0000"或你找到的其他的键,你可以看到里面有个"MODES"键,打开它你将看到一个键显示的是你的显示器的最大分辨率,如"1600,1200",现在假设你要在1024*768的分辨率下达到100Hz的刷新率,那么操作如下:在"MODES"下增加一个键叫做"1024,768",在"1024,768"键里增加一个键叫做"Mode1",键值设为"100-100,100-100"。修改缺省值得操作完毕。

“检查缺省值是否修改”的方法:

进入"Display properties -> Setting",看分辨率是否为你设定的值,如果不是那么说明你修改的那个类似于"0000"的键不是现在控制你显示器的键,,如果分辨率是你设定的值(如1024*768),那么再进"Advanced -> Monitor"里面看显示器的刷新频率是不是也是你设定的值,如果是,选中"Hide all unsupported modes"后你的刷新频率应该只有一个值可以选择,就是你设定的值(如100Hz)。这说明你修改得正确。

总结:

修改后,你进入游戏后无论游戏是用Direct3D还是OpenGL,你的FPS都可以超过60了。这个修改方法对Windows 2000和Windows XP都有效

posted @ 2007-09-13 18:53 jadmin 阅读(80) | 评论 (0)编辑 收藏
注册表对有的人还是比较陌生的,因为现在第三方软件太多了,如优化大师、魔法兔子等等,但个人觉得改善系统的第三方软件还不够完善,如果初级用户使用不当,会出现严重的后果,所以提供这篇文章,希望大家多多学习,本人能力有限,还希望大家多提宝贵意见:
一、注册表的由来
PC机及其操作系统的一个特点就是允许用户按照自己的要求对计算机系统的硬件和软件进行各种各样的配置。早期的图形操作系统,如Win3.x中,对软硬件工作环境的配置是通过对扩展名为.ini的文件进行修改来完成的,但INI文件管理起来很不方便,因为每种设备或应用程序都得有自己的INI文件,并且在网络上难以实现远程访问。

为了克服上述这些问题,在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。按照这一原则,Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。

与INI文件不同的是:
1.注册表采用了二进制形式登录数据;
2.注册表支持子键,各级子关键字都有自己的“键值”;
3.注册表中的键值项可以包含可执行代码,而不是简单的字串;
4.在同一台计算机上,注册表可以存储多个用户的特性。

注册表的特点有:
1.注册表允许对硬件、系统参数、应用程序和设备驱动程序进行跟踪配置,这使得修改某些设置后不用重新启动成为可能。
2.注册表中登录的硬件部分数据可以支持高版本Windows的即插即用特性。当Windows检测到机器上的新设备时,就把有关数据保存到注册表中,另外,还可以避免新设备与原有设备之间的资源冲突。
3.管理人员和用户通过注册表可以在网络上检查系统的配置和设置,使得远程管理得以实现。

二、使用注册表
1.大家可以在开始菜单中的运行里输入regedit
2.也可以在DOS下输入regedit


三、注册表根键说明
hkey_classes_root 包含注册的所有OLE信息和文档类型,是从 hkey_local_machinesoftwareclasses复制的。
hkey_current_user 包含登录的用户配置信息,是从hkey_users当前用户子树复制的。
hkey_local_machine 包含本机的配置信息。其中config子树是显示器打印机信息; enum子树是即插即用设备信息;system子树是设备驱动程序和服务参数的控制集合;software子树是应用程序专用设置。
hkey_users 所有登录用户信息。
hkey_current_config 包含常被用户改变的部分硬件软件配置,如字体设置、显示器类型、打印机设置等。是从hkey_local_machineconfig复制的。
hkey_dyn_data 包含现在计算机内存中保存的系统信息。

四、注册表详细内容
  Hkey_local_machinesoftwaremicrosoftwindowscurrentVersionexploreruser shell folders 保存个人文件夹、收藏夹的路径
  Hkey_local_machinesystemcurrentControlSetcontrolkeyboard Layouts保存键盘使用的语言以及各种中文输入法
Hkey_users.Defaultsoftwaremicrosoftinternet explorertypeURLs保存IE浏览器地址栏中输入的URL地址列表信息。清除文档菜单时将被清空。
  Hkey_users.Defaultso..mi..wi..currentVersionex..menuOrderstartMenu 保留程序菜单排序信息
Hkey_users.Defaultso..microsoftwindowscurrentVersionexplorerRunMRU 保存“开始 * 运行...“中运行的程序列表信息。清除文档菜单时将被清空。
  Hkey_users.Defaultso..microsoftwindowscurrentVersionexplorerecentDocs 保存最近使用的十五个文档的快捷方式(删除掉可解决文档名称重复的毛病),清除文档菜单时将被清空。
  Hkey_local_machinesoftwaremicrosoftwindowscurrentVersionuninstall 保存已安装的Windows应用程序卸载信息。
hkey_users.defaultsoftwaremicrosoftwindowscurrentVersionapplets 保存Windows应用程序的纪录数据。
Hkey_local_machinesystemCurrentControlSetservicesclass 保存控制面板-增添硬件设备-设备类型目录。
  Hkey_local_machinesystemCurrentControlSetcontrolupdate 立即刷新设置。值为00设置为自动刷新,01设置为手工刷新[在资源管理器中按F5刷新]。
HKEY_CURRENT_USERControl PanelDesktop 新建串值名MenuShowDelay=0 可使“开始”菜单中子菜单的弹出速度提高。新建串值名MinAnimate,值为1启动动画效果开关窗口,值为0取消动画效果。
  Hkey_local_machinesoftwaremicrosoftwindowscurrentVersionrun 保存由控制面板设定的计算机启动时运行程序的名称,其图标显示在任务条右边。[启动文件夹程序运行时图标也在任务条右边]
hkey_users.defaultsoftwaremicrosoftwindowscurrentVersionrun保存由用户设定的计算机启动时运行程序的名称,其图标显示在任务条右侧。
HKEY_CLASS_ROOT/Paint.Pricture/DefaultIcon 默认图片的图标。双击窗口右侧的字符串,在打开的对话框中删除原来的键值,输入%1。重新启动后,在“我的电脑”中打开Windows目录,选择“大图标“,然后你看到的Bmp文件的图标再也不是千篇一律的画板图标了,而是每个Bmp文件的略图。
  Hkey-local-machine software microsoft windows currentVersion Policies Ratings 保存IE4.0中文版“安全”*“分级审查”中设置的口令(数据加密)。
  Hkey-local-machine software microsoft windows currentVersion explorer desktopnameSpace保存桌面中特殊的图标,如回收站、收件箱、MS Network等。

五、如何备份注册表
利用注册表编辑器手工备份注册表

  注册表编辑器(Regedit)是操作系统自带的一款注册表工具,通过它就能对注册表进行各种修改。当然,"备份"与"恢复"注册表自然是它的本能了。

(1)通过注册表编辑器备份注册表
  由于修改注册表有时会危及系统的安全,因此不管是WINDOWS 98还是WINDOWS 2000甚至WINDOWS XP,都把注册表编辑器"藏"在了一个非常隐蔽的地方,要想"请"它出山,必须通过特殊的手段才行。点击"开始"菜单,选择菜单上的"运行"选项,在弹出的"运行"窗口中输入"Regedit"后,点击"确定"按钮,这样就启动了注册表编辑器。

  点击注册表编辑器的"注册表"菜单,再点击"导出注册表文件"选项,在弹出的对话框中输入文件名"regedit",将"保存类型"选为"注册表文件",再将"导出范围"设置为"全部",接下来选择文件存储位置,最后点击"保存"按钮,就可将系统的注册表保存到硬盘上。

  完成上述步骤后,找到刚才保存备份文件的那个文件夹,就会发现备份好的文件已经放在文件夹中了。

(2)在DOS下备份注册表

  当注册表损坏后,WINDOWS(包括"安全模式")无法进入,此时该怎么办呢?在纯DOS环境下进行注册表的备份、恢复是另外一种补救措施,下面来看看在DOS环境下,怎样来备份、恢复注册表。

  在纯DOS下通过注册表编辑器备份与恢复注册表前面已经讲解了利用注册表编辑器在WINDOWS环境下备份、恢复注册表,其实"Regedit.exe"这个注册表编辑器不仅能在WINDOWS环境中运行,也能在DOS下使用。

  虽然在DOS环境中的注册表编辑器的功能没有在WINDOWS环境中那么强大,但是也有它的独到之处。比如说通过注册表编辑器在WINDOWS中备份了注册表,可系统出了问题之后,无法进入WINDOWS,此时就可以在纯DOS下通过注册表编辑器来恢复注册表。

  应该说在DOS环境中备份注册表的情况还是不多见的,一般在WINDOWS中备份就行了,不过在一些特殊的情况下,这种方式就显得很实用了。

  进入DOS后,再进入C盘的WINDOWS目录,在该目录的提示符下输入"regedit"后按回车键,便能查看"regedit"的使用参数。

  通过"Regedit"备份注册表仍然需要用到"system.dat"和"user.dat"这两个文件,而该程序的具体命令格式是这样的:
  Regedit /L:system /R:user /E filename.reg Regpath
参数含义:
/L:system指定System.dat文件所在的路径。
/R:user指定User.dat文件所在的路径。
/E:此参数指定注册表编辑器要进行导出注册表操作,在此参数后面空一格,输入导出注册表的文件名。
Regpath:用来指定要导出哪个注册表的分支,如果不指定,则将导出全部注册表分支。在这些参数中,"/L:system"和"/R:user"参数是可选项,如果不使用这两个参数,注册表编辑器则认为是对WINDOWS目录下的"system.dat"和"user.dat"文件进行操作。如果是通过从软盘启动并进入DOS,那么就必须使用"/L"和"/R"参数来指定"system.dat"和"user.dat"文件的具体路径,否则注册表编辑器将无法找到它们。

  比如说,如果通过启动盘进入DOS,则备份注册表的命令是"Regedit /L:C:windows/R:C:windows/e regedit.reg",该命令的意思是把整个注册表备份到WINDOWS目录下,其文件名为"regedit.reg"。而如果输入的是"regedit /E D:regedit.reg"这条命令,则是说把整个注册表备份到D盘的根目录下(省略了"/L"和"/R"参数),其文件名为"Regedit.reg"。

(3)用注册表检查器备份注册表
  在DOS环境下的注册表检查器Scanreg.exe可以用来备份注册表。

命令格式为:
Scanreg /backup /restore /comment

参数解释:
/backup用来立即备份注册表
/restore按照备份的时间以及日期显示所有的备份文件
/comment在/restore中显示同备份文件有关的部分

注意:在显示备份的注册表文件时,压缩备份的文件以.CAB文件列出,CAB文件的后面单词是Started或者是NotStarted,Started表示这个文件能够成功启动Windows,是一个完好的备份文件,NotStarted表示文件没有被用来启动Windows,因此还不能够知道是否是一个完好备份。

比如:如果我们要查看所有的备份文件及同备份有关的部分,命令如下:Scanreg /restore /comment

六、使用技巧
上面介绍的都是概念上的东东,下面让我们实际操作吧
1.加快开机及关机速度

  在[开始]#>[运行]#>键入[Regedit]#>[HKEY_CURRENT_USER]#>[Control Panel]#>[Desktop],将字符串值[HungAppTimeout]的数值数据更改为[200],将字符串值[WaitToKillAppTimeout]的数值数据更改为1000.另外在[HKEY_LOCAL_MACHINE]#>[System]#>[CurrentControlSet]#>[Control],将字符串值[HungAppTimeout]的数值数据更改为[200],将字符串值[WaitToKillServiceTimeout]的数值数据更改1000

2.自动关闭停止响应程序

  在[开始]#>[运行]#>键入[Regedit]#>[HKEY_CURRENT_USER]#>[Control Panel]#>[Desktop],将字符串值[AutoEndTasks]的数值数据更改为1,重新启动即可

3.清除内存内被不使用的DLL文件

  在[开始]#>[运行]#>键入[Regedit]#>[HKKEY_LOCAL_MACHINE]#>[SOFTWARE]#>[Microsoft]#>[Windows]#>[CurrentVersion],在[Explorer]增加一个项[AlwaysUnloadDLL],默认值设为1。注:如由默认值设定为[0]则代表停用此功能

4.加快菜单显示速度

  在[开始]#>[运行]#>键入[Regedit]#>[HKEY_CURRENT_USER]#>[Control Panel]#>[Desktop],将字符串值[MenuShowDelay]的数值数据更改为[0],调整后如觉得菜单显示速度太快而不适应者可将[MenuShowDelay]的数值数据更改为[200],重新启动即可

5.禁止修改用户文件夹 

  找到HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer。如果要锁定“图片收藏”、“我的文档”、“收藏夹”、“我的音乐”这些用户文件夹的物理位置,分别把下面这些键设置成1:DisableMyPicturesDirChange,DisablePersonalDirChange,DisableFavoritesDirChange,DisableMyMusicDirChange

6.减小浏览局域网的延迟时间 

  和Windows 2000一样,XP在浏览局域网时也存在烦人的延迟问题,但介绍这个问题的资料却很难找到。如果你浏览一台Win 9x的机器,例如,在网上邻居的地址栏输入“computername”,XP的机器会在它正在连接的机器上检查“任务计划”。这种搜索过程可能造成多达30秒的延迟。如果你直接打开某个共享资源,例如在网上邻居的地址栏输入“computernameshare”,就不会有这个延迟过程。要想避免XP搜索“任务计划”的操作,提高浏览网络的速度,你可以删除HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerRemoteComputerNameSpace{D6277990-4C6A-11CF-8D87-00AA0060F5BF}子键。该键的类型是REG_SZ

7.屏蔽系统中的热键  

  点击“开始”→“运行”,输入Regedit,打开注册表编辑器。然后依次打开到HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer,新建一个双字节值,键名为“NoWindows Keys”,键值为“1”,这样就可以禁止用户利用系统热键来执行一些禁用的命令。如果要恢复,只要将键值设为0或是将此键删除即可

8.关闭不用的共享  

  安全问题一直为大家所关注,为了自己的系统安全能够有保证,某些不必要的共享还是应该关闭的。用记事本编辑如下内容的注册表文件,保存为任意名字的.Reg文件,使用时双击即可关闭那些不必要的共享:  

  Windows Registry Editor Version 5.00  

  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters]  

  "AutoShareServer"=dword:00000000  

  "AutoSharewks"=dword:00000000  

  [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa]  

  "restrictanonymous"=dword:00000001

9.让IE支持多线程下载
  一般情况下,大家都使用多线程下载软件如Flashget等下载文件,其实IE也可以支持多线程下载的,只是微软将这个功能给藏了起来。我们把它给挖出来就可以使用了。打开注册表编辑器,在注册表HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings下新建双字节值项“MaxConnectionsPerServer”,它决定了最大同步下载的连线数目,一般设定为5~8个连线数目比较好。另外,对于HTTP 1.0服务器,可以加入名为“MaxConnectionsPer1_0Server”的双字节值项,它也是用来设置最大同步下载的数目,也可以设定为5~8。 

10.让WINDOWS XP自动登陆 

  打开:HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon,在右边的窗口中的新建字符串"AutoAdminlogon",并把他们的键值为"1",并且把“DefaultUserName”的值设置为用户名,并且另外新建一个字符串值“DefaultPassword”,并设其值为用户的密码

七、我们来让我们的系统瘦瘦身
删除多余的虚拟光驱图标

  当我们在系统中安装了虚拟光驱后,“我的电脑”中就会多出一个光盘图标,即便日后你不再使用虚拟光驱,虚拟光驱图标还会继续保留,实在没有必要。我们动手来删除这个多余的虚拟光驱图标:单击“开始→运行”,输入“regedit”,按下“确定”键后打开注册表编辑器,依次展开HKEY_LOCAL_MACHINEEnumSCSI分支,在SCSI子键下通常有两个子键,它们分别对应着虚拟光驱和物理光驱,把SCSI下的子键全部删除,重新启动电脑后虚拟光驱图标就会被删除。

删除多余的系统级图标

  系统级图标是指在安装Windows时由系统自动创建的图标,如回收站、收件箱、网上邻居等,其中有些图标对用户来说并无用处,但这些图标无法直接删除。打开注册表编辑器,依次展开HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersion

  explorerDesktopNameSpace分支,然后删除不需要的子键。关闭注册表编辑器,重新启动电脑后,你会发现桌面上不需要的系统级图标已经消失了。

删除“运行”中多余的选项

  如果你多次使用“开始→运行”菜单,会发现它的“打开”窗口被一大堆不再需要的命令弄得凌乱不堪。打开注册表编辑器,依次展开HKEY_USERS.DEFAULTSoftwareMicrosoftWindowsCurrentVersion

  ExplorerRunMRU分支,将右侧窗口的相关键值删除即可。

删除“查找”中多余的选项

  依次展开HKEY_USER.DefaultSoftwareMicrosoftWindowsCurrentVersion

  ExplorerDoc-FindSpecMRU分支,将右侧窗口中的相关键值删除即可。

删除多余的键盘布局

  Windows试图成为世界的宠儿,因此其键盘布局适合于各国各类人的使用习惯。打开注册表编辑器,依次展开HKEY_LOCAL_MACHINESystemCurrentControlSetControl

  KeyboardLayouts分支,我们可以看到该分支下保存了西班牙语(传统)、丹麦语、德语(标准)等多种键盘布局,如果你用不到这些语言的键盘布局,完全可以直接删除这些子键。

删除多余的区域设置

  与上述键盘布局相类似的还有Windows的区域设置,在注册表编辑器中展开HKEY_LOCAL_MACHINESystemCurrentControlSetControl

  NlsLocale分支,简体中文使用者完全可以只保留“00000804”键值,其他可以毫不留情地删除。
posted @ 2007-09-13 18:52 jadmin 阅读(75) | 评论 (0)编辑 收藏
1)逻辑与/或:AND、OR
注意AND、OR必须大写,否则会被认为是普通的单词,而不是搜索指令。
与普通编程语言不一样的是,OR指令优先于AND指令。
简写:AND指令一般以空格代替,不明确写出。另外AND指令还可以用+代替。OR指令可用|代替。

样例:Inverted OR Signature files OR file OR index,它等同于 (Inverted OR Signature) (files OR file OR index)
2)逻辑非:-
样例:搜索引擎 历史 -文化 -中国历史 -世界历史
3)完整匹配:"…"
样例:"world war I" 表示搜索一次世界大战。
4)通配符:*?
与我们通常的习惯一致,“*”代表一连串字符,“?”代表单个字符。
样例:progr?m
提示:不要指望Google可用通过progr?m搜索到program,因为progr和m分别被当作一个独立的单词,并且这两个单词之间允许出现一个字符,如此而已。

5)site: 在某个网站或域名下搜索
样例:搜索引擎 技巧 site:edu.cn
这表示要在中文教育科研网站(edu.cn)上关于搜索引擎技巧的页面。
6)filetype: 搜索某种类型的文件
样例:filetype:pdf
这表示只搜索pdf文件。
7)in指令: 位置关键词查找。
intitle: 在网页标题中查找。这通常对讨论比较多的热门话题很有效。例如:intitle:"GeForce 7800"+测试
allintitle: 该指令属于排他指令,不能与其他指令混用。

例如:allintitile:"GeForce 7800" 测试 与 intitle:"GeForce 7800"+测试 的含义一致。但是,allintitile是排他的,不能加上其他非intitle方面的限制条件。
注意:在这里,你会发现用+代替AND指令是很有意思的。如果没有+指令,我们就需要写:intitle:"GeForce 7800" intitle:测试,因为Google不支持这样的写法:intitle:("GeForce 7800" 测试)
inurl: 在网页的url地址中查找。例如:inurl:dowload 表示查找url中包含download的网页。
allinurl: inurl的排他指令。
inanchor: 在网页的链接锚中查找。

需要注意区别于inurl:inurl是网页本身的url地址,而inanchor是在外部用于指向该url地址的文本(<a>…</a>之间文本)中找。
例如:inanchor:download,你可能会发现有FlashGet最佳的下载管理程式,而该页面中根本就没有download字样。
allinanchor: inanchor的排他指令。
intext: 在正文中检索。
allintext: intext的排他指令。
8)link: 搜索所有链接到某个URL地址的网页
最重要的用途:迅速判断一个网页的“热度”。
例如:link:www.newhua.com 表示所有指向“华军软件园”外部链接。
注意:和其他指令类似,link:和url之间不能有空格。之所以特别指出这一点,是因为网上有教程说link和allinurl等一样,是排他指令,中间可以有空格。我不太了解Google搜索指令的发展历史,只能猜测曾经如此。

9)related: 寻找某网页的“类似网页”。
例如:related:www.newhua.com 表示找和“华军软件园”类似的网页。
这条指令其实Google自己用得很广泛,只是可能没有引起你的注意罢了。在Google的每条搜索结果中,均有一个“类似网页”的链接。就是它了。

10)cache: 网页快照(略)。

11)daterange: 据说可以限定网页的更新时间。但是我没有试出来。

12)数值范围:..
例如:数码相机 600..900 万像素 3000..4000 元
注意:“900”与“万”之间必须有空格。
posted @ 2007-09-12 11:24 jadmin 阅读(57) | 评论 (0)编辑 收藏

<taglib>
     <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
     <taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>

1.c:catch
   <c:catch var="abccba">
   <%=1/0 %>
   </c:catch>
${abccba }
2.c:chose
<c:choose>
<c:when test="true">
   ${"正确" }
</c:when>
<c:otherwise>
   ${"错误" }
</c:otherwise>
</c:choose>
3.c:foreach
<c:forEach items="list" var="x" begin="0" end="10" step="2"   varState="sate">
<c:out value="${x}"/>
<c:out value="${x * x}"/>
</c:forEach>

其中:state.*** 代表下面的意思:

current getCurrent() 当前这次迭代的(集合中的)项  
index getIndex() 当前这次迭代从 0 开始的迭代索引  
count getCount() 当前这次迭代从 1 开始的迭代计数  
first isFirst() 用来表明当前这轮迭代是否为第一次迭代的标志  
last isLast() 用来表明当前这轮迭代是否为最后一次迭代的标志  
begin getBegin() begin 属性值  
end getEnd() end 属性值  
step getStep() step 属性值  

4.c:forTokens
同forEach 它主要是用来处理 字符串,之间用逗号或者什么其他符号分割的,

<c:forTokens items="a,a,a,a,a" delims = "," var="x" begin="0" end="10" step="2"   varState="sate">

5.c:if

<c:if test="true" var= "var" scope="session">

var 可以定义一个 test 的值,并且用 scope 设置这个变量的生命周期

6.c:out

<c:out   value="df" default= "" escapeXml="true">

default ,当 value 出现 null 值时候用的默认值

escapeXml,是否转换 HTML 格式的文字

posted @ 2007-09-12 11:14 jadmin 阅读(65) | 评论 (0)编辑 收藏
<taglib>
         <taglib-uri>http://java.sun.com/jstl/fn</taglib-uri>
         <taglib-location>/WEB-INF/fn.tld</taglib-location>
</taglib>

长度函数: fn:length

字符串处理函数: fn:contains fn:containsIgnoreCase fn:endsWith fn:escapeXml fn:indexOf fn:join fn:replace fn:split fn:startsWith fn:substring fn:substringAfter fn:substringBefore fn:toLowerCase fn:toUpperCase fn:trim

JSP 页面上:

<%@ taglib uri="/WEB-INF/fn.tld" prefix="fn" %>

${fn:toUpperCase("sdjkhjshjhjd") }

这个例子将输出 这些字母的大写字母

一.长度函数 fn:length 函数

长度函数 fn:length 的出现有重要的意义。在 JSTL1.0 中,有一个功能被忽略了,那就是对集合的长度取值。虽然 java.util.Collection 接口定义了 size 方法,但是该方法不是一个标准的 JavaBean 属性方法(没有 get,set 方法),因此,无法通过 EL 表达式“ ${collection.size} ”来轻松取得。

fn:length 函数正是为了解决这个问题而被设计出来的。它的参数为 input ,将计算通过该属性传入的对象长度。该对象应该为集合类型或 String 类型。其返回结果是一个 int 类型的值。下面看一个示例。

<%ArrayList arrayList1 = new ArrayList();

                            arrayList1.add("aa");

                            arrayList1.add("bb");

                            arrayList1.add("cc");

%>

<%request.getSession().setAttribute("arrayList1", arrayList1);%>

${fn:length(sessionScope.arrayList1)}

假设一个 ArrayList 类型的实例“ arrayList1 ”,并为其添加三个字符串对象,使用 fn:length 函数后就可以取得返回结果为“ 3 ”。

二.判断函数 fn:contains 函数

fn:contains 函数用来判断源字符串是否包含子字符串。它包括 string substring 两个参数,它们都是 String 类型,分布表示源字符串和子字符串。其返回结果为一个 boolean 类型的值。下面看一个示例。

${fn:contains("ABC", "a")}<br>

${fn:contains("ABC", "A")}<br>

前者返回“ false ”,后者返回“ true ”。

三.fn:containsIgnoreCase 函数

fn:containsIgnoreCase 函数与 fn:contains 函数的功能差不多,唯一的区别是 fn:containsIgnoreCase 函数对于子字符串的包含比较将忽略大小写。它与 fn:contains 函数相同,包括 string substring 两个参数,并返回一个 boolean 类型的值。下面看一个示例。

${fn:containsIgnoreCase("ABC", "a")}<br>

${fn:containsIgnoreCase("ABC", "A")}<br>

前者和后者都会返回“ true ”。

四.词头判断函数 fn:startsWith 函数

fn:startsWith 函数用来判断源字符串是否符合一连串的特定词头。它除了包含一个 string 参数外,还包含一个 subffx 参数,表示词头字符串,同样是 String 类型。该函数返回一个 boolean 类型的值。下面看一个示例。

${fn:startsWith ("ABC", "ab")}<br>

${fn:startsWith ("ABC", "AB")}<br>

前者返回“ false ”,后者返回“ true ”。

五.词尾判断函数 fn:endsWith 函数

fn:endsWith 函数用来判断源字符串是否符合一连串的特定词尾。它与 fn:startsWith 函数相同,包括 string subffx 两个参数,并返回一个 boolean 类型的值。下面看一个示例。

${fn:endsWith("ABC", "bc")}<br>

${fn:endsWith("ABC", "BC")}<br>

前者返回“ false ”,后者返回“ true ”。

.字符实体转换函数fn:escapeXml 函数

fn:escapeXml 函数用于将所有特殊字符转化为字符实体码。它只包含一个 string 参数,返回一个 String 类型的值。

七.字符匹配函数 fn:indexOf 函数

fn:indexOf 函数用于取得子字符串与源字符串匹配的开始位置,若子字符串与源字符串中的内容没有匹配成功将返回“ -1 ”。它包括 string substring 两个参数,返回结果为 int 类型。下面看一个示例。

${fn:indexOf("ABCD","aBC")}<br>

${fn:indexOf("ABCD","BC")}<br>

前者由于没有匹配成功,所以返回 -1 ,后者匹配成功将返回位置的下标,为 1

八.分隔符函数 fn:join 函数

fn:join 函数允许为一个字符串数组中的每一个字符串加上分隔符,并连接起来。它的参数、返回结果和描述如表 9.25 所示:

9.25   fn:join 函数

参数

描述

array

字符串数组。其类型必须为 String[] 类型

separator

分隔符。其类型必须为 String 类型

返回结果

返回一个 String 类型的值

下面看一个示例。

<% String[] stringArray = {"a","b","c"}; %>

<%request.getSession().setAttribute("stringArray", stringArray);%>

${fn:join(sessionScope.stringArray,";")}<br>

定义数组并放置到 Session 中,然后通过 Session 得到该字符串数组,使用 fn:join 函数并传入分隔符“ ; ”,得到的结果为“ a;b;c ”。

九.替换函数 fn:replace 函数

fn:replace 函数允许为源字符串做替换的工作。它的参数、返回结果和描述如表 9.26 所示:

9.26   fn:replace 函数

参数

描述

inputString

源字符串。其类型必须为 String 类型

beforeSubstring

指定被替换字符串。其类型必须为 String 类型

afterSubstring

指定替换字符串。其类型必须为 String 类型

返回结果

返回一个 String 类型的值

下面看一个示例。

${fn:replace("ABC","A","B")}<br>

将“ ABC ”字符串替换为“ BBC ”,在“ ABC ”字符串中用“ B ”替换了“ A ”。

十.分隔符转换数组函数 fn:split 函数

fn:split 函数用于将一组由分隔符分隔的字符串转换成字符串数组。它的参数、返回结果和描述如表 9.27 所示:

9.27   fn:split 函数

参数

描述

string

源字符串。其类型必须为 String 类型

delimiters

指定分隔符。其类型必须为 String 类型

返回结果

返回一个 String[] 类型的值

下面看一个示例。

${fn:split("A,B,C",",")}<br>

将“ A,B,C ”字符串转换为数组 {A,B,C}

十一.字符串截取函数 fn:substring 函数

fn:substring 函数用于截取字符串。它的参数、返回结果和描述如表 9.28 所示:

9.28   fn:substring 函数

参数

描述

string

源字符串。其类型必须为 String 类型

beginIndex

指定起始下标(值从 0 开始)。其类型必须为 int 类型

endIndex

指定结束下标(值从 0 开始)。其类型必须为 int 类型

返回结果

返回一个 String 类型的值

下面看一个示例。

${fn:substring("ABC","1","2")}<br>

截取结果为“ B ”。

十二.起始到定位截取字符串函数 fn:substringBefore 函数

fn:substringBefore 函数允许截取源字符从开始到某个字符串。它的参数和 fn:substringAfter 函数相同,不同的是 substring 表示的是结束字符串。下面看一个示例。

${fn:substringBefore("ABCD","BC")}<br>

截取的结果为“ A ”。

十三.小写转换函数 fn:toLowerCase 函数

fn:toLowerCase 函数允许将源字符串中的字符全部转换成小写字符。它只有一个表示源字符串的参数 string ,函数返回一个 String 类型的值。下面看一个示例。

${fn:toLowerCase("ABCD")}<br>

转换的结果为“ abcd ”。

十四.大写转换函数 fn:toUpperCase 函数

fn:toUpperCase 函数允许将源字符串中的字符全部转换成大写字符。它与 fn:toLowerCase 函数相同,也只有一个 String 参数,并返回一个 String 类型的值。下面看一个示例。

${fn:toUpperCase("abcd")}<br>

转换的结果为“ ABCD ”。

十五.空格删除函数 fn:trim 函数

fn:trim 函数将删除源字符串中结尾部分的“空格”以产生一个新的字符串。它与 fn:toLowerCase 函数相同,只有一个 String 参数,并返回一个 String 类型的值。下面看一个示例。

${fn:trim("AB C ")}D<br>

转换的结果为“ AB CD ”,注意,它将只删除词尾的空格而不是全部,因此“ B ”和“ C ”之间仍然留有一个空格。



posted @ 2007-09-12 11:13 jadmin 阅读(1125) | 评论 (0)编辑 收藏

fmt:formatNumber
fmt:parseNumber
fmt:formatDate
fmt:parseDate  

剩下几个 关于 国际标准化的标签的话这里就不做介绍了,有兴趣的朋友可以和我交流一下

fmt:setLocale
fmt:timeZone
fmt:setTimeZone
fmt:bundle
fmt:setBundle
fmt:message
fmt:param

还有一个字符型 标签 fmt:requestEncoding 的话,因为像我一般的话都在 JSP 顶部已经设置过了,个人感觉用处也不是很大

<fmt:formatDate value="<%=new Date() %>" pattern="yyyy年MM月dd日HH点mm分ss秒" />
<fmt:parseDate value="2008-8-8" pattern="yyyy-MM-dd" var = "abccba" scope="session" />

第一个 用来进行 DATE 型数据的格式化输出,字母代表什么意思上面的例子中已经写的很清楚了

第二个 主要是把 Pattern样式的String 类型的数据转换成 Date 类型

<fmt:formatNumber value="123.123456789" pattern="0.00"/>

用来将 数字进行 格式化输出,上面的例子中就是保留两位有效小数

fmt:parseNumber   同 fmt:parseDate 这里就不做介绍了

posted @ 2007-09-12 11:12 jadmin 阅读(735) | 评论 (0)编辑 收藏


net start mysql             启动数据库

net start mysql             关闭数据库

mysql -u用户名 -p密码       连接数据库

show databases               找出服务器上当前存在什么数据库



一、连接MYSQL。


格式: mysql -h主机地址 -u用户名 -p用户密码


1、例1:连接到本机上的MYSQL。


首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root

是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql>


2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:


mysql -h110.110.110.110 -uroot -pabcd123


(注:u与root可以不用加空格,其它也一样)


3、退出MYSQL命令: exit (回车)


二、修改密码。


格式:mysqladmin -u用户名 -p旧密码 password 新密码


1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令


mysqladmin -uroot -password ab12


注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。


2、例2:再将root的密码改为djg345。


mysqladmin -uroot -pab12 password djg345


三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)


格式:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\"


例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户

连入MYSQL,然后键入以下命令:


grant select,insert,update,delete on *.* to test1@\"%\" Identified by \"abc\";


但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对

你的数据可以为所欲为了,解决办法见例2。


例2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作

(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,

只能通过MYSQL主机上的web页来访问了。


grant select,insert,update,delete on mydb.* to test2@localhost identified by \"abc\";


如果你不想test2有密码,可以再打一个命令将密码消掉。


grant select,insert,update,delete on mydb.* to test2@localhost identified by \"\";


在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,

以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。


一、操作技巧


1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成

几行来打,完后用分号作结束标志就OK。


2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql-3.23.27-beta-win。


二、显示命令


1、显示数据库列表。


show databases;


刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作


2、显示库中的数据表:


use mysql; //打开库,学过FOXBASE的一定不会陌生吧


show tables;


3、显示数据表的结构:


describe 表名;


4、建库:


create database 库名;


5、建表:


use 库名;


create table 表名 (字段设定列表);


6、删库和删表:


drop database 库名;


drop table 表名;


7、将表中记录清空:


delete from 表名;


8、显示表中的记录:


select * from 表名;


三、一个建库和建表以及插入数据的实例


drop database if exists school; //如果存在SCHOOL则删除


create database school; //建立库SCHOOL


use school; //打开库SCHOOL


create table teacher //建立表TEACHER


(


id int(3) auto_increment not null primary key,


name char(10) not null,


address varchar(50) default '深圳',


year date


); //建表结束


//以下为插入字段


insert into teacher values('','glchengang','深圳一中','1976-10-10');


insert into teacher values('','jack','深圳一中','1975-12-23');


注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字

段primary key(2)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区

别呢,只有等以后的文章再说了。(4)将YEAR设为日期字段。


如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为school.sql,然后复制到

c:\\下,并在DOS状态进入目录\\mysql\\bin,然后键入以下命令:


mysql -uroot -p密码 < c:\\school.sql


如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。


四、将文本数据转到数据库中


1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\\n来代替.


例:


3 rose 深圳二中 1976-10-10


4 mike 深圳一中 1975-12-23


2、数据传入命令 load data local infile \"文件名\" into table 表名;


注意:你最好将文件复制到\\mysql\\bin目录下,并且要先用use命令打表所在的库。


五、备份数据库:(命令在DOS的\\mysql\\bin目录下执行)


mysqldump --opt school>school.bbb


注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。


SQL常用命令使用方法:

(1) 数据记录筛选:

sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"

sql="select * from 数据表 where 字段名 like %字段值% order by 字段名 [desc]"

sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"

sql="select * from 数据表 where 字段名 in ( 值1 , 值2 , 值3 )"

sql="select * from 数据表 where 字段名 between 值1 and 值2"

(2) 更新数据记录:

sql="update 数据表 set 字段名=字段值 where 条件表达式"

sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"

(3) 删除数据记录:

sql="delete from 数据表 where 条件表达式"

sql="delete from 数据表" (将数据表所有记录删除)

(4) 添加数据记录:

sql="insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"

sql="insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)

(5) 数据记录统计函数:

AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加

引用以上函数的方法:

sql="select sum(字段名) as 别名 from 数据表 where 条件表达式"
set rs=conn.excute(sql)

用 rs("别名") 获取统的计值,其它函数运用同上。

(6) 数据表的建立和删除:

Create TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )

例:Create TABLE tab01(name varchar(50),datetime default now())

Drop TABLE 数据表名称 (永久性删除一个数据表)

(7)记录集对象的方法:

rs.movenext 将记录指针从当前的位置向下移一行
rs.moveprevious 将记录指针从当前的位置向上移一行
rs.movefirst 将记录指针移到数据表第一行
rs.movelast 将记录指针移到数据表最后一行
rs.absoluteposition=N 将记录指针移到数据表第N行
rs.absolutepage=N 将记录指针移到第N页的第一行
rs.pagesize=N 设置每页为N条记录
rs.pagecount 根据 pagesize 的设置返回总页数
rs.recordcount 返回记录总数
rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否
rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否
rs.delete 删除当前记录,但记录指针不会向下移动
rs.addnew 添加记录到数据表末端
rs.update 更新数据表记录

posted @ 2007-09-11 20:53 jadmin 阅读(46) | 评论 (0)编辑 收藏
  EJB3.0规范使开发EJB比过去更容易,可能诱惑你考虑开发第一个EJB。如果真是这种情况,那么祝贺你,你经成功避免了在你以前EJB开发者的很多挫折,并且享受到EJB3.0开发的便利性。但是你开始开发以前,你可能想知道EJB是什么和它们用于什么目的。本篇文章解释了EJB的基础和你如何在一个J2EE程序中使用它们。

什么是EJB?

  一个企业JavaBean (EJB)是一个可重用的,可移植的J2EE组件。 EJB由封装了业务逻辑的多个方法组成。例如,一个EJB可以有包括一个更新客户数据库中数据的方法的业务逻辑。多个远程和本地客户端可以调用这个方法。另外,EJB运行在一个容器里,允许开发者只关注与bean中的业务逻辑而不用考虑象事务支持,安全性和远程对象访问等复杂和容易出错的事情。EJB以POJO或者普通旧的Java对象形式开发,开发者可以用元数据注释来定义容器如何管理这些Bean。

EJB类型

  EJB主要有三种类型:会话Bean,实体Bean和消息驱动Bean。会话Bean完成一个清晰的解耦的任务,例如检查客户账户历史记录。实体Bean是一个代表存在于数据库中业务对象的复杂业务实体。消息驱动Bean用于接收异步JMS消息。让我们更详细的认识这些类型。

会话Bean

  会话Bean一般代表着业务流程中象"处理订单"这样的动作。会话Bean基于是否维护过度状态分为有状态或者无状态。

  无状态会话Bean 没有中间状态。它们不保持追踪一个方法调用另一个方法传递的信息。因此一个无状态业务方法的每一次调用都独立于它的前一个调用;例如,税费计算或者转移账款。 当计算税费额的方法被调用时,税费值被计算并返回给调用的方法,没有必要存储调用者为将来调用备用的内部状态。因为它们不维护状态,所以这些Bean是仅仅由容器管理。当客户端请求一个无状态的Bean实例时,它可以接收来自由容器管理的无状态会话Bean实例集中的一个实例。也因为无状态会话Bean能够被共享,所以容器可以维护更少数量的实例来为大量的客户端服务。简单地象该Bean增加元注释@Stateless 来指定一个 Java Bean作为一个无状态会话Bean被部署和管理。

  一个有状态的会话Bean维护一个跨越多个方法调用的会话状态;例如在线购物篮应用。当客户开始在线购物时,客户的详细信息从数据库获得。相同的信息对于当客户从购物篮中增加或者移除商品等等操作时被调用的其他方法也是可访问的 。但是因为该状态不是在会话结束,系统崩溃或者网络失败时保留,所以有状态会话Bean是暂时的。当一个客户端请求一个有状态会话Bean实例时,客户端将会得到一个会话实例,该Bean的状态只为给客户端维持。通过向方法增加元注释@Remove来告诉容器当某个方法调用结束一个有状态会话Bean实例应该被移除。

会话Bean实例
import javax.ejb.Stateless.*;

/**
* 一个简单无状态会话Bean实现了CalculateEJB接口的incrementValue()方法
**/

@Stateless(name="CalculateEJB")
public class CalculateEJBBean
implements CalculateEJB
{
int value = 0;
public String incrementValue()
{
value++;
return "value incremented by 1";
}
}

实体Bean

  实体Bean是管理持久化数据的一个对象,潜在使用一些相关的Java对象并且可以依靠主键被唯一识别。通过包括@Entity 元注释来指定一个类是一个实体Bean。实体Bean表示来自数据库的持久化数据,例如客户表中的一个记录,或者一个员工表中的一个员工记录。实体Bean也可以被多个客户端共享。例如一个员工实体能够被多个计算一个员工每年工资总额或者更新员工地址的客户端使用。实体Bean对象特定变量能够保持持久化。实体Bean中所有没有@Transient 元注释的变量需要考虑持久化。EJB3.0的一个主要特色是创建包含使用元数据注释的对象/关系映射实体Bean的能力。例如,指定实体Bean的empId变量映射到employee表中的EMPNO属性,象下面实例中一样用@Table(name="Employees") 注释这个表的名字和用@Column(name="EMPNO")注释empId变量。另外,EJB3.0中的一个特色是你可以很容易的在开发时测试实体Bean,可以用Oracle Application Server Entity Test Harness在容器外部运行一个实体Bean。

实体Bean实例
import javax.persistence.*;
import java.util.ArrayList;
import java.util.Collection;

@Entity
@Table(name = "EMPLOYEES")
public class Employee implements java.io.Serializable
{
private int empId;
private String eName;
private double sal;

@Id
@Column(name="EMPNO", primaryKey=true)
public int getEmpId()
{
return empId;
}

public void setEmpId(int empId)
{
this.empId = empId;
}

public String getEname()
{
return eName;
}

public void setEname(String eName)
{
this.eName = eName;
}

public double getSal()
{
return sal;
}

public void setSal(double sal)
{
this.sal = sal;
}

public String toString()
{
StringBuffer buf = new StringBuffer();
buf.append("Class:")
.append(this.getClass().getName()).append(" :: ").append(" empId:").append(getEmpId()).append(" ename:").append(getEname()).append("sal:").append(getSal());
return buf.toString();
}
}

消息驱动Bean

  驱动Bean (MDB) 提供了一个实现异步通信比直接使用Java消息服务(JMS)更容易地方法。创建MDB接收异步JMS消息。容器处理为JMS队列和主题所要求加载处理的大部分工作。它向相关的MDB发送所有的消息。一个MDB允许J2EE应用发送异步消息,该应用能处理这些消息。实现javax.jms.MessageListener接口和使用@MessageDriven注释该Bean来指定一个Bean是消息驱动Bean。

消息驱动Bean实例
import javax.ejb.MessageDriven;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.Inject;
import javax.jms.*;
import java.util.*;
import javax.ejb.TimedObject;
import javax.ejb.Timer;
import javax.ejb.TimerService;
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName="connectionFactoryJndiName", propertyValue="jms/TopicConnectionFactory"),
@ActivationConfigProperty(propertyName="destinationName", propertyValue="jms/myTopic"),
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Topic"),
@ActivationConfigProperty(propertyName="messageSelector", propertyValue="RECIPIENT = 'MDB'")
}
)

/**
*监听可配置JMS队列或者主题和通过当一个消息发送到队列或者主题
*调用它的onMessage()方法得到提醒的一个简单的消息驱动
*该Bean打印消息的内容
*/

public class MessageLogger implements MessageListener, TimedObject
{

@Inject javax.ejb.MessageDrivenContext mc;

public void onMessage(Message message)
{
System.out.println("onMessage() - " + message);
try
{
String subject = message.getStringProperty("subject");
String inmessage = message.getStringProperty("message");
System.out.println("Message received\n\tDate: " + new java.util.Date() + "\n\tSubject: " + subject + "\n\tMessage: " + inmessage + "\n");
System.out.println("Creating Timer a single event timer");
TimerService ts = mc.getTimerService();
Timer timer = ts.createTimer(30000, subject);
System.out.println("Timer created by MDB at: " + new Date(System.currentTimeMillis()) +" with info: "+subject);
}
catch (Throwable ex)
{
ex.printStackTrace();
}
}

public void ejbTimeout(Timer timer)
{
System.out.println("EJB 3.0: Timer with MDB");
System.out.println("ejbTimeout() called at: " + new Date(System.currentTimeMillis()));
return;
}
}

使用EJB

  客户端是访问Bean的应用程序。虽然没有必要保存在客户层,但是能够作为一个独立的应用,JSP,Servlet,或者另一个EJB。客户端通过Bean的远程或者本地接口访问EJB中的方法,主要取决于客户端和Bean运行在同一个还是不同的JVM中。这些接口定义了Bean中的方法,而由Bean类实际实现这些方法。当一个客户端访问该Bean类中的一个方法时,容器生成Bean的一个代理,被叫做远程对象或者本地对象。远程或者本地对象接收请求,委派它到相应的Bean实例,返回结果给客户端。调用一个Bean中的方法,客户端使用定义在EJB不是描述文件的名字查找到Bean。在以下实例中,客户端使用上下文对象找到命名为"StateLessejb"Bean。

EJB 客户端实例

import javax.naming.Context;
import javax.naming.InitialContext;

/**
* 一个调用无状态会话Bean中方法的简单的Bean客户端
*/

public class CalculateejbClient
{
public static void main(String [] args)
{
Context context = new InitialContext();
CalculateEJB myejb =
(CalculateEJB)context.lookup("java:comp/env/ejb/CalculateEJB");
myejb.incrementValue();
}
}

总结

  EJB3.0开发企业JavaBean是相当容易的。此规范使用元数据注释定义Bean的类型和暴露给客户端的方法。因此,无论你将创建一个执行特定任务的会话Bean还是映射一个表到实体Bean来更新数据,你都能象使用普通Java对象和接口一样进行处理,在业务方法中使用元注释向客户端暴露方法。既然你已经理解了EJB的基础,可以到OTN中EJB 3.0 Resources Page发现更多信息。
posted @ 2007-09-11 16:26 jadmin 阅读(83) | 评论 (0)编辑 收藏
一. 软件下载
  Mysql
下载版本:4.1.11
http://dev.mysql.com/downloads/mysql/4.1.html

JDBC驱动
下载版本:3.1.8
http://dev.mysql.com/downloads/connector/j/3.1.html

Mysql界面插件:mysql-front
下载版本镜像:HongKong(我下回来安装就是中文版了)
http://www.mysqlfront.de/download.html

二. 软件安装
  1.安装mysql
请参阅相关文章,推荐文章:http://blog.csdn.net/saulzy/archive/2005/04/23/359648.aspx

2.JDBC驱动:mysql-connector-java-3.1.8
这只是一个压缩包,并不需要安装,只要将其解压,我么使用的是文件夹mysql-connector-java-3.1.8里的文件:mysql-connector-java-3.1.8-bin.jar.

3. Mysql界面插件:mysql-front
这是一个安装程序,按照提示安装就可以了.

三. 环境配置
首先,我要说明的是我现在tomcat的安装路径是: D:\Program Files\Java\Tomcat;JDK的安装路径是:D:\Program Files\Java\j2sdk。

在这里,需要配置环境变量的是JDBC驱动.在配置前先要把刚才说到的mysql-connector-java-3.1.8-bin.jar本地硬盘 某处(我放的地方:D:\Program Files\Java\mysqlforjdbc),然后根据你放的地方,配置classpath,我的配置是这样的:

  D:\Program files\Java\j2sdk\lib\tools.jar;

  D:\Program Files\Java\j2sdk\lib\mysql-connector-java-3.1.8-bin-g.jar;

  D:\Program Files\Java\mysqlforjdbc\mysql-connector-java-3.1.8-bin.jar
配置这个的目的是让你的java应用程序找到连接mysql的驱动.

配置完环境变量后还有很重要一步就是为JSP连接数据库配置驱动,这个其实很简单,就是把mysql-connector-java-3.1.8- bin.jar拷到某些文件夹里就行了,我在网上看了很多资料问了很多人,各种说法都有,我综合了一下,为了保险,我都全做了,呵呵,反正就是拷一个 400K的文件而已,现列出要把mysql-connector-java-3.1.8-bin.jar拷进去的文件夹,如下:
D:\Program Files\Java\Tomcat\common\lib
D:\Program Files\Java\Tomcat\shared\lib

四. 数据库的使用

Mysql安装完毕以后,还有一些要注意的地方(推荐文章):http://blog.csdn.net/saulzy/archive/2005/04/23/359811.aspx

  就象在文章提到的,mysql安装好后最重要一样就是要看数据库有没有作为系统服务启动了,所以在大家进行数据库操作前,应要看看,在操作系统的开始->运行->输入services.msc,确定你在安装时你设置的关于mysql的那个服务已经启动,这样你在操作数据库时不会报连接不上的错误.

  上面提到了一个较方便的mysql界面插件,但是这个界面是我在已经开始使用mysql后才找到的,刚开始我是在dos下用命令行进行操作的. 虽然那个界面也可以进行建库啊,设定权限等操作,但是,我觉得懂得在使用命令行也是一个很重要的技能,所以我先从命令行开始说,怎样简单使用mysql. 到后面会谈及mysql-front的使用.

现在我想在mysql里建一个数据库shujuku,以及在数据库里建一个表biao.具体的命令如下(假设mysql我是刚安装好的)

1. 进入dos状态(记住命令行的要运行在mysql的安装目录下的bin目录的)

  2. 连接mysql
输入:mysql –h localhost –u root –p
输入在安装时已设好的密码,就近入了mysql的命令编辑界面了。

3. 使用mysql的基本命令(在mysql命令行编辑每输入完命令后最后一定要有分号,不然会报错)
显示数据库:show databases;
使用数据库:use 数据库名;

4.建库
命令:create database shujuku;

5.为数据库设置权限(用户和密码)
命令:grant all privileges on shujuku.* to test@localhost identified by “123456”;
当你执行完这个命令以后,只要你再以用户名:test,密码:123456登录时你就只可以对shujuku这个数据库操作,这样避开使用root,对数据库的安全有很大帮助.

6.建表
命令:create table biao(id int(8) primary key,name varchar(10));

剩下来的与标准sqsl命令基本上是一样的,具体操作略
值得一提的是,你在命令行上输入"?",就会有mysql命令的简单帮助,如下:

呵呵,那样,我们还可以知道退出,就是"exit",呵呵!

五. 关于mysql-front的使用
  我找了好几个mysql的界面工具,觉得最简洁方便还是mysql-front,可惜的是要收费,不过还好有试用期,呵呵,可以先感受感受一下,最重要一点是mysql-front有简体中文版的,英文不好的我用起来就舒服多了.下面简单说说使用吧.

  首先,安装就不用说了,有向导,而且很简单.安装好后第一次运行时会跳出来一个要求添加对话的框,在这里你可以添加例如上面已经设定好的shujuku,过程如下:
当你在注册的复选框里填上你在上面mysql设定好的用户名和密码后,在选择数据库框里就有shujuku 的数据库了,选上,按确定.进入mysql-fron后,你就会看到下面的界面,这是你就可以进行操作了.

要说明的是,你还可以把root用户也加进去,这要你在mysql-fron的界面上选设置->对话->新建,再按上面进行就可以,出了root你还可 以加入更多的用户,方法还是一样的,设置不同的用户,是方便对不同数据库进行管理,呵呵,root是权限最高的,可不要随便让别人使用你的root用户, 保正你数据库的安全.

六. JSP连接mysql
  现在就是尝试用jsp连接mysql了
我在eclipse里建了个test_mysql.jsp页面,代码如下:

<%@ page contentType="text/html; charset=utf-8" %>

<%@ page language="java" %>

<%@ page import="com.mysql.jdbc.Driver" %>

<%@ page import="java.sql.*" %>

<%

//驱动程序名

String driverName="com.mysql.jdbc.Driver";

//数据库用户名

String userName="cl41";

//密码

String userPasswd="123456";

//数据库名

String dbName="db";

//表名

String tableName="dbtest";

//联结字符串

String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;

Class.forName("com.mysql.jdbc.Driver").newInstance();

Connection connection=DriverManager.getConnection(url);

Statement statement = connection.createStatement();

String sql="SELECT * FROM "+tableName;

ResultSet rs = statement.executeQuery(sql);

//获得数据结果集合

ResultSetMetaData rmeta = rs.getMetaData();

//确定数据集的列数,亦字段数

int numColumns=rmeta.getColumnCount();

// 输出每一个数据值

out.print("id");

out.print("|");

out.print("num");

out.print("<br>");

while(rs.next()) {

out.print(rs.getString(1)+" ");

out.print("|");

out.print(rs.getString(2));

out.print("<br>");

}

out.print("<br>");

out.print("数据库操作成功,恭喜你");

rs.close();

statement.close();

connection.close();

%>

然后把test­_mysql.jsp部署到tomcat处,如何部署可参考"配置Eclpise+tomcat并实现JSP的编写与部署",在浏览器中就可以看到结果了。
posted @ 2007-09-11 09:40 jadmin 阅读(42) | 评论 (0)编辑 收藏

          自从Windows 2000操作系统开始,微软就添加了一个新的网络功能,叫做Windows默认共享。有朋友会问了,为什么叫“默认共享”呢?原来,这些文件夹与我们自己手工建立的共享文件夹之间有着一个本质的区别,在它们的共享名称最后都会有一个“$”符号,作用就是能够在网上邻居中隐藏自己。

         这样,除非我们预先知道这些默认共享的共享名,否则,按照常规方法是根本无法直接进入到这些文件夹的。

  起初这项功能主要是微软为了方便系统管理员的日常工作而设计的,并且在默认情况下它们就是开启的状态,但由于Windows的漏洞层出不穷,那加上这些预设的文件夹名称早已被大家所熟知,因此,这些原本是微软一番好意而设置的功能在使用时却成了一个巨大的安全陷井,严重地威胁着系统和服务器的运行安全,对于此类“鸡肋”功能我们自然就要“关他没商量”。

        【小提示】 从图中大家可以看到,默认的Windows共享大体可分为三类:第一类是“ADMIN$”共享,它所指向的就是当前的系统工作目录(WINNT目录)。第二类是类似于“C$、D$、E$……”的共享,它指向的其实就是本机上每个磁盘分区的根目录。而最后一类则是“IPC$”,它就是我们常说的“共享命名管道”,而著名的空连接漏洞也正是利用了这个IPC$ .

修改注册表法

  方便指数:★★★

  推荐指数:★★★★★

  方案优势:可以从根本上解决系统自动启动默认共享的问题

  负 作 用:需要执行注册表操作,略显麻烦

  适用环境:该方案适合普通电脑系统及服务器系统

        关闭分区默认共享(如C$、D$、E$ ……)

  1. 点击“开始”菜单→“运行”,在弹出的“运行”对话框中输入“regedit”后回车,打开注册表编辑器

  2. 展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\parameters”注册表项

  3. 双击右窗格中的“AutoShareServer”,将它的键值改为“0”即可。

         关闭管理默认共享(ADMIN$)

  1. 点击“开始”菜单→“运行”,在弹出的“运行”对话框中输入“regedit”后回车,打开注册表编辑器

  2. 展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lanmanserver\parameters”注册表项

  3. 双击右窗格中的“AutoShareWks”,将它的键值改为“0”即可

  关闭IPC$默认共享

  1. 点击“开始”菜单→“运行”,在弹出的“运行”对话框中输入“regedit”后回车,打开注册表编辑器

  2. 展开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa”注册表项

  3. 双击“restrictanonymous”,将其键值设为“1”即可(注意,不是“0”,是“1”)

posted @ 2007-09-08 19:34 jadmin 阅读(69) | 评论 (0)编辑 收藏
仅列出标题
共50页: First 上一页 27 28 29 30 31 32 33 34 35 下一页 Last