关闭无用服务

=====================================
rem WINDOS XP 服务优化批处理文件!!
@pause

@rem Alerter
@rem 微软: 通知选取的使用者及计算机系统管理警示。如果停止这个服务,使用系统管理@rem 警示的程序将不会收到通知。
@rem 补充: 一般家用计算机根本不需要传送或接收计算机系统管理来的警示(Administrative Alerts),除非你的计算机用在局域网络上
@rem 依存: Workstation
@rem 建议: 已停用
sc config Alerter start= DISABLED

@rem Application Layer Gateway Service
@rem 微软: 提供因特网联机共享和因特网联机防火墙的第三方通讯协议插件的支持
@rem 补充: 如果你不使用因特网联机共享 (ICS) 提供多台计算机的因特网存取和因特网联机防火墙 (ICF) 软件你可以关掉
@rem 依存: Internt Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 建议: 已停用
sc config ALG start= DISABLED

@rem Application Management (应用程序管理)
@rem 微软: 提供指派、发行、以及移除的软件安装服务。
@rem 补充: 如上说的软件安装变更的服务
@rem 建议: 手动
sc config AppMgmt start= DEMAND

@rem Windows Audio
@rem 微软: 管理用于 Windows 为主程序的音讯装置。如果这个服务被停止,音讯装置和效果将无法正常?#092;作。如果这个服务被停用,任@rem 何明确依存于它的服务将无法启动。
@rem 补充: 如果你没有声卡可以关了他
@rem 依存: Plug and Play、remote Procedure Call (RPC)
@rem 建议: 自动
sc config AudioSrv start= AUTO

@rem Background Intelligent Transfer Service
@rem 微软: 使用闲置的网络频宽来传输数据。
@rem 补充: 经由 Via HTTP1.1 在背景传输资料的?#124;西,例如 Windows Update 就是以此为工作之一
@rem 依存:remote Procedure Call (RPC) 和 Workstation
@rem 建议: 已停用
sc config BITS start= DISABLED

@rem Computer Browser (计算机浏览器)
@rem 微软: 维护网络上更新的计算机清单,并将这个清单提供给做为浏览器的计算机。如果停止这个服务,这个清单将不会被更新或维护。@rem 如果停用这个服务,所有依存于它的服务将无法启动。
@rem 补充: 一般家庭用计算机不需要,除非你的计算机应用在区网之上,不过在大型的区网上有必要开这个拖慢速度吗?
@rem 依存: Server 和 Workstation
@rem 建议: 已停用
sc config Browser start= DISABLED

@rem Indexing Service (索引服务)
@rem 微软: 本机和远程计算机的索引内容和档案属性; 透过弹性的查询语言提供快速档案存取。
@rem 补充: 简单的说可以让你加快搜查速度,不过我想应该很少人和远程计算机作搜寻吧
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config CiSvc start= DISABLED


@rem ClipBook (剪贴簿)
@rem 微软: 启用剪贴簿检视器以储存信息并与远程计算机共享。如果这个服务被停止,剪贴簿检视器将无法与远程计算机共享信息。如果这@rem 个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 把剪贴簿内的信息和其它台计算机分享,一般家用计算机根本用不到
@rem 依存: Network DDE
@rem 建议: 已停用
sc config ClipSrv start= DISABLED

@rem COM+ System Application
@rem 微软: 管理 COM+ 组件的设定及追踪。如果停止此服务,大部分的 COM+ 组件将无法适当?#092;作。如果此服务被停用,任何明确依存@rem 它的服务将无法启动。
@rem 补充: 如果 COM+ Event System 是一台车,那么 COM+ System Application 就是司机,如事件检视器内显示的 DCOM 没有启用
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 手动
sc config COMSysApp start= DEMAND

@rem Cryptographic Services
@rem 微软: 提供三个管理服务: 确认 Windows 档案签章的 [类别目录数据库服务]; 从这个计算机新增及移除受信任根凭证授权凭证的 [受@rem 保护的根目录服务]; 以及协助注册这个计算机以取得凭证的 [金钥服务]。如果这个服务被停止,这些管理服务将无法正确工作。
@rem 补充: 简单的说就是 Windows Hardware Quality Lab (WHQL)微软的一种认证,如果你有使用 Automatic Updates ,那你可能需要这个
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 手动
sc config CryptSvc start= DEMAND


@rem DCOM Server Process Launcher
@rem 为 DCOM 服务提供启动功能。
sc config DcomLaunch start= AUTO

@rem DHCP Client (DHCP 客户端)
@rem 微软: 透过登录及更新 IP 地址和 DNS 名称来管理网络设定。
@rem 补充: 使用 DSL/Cable 、ICS 和 IPSEC 的人都需要这个来指定动态 IP
@rem 依存: AFD 网络支持环境、NetBT、SYMTDI、TCP/IP Protocol Driver 和 NetBios over TCP/IP
@rem 建议: 手动
sc config Dhcp start= DEMAND

@rem Logical Disk Manager Administrative Service (逻辑磁盘管理员系统管理服务)
@rem 微软: 设定硬盘磁盘及磁盘区,服务只执行设定程序然后就停止。
@rem 补充: 使用 Microsoft Management Console(MMC)主控台的功能时才用到
@rem 依存: Plug and Play、remote Procedure Call (RPC)、Logical Disk Manager
@rem 建议: 手动
sc config dmadmin start= DEMAND

@rem Logical Disk Manager (逻辑磁盘管理员)
@rem 微软: 侦测及监视新硬盘磁盘,以及传送磁盘区信息到逻辑磁盘管理系统管理服务以供设定。如果这个服务被停止,动态磁盘状态和设@rem 定信息可能会过时。如果这个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 磁盘管理员用来动态管理磁盘,如显示磁盘可用空间等和使用 Microsoft Management Console(MMC)主控台的功能
@rem 依存: Plug and Play、remote Procedure Call (RPC)、Logical Disk Manager Administrative Service
@rem 建议: 自动
sc config dmserver start= AUTO

@rem DNS Client (DNS 客户端)
@rem 微软: 解析并快取这台计算机的网域名称系统 (DNS) 名称。如果停止这个服务,这台计算机将无法解析 DNS 名称并寻找 Active @rem Directory 网域控制站的位置。如果停用这个服务,所有依存于它的服务将无法启动。
@rem 补充: 如上所说的,另外 IPSEC 需要用到
@rem 依存: TCP/IP Protocol Driver
@rem 建议: 手动
sc config Dnscache start= DEMAND

@rem Error Reporting Service
@rem 微软: 允许对执行于非标准环境中的服务和应用程序的错误报告。
@rem 补充: 微软的应用程序错误报告
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config ERSvc start= DISABLED

@rem Event Log (事件记录文件)
@rem 微软: 启用 Windows 为主的程序和组件所发出的事件讯息可以在事件检视器中检视。这个服务不能被停止。
@rem 补充: 允许事件讯息显示在事件检视器之上
@rem 依存: Windows Management Instrumentation
@rem 建议: 自动
sc config Eventlog start= AUTO


@rem COM+ Event System (COM+ 事件系统)
@rem 微软: 支持「系统事件通知服务 (SENS)」,它可让事件自动分散到订阅的 COM 组件。如果服务被停止,SENS 会关闭,并无法提供登入@rem 及注销通知。
@rem 补充: 有些程序可能用到 COM+ 组件,像 BootVis 的 optimize system 应用,如事件检视器内显示的 DCOM 没有启用
@rem 依存:remote Procedure Call (RPC) 和 System Event Notification
@rem 建议: 手动
sc config EventSystem start= DEMAND

@rem Help and Support
@rem 微软: 让说明及支持中心能够在这台计算机上执行。如果这个服务停止,将无法使用说明及支持中心。
@rem 补充: 如果不使用就关了吧
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config helpsvc start= DISABLED

@rem Human Interface Device Access
@rem 微软: 启用对人性化接口装置 (HID) 的通用输入存取,HID 装置启动并维护对这个键盘、远程控制、以及其它多媒体装置上事先定义的@rem 快捷纽的使用。如果这个服务被停止,这个服务控制的快捷纽将不再起作用。
@rem 补充: 如上所提到的
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config HidServ start= DISABLED

@rem http sll
@rem 此服务通过安全套接字层(SSL)实现 HTTP 服务的安全超文本传送协议(HTTPS)。如果此服务被禁用,任何依赖它的服务将无法启动。
sc config HTTPFilter start= DEMAND

@rem IMAPI CD-Burning COM Service
@rem 微软: 使用 Image Mastering Applications Programming Interface (IMAPI) 来管理光盘录制。如果这个服务被停止,这个计算机将@rem 无法录制光盘。如果这个服务被停用,任何明确地依赖它的服务将无法启动。
@rem 补充: XP 整合的 CD-R 和 CD-RW 光驱上拖放的烧录功能,可惜比不上烧录软件,关掉还可以加快 Nero 的开启速度
@rem 建议: 已停用
sc config ImapiService start= DISABLED

@rem Server (服务器)
@rem 微软: 透过网络为这台计算机提供档案、打印、及命名管道的共享。如果停止这个服务,将无法使用这些功能。如果停用这个服务,所@rem 有依存于它的服务将无法启动。
@rem 补充: 简单的说就是档案和打印的分享,除非你有和其它计算机分享,不然就关了
@rem 依存: Computer Browser
@rem 建议: 已停用
sc config lanmanserver start= DISABLED

@rem Workstation (工作站)
@rem 微软: 建立并维护到远程服务器的客户端网络联机。如果停止这个服务,这些联机将无法使用。如果停用这个服务,所有依存于它的服@rem 务将无法启动。
@rem 补充: 因特网联机中所必要的一些功能
@rem 依存: Alerter、Background Intelligent Transfer Service、Computer Browser、Messenger、Net Logon、remote Procedure Call @rem (RPC) Locator
@rem 建议: 自动
sc config lanmanworkstation start= AUTO


@rem TCP/IP NetBIOS Helper (TCP/IP NetBIOS 协助程序)
@rem 微软: 启用 [NetBIOS over TCP/IP (NetBT)] 服务及 NetBIOS 名称解析的支持。
@rem 补充: 如果你的网络不使用 NetBios 或是 WINS ,你大可关闭
@rem 依存: AFD 网络支持环境、NetBt
@rem 建议: 已停用
sc config LmHosts start= DISABLED

2007-09-20 15:02:04 回复此发言
2 回复:智能关闭无用服务

@rem Messenger (信差)
@rem 微软:在客户端及服务器之间传输网络传送及 [Alerter] 服务讯息。这个服务与 Windows Messenger 无关。如果停止这个服务,@rem @rem Alerter 讯息将不会被传输。如果停用这个服务,所有依存于它的服务将无法启动。
@rem 补充: 允许网络之间互相传送提示讯息的功能,如 net send 功能,如不想被骚扰话可关了
@rem 依存: NetBIOS Interface、Plug and Play、remote Procedure Call (RPC)、Workstation
@rem 建议: 已停用
sc config Messenger start= DISABLED


@rem NetMeetingremote Desktop Sharing (NetMeeting 远程桌面共享)
@rem 微软: 让经过授权的使用者可以使用 NetMeeting 透过公司近端内部网络,由远程访问这部计算机。如果这项服务停止的话,远程桌面@rem 共享功能将无法使用。如果服务停用的话,任何依赖它的服务将无法启动。
@rem 补充: 如上说的,让使用者可以将计算机的控制权分享予网络上或因特网上的其它使用者,如果你重视安全性不想多开后门,就关了吧
@rem 建议: 已停用
sc config mnmsrvc start= DISABLED

@rem Distributed Transaction Coordinator (分布式交易协调器)
@rem 微软: 协调跨越多个资源管理员的交易,比如数据库、讯息队列及档案系统。如果此服务被停止,这些交易将不会发生。如果服务被停@rem 用 ,任何明显依存它的服务将无法启动。
@rem 补充: 如上所说的,一般家庭用计算机用不太到,除非你启用的 Message Queuing
@rem 依存:remote Procedure Call (RPC) 和 Security Accounts Manager
@rem 建议: 已停用
sc config MSDTC start= DISABLED

@rem Windows Installer (Windows 安装程序)
@rem 微软: 根据包含在 .MSI 档案内的指示来安装,修复以及移除软件。
@rem 补充: 是一个系统服务,协助使用者正确地安装、设定、追踪、升级和移除软件程序,可管理应用程序建立和安装的标准格式,并且追@rem 踪例如档案群组、登录项目及快捷方式等组件
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 手动
sc config MSIServer start= DEMAND

@rem Network DDE (网络 DDE)
@rem 微软: 为动态数据交换 (DDE) 对在相同或不同计算机上执行的程序提供网络传输和安全性。如果这个服务被停止,DDE 传输和安全性将@rem 无法使用。如果这个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 一般人好像用不到
@rem 依存: Network DDE DSDM、ClipBook
@rem 建议: 已停用
sc config NetDDE start= DISABLED

@rem Network DDE DSDM (网络 DDE DSDM)
@rem 微软: 讯息动态数据交换 (DDE) 网络共享。如果这个服务被停止,DDE 网络共享将无法使用。
@rem 补充: 一般人好像用不到
@rem 依存: Network DDE
@rem 建议: 已停用
sc config NetDDEdsdm start= DISABLED

@rem Net Logon
@rem 微软: 支持网域上计算机的账户登入事件的 pass-through 验证。
@rem 补充: 一般家用计算机不太可能去用到登入网域审查这个服务
@rem 依存: Workstation
@rem 建议: 已停用
sc config Netlogon start= DISABLED

@rem Network Connections (网络联机)
@rem 微软: 管理在网络和拨号联机数据夹中的对象,您可以在此数据夹中检视局域网络和远程联机。
@rem 补充: 控制你的网络联机
@rem 依存:remote Procedure Call (RPC)、Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 建议: 手动
sc config Netman start= DEMAND

@rem Network Location Awareness (NLA)
@rem 微软: 收集并存放网络设定和位置信息,并且在这个信息变更时通知应用程序。
@rem 补充: 如果不使用 ICF 和 ICS 可以关了它
@rem 依存: AFD网络支持环境、TCP/IP Procotol Driver、Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 建议: 已停用
sc config Nla start= DISABLED


@rem NT LM Security Support Provider (NTLM 安全性支持提供者)
@rem 微软: 为没有使用命名管道传输的远程过程调用 (RPC) 程序提供安全性。
@rem 补充: 如果不使用 Message Queuing 或是 Telnet Server 那就关了它
@rem 依存: Telnet
@rem 建议: 已停用
sc config NtLmSsp start= DISABLED

@rem @rem ovable Storage (卸除式存放装置)
@rem 微软: None
@rem 补充: 除非你有 Zip 磁盘驱动器或是 USB 之类可携式的硬件或是 Tape 备份装置,不然可以尝试关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: DISABLED
sc config NtmsSvc start= DEMAND

@rem Office Source Engine (office 2003)
@rem 可保存用于更新和修复的安装文件,并且在下载安装程序更新和 Watson 错误报告时必须使用。
@rem sc config ose start= DEMAND

@rem Plug and Play (随插随用)
@rem 微软: 启用计算机以使用者没有或很少的输入来识别及适应硬件变更,停止或停用这个服务将导致系统不稳定。
@rem 补充: 顾名思义就是 PNP 环境
@rem 依存: Logical Disk Manager、Logical Disk Manager Administrative Service、Messenger、Smart Card、Telephony、Windows Audio
@rem 建议: 自动
sc config PlugPlay start= AUTO

@rem IPSEC Services (IP 安全性服务)
@rem 微软: 管理 IP 安全性原则并启动 ISAKMP/Oakley (IKE) 及 IP 安全性驱动程序。
@rem 补充: 协助保护经由网络传送的数据。IPSec 为一重要环节,为虚拟私人网络 (VPN) 中提供安全性,而 VPN 允许组织经由因特网安全@rem 地传输数据。在某些网域上也许需要,但是一般使用者大部分是不太需要的
@rem 依存: IPSEC driver、remote Procedure Call (RPC)、TCP/IP Protocol Driver
@rem 建议: 手动
sc config PolicyAgent start= DEMAND


@rem Protected Storage (受保护的存放装置)
@rem 微软: 提供受保护的存放区,来储存私密金钥这类敏感数据,防止未授权的服务、处理、或使用者进行存取。
@rem 补充: 用来储存你计算机上密码的服务,像 Outlook、拨号程序、其它应用程序、主从架构等等
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 自动
sc config ProtectedStorage start= AUTO

@rem remote Access Auto Connection Manager (远程访问自动联机管理员)
@rem 微软: 当程序参照到远程 DNS 或 NetBIOS 名称或地址时,建立远程网络的联机。
@rem 补充: 有些 DSL/Cable 提供者,可能需要用此来处理登入程序
@rem 依存:remote Access Connection Manager、Telephony
@rem 建议: 手动
sc config RasAuto start= DEMAND

@rem remote Access Connection Manager (远程访问联机管理员)
@rem 微软: 建立网络联机。
@rem 补充: 网络联机用
@rem 依存: Telephony、Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)、remote Access Auto @rem Connection Manager
@rem 建议: 手动
sc config RasMan start= DEMAND

@rem remote Desktop Help Session Manager
@rem 微软: 管理并控制远程协助。如果此服务停止的话,远程协助将无法使用。停止此服务之前,请先参阅内容对话框中的 [依存性]标签。
@rem 补充: 如上说的管理和控制远程协助,如果不使用可以关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: DISABLED
sc config RDSessMgr start= DISABLED

@rem Routing andremote Access (路由和远程访问)
@rem 微软: 提供连到局域网络及广域网络的公司的路由服务。
@rem 补充: 如上说的,提供拨号联机到区网或是 VPN 服务,一般用户用不到
@rem 依存:remote Procedure Call (RPC)、NetBIOSGroup
@rem 建议: 已停用
sc config remoteAccess start= DISABLED

@rem remote Registry (远程登录服务)
@rem 微软: 启用远程使用者修改这个计算机上的登录设定。如果这个服务被停止,登录只能由这个计算机上的使用者修改。如果这个服务被@rem 停用,任何明确依存于它的服务将无法启动。
@rem 补充: 基于安全性的理由,如果没有特别的需求,建议最好关了它,除非你需要远程协助修改你的登录设定
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config remoteRegistry start= DISABLED


@rem remote Procedure Call (RPC) Locator (远程过程调用定位程序)
@rem 微软: 管理 RPC 名称服务数据库。
@rem 补充: 如上说的,一般计算机上很少用到,可以尝试关了
@rem 依存: Workstation
@rem 建议: DISABLED
sc config RpcLocator start= DISABLED

@rem remote Procedure Call (RPC) (远程过程调用,RPC)
@rem 微软: 提供结束点对应程序以及其它 RPC 服务。
@rem 补充: 一些装置都依存它,别去动它
@rem 依存: 太多了,自己去看看
@rem 建议: 自动
sc config RpcSs start= AUTO


@rem Security Accounts Manager (安全性账户管理员)
@rem 微软: 储存本机账户的安全性信息。
@rem 补充: 管理账号和群组原则(gpedit.msc)应用
@rem 依存:remote Procedure Call (RPC)、Distributed Transaction Coordinator
@rem 建议: 自动
sc config SamSs start= AUTO

@rem Smart Card (智慧卡)
@rem 微软: 管理这个计算机所读取智能卡的存取。如果这个服务被停止,这个计算机将无法读取智能卡。如果这个服务被停用,任何明确依@rem 存于它的服务将无法启动。
@rem 补充: 如果你不使用 Smart Card ,那就可以关了
@rem 依存: Plug and Play
@rem 建议: 已停用
sc config SCardSvr start= DISABLED

@rem Task Scheduler (工作排程器)
@rem 微软: 让使用者能够在这个计算机上设定和排定自动的工作。如果停止这个服务,这些工作在它们排定的时间时将不会执行。
@rem 补充: 设定排定自动的工作,像一些定时磁盘扫瞄、病毒定时扫瞄、更新等等
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 自动
sc config Schedule start= AUTO

@rem Secondary Logon
@rem 微软: 启用在其它认证下的起始程序。如果这个服务被停止,这类的登入存取将无法使用。
@rem 补充: 允许多个使用者处理程序,执行分身等
@rem 建议: 自动
sc config seclogon start= AUTO

@rem System Event Notification (系统事件通知)
@rem 微软: 追踪诸如 Windows 登入、网络、和电源事件的系统事件。通知这些事件的 COM+ 事件系统订阅者。
@rem 补充: 如上所说的
@rem 依存: COM+ Event System
@rem 建议: 自动
sc config SENS start= AUTO

@rem Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS)
@rem 微软: 为您的家用网络或小型办公室网络提供网络地址转译、寻址及名称解析服务和/或防止干扰的服务。
@rem 补充: 如果你不使用因特网联机共享(ICS)或是 XP 内含的因特网联机防火墙(ICF)你可以关掉
@rem 依存: Application Layer Gateway Service、Network Connections、Network Location Awareness(NLA)、remote Access Connection @rem Manager
@rem 建议: 已停用
sc config SharedAccess start= DEMAND

@rem Shell Hardware Detection
@rem 微软: 为自动播放硬件事件提供通知。
@rem 补充: 一般使用在记忆卡或是CD装置、DVD装置上
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 自动
sc config ShellHWDetection start= AUTO

@rem Print Spooler (打印多任务缓冲处理器)
@rem 微软: 将档案加载内存中以待稍后打印。
@rem 补充: 如果没有打印机,可以关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config Spooler start= DEMAND

@rem Windows Image Acquisition (WIA) (Windows影像取得程序)
@rem 微软: 为扫描仪和数字相机提供影像撷取服务。
@rem 补充: 如果扫描仪和数字相机内部具有支持WIA功能的话,那就可以直接看到图档,不需要其它的驱动程序,所以没有扫描仪和数字相机@rem 的使用者大可关了
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config stisvc start= DEMAND

@rem MS Software Shadow Copy Provider
@rem 微软: 管理磁盘区阴影复制服务所取得的以软件为主的磁盘区阴影复制。如果停止这个服务,就无法管理以软件为主的磁盘区阴影复制。
@rem 补充: 如上所说的,用来备份的东西,如 MS Backup 程序就需要这个服务
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config swprv start= DISABLED

2007-09-20 15:03:23 回复此发言
3 回复:智能关闭无用服务


@rem Performance Logs and Alerts (效能记录文件及警示)
@rem 微软: 基于事先设定的排程参数,从本机或远程计算机收集效能数据,然后将数据写入记录或?#124;发警讯。如果这个服务被停止,将@rem 不会收集效能信息。如果这个服务被停用,任何明确依存于它的服务将无法启动。
@rem 补充: 没什么价值的服务
@rem 建议: 已停用
sc config SysmonLog start= DISABLED

@rem Telephony (电话语音)
@rem 微软: 为本机计算机上及经由局域网络连接到正在执行此服务的服务器上,控制电话语音装置和 IP 为主语音联机的程序,提供电话语@rem 音 API (TAPI) 支持。
@rem 补充: 一般的拨号调制解调器或是一些 DSL/Cable 可能用到
@rem 依存: Plug and Play、remote Procedure Call (RPC)、remote Access Connection Manager、remote Access Auto Connection @rem Manager
@rem 建议: 手动
sc config TapiSrv start= DEMAND

@rem Terminal Services (终端机服务)
@rem 微软: 允许多位使用者互动连接到同一部计算机、桌面的显示器及到远程计算机的应用程序。远程桌面的加强 (包含系统管理员的 RD)@rem 、快速切换使用者、远程协助和终端机服务器。
@rem 补充: 远程桌面或是远程协助的功能,不需要就关了
@rem 依存:remote Procedure Call (RPC)、Fast User Switching Compatibility、InteractiveLogon
@rem 建议: 已停用
sc config TermService start= DISABLED

@rem Themes
@rem 微软: 提供使用者经验主题管理。
@rem 补充: 很多人使用布景主题,不过如果没有使用的人,那就可以关闭
@rem 建议: 自动
sc config Themes start= AUTO


@rem Distributed Link Tracking Client (分布式连结追踪客户端)
@rem 微软: 维护计算机中或网络网域不同计算机中 NTFS 档案间的连结。
@rem 补充: 维护区网内不同计算机之间的档案连结
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config TrkWks start= DISABLED


@rem Windows User Mode Driver Framework
@rem 启用 Windows 用户模式驱动程序。
sc config UMWdf start= DEMAND


@rem Uninterruptible Power Supply (不断电供电系统)
@rem 微软: 管理连接到这台计算机的不断电电源供应 (UPS)。
@rem 补充: 不断电电源供应 (UPS)一般人有用到吗?除非你的电源供应器有具备此功能,不然就关了
@rem 建议: 已停用
sc config UPS start= DISABLED



@rem Volume Shadow Copy
@rem 微软: 管理及执行用于备份和其它目的的磁盘区卷影复制。如果这个服务被停止,卷影复制将无法用于备份,备份可能会失败。
@rem 补充: 如上所说的,用来备份的?#124;西,如 MS Backup 程序就需要这个服务
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config VSS start= DISABLED

@rem Windows Time (Windows 时间设定)
@rem 微软: 维护在网络上所有客户端及服务器的数据及时间同步处理。如果这个服务停止,将无法进行日期及时间同步处理。如果这个服务@rem 被停用,所有依存的服务都会停止。
@rem 补充: 网络对时校准用的,没必要就关了
@rem 建议: 已停用
sc config W32Time start= DISABLED

@rem WebClient
@rem 微软: 启用 Windows 为主的程序来建立、存取,以及修改因特网为主的档案。如果停止这个服务,这些功能将无法使
@rem 补充: 使用 WebDAV 将档案或数据夹上载到所有的 Web 服务,基于安全性的理由,你可以尝试关闭
@rem 依存: WebDav Client Redirector
@rem 建议: 已停用
sc config WebClient start= DISABLED



@rem Windows Management Instrumentation (WMI)
@rem 微软: 提供公用接口及对象模型,以存取有关操作系统、装置、应用程序及服务的管理信息。如果这个服务已停止,大多数的 Windows @rem 软件将无法正常工作。如果这个服务已停用,所有依存于它的服务都将无法启动。
@rem 补充: 如上说的,是一种提供一个标准的基础结构来监视和管理系统资源的服务,由不得你动他
@rem 依存: Event Log、remote Procedure Call (RPC)
@rem 建议: 自动
sc config winmgmt start= AUTO

@rem Portable Media Serial Number
@rem 微软: Retrieves the serial number of any portable music player connected to your computer
@rem 补充: 透过联机计算机重新取得任何音乐拨放序号?没什么价值的服务
@rem 建议: 已停用
sc config WmdmPmSN start= DISABLED

@rem Windows Management Instrumentation Driver Extensions (Windows Management Instrumentation 驱动程序延伸)
@rem 微软: 提供系统管理信息给予/取自驱动程序。
@rem 补充: Windows Management Instrumentation 的延伸,提供信息用的
@rem 建议: 手动
sc config Wmi start= DEMAND

@rem WMI Performance Adapter
@rem 微软: 提供来自 WMIHiPerf 提供者的效能链接库信息。
@rem 补充: 如上所提
@rem 依存:remote Procedure Call (RPC)
@rem 建议: 已停用
sc config WmiApSrv start= DISABLED

@rem Automatic Updates
@rem 微软: 启用重要 Windows 更新的下载及安装。如果停用此服务,可以手动的从 Windows Update 网站上更新操作系统。
@rem 补充: 允许 Windows 于背景自动联机之下,到 Microsoft Servers 自动检查和下载更@rem 新修补程序
@rem 建议: 已停用
sc config wuauserv start= DISABLED

@rem Wireless Zero Configuration
@rem 微软: 为 802.11 适配卡提供自动设定
@rem 补充: 自动配置无线网络装置,言下之意就是说,除非你有在使用无线网络适配卡装置,那么你才有必要使用这个网络零管理服务
@rem 依存: NDIS Usermode I/O Protocol、remote Procedure Call (RPC)
@rem 建议: 已停用
sc config WZCSVC start= DISABLED


@rem Network Provisioning Service
@rem 在域内为自动网络提供管理 XML 配置文件。
sc config xmlprov start= DEMAND

@rem DCOM Server Process Launcher
@rem 为 DCOM 服务提供加载功能。
sc config DcomLaunch start= AUTO


@rem Fast User Switching Compatibility
@rem 为在多用户下需要协助的应用程序提供管理。依赖RPC。
sc config FastUserSwitchingCompatibility start= DEMAND



@REM System Restore Service
@REM 执行系统还原功能。 要停止服务,请从“我的电脑”的属性中的系统还原选项卡关闭系统还原。
sc config srservice start= DISABLED


@REM SSDP Discovery Service
@REM 启动您家庭网络上的 UPnP 设备的发现。
sc config SSDPSRV start= DISABLED


@rem telnet
@REM 允许远程用户登录到此计算机并运行程序,并支持多种 TCP/IP Telnet 客户,包括基于 UNIX 和 Windows 的计算机。如果此服务停止,远程用户就不能访问程序,任何直接依靠它的服务将会启动失败。
sc config TlntSvr start= DISABLED


@REM Universal Plug and Play Device Host
@REM 为主持通用即插即用设备提供支持。
sc config upnphost start= DEMAND

@REM Security Center
@REM 监视系统安全设置和配置。
sc config wscsvc start= DISABLED


@pause

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

Method one:
c:\>mysql --version
mysql Ver 12.22 Distrib 4.0.17, for Win95/Win98 (i32)

Method two:
c:\>mysql -uroot -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1424 to server version: 4.0.17-nt-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select version();
+---------------+
| version() |
+---------------+
| 4.0.17-nt-log |
+---------------+
1 row in set (0.05 sec)

mysql> select @@version;
+---------------+
| @@VERSION |
+---------------+
| 4.0.17-nt-log |
+---------------+
1 row in set (0.01 sec)

问题1:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.ClassCastException: org.apache.catalina.connector.RequestFacade
程序刚一运行访问就抛出了上面的类型转换异常信息,根据提示信息,找到了导致该异常的代码行:
MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest)request;
MultipartFile file=multipartRequest.getFile("upload");
这个问题花费了我很多时间和精力,查找了很多相关资料之后,发现我的配置文件里少了对multipart解析器的配置:




添加上之后,运行,访问,上面的异常终于没有再出现,但是新的问题又来了

问题2:


org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'multipartResolver' defined in ServletContext resource [/WEB-INF/dispatcher-servlet.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileItemFactory
这次的问题很明确,缺少文件包,添加commons-fileupload-1.2.jar,问题解决,接着又出新问题

问题3:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
添加commons-io-1.3.1,问题解决,
至此,整个程序终于可以完整的运行,正常上传

有时修改在实际应用中,我们会遇到需要加一些服务到windows的服务进程中,但如何加呢?下面通过具体实例做如下介绍:

增加服务(inetsvr.inf):

[Version]
Signature="$WINDOWS NT$"
[DefaultInstall.Services]
AddService=tomcatsvr,,My_AddService_Name
[My_AddService_Name]
DisplayName=Apache Tomcat
Description=Tomcat服务启动。
ServiceType=0x10
StartType=3
ErrorControl=0
ServiceBinary=D:/Tomcat-4.1.31/bin/startup.bat


有时在windows环境下卸载oracle时,不能将所有的服务都卸载掉,这是就需要通过删除服务来进行手工删除windows中的服务:

删除服务(uninstall_inetsvr.inf):

[Version]
Signature="$WINDOWS NT$"
[DefaultInstall.Services]
DelService=OracleOraHome81TNSListener

错误代码:
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'.
错误原因:
由于程序在执行时不能创建连接池.
解决方法
1.在Tomcat 5.0.30中
打开tomcat/conf/server.xml,找到,并在中写入:



type="javax.sql.DataSource"/>



factory
org.apache.commons.dbcp.BasicDataSourceFactory


driverClassName
org.gjt.mm.mysql.Driver


url
jdbc:mysql://localhost:3306/appfuse


username
root


password



maxActive
20


maxIdle
10


maxWait
-1




这样就可以了.

2.在Tomcat5.5.9中
同样在中写入:

prefix="myapp." suffix=".log" timestamp="true"/>
username="test"
password="test"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/appfuse?autoReconnect=true"
maxActive="30"
maxIdle="5"
maxWait="50"
minEvictableIdleTimeMillis="4000"
timeBetweenEvictionRunsMillis="5000"
/>


就能够解决问题了.

prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!这一点可能听起来会有点乱,别急,下面我便通过实例对这一特殊的方法作已下讲解:
  首先,我们要先了解一下类的概念,JavaScript 本身是一种面向对象的语言,它所涉及的元素根据其属性的不同都依附于某一个特定的类。我们所常见的类包括:数组变量(Array)、逻辑变量(Boolean)、日期变量(Date)、结构变量(Function)、数值变量(Number)、对象变量(Object)、字符串变量(String) 等,而相关的类的方法,也是程序员经常用到的(在这里要区分一下类的注意和属性发方法),例如数组的push方法、日期的get系列方法、字符串的split方法等等,
  但是在实际的编程过程中不知道有没有感觉到现有方法的不足?prototype 方法应运而生!下面,将通过实例由浅入深讲解 prototype 的具体使用方法:
1、最简单的例子,了解 prototype:
(1) Number.add(num):作用,数字相加
实现方法:Number.prototype.add = function(num){return(this+num);}
试验:alert((3).add(15)) -> 显示 18
(2) Boolean.rev(): 作用,布尔变量取反
实现方法:Boolean.prototype.rev = function(){return(!this);}
试验:alert((true).rev()) -> 显示 false
是不是很简单?这一节仅仅是告诉读者又这么一种方法,这种方法是这样运用的。
2、已有方法的实现和增强,初识 prototype:
(1) Array.push(new_element)
  作用:在数组末尾加入一个新的元素
  实现方法:
  Array.prototype.push = function(new_element){
this[this.length]=new_element;
return this.length;
}
  让我们进一步来增强他,让他可以一次增加多个元素!
  实现方法:
  
Array.prototype.pushPro = function() {
var currentLength = this.length;
for (var i = 0; i < arguments.length; i++) {
this[currentLength + i] = arguments[i];
}
return this.length;
}
  应该不难看懂吧?以此类推,你可以考虑一下如何通过增强 Array.pop 来实现删除任意位置,任意多个元素(具体代码就不再细说了)
(2) String.length
  作用:这实际上是 String 类的一个属性,但是由于 JavaScript 将全角、半角均视为是一个字符,在一些实际运用中可能会造成一定的问题,现在我们通过 prototype 来弥补这部不足。
  实现方法:
  String.prototype.cnLength = function(){
var arr=this.match(/[^\x00-\xff]/ig);
return this.length+(arr==null?0:arr.length);
}
  试验:alert("EaseWe空间Spaces".cnLength()) -> 显示 16
  这里用到了一些正则表达式的方法和全角字符的编码原理,由于属于另两个比较大的类别,本文不加说明,请参考相关材料。
3、新功能的实现,深入 prototype:在实际编程中所用到的肯定不只是已有方法的增强,更多的实行的功能的要求,
下面我就举两个用 prototype 解决实际问题的例子:
(1) String.left()
  问题:用过 vb 的应该都知道left函数,从字符串左边取 n 个字符,但是不足是将全角、半角均视为是一个字符,
造成在中英文混排的版面中不能截取等长的字符串
  作用:从字符串左边截取 n 个字符,并支持全角半角字符的区分
  实现方法:
  String.prototype.left = function(num,mode){
if(!/\d+/.test(num))return(this);
var str = this.substr(0,num);
if(!mode) return str;
var n = str.Tlength() - str.length;
num = num - parseInt(n/2);
return this.substr(0,num);
}
  试验:
alert("EaseWe空间Spaces".left(8)) -> 显示 EaseWe空间
alert("EaseWe空间Spaces".left(8,true)) -> 显示 EaseWe空
  本方法用到了上面所提到的String.Tlength()方法,自定义方法之间也能组合出一些不错的新方法呀!
(2) Date.DayDiff()
  作用:计算出两个日期型变量的间隔时间(年、月、日、周)
  实现方法:
  Date.prototype.DayDiff = function(cDate,mode){
try{
cDate.getYear();
}catch(e){
return(0);
}
var base =60*60*24*1000;
var result = Math.abs(this - cDate);
switch(mode){
case "y":
result/=base*365;
break;
case "m":
result/=base*365/12;
break;
case "w":
result/=base*7;
break;
default:
result/=base;
break;
}
return(Math.floor(result));
}
  试验:alert((new Date()).DayDiff((new Date(2002,0,1)))) -> 显示 329
alert((new Date()).DayDiff((new Date(2002,0,1)),"m")) -> 显示 10
  当然,也可以进一步扩充,得出响应的小时、分钟,甚至是秒。
(3) Number.fact()
  作用:某一数字的阶乘
  实现方法:
  Number.prototype.fact=function(){
var num = Math.floor(this);
if(num<0)return NaN;
if(num==0 || num==1)
return 1;
else
return (num*(num-1).fact());
}
  试验:alert((4).fact()) -> 显示 24
  这个方法主要是说明了递归的方法在 prototype 方法中也是可行的!

又碰到servlet 输出中文乱码的问题,恼火。研究了一下,有了新的发现和认识。

原始代码:

java 代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter pw = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
pw.print("中文");
}

无论把3、4两句改成gbk还是utf-8,页面访问到的一律是??

一怒之下用wpe抓包,发现无论设为utf-8还是gbk抓到的均为

HTTP 代码
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 2
Date: Thu, 08 Mar 2007 06:04:55 GMT

??

说明3、4两句没起作用,检查代码,尝试把2和三四顺序调整,乱码问题解决。

检查api文档,发现说明如下

PrintWriter getWriter() throws IOException

Returns a PrintWriter object that can send character text to the client. The PrintWriter uses the character encoding returned by getCharacterEncoding(). If the response's character encoding has not been specified as described in getCharacterEncoding (i.e., the method just returns the default value ISO-8859-1), getWriter updates it to ISO-8859-1.

推断getWriter()返回的PrintWriter使用的charactor encoding是在这个函数返回时即已确定的,但到底是返回的PrintWriter内部属性还是运行时的控制,未找到依据。

查看 tomcat中setCharacterEncoding方法的实现时发现如下代码:

java 代码
public void setCharacterEncoding(String charset) {

if (isCommitted())
return;

// Ignore any call from an included servlet
if (included)
return;

// Ignore any call made after the getWriter has been invoked
// The default should be used
if (usingWriter)
return;

coyoteResponse.setCharacterEncoding(charset);
isCharacterEncodingSet = true;
}

其中usingWriter 标志为getPrinteWriter方法中设定,可见其控制逻辑为一旦返回了PrintWriter,本函数即不再生效。但是上述的推断没有进一步的证据。

同时我们发现只有usingWriter标志,却没有usingOutputStream标记。猜测使用ServletOutputStream 输出不受此限制,经测试写出如下代码。

java 代码
ServletOutputStream out = response.getOutputStream();
out.print("中文");

//情况1:正常,浏览器按utf-8方式查看
//response.setContentType("text/html; charset=utf-8");

//情况2:浏览器缺省按简体中文查看,手动设为utf-8方式查看正常
//response.setCharacterEncoding("utf-8");

说明:这种方式不仅不需要在调用getOutputStream()之前设定字符集,甚至在print输出后设定都有效。


查看setCharacterEncoding API文档,进一步发现:

Calling setContentType(java.lang.String) with the String of text/html and calling this method with the String of UTF-8 is equivalent with calling setContentType with the String of text/html; charset=UTF-8.

原来只需要用response.setContentType("text/html; charset=utf-8"); 设定就ok,不需要两次调用。进一步

This method can be called repeatedly to change the character encoding. ......If the character encoding has already been set by setContentType(java.lang.String) or setLocale(java.util.Locale), this method overrides it.

可反复设置,相互覆盖,据此写出如下测试代码

java 代码


//情况1:正常,浏览器按utf-8方式查看
response.setContentType("text/html; charset=gbk");
response.setCharacterEncoding("utf-8");
//情况2:正常,浏览器按简体中文方式查看
//response.setContentType("text/html; charset=utf-8");
//response.setCharacterEncoding("gbk");

PrintWriter pw = response.getWriter();
pw.print("中文");

结论:

1.在servlet中输出中文,如果采用PrintWriter方式,需要在调用getPrintWriter()之前调用setContentType 或者 setCharacterEncoding;采用ServletOutputStream方式,不受此限。

2.setContentType 和 setCharacterEncoding两方法中设定characterEncoding的方法对服务器效果一致,不需要反复调用。在输出文本内容时,采用response.setContentType("text/html; charset=utf-8");似乎更为方便。

detail:

http://community.csdn.net/Expert/TopicView3.asp?id=5675034

Jquery是继prototype之后又一个优秀的Javascrīpt框架 -|yytcpt 发表于 2007-1-8 9:51:00


Jquery是继prototype之后又一个优秀的Javascrīpt框架。对prototype我使用不多,简单了解过。但使用上jquery之后,马上被她的优雅吸引住了。有人使用这样的一比喻来比较prototype和jquery:prototype就像Java,而jquery就像ruby.实际上我比较喜欢java(少接触Ruby 罢了)但是jquery的简单的实用的确有相当大的吸引力啊!在项目里我把jquery作为自已唯一的框架类包。使用其间也有一点点心得,其实这些心得,在jquery的文档上面也可能有讲,不过还是记下来,以备忘罢。


一,找到你了!
还记得$()这个东西吧?prototype还是DWR都使用了这个函数代替document.getElementById()。没错,jquery也跟风了。为达到document.getElementById()的目的,jquery是这样写的:

代码

var someElement = $("#myId");

看起来比其他两个框架的要多了一个#,好,看看下面的用法:
代码
$("div p");(1)
$("div.container")(2)
$("div #msg");(3)
$("table a",context);(4)


在prototype里看过这样的写法吗?第一行代码得到所有<-div>标签下的

元素。第二行代码得到class 为container的<-div>元素,第三行代码得到<-div>标签下面id为msg的元素。第四行代码得到context为上下文的table里面所有的连接元素。
如果你熟悉CSS,Xpath,你会觉得这些写法很眼熟!对了。正是。看出奥妙了吧。jquery就是通过这样的方式来找到Dom对象里面的元素。跟CSS的选择器相类似。

二,Jquery对象?
jquery提供了很多便利的函数,如each(fn),但是使用这些函数的前提是:你使用的对象是Jquer对象。使一个Dom对象成为一个Jquery对象很简单,通过下面一些方式(只是一部分):

代码



var a = $("#cid");(1)
var b = $("

hello

");(2)
var c = document.createElement("table"); var tb = $(c);

三,代替body标签的onload
这个惯例,也许是除了$()之外,用得最多的地方了。下面一段代码:

代码



$(document).ready(function(){
alert("hello");
});(1)

<-body onload="alert('hello');">(2)


上面两段代码是等价的。但代码1的好处是做到表现和逻辑分离。并且可以在不同的js文件中做相同的操作,即$(document).ready (fn)可以在一个页面中重复出现,而不会冲突。基本上Jqeury的很多plugin都是利用这个特性,正因为这个特性,多个plugin共同使用起来,在初始化时不会发生冲突。
不管怎么说,这个惯例可以分离javascrīpt与HTML。推荐使用。

四,事件机制
我大量使用的事件可能就是button的onclick了。以前习惯在input 元素上写onclick = "fn()",使用jquery可以使javascrīpt代码与html代码分离,保持HTML的清洁,还可以很轻松地绑定事件,甚至你可以不知道“事件”这个名词。

代码



$(document).ready(function(){
$("#clear").click(function(){
alert("i am about to clear the table");
});
$("form[0]").submit(validate);
});
function validate(){
//do some form validation
}


五,同一函数实现set&get

代码



$("#msg").html();
$("#msg").html("hello");

上面两行代码,调用了同样的函数。但结果却差别很大。
第一行是返回指定元素的HTML值,第二行则是将hello这串字符设置到指定元素中。jquery的函数大部分有这样的特性。

六,ajax
这是一个ajax横行的时代。多少人,了不了解ajax的都跟着用上一把。呵。使用jquery实现ajax同样简单异常

代码



$.get("search.do",{id:1},rend);
function rend(xml){
alert(xml);
} (1)
$.post("search.do",{id:1},rend);
function rend(xml){
alert(xml);
} (2)

$("#msg").ajaxStart(function(){
this.html("正在加载。。。。");
});(3)
$("#msg").ajaxSuccess(function(){
this.html("加载完成!");
});(4)

这些都是较常用的方法,get和post用法一样。第一个参数是异步请求的url,第二个为参数,第三个回调方法。
3,4的方法会在指定的Dom对象上绑定响应ajax执行的事件。当然,jquery的AJAX相关的函数不仅是这些,有兴趣可以去研究再多。

七,渐入淡出

代码

$("#msg").fadeIn("fast");
$("#msg").fadeOut("slow");

没错,上面两行代码已经分别实现了一个id为Msg的jquery对象的渐入和淡出。做一个像Gmail一样的动态加载通知条,用jquery就那么简单。两个函数接受的参数除了快慢等,还可以接收整型,作为渐入或淡出的完成时间,单位为MS。

八,plugin
这也是一个插件的时代。
jquery插件给我的感觉清一色的清洁,简单。如Jtip,要使用它的功能,只需要在你的元素的class上加上Jtip,并引入jtip.js及其样式即可以了。其他事情插件全包。我喜欢jquery的一个重要原因是发现她已经有了很多很好,很精彩的插件。
写得很烂。可能大家看不出jquery的好处。嗯,光听是没用的,试用一下吧。你会发觉很有趣。
暂时告一段落吧。待有新的发现再来分享。

加一些Jquery的资源:
http://www.visualjquery.com/index.xml 很好的API查询站点
http://jquery.com/demo/thickbox/ 知道lightBox吧,看看Jquery是怎样实现相同的东西
http://www.codylindley.com/blogstuff/js/jtip/ Jtip,实用的提示工具
http://jquery.com/plugins/ 很多牛的插件。
http://15daysofjquery.com/jquery 的15天教程

createElement2

觉得只用insertAdjacentElement比较复杂,就又写了一个


var i=1;
var j=1;

var m=0;

function add(name,postion)
{
if(name=="file"){
m=i;
i++;
}else{
m=j;
j++;
}


var oInputdiv=document.createElement("div");
oInputdiv.id='div'+name+m;
var oInputfile=document.createElement('');
var oInputdel=document.createElement('');
var oInputtext0=document.createTextNode("上报国办:");
var oInputtext1=document.createTextNode("转发专家:");
var oInputtext2=document.createTextNode("通报领导:");

//id用于oInput1删除,name用于controller识别,value用于controller读取
var oInputcheckbox0=document.createElement('');
var oInputcheckbox1=document.createElement('');
var oInputcheckbox2=document.createElement('');

document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputdiv);
document.getElementById('div'+name+m).appendChild(oInputfile);

document.getElementById('div'+name+m).appendChild(oInputtext0);
document.getElementById('div'+name+m).appendChild(oInputcheckbox0);
document.getElementById('div'+name+m).appendChild(oInputtext1);
document.getElementById('div'+name+m).appendChild(oInputcheckbox1);
document.getElementById('div'+name+m).appendChild(oInputtext2);
document.getElementById('div'+name+m).appendChild(oInputcheckbox2);
document.getElementById('div'+name+m).appendChild(oInputdel);

}

function del(id)
{
id.removeNode(true);
}



显然用节点appendChild更方便。

createElement2

觉得只用insertAdjacentElement比较复杂,就又写了一个


var i=1;
var j=1;

var m=0;

function add(name,postion)
{
if(name=="file"){
m=i;
i++;
}else{
m=j;
j++;
}


var oInputdiv=document.createElement("div");
oInputdiv.id='div'+name+m;
var oInputfile=document.createElement('');
var oInputdel=document.createElement('');
var oInputtext0=document.createTextNode("上报国办:");
var oInputtext1=document.createTextNode("转发专家:");
var oInputtext2=document.createTextNode("通报领导:");

//id用于oInput1删除,name用于controller识别,value用于controller读取
var oInputcheckbox0=document.createElement('');
var oInputcheckbox1=document.createElement('');
var oInputcheckbox2=document.createElement('');

document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputdiv);
document.getElementById('div'+name+m).appendChild(oInputfile);

document.getElementById('div'+name+m).appendChild(oInputtext0);
document.getElementById('div'+name+m).appendChild(oInputcheckbox0);
document.getElementById('div'+name+m).appendChild(oInputtext1);
document.getElementById('div'+name+m).appendChild(oInputcheckbox1);
document.getElementById('div'+name+m).appendChild(oInputtext2);
document.getElementById('div'+name+m).appendChild(oInputcheckbox2);
document.getElementById('div'+name+m).appendChild(oInputdel);

}

function del(id)
{
id.removeNode(true);
}



显然用节点appendChild更方便。

createElement

做了一个insertAdjacentElement的方法,以便controller能够读得到file中的路径。

var i=1;
var j=1;

var m=0;

function add(name,postion)
{
if(name=="file"){
m=i;
i++;
}else{
m=j;
j++;
}
if(name=="file"){
m=i;
i++;
}else{
m=j;
j++;
}
var oInput=document.createElement('《input type="file" name="'+name+m+'" id="file" size="10">');
var oInput1=document.createElement('《input type="button" name="del'+i+'" onclick="del('+name+m+'),del(this),del('+name+'shangbao'+m+'),del('+name+'zhuanfa'+m+'),del('+name+'tongbao'+m+'),del('+name+'div_shangbao'+m+'),del('+name+'div_zhuanfa'+m+'),del('+name+'div_tongbao'+m+')" value="删除" class="css_button">');
//id用于oInput1删除,name用于controller识别,value用于controller读取
var oInputcheckbox=document.createElement('《input type=" checkbox" id="'+name+'shangbao'+m+'" name="'+name+'_Shangbao" value="'+name+m+'">');
var oInputcheckbox1=document.createElement('《input type="checkbox" id="'+name+'zhuanfa'+m+'" name="'+name+'_Zhuanfa" value="'+name+m+'">');
var oInputcheckbox2=document.createElement('《input type="checkbox" id="'+name+'tongbao'+m+'" name="'+name+'_Tongbao" value="'+name+m+'">');

var oInputdiv=document.createElement("div");
oInputdiv.id=name+'div_shangbao'+m;
oInputdiv.innerHTML="上报国办";
var oInputdiv1=document.createElement("div");
oInputdiv1.id=name+'div_zhuanfa'+m;
oInputdiv1.innerHTML="转发专家";
var oInputdiv2=document.createElement("div");
oInputdiv2.id=name+'div_tongbao'+m;
oInputdiv2.innerHTML="通报领导";



document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputcheckbox2);
document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputdiv2);

document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputcheckbox1);
document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputdiv1);

document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputcheckbox);
document.getElementById(postion).insertAdjacentElement('AfterEnd',oInputdiv);
document.getElementById(postion).insertAdjacentElement('AfterEnd',oInput1);
document.getElementById(postion).insertAdjacentElement('AfterEnd',oInput);
}

Windows XP里有我们常用到的工具如磁盘清理程序等等,那么它们到底叫什么名字,又躲在硬盘

的哪个地方呢?笔者这就把它们挖掘出来,以后大家再用这些工具的时候就不用一步一步地去找地方了,直

接点击“开始→运行”,再输入程序名就OK了。

1.磁盘清理大师——cleanmgr

用来自动地释放出一部分硬盘空间,并会智能化地进行删除操作。

2.剪贴板查看器——clipbrd

Windows XP中的剪贴板查看器程序较原先Windows 9X/Me的旧版本多出了共享功能,

通过设置权限允许其他网上用户将该剪贴板装入使用。

3.控制面板启动器——control

快速启动控制面板。

4.Windows XP的诊断医生——drwtsn32

Drwtsn32是一个程序错误调试器。运行后会获得并记录系统中程序错误的信息,并创建一个文本文

件drwtsn32.log ,提供错误原因的详细说明,并给出解决问题的建议性操作。

5.DVD播放器——dvdplay

Windows XP提供的一个“免费”的DVD播放器,也就是Windows Media Play

er。

6.自解压文件制作工具——lexpress

利用Iexpress可制作两种自解压文件,一种是标准自解压文件,另一种是安装程序式自解压文件。

7.备份工具——ntbackup

Windows XP中内置的备份工具。

8.IP地址侦测器——nslookup

通过这个IP侦测工具ping就可以轻而易举地得到它们的真正IP地址。

9.注册表编辑器增强版——regedt32

用来修改注册表设置的高级工具。

10.Windows升级程序——wupdmgr

联上网后,可以通过此程序进行Windows的自动升级。

11.共享文件夹设置工具——shrpubw

它的作用与右击一文件夹,选择“共享”基本上等价。

12.Microsoft签字验证工具——sigverif

所谓“签署的文件”,就是被授予Microsoft数字签署的文件。该签署表明,该文件是原始文件的

一模一样的副本。通过microsoft签字验证工具,我们可在计算机上查找已签署和未签署的文件,

也可查看签署文件的身份验证,以确认该文件还没有被篡改。

13.音量控制程序——sndvol32

平时双击任务栏上的小喇叭就会出现的音量控制程序。

14.任务管理器——taskmgr

使用任务管理器可快速查看正在运行的程序的状态,或终止已停止响应的程序,也可以查看CPU和内存使

用的情况。

15.远程连接程序——telnet

Windows自带的纯中文界面的远程连接程序。

16.系统文件检查器——sfc

使用Windows难免会出现系统文件损坏或丢失的毛病,而如果为了几个小小的文件就去重装系统,又

显得稍微麻烦了一些。通过系统文件检查器Sfc.exe,一切都会变得非常简单。


以上16个程序都在系统盘的WINDOWS\SYSTEM32文件夹下。
==================================================================================


17.文件转移向导——migwizWINDOWS\SYSTEM32\usmt文件夹下 

通过它,我们就可以实现系统状态的备份与恢复。

18.系统配置程序——msconfigwindows\pchealth\helpctr\binarie

s文件夹下 


和Windows中的系统配置程序一样,通过这个程序,我们可对系统的一般、system.ini、

win.ini、boot.ini、服务和启动项目进行修改。

ajax 传输表单

function preceping(){
var url = "<%=request.getContextPath()%>/quxian/preCeping.shtml?tp=changyetouzi";
var form = Form.serialize('frmId');
var myAjax = new Ajax.Updater('zongfen',url, {method: 'get', parameters: form});
}


注意prototype的版本

读取factorybean

ClassPathResource s=new ClassPathResource("beans.xml")
XmlBeanFactory x=new XmlBeanFactory(s);
//根路径指定->class文件夹开始找beans.xml

ClassPathXmlApplicationContext cx=new ClassPathXmlApplicationContext("beans.xml");
//根路径指定->class文件夹开始找beans.xml

ApplicationContext c=new FileSystemXmlApplicationContext("beans.xml");
//根路径指定->项目根路径 开始找beans.xml

AfterReturningAdvice

public interface AfterReturningAdvice extends Advice {
void afterReturning(Object returnValue, Method m,Object[] args, Object target) throws Throwable;
}


AfterReturningAdvice直接继承自Advice介面,afterReturning()当中传入的引数有目标方法的返回值、方法实例、引数、与目标物件,afterReturning()方法传回void,若您要中止接下来的应用程式流程,丢出例外是唯一的方式。

1 SQL语句中怎么去掉字段内容右边的空格? SQL SERVER中的是RTRIM( ),ORACLE中呢?
-------------
用法差不多:
SQL> select ltrim(' dfs'),rtrim('dfsdf '),trim(' df df '),ltrim('1112121','1') from dual;

LTRIM('DFS') RTRIM('DFSDF') TRIM('DFDF') LTRIM('1112121','1')
------------ -------------- ------------ --------------------
dfs dfsdf df df 2121

2 SQL SERVER中截取字段内容内容,例如SUBSTRING( fieldname, 1, 2),ORACLE中怎么做?
-------------
用法一样,函数名是substr( fieldname, 1, 2)

3 SQL SERVER中比较日期 select * from table where fieldname>'2005-01-01' ,ORACLE中这样写不行,该怎么写呢?

fieldname是date类型的话,select * from table where fieldname> date '2005-01-01'或者
select * from table where fieldname>to_date('2005-01-01','yyyy-mm-dd')







declare @a varchar(8000)
set @a='aaaa bbb'
select left(@a,charindex(' ',@a)-1)
---测试----
aaaa





declare
i integer:=1;
j integer:=1;
k integer:=1;
cursor c1 is
select t.id,replace(t.name,' ')as realname from bjpuserinfo t where t.name like '% %' and t.accounttype='qiye';
begin
for rec in c1 loop
update bjpuserinfo set name=rec.realname where id=rec.id;
update awardarchive set qiyename=rec.realname where qiyeid=rec.id;
update qiyeinfo set unitname=rec.realname where id=rec.id;
end loop;
end;


正则表达式语法

下面是正则表达式的一些示例:

表达式 匹配
/^\s*$/ 匹配空行。
/\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
/<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/ 匹配 HTML 标记。

下表包含了元字符的完整列表以及它们在正则表达式上下文中的行为:

字符 说明
\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,“n”匹配字符“n”。“\n”匹配换行符。序列“\\”匹配“\”,“\(”匹配“(”。
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与“\n”或“\r”之后的位置匹配。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与“\n”或“\r”之前的位置匹配。
* 零次或多次匹配前面的字符或子表达式。例如,zo* 匹配“z”和“zoo”。* 等效于 {0,}。
+ 一次或多次匹配前面的字符或子表达式。例如,“zo+”与“zo”和“zoo”匹配,但与“z”不匹配。+ 等效于 {1,}。
? 零次或一次匹配前面的字符或子表达式。例如,“do(es)?”匹配“do”或“does”中的“do”。? 等效于 {0,1}。
{n} n 是非负整数。正好匹配 n 次。例如,“o{2}”与“Bob”中的“o”不匹配,但与“food”中的两个“o”匹配。
{n,} n 是非负整数。至少匹配 n 次。例如,“o{2,}”不匹配“Bob”中的“o”,而匹配“foooood”中的所有 o。'o{1,}' 等效于 'o+'。'o{0,}' 等效于 'o*'。
{n,m} mn 是非负整数,其中 n <= m。至少匹配 n 次,至多匹配 m 次。例如,“o{1,3}”匹配“fooooood”中的头三个 o。'o{0,1}' 等效于 'o?'。注意:您不能将空格插入逗号和数字之间。
? 当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是“非贪心的”。“非贪心的”模式匹配搜索到的、尽可能短的字符串,而默认的“贪心的”模式匹配搜索到的、尽可能长的字符串。例如,在字符串“oooo”中,“o+?”只匹配单个“o”,而“o+”匹配所有“o”。
. 匹配除“\n”之外的任何单个字符。若要匹配包括“\n”在内的任意字符,请使用诸如“[\s\S]”之类的模式。
(pattern) 匹配 pattern 并捕获该匹配的子表达式。可以使用 $0...$9 属性从结果“匹配”集合中检索捕获的匹配。若要匹配括号字符 ( ),请使用“\(”或者“\)”。
(?:pattern) 匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“或”字符 (|) 组合模式部件的情况很有用。例如,与“industry|industries”相比,“industr(?:y| ies)”是一个更加经济的表达式。
(?=pattern) 执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,“Windows (?=95| 98| NT| 2000)”与“Windows 2000”中的“Windows”匹配,但不与“Windows 3.1”中的“Windows”匹配。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。
(?!pattern) 执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,“Windows (?!95| 98| NT| 2000)”与“Windows 3.1”中的“Windows”匹配,但不与“Windows 2000”中的“Windows”匹配。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。
x| y xy 匹配。例如,“z| food”与“z”或“food”匹配。“(z| f)ood”与“zood”或“food”匹配。
[xyz] 字符集。匹配包含的任一字符。例如,“[abc]”匹配“plain”中的“a”。
[^xyz] 反向字符集。匹配未包含的任何字符。例如,“[^abc]”匹配“plain”中的“p”。
[a-z] 字符范围。匹配指定范围内的任何字符。例如,“[a-z]”匹配“a”到“z”范围内的任何小写字母。
[^a-z] 反向范围字符。匹配不在指定的范围内的任何字符。例如,“[^a-z]”匹配任何不在“a”到“z”范围内的任何字符。
\b 匹配一个字边界,即字与空格间的位置。例如,“er\b”匹配“never”中的“er”,但不匹配“verb”中的“er”。
\B 非字边界匹配。“er\B”匹配“verb”中的“er”,但不匹配“never”中的“er”。
\cx 匹配由 x 指示的控制字符。例如,\cM 匹配一个 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是“c”字符本身。
\d 数字字符匹配。等效于 [0-9]。
\D 非数字字符匹配。等效于 [^0-9]。
\f 换页符匹配。等效于 \x0c 和 \cL。
\n 换行符匹配。等效于 \x0a 和 \cJ。
\r 匹配一个回车符。等效于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 制表符匹配。与 \x09 和 \cI 等效。
\v 垂直制表符匹配。与 \x0b 和 \cK 等效。
\w 匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。
\W 任何非字字符匹配。与“[^A-Za-z0-9_]”等效。
\xn 匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如,“\x41”匹配“A”。“\x041”与“\x04”&“1”等效。允许在正则表达式中使用 ASCII 代码。
\num 匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。例如,“(.)\1”匹配两个连续的相同字符。
\n 标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式,那么 n 是反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码。
\nm 标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获,那么 n 是反向引用,后面跟 m。如果前面的条件均不存在,那么当 n m 是八进制数 (0-7) 时,\nm 匹配八进制转义码 nm
\nml n 是八进制数 (0-3),ml 是八进制数 (0-7) 时,匹配八进制转义码 nml
\un 匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,\u00A9 匹配版权符号 (©)。

onpopup

/**//*
** ==================================================================================================
** 类名:CLASS_MSN_MESSAGE
** 功能:提供类似MSN消息框
** 示例:
---------------------------------------------------------------------------------------------------

var MSG = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封消息","今天请我吃饭哈");
MSG.show();

---------------------------------------------------------------------------------------------------
** 作者:ttyp
** 邮件:ttyp@21cn.com
** 日期:2005-3-18
** ==================================================================================================
**/


/**//*
* 消息构造
*/
function CLASS_MSN_MESSAGE(id,width,height,caption,title,message,target,action){
this.id = id;
this.title = title;
this.caption= caption;
this.message= message;
this.target = target;
this.action = action;
this.width = width?width:200;
this.height = height?height:120;
this.timeout= 150;
this.speed = 20;
this.step = 1;
this.right = screen.width -1;
this.bottom = screen.height;
this.left = this.right - this.width;
this.top = this.bottom - this.height;
this.timer = 0;
this.pause = false;
this.close = false;
this.autoHide = true;
}

/**//*
* 隐藏消息方法
*/
CLASS_MSN_MESSAGE.prototype.hide = function(){
if(this.onunload()){

var offset = this.height>this.bottom-this.top?this.height:this.bottom-this.top;
var me = this;

if(this.timer>0){
window.clearInterval(me.timer);
}

var fun = function(){
if(me.pause==false||me.close){
var x = me.left;
var y = 0;
var width = me.width;
var height = 0;
if(me.offset>0){
height = me.offset;
}

y = me.bottom - height;

if(y>=me.bottom){
window.clearInterval(me.timer);
me.Pop.hide();
} else {
me.offset = me.offset - me.step;
}
me.Pop.show(x,y,width,height);
}
}

this.timer = window.setInterval(fun,this.speed)
}
}

/**//*
* 消息卸载事件,可以重写
*/
CLASS_MSN_MESSAGE.prototype.onunload = function() {
return true;
}
/**//*
* 消息命令事件,要实现自己的连接,请重写它
*
*/
CLASS_MSN_MESSAGE.prototype.oncommand = function(){
//this.close = true;
this.hide();
window.open("http://www.baidu.com");

}
/**//*
* 消息显示方法
*/
CLASS_MSN_MESSAGE.prototype.show = function(){

var oPopup = window.createPopup(); //IE5.5+

this.Pop = oPopup;

var w = this.width;
var h = this.height;

var str = "

"
str += ""
str += ""
str += ""
str += ""
str += ""
str += ""
str += ""
str += ""
str += ""
str += "
" + this.caption + ""
str += "×
"
str += "
" + this.title + "

"
str += ""
str += "
"
str += "
"
str += "
"

oPopup.document.body.innerHTML = str;


this.offset = 0;
var me = this;

oPopup.document.body.onmouseover = function(){me.pause=true;}
oPopup.document.body.onmouseout = function(){me.pause=false;}

var fun = function(){
var x = me.left;
var y = 0;
var width = me.width;
var height = me.height;

if(me.offset>me.height){
height = me.height;
} else {
height = me.offset;
}

y = me.bottom - me.offset;
if(y<=me.top){
me.timeout--;
if(me.timeout==0){
window.clearInterval(me.timer);
if(me.autoHide){
me.hide();
}
}
} else {
me.offset = me.offset + me.step;
}
me.Pop.show(x,y,width,height);

}

this.timer = window.setInterval(fun,this.speed)



var btClose = oPopup.document.getElementById("btSysClose");

btClose.onclick = function(){
me.close = true;
me.hide();
}

var btCommand = oPopup.document.getElementById("btCommand");
btCommand.onclick = function(){
me.oncommand();
}
var ommand = oPopup.document.getElementById("ommand");
ommand.onclick = function(){
//this.close = true;
me.hide();
window.open(ommand.href);
}
}
/**//*
** 设置速度方法
**/
CLASS_MSN_MESSAGE.prototype.speed = function(s){
var t = 20;
try {
t = praseInt(s);
} catch(e){}
this.speed = t;
}
/**//*
** 设置步长方法
**/
CLASS_MSN_MESSAGE.prototype.step = function(s){
var t = 1;
try {
t = praseInt(s);
} catch(e){}
this.step = t;
}

CLASS_MSN_MESSAGE.prototype.rect = function(left,right,top,bottom){
try {
this.left = left !=null?left:this.right-this.width;
this.right = right !=null?right:this.left +this.width;
this.bottom = bottom!=null?(bottom>screen.height?screen.height:bottom):screen.height;
this.top = top !=null?top:this.bottom - this.height;
} catch(e){}
}
var MSG1 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有1封消息","今天请我吃饭哈");
MSG1.rect(null,null,null,screen.height-50);
//MSG1.speed = 10;
//MSG1.step = 5;
//alert(MSG1.top);
MSG1.show();

//同时两个有闪烁,只能用层代替了,不过层不跨框架
//var MSG2 = new CLASS_MSN_MESSAGE("aa",200,120,"短消息提示:","您有2封消息","好的啊");
//MSG2.rect(100,null,null,screen.height);
//MSG2.show();

今天要在javascript中将一个字符串里的所有的'!@#$',替换成',',结果发现只能替换掉一个,后来查了一下才回忆起来javascript中的replace只能替换掉第一个匹配项。

网上提供的方法主要有两种,一种为通过indexof查看是否还存在匹配项,然后写循环替换,这样也很好。

更好的方案是通过写正则表达式来解决这个问题,replace(/要匹配的字符串/g,要替换的字符串)

网上的帖子大都是互相转载的,居的例子都是一个replace(/\-/g,'!'),但是如果要匹配的字符串长度大于1,究竟怎样写呢。

其实很简单,如果需要匹配的字符串只是字母一类的,例如abcde,那就可以直接replace(/abcde/g,'!')

如果含有特殊字符,需要在特殊字符前面转义(在字符前面加上\),当然每个字符都转义也可以的。例如!@#$,就可以这样写replace(/\!\@\#\$/g,',')


 
Copyright 2005-2007. Hello Wiki designed by Fen, Blogger Templates by Blogcrowds.