﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-象棋-美女-编程</title><link>http://www.blogjava.net/diego-liu/</link><description>她叫小雪</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 01:16:42 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 01:16:42 GMT</pubDate><ttl>60</ttl><item><title>什么是Spring，第1部分(转)</title><link>http://www.blogjava.net/diego-liu/archive/2006/05/31/49260.html</link><dc:creator>潜心</dc:creator><author>潜心</author><pubDate>Wed, 31 May 2006 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/diego-liu/archive/2006/05/31/49260.html</guid><wfw:comment>http://www.blogjava.net/diego-liu/comments/49260.html</wfw:comment><comments>http://www.blogjava.net/diego-liu/archive/2006/05/31/49260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/diego-liu/comments/commentRss/49260.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/diego-liu/services/trackbacks/49260.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td height="64">时间：2006-03-13<br />作者：<a href="http://dev2dev.bea.com.cn/author/411.html">Bruce A. Tate</a>, <a href="http://dev2dev.bea.com.cn/author/422.html">Justin Gehtland</a><br />浏览次数：
<script language="JavaScript" src="http://203.81.25.103/cgi-bin/beadevcount.cgi?d_id=746" type="text/JavaScript"></script>
 4784 <br />本文关键字：<a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&amp;keywords=Spring">Spring</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&amp;keywords=Spring framework">Spring framework</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&amp;keywords=轻量级容器">轻量级容器</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&amp;keywords=IoC">IoC</a></td>
								<td>
										<table class="box_content" cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td>
																		<span class="h2b">文章工具</span>
																		<br />
																		<img height="10" alt="推荐给朋友" src="http://dev2dev.bea.com.cn/images/letter001.gif" width="19" align="absMiddle" /> <a href="javascript:sendmail()">推荐给朋友</a><br /><img height="18" alt="打印文章" src="http://dev2dev.bea.com.cn/images/print001.gif" width="19" align="absMiddle" /> <a href="javascript:window.print()">打印文章</a></td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<!-- 提取技术文章 -->
		<div class="beas">
				<img height="1" alt="" src="http://dev2dev.bea.com.cn/images/dot6B6B6B.gif" width="100%" />
		</div>
		<h3>Spring</h3>
		<p>　　Spring是一个轻量级容器，它所带的包装器使许多不同的服务和框架更易于使用。轻量级容器接受任何JavaBean，而不是只接受特定类型的组件。</p>
		<p>　　“Spring并非仅仅是一个‘轻量级容器’。”Justin Gehtland这样说，“它使构建J2EE应用程序的<a href="http://www.onjava.com/pub/a/onjava/2005/10/05/what-is-spring.html#" target="_blank">Java开发人员</a>可以直达现实域问题的核心，而不是在为域提供服务的细节方面花费大量时间。”Gehtland和Bruce Tate是《<a href="http://www.oreilly.com/catalog/springadn/toc.html" target="_blank">Spring: A Developer's Notebook</a>》一书的合著者，该书著述严谨，将帮助读者快速掌握新的Spring开源框架。《Spring: A Developer's Notebook》一书共分十章，其中包含大量代码以及一些准确演示Spring用法的例子和实际应用程序。</p>
		<p>　　今天，我们将专门介绍这个两部分书摘系列所摘录的该书中两章的第一章。本系列将帮助读者理解如何使用Spring创建简单、整洁且高效的应用程序。</p>
		<p>　　在本周所摘录的第1章“入门”中，作者Tate和Gehtland将采用一个简单的应用程序，演示如何使其自动化，并使其可用于Spring。（在下周的第2部分中，作者将阐明Spring如何帮助开发简单、整洁、基于web的用户界面，该部分内容摘自第2章“构建用户界面”。）</p>
		<p>　　您可以下载《Spring: A Developer's Notebook》<a href="http://dev2dev.bea.com.cn/bbs/download_user.jsp?d_id=94">第1章的PDF文档</a>。该文件大小为717K。</p>
		<p>　　编者注：第1章已更新，更正了该书第一版中的一些问题。这里我们摘录的是新版本，其封面有“Updated”字样的黑色标志。</p>
		<p>原文出处:<a href="http://www.onjava.com/pub/a/onjava/2005/10/05/what-is-spring.html" target="_blank">http://www.onjava.com/pub/a/onjava/2005/10/05/what-is-spring.html</a></p>
		<!--文章其他信息-->
		<div class="dot001">
				<img height="1" alt="" src="http://dev2dev.bea.com.cn/images/_.gif" width="100%" />
		</div>
		<table cellspacing="0" cellpadding="3" width="100%" border="0">
				<tbody>
						<tr valign="bottom">
								<td colspan="2" height="20"> <span class="h2b">作者简介</span></td>
						</tr>
						<tr>
								<td valign="top" align="middle" width="0">
								</td>
								<td>
										<a href="http://www.onjava.com/pub/au/1794" target="_blank">Bruce A.Tate</a> 是位于德克萨斯州首府奥斯汀的J2Life，LLC公司的独立顾问。他拥有15年软件开发经验，并且是4本书的作者，包括畅销书《Bitter Java》以及最近出版的《Bitter EJB》和<a href="http://www.oreilly.com/catalog/bfljava/" target="_blank">《Better,Faster,Lighter Java》</a>（O'Reilly）。他擅长技术写作和设计审计，特别是数据。他还是一名山地车手和皮划艇手，也是2个孩子的父亲。</td>
						</tr>
						<tr>
								<td valign="top" align="middle" width="0">
								</td>
								<td>Justin Gehtland 是一个程序员、作者、导师和指导员，他专攻现实世界软件应用程序。</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.blogjava.net/diego-liu/aggbug/49260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/diego-liu/" target="_blank">潜心</a> 2006-05-31 15:15 <a href="http://www.blogjava.net/diego-liu/archive/2006/05/31/49260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java/JSP中文乱码问题解决心得</title><link>http://www.blogjava.net/diego-liu/archive/2006/05/31/49212.html</link><dc:creator>潜心</dc:creator><author>潜心</author><pubDate>Wed, 31 May 2006 03:51:00 GMT</pubDate><guid>http://www.blogjava.net/diego-liu/archive/2006/05/31/49212.html</guid><wfw:comment>http://www.blogjava.net/diego-liu/comments/49212.html</wfw:comment><comments>http://www.blogjava.net/diego-liu/archive/2006/05/31/49212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/diego-liu/comments/commentRss/49212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/diego-liu/services/trackbacks/49212.html</trackback:ping><description><![CDATA[
		<h3 class="title">Java/JSP中文乱码问题解决心得</h3>
		<p>作者信息：liqian  liqianbnu@126.com   http://202.112.88.39/liqian/<br />文章原始出处：http://202.112.88.39/liqian/000271.html</p>
		<p>自从接触Java和JSP以来，就不断与Java的中文乱码问题打交道，现在终于得到了彻底的解决，现将我们的解决心得与大家共享。</p>
		<p>
				<b>一、Java中文问题的由来</b>
		</p>
		<p>Java的内核和class文件是基于unicode的，这使Java程序具有良好的跨平台性，但也带来了一些中文乱码问题的麻烦。原因主要有两方面，Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。</p>
		<p>首先Java（包括JSP）源文件中很可能包含有中文，而Java和JSP源文件的保存方式是基于字节流的，如果Java和JSP编译成class文件过程中，使用的编码方式与源文件的编码不一致，就会出现乱码。基于这种乱码，建议在Java文件中尽量不要写中文（注释部分不参与编译，写中文没关系），如果必须写的话，尽量手动带参数－ecoding GBK或－ecoding gb2312编译；对于JSP，在文件头加上&lt;%@ page contentType="text/html;charset=GBK"%&gt;或&lt;%@ page contentType="text/html;charset=gb2312"%&gt;基本上就能解决这类乱码问题。</p>
		<p>本文要重点讨论的是第二类乱码，即Java程序与其他存储媒介交互时产生的乱码。很多存储媒介，如数据库，文件，流等的存储方式都是基于字节流的，Java程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换，具体情况如下：</p>
		<p>从页面form提交数据到java程序 byte－&gt;char<br />从java程序到页面显示 char—&gt;byte</p>
		<p>从数据库到java程序 byte—&gt;char<br />从java程序到数据库 char—&gt;byte</p>
		<p>从文件到java程序 byte－&gt;char<br />从java程序到文件 char－&gt;byte</p>
		<p>从流到java程序 byte－&gt;char<br />从java程序到流 char－&gt;byte</p>
		<p>如果在以上转换过程中使用的编码方式与字节原有的编码不一致，很可能就会出现乱码。</p>
		<p>
				<b>二、解决方法</b>
				<br />
				<br />前面已经提到了Java程序与其他媒介交互时字符和字节的转换过程，如果这些转换过程中容易产生乱码。解决这些乱码问题的关键在于确保转换时使用的编码方式与字节原有的编码方式保持一致，下面分别论述（Java或JSP自身产生的乱码请参看第一部分）。</p>
		<p>
				<b>1、JSP与页面参数之间的乱码</b>
				<br />JSP获取页面参数时一般采用系统默认的编码方式，如果页面参数的编码类型和系统默认的编码类型不一致，很可能就会出现乱码。解决这类乱码问题的基本方法是在页面获取参数之前，强制指定request获取参数的编码方式：request.setCharacterEncoding("GBK")或request.setCharacterEncoding("gb2312")。<br />如果在JSP将变量输出到页面时出现了乱码，可以通过设置response.setContentType("text/html;charset=GBK")或response.setContentType("text/html;charset=gb2312")解决。<br />如果不想在每个文件里都写这样两句话，更简洁的办法是使用Servlet规范中的过虑器指定编码，过滤器的在web.xml中的典型配置和主要代码如下：<br />web.xml:</p>
		<p>&lt;filter&gt;<br />&lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt;<br />&lt;filter-class&gt;net.vschool.web.CharacterEncodingFilter&lt;/filter-class&gt;<br />&lt;init-param&gt;<br />&lt;param-name&gt;encoding&lt;/param-name&gt;<br />&lt;param-value&gt;GBK&lt;/param-value&gt;<br />&lt;/init-param&gt;<br />&lt;/filter&gt;<br />&lt;filter-mapping&gt;<br />&lt;filter-name&gt;CharacterEncodingFilter&lt;/filter-name&gt;<br />&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&lt;/filter-mapping&gt;</p>
		<p>CharacterEncodingFilter.java:</p>
		<p>public class CharacterEncodingFilter implements Filter <br />{</p>
		<p>protected String encoding = null; </p>
		<p>public void init(FilterConfig filterConfig) throws ServletException <br />{<br />this.encoding = filterConfig.getInitParameter("encoding");<br />}</p>
		<p>public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException <br />{<br />request.setCharacterEncoding(encoding);<br />response.setContentType("text/html;charset="+encoding);<br />chain.doFilter(request, response);<br />}</p>
		<p>}</p>
		<p>
				<br />
				<b>2、Java与数据库之间的乱码</b>
				<br />大部分数据库都支持以unicode编码方式，所以解决Java与数据库之间的乱码问题比较明智的方式是直接使用unicode编码与数据库交互。很多数据库驱动自动支持unicode，如Microsoft的SQLServer驱动。其他大部分数据库驱动，可以在驱动的url参数中指定，如如mm的mysql驱动：jdbc:mysql://localhost/WEBCLDB?useUnicode=true&amp;characterEncoding=GBK。</p>
		<p>
				<b>3、Java与文件/流之间的乱码</b>
				<br />Java读写文件最常用的类是FileInputStream/FileOutputStream和FileReader/FileWriter。其中FileInputStream和FileOutputStream是基于字节流的，常用于读写二进制文件。读写字符文件建议使用基于字符的FileReader和FileWriter，省去了字节与字符之间的转换。但这两个类的构造函数默认使用系统的编码方式，如果文件内容与系统编码方式不一致，可能会出现乱码。在这种情况下，建议使用FileReader和FileWriter的父类：InputStreamReader/OutputStreamWriter，它们也是基于字符的，但在构造函数中可以指定编码类型：InputStreamReader(InputStream in, Charset cs) 和OutputStreamWriter(OutputStream out, Charset cs)。 </p>
		<p>
				<b>4、其他</b>
				<br />上面提到的方法应该能解决大部分乱码问题，如果在其他地方还出现乱码，可能需要手动修改代码。解决Java乱码问题的关键在于在字节与字符的转换过程中，你必须知道原来字节或转换后的字节的编码方式，转换时采用的编码必须与这个编码方式保持一致。我们以前使用Resin服务器，使用smartUpload组件上传文件，上传文件同时传递的中文参数获取没有乱码问题。当在Linux中把Resin设置成服务后，上传文件同时的中文参数获取出现了乱码。这个问题困扰了我们很久，后来我们分析smartUpload组件的源文件，因为文件上传采用的是字节流的方式，里面包含的参数名称和值也是字节流的方式传递的。smartUpload组件读取字节流后再将参数名称和值从字节流中解析出来，问题就出现在smartUpload将字节流转换成字符串时采用了系统默认的编码，而将Resin设置成服务后，系统默认的编码可能发生了改变，因此出现了乱码。后来，我们更改了smartUpload的源文件，增加了一个属性charset和setCharset(String)方法，将upload()方法中提取参数语句：<br />String value = new String(m_binArray, m_startData, (m_endData - m_startData) + 1 );<br />改成了<br />String value = new String(m_binArray, m_startData, (m_endData - m_startData) + 1, charset );<br />终于解决了这个乱码问题。</p>
		<p>
				<b>三、后记</b>
				<br />接触Java和JSP已经有一年多了，这一年来最大的收获是越来越喜欢上了Java，开始把问题当作乐事去研究，没有了以前的恐惧心理，我相信我会继续坚持下去。这一年来，从网上学习了很多同行的宝贵经验，在此表示感谢。这是我第一篇自己总结的Java学习心得，由于水平有限，本文中偏颇和错误之处，欢迎指正。如果对你有些价值，在保留作者信息和文章原始出处的前提下可以随处转载。<br />撰写该文之前已参考了很多关于Java中文问题的文章，其中影响比较大的有owen1944在“Java研究组织”中发表的《这是我们公司总结的一些关于中文乱码问题的一些解决方案和经验和大家分享！》等。本文谈到的解决方法已应用到<a href="http://www.webcl.net.cn/" target="_blank">“基于网络的协作学习系统－WebCL”</a>等项目中，并通过资源绑定的方式实现了该平台中文文两个版本的即时切换。Google根据浏览器自动选择语言，一个页面同时显示多种语言的国际化应用和车东的<a href="http://www.chedong.com/tech/hello_unicode.html" target="_blank">《Java中文处理学习笔记——Hello Unicode》</a>一文引起了我极大的兴趣，日后想将继续探讨Java的国际化问题，欢迎大家一起讨论。<br /></p>
<img src ="http://www.blogjava.net/diego-liu/aggbug/49212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/diego-liu/" target="_blank">潜心</a> 2006-05-31 11:51 <a href="http://www.blogjava.net/diego-liu/archive/2006/05/31/49212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JavaBean作网站计数器(收藏)</title><link>http://www.blogjava.net/diego-liu/archive/2006/05/29/48708.html</link><dc:creator>潜心</dc:creator><author>潜心</author><pubDate>Mon, 29 May 2006 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/diego-liu/archive/2006/05/29/48708.html</guid><wfw:comment>http://www.blogjava.net/diego-liu/comments/48708.html</wfw:comment><comments>http://www.blogjava.net/diego-liu/archive/2006/05/29/48708.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/diego-liu/comments/commentRss/48708.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/diego-liu/services/trackbacks/48708.html</trackback:ping><description><![CDATA[
		<p>Public class Counter<br />{ long count=0; <br />  public long getCount()<br />   { <br />    return count;<br />   }<br />  public synchronized long setCount()<br />   {count++; <br />    return count;<br />   }<br />}</p>
		<p>&lt;%@ page contentType="text/html;charset=GB2312" %&gt;<br />&lt;%@ page import="Counter" %&gt;<br />&lt;jsp:useBean id="counter" class="Counter" scope="application"&gt;<br />&lt;/jsp:useBean&gt;<br />&lt;HTML&gt;<br />&lt;head&gt;<br />&lt;title&gt;用JavaBean作网站计数器&lt;/title&gt;<br />&lt;/head&gt;<br />&lt;BODY&gt;<br />    &lt;% if(session.isNew())//如果是一个新的会话<br />          counter.setCount();<br />    %&gt;<br />&lt;P&gt;&lt;P&gt;欢迎访问本站，您是第<br />    &lt;%=counter.getCount()%&gt;<br />个访问用户。<br />&lt;/BODY&gt;<br />&lt;/HTML&gt;</p>
<img src ="http://www.blogjava.net/diego-liu/aggbug/48708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/diego-liu/" target="_blank">潜心</a> 2006-05-29 11:43 <a href="http://www.blogjava.net/diego-liu/archive/2006/05/29/48708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vi指令完整版(收藏)</title><link>http://www.blogjava.net/diego-liu/archive/2006/05/29/48705.html</link><dc:creator>潜心</dc:creator><author>潜心</author><pubDate>Mon, 29 May 2006 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/diego-liu/archive/2006/05/29/48705.html</guid><wfw:comment>http://www.blogjava.net/diego-liu/comments/48705.html</wfw:comment><comments>http://www.blogjava.net/diego-liu/archive/2006/05/29/48705.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/diego-liu/comments/commentRss/48705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/diego-liu/services/trackbacks/48705.html</trackback:ping><description><![CDATA[
		<pre>vi指令說明(完整版)</pre>
		<pre>.vi 的操作模式
==============
        vi 提供兩種操作模式：輸入模式(insert mode)和指令模式(command mode)
        。當使用者進入 vi 後，即處在指令模式下，此刻鍵入之任何字元皆被視為
        指令。在此模式下可進行刪除、修改等動作。若要輸入資料，則需進入輸入
        模式。</pre>
		<pre>.輸入模式
=========
        如何進入輸入模式
                a (append)      由游標之後加入資料。
                A               由該行之末加入資料。
                i (insert)      由游標之前加入資料。
                I               由該行之首加入資料。
                o (open)        新增一行於該行之下供輸入資料之用。
                O               新增一行於該行之上供輸入資料之用。</pre>
		<pre>        如何離開輸入模式
                《ESC》 結束輸入模式。</pre>
		<pre>.指令模式
=========
游標之移動
        h       向左移一個字元。
        j       向上移一個字元。
        k       向下移一個字元。
        l       向右移一個字元。
        0       移至該行之首
        $       移至該行之末。
        ^       移至該行的第一個字元處。
        H       移至視窗的第一列。
        M       移至視窗的中間那列。
        L       移至視窗的最後一列。
        G       移至該檔案的最後一列。
        +       移至下一列的第一個字元處。
        -       移至上一列的第一個字元處。
        (       移至該句之首。 (註一)
        )       移至該句之末。
        {       移至該段落之首。 (註二)
        }       移至該段落之末。
        nG      移至該檔案的第 n 列。
        n+      移至游標所在位置之後的第 n 列。
        n-      移至游標所在位置之前的第 n 列。
        &lt;Ctrl&gt;&lt;g&gt;       會顯示該行之行號、檔案名稱、檔案中最末行之行號、游標
                        所在行號佔總行號之百分比。</pre>
		<pre>        註一：句子(sentence)在vi中是指以『！』、『.』或『？』結束的一串字。
        註二：段落(paragraph)在vi中是指以空白行隔開的文字。</pre>
		<pre>.視窗的移動
===========
        &lt;Ctrl&gt;&lt;f&gt;       視窗往下捲一頁。
        &lt;Ctrl&gt;&lt;b&gt;       視窗往上捲一頁。
        &lt;Ctrl&gt;&lt;d&gt;       視窗往下捲半頁。
        &lt;Ctrl&gt;&lt;u&gt;       視窗往上捲半頁。
        &lt;Ctrl&gt;&lt;e&gt;       視窗往下捲一行。
        &lt;Ctrl&gt;&lt;y&gt;       視窗往上捲一行。</pre>
		<pre>.刪除、複製及修改指令介紹 (此單元較少使用)
=========================
        d(delete)、c(change)和y(yank)這一類的指令在 vi 中的指令格式為：
        Operator + Scope = command
        (運算子)   (範圍)
        運算子：
        d       刪除指令。刪除資料，但會將刪除資料複製到記憶體緩衝區。
        y       將資料(字組、行列、句子或段落)複製到緩衝區。
        p       放置(put)指令，與 d 和 y 配和使用。可將最後delete或yank的資
                料放置於游標所在位置之行列下。
        c       修改(change)指令，類似delete與insert的組和。刪除一個字組、句
                子等之資料，並插入新鍵資料。</pre>
		<pre>        範圍：
        e       由游標所在位置至該字串的最後一個字元。
        w       由游標所在位置至下一個字串的第一個字元。
        b       由游標所在位置至前一個字串的第一個字元。
        $       由游標所在位置至該行的最後一個字元。
        0       由游標所在位置至該行的第一個字元。
        )       由游標所在位置至下一個句子的第一個字元。
        (       由游標所在位置至該句子的第一個字元。
        {       由游標所在位置至該段落的最後一個字元。
        }       由游標所在位置至該段落的第一個字元。</pre>
		<pre>        整行動作
        dd      刪除整行。
        D       以行為單位，刪除游標後之所有字元。
        cc      修改整行的內容。
        yy      yank整行，使游標所在該行複製到記憶體緩衝區。</pre>
		<pre>.刪除與修改
===========
        x       刪除游標所在該字元。
        X       刪除游標所在之前一字元。
        dd      刪除游標所在該行。
        r       用接於此指令之後的字元取代(replace)游標所在字元。
                如： ra 將游標所在字元以 a 取代之。
        R       進入取代狀態，直到《ESC》為止。
        s       刪除游標所在之字元，並進入輸入模式直到《ESC》。
        S       刪除游標所在之該行資料，並進入輸入模式直到《ESC》。</pre>
		<pre>.搬移與複製
==========
        利用 delete 及 put 指令可完成資料搬移之目的。
        利用 yank 及 put 指令可完成資料複製之目的。
        yank 和 delete 可將指定的資料複製到記憶體緩衝區，而藉由 put 指令
        可將緩衝區內的資料複製到螢幕上。
        例：
        搬移一行        ‧在該行執行 dd
                        ‧游標移至目的地
                        ‧執行 p
        複製一行        ‧在該行執行 yy
                        ‧游標移至目的地
                        ‧執行 p</pre>
		<pre>.指令重複
=========
        在指令模式中，可在指令前面加入一數字 n，則此指令動作會重複執行 n
        次。
        例：
        刪除10行                ‧10dd
        複製10行                ‧10yy
                                ‧游標移至目的地
                                ‧p
        指標往下移10行  ‧10j</pre>
		<pre>.取消前一動作(Undo)
===================
        即復原執行上一指令前的內容。</pre>
		<pre>        u       恢復最後一個指令之前的結果。
        U       恢復游標該行之所有改變。</pre>
		<pre>.搜尋
=====
        在vi中可搜尋某一字串，使游標移至該處。</pre>
		<pre>        /字串           往游標之後尋找該字串。
        ?字串           往游標之前尋找該字串。
        n               往下繼續尋找下一個相同的字串。
        N               往上繼續尋找下一個相同的字串。</pre>
		<pre>.資料的連接
===========
        J       句子的連接。將游標所在之下一行連接至游標該行的後面。</pre>
		<pre>        若某行資料太長亦可將其分成兩行，只要將游標移至分開點，進入輸入模式
        (可利用 a、i等指令)再按《Enter》即可。</pre>
		<pre>.環境的設定
===========
        ：set nu                設定資料的行號。
        ：set nonu              取消行號設定。
        ：set ai                自動內縮。
        ：set noai              取消自動內縮。</pre>
		<pre>        自動內縮(automatic indentation)
        在編輯文件或程式時，有時會遇到需要內縮的狀況，『：set ai』即提供自
        動內縮的功能，用下例解釋之：
        ‧vi test
        ‧(進入編輯視窗後)
          this is the test for auto indent
          《Tab》start indent           ← ：set ai (設自動內縮)
          《Tab》data
          《Tab》data
          《Tab》data                   ← ：set noai (取消自動內縮)
        the end of auto indent.
        ‧註：&lt;Ctrl&gt;&lt;d&gt; 可刪除《Tab》字元。</pre>
		<pre>.ex指令
=======
        讀寫資料
        ：w                     將緩衝區的資料寫入磁碟中。
        ：10,20w test   將第10行至第20行的資料寫入test檔案。
        ：10,20w&gt;&gt;test  將第10行至第20行的資料加在test檔案之後。
        ：r test                將test檔案的資料讀入編輯緩衝區的最後。</pre>
		<pre>        刪除、複製及搬移
        ：10,20d                刪除第10行至第20行的資料。
        ：10d                   刪除第10行的資料。
        ：%d                    刪除整個編輯緩衝區。
        ：10,20co30             將第10行至第20行的資料複製至第30行之後。
        ：10,20mo30             將第10行至第20行的資料搬移至第30行之後。</pre>
		<pre>        字串搜尋與取代
        s(substitute)指令可搜尋某行列範圍。
        g(global)指令則可搜尋整個編輯緩衝區的資料。
        s指令以第一個滿足該條件的字串為其取代的對象，若該行有數個滿足該條
        件的字串，也僅能取代第一個，若想取代所有的字串則需加上g參數。
        ：1,$s/old/new/g                將檔案中所有的『old』改成『new』。
        ：10,20s/^/   /         將第10行至第20行資料的最前面插入5個空白。
        ：%s/old/new/g          將編輯緩衝區中所有的『old』改成『new』。</pre>
		<pre>.恢復編輯時被中斷的檔案
=======================
        在編輯過程中，若系統當掉或連線中斷，而緩衝區的資料並還未
        被寫回磁碟時，當再度回到系統，執行下列指令即可回復中斷前
        的檔案內容。
        %vi -r filename</pre>
		<pre>.編輯多個檔案
=============
        vi亦提供同時編輯多個檔案的功能，方法如下：
        %vi file1 file2 ..</pre>
		<pre>        當第一個檔案編修完成後，可利用『：w』將該緩衝區存檔，而後
        再利用 『：n』載入下一個檔案。</pre>
<img src ="http://www.blogjava.net/diego-liu/aggbug/48705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/diego-liu/" target="_blank">潜心</a> 2006-05-29 11:37 <a href="http://www.blogjava.net/diego-liu/archive/2006/05/29/48705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通用代码之一: 轻松使用Ajax</title><link>http://www.blogjava.net/diego-liu/archive/2006/05/25/48004.html</link><dc:creator>潜心</dc:creator><author>潜心</author><pubDate>Thu, 25 May 2006 05:01:00 GMT</pubDate><guid>http://www.blogjava.net/diego-liu/archive/2006/05/25/48004.html</guid><wfw:comment>http://www.blogjava.net/diego-liu/comments/48004.html</wfw:comment><comments>http://www.blogjava.net/diego-liu/archive/2006/05/25/48004.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/diego-liu/comments/commentRss/48004.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/diego-liu/services/trackbacks/48004.html</trackback:ping><description><![CDATA[
		<p>最近在工作的时候总结了一套ajax的简易使用方法,通用性极好,给我的工作带来了不少效率上的提高,先贴出来给大家参考:<br />一,先建一个ajax.js的文件,文件的内容如下:<br />var http_request = false;<br />var callback_func;</p>
		<p>function sendRequest(url, argstr, func, method) {</p>
		<p>  http_request = false;<br />  callback_func = func;</p>
		<p>  if (window.XMLHttpRequest) { // Mozilla, Safari,...<br />    http_request = new XMLHttpRequest();<br />    if (http_request.overrideMimeType) {<br />      http_request.overrideMimeType('text/xml');<br />    }<br />  } else if (window.ActiveXObject) { // IE<br />    try {<br />      http_request = new ActiveXObject("Msxml2.XMLHTTP");<br />    } catch (e) {<br />      try {<br />        http_request = new ActiveXObject("Microsoft.XMLHTTP");<br />      } catch (e) {}<br />    }<br />  }</p>
		<p>  if (!http_request) {<br />    alert('Giving up :( Cannot create an XMLHTTP instance');<br />    return false;<br />  }<br />  http_request.onreadystatechange = alertContents;<br />  <br />  if (method == 'GET') {<br />    http_request.open('GET', url + '?' + argstr, true);<br />    http_request.send(null);<br />  } else {<br />    http_request.open('POST', url, true);<br />    http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=GBK");<br />    http_request.send(argstr);<br />  }<br />}</p>
		<p>function alertContents() {</p>
		<p>  if (http_request.readyState == 4) {<br />    if (http_request.status == 200) {<br />      callback_func(http_request.responseText);<br />    } else {<br />      alert('There was a problem with the request.');<br />    }<br />  }<br />}<br /><br />二,在页面使用如下代码将js文件包含进来:<br />&lt;script language=javascript src="ajax.js"&gt;&lt;/script&gt;<br /><br />三,在页面调用sendRequest(...)方法:<br />如:&lt;a href="javascript:sendRequest('hello.jsp',param,function,'GET')" &gt;调用AJAX&lt;/a&gt;<br />或:&lt;input type="button" value="提交" onclick="sendRequest('getInfo.do',param,function,'POST')" /&gt;<br />注释(以第一个为例):<br /><strong>hello.jsp</strong>:  这个例子采用ajax通过一个链接请求hello.jsp页面,<br /><strong>param</strong>:   为参数,可以为空,也可以不为空,比如name=value&amp;password=123456,也可以通过把一个表单(form)的字段组合起来作为一个字符串传递<br />过去,   <br /> <strong>function</strong>: 是你自己写的一个函数,用于处理返回的内容,一般的处理是<br />将返回的内容显示在页面,一个典型的例子:<br />   function search(str){<br />         alert(str); //用于调试.<br />        myId.innerHTML = str;<br />   }<br /><strong>GET</strong>: 是请求的方法,简单的说,get代表请求一个资源,post代表提交参数并请求资源.<br /><br /><br />任何疑问,可以联系本人:diego.liu@163.com</p>
<img src ="http://www.blogjava.net/diego-liu/aggbug/48004.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/diego-liu/" target="_blank">潜心</a> 2006-05-25 13:01 <a href="http://www.blogjava.net/diego-liu/archive/2006/05/25/48004.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】菜鸟也可以办到，纯手工美化系统全攻略 ----顶级推荐</title><link>http://www.blogjava.net/diego-liu/archive/2006/05/23/47618.html</link><dc:creator>潜心</dc:creator><author>潜心</author><pubDate>Tue, 23 May 2006 05:06:00 GMT</pubDate><guid>http://www.blogjava.net/diego-liu/archive/2006/05/23/47618.html</guid><wfw:comment>http://www.blogjava.net/diego-liu/comments/47618.html</wfw:comment><comments>http://www.blogjava.net/diego-liu/archive/2006/05/23/47618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/diego-liu/comments/commentRss/47618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/diego-liu/services/trackbacks/47618.html</trackback:ping><description><![CDATA[
		<span class="smalltxt">
				<span class="bold">
						<strong>转自龙族论坛(</strong>
						<a href="http://www.chinadforce.com/">
								<strong>http://www.chinadforce.com</strong>
						</a>
						<strong>)<br />【原创】菜鸟也可以办到，纯手工美化系统全攻略</strong>
				</span>
				<strong>
				</strong>
		</span>
		<br />
		<br />
		<span style="FONT-SIZE: 9pt">
				<font color="red">做人要厚道，转载请注明作者和出处！</font>
				<br />
				<br />我们知道，用各种美化软件可以将系统变得个性而华丽，但是它们的缺点也是显而易见的：<br /><br />1.经常安装卸载这些软件容易使系统不稳定；2.占用内存和系统资源；3.有些软件使用起来较为麻烦，而且个性化有一定的局限性等。然而不使用这些软件并不是代表我们只能放弃美化系统，毕竟爱美之心人皆有之，其实我们可以自己动手，用纯手工的方法来达到美化的目的。<br /><br /><b>这样不仅可以避免上述的几个问题，更重要的是在DIY的过程中自己所获得的乐趣是使用软件所无法体验的。</b><br /><br />下面就让我们一起来，打造个性十足的系统。文中可能涉及到一些譬如注册表操作等，菜鸟看到这些不必感到害怕，一步一步来不会太难的，而且通过这些操作也可以不断提高自己的水平：<br /><br /><u>注：笔者的系统为 Windows XP SP1</u><br /><br /><br /><font color="blue"><b>1.更改桌面图标</b></font><br /><br />桌面图标可以通过IconPackager等软件来修改，但其实还有更简单的方法：<br /><br />在桌面空白处右击鼠标，依次选择"属性"－"桌面"－"自定义桌面"－"常规"，接着选中"我的电脑"的图标，再点击"更改图标"浏览选择要更换的图标，"我的文档"等也是类似的，选择好后点击"确定"即可马上换上漂亮的图标，如图1：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh01_Var5Ogk25X7V.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh01_Var5Ogk25X7V.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br /><font color="blue"><b>2.更改硬盘图标</b></font><br /><br />首先你可以将每个驱动器重新命名，如该成"系统"，"文件"等。<br />接着硬盘图标也是可以更改的，而且可以把每个驱动器的图标都设置成不同的，如图2：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh02_EzQPsIFYhydb.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh02_EzQPsIFYhydb.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />操作方法如下：<br /><br /><b>Step1：</b>打开"我的电脑"，然后依次点击"工具"－"文件夹选项"－"查看"，把"隐藏已知文件类型的扩展名"前的小勾取消；<br /><b>Step2：</b>将其中一个图标，比如"1.ico"复制到C盘根目录；<br /><b>Step3：</b>在C盘根目录新建一文本文件，输入以下内容并保存：<br /><br /><div class="smalltxt" style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><div style="FLOAT: left">CODE:</div><div style="FLOAT: right; TEXT-ALIGN: right"><a class="smalltxt" onclick="copycode(findobj('code0'));" href="file:///E:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/CyberArticle/60.html###"><font color="#003366">[Copy to clipboard]</font></a></div></div><div class="altbg2" id="code0" style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">[autorun]<br />Icon=1.ico </div><b>Step4：</b>把刚才的文本文件重命名为"autorun.inf"<br />(注意要将扩展名一起更改，系统会提示"如果改变文件扩展名，可能会导致文件不可用……"，点击"确认"即可)<br /><br /><b>Step5：</b>选中刚才的两个文件，点击右键－"属性"，然后勾选"隐藏"；<br /><b>Step6：</b>重新启动，搞定，其它盘符依此类推！<br /><br /><b>注：</b><br />1) 上面用的是相对路径，也可以使用图标的绝对路径，如"Icon=E:\ico\1.ico";<br />2) 选择隐藏是为了更雅观和防止误删配置文件；<br />3) 不用重启也可以的，进入譬如CS等游戏，然后退出就可以直接看到效果。<br /><br /><br /><font color="blue"><b>3.更改软驱、光驱图标</b></font><br /><br />要更改软驱、光驱图标，必须通过修改注册表来实现，在运行里输入"regedit"并回车，打开"注册表编辑器"，然后定位到下面这个位置：<br /><br />[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\<font color="red">a</font>\DefaultIcon]<br /><br />接着双击右边的"默认"，填入图标的路径和名称，保存退出重新启动后即可看到效果，如图3：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh03_EYhXE2InUjE2.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh03_EYhXE2InUjE2.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />不过一般来说是没有DriveIcons这个项及下面的子项的，所以必须手动在Explorer上点击鼠标右键－"新建"－"项"，接着输入"DriveIcons"；同样的，在"DriveIcons"下新建一个或多个子项，软驱的是盘符一般为"a"，然后有几个光驱就新建几个项，项的名称和光驱盘符对应即可。<br /><br />这样直接修改注册表的方法其实有点麻烦，还可以用更简单的导入注册表文件的方法：<br /><br />首先新建一个文本文件，输入以下内容：<br /><br /><div class="smalltxt" style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><div style="FLOAT: left">CODE:</div><div style="FLOAT: right; TEXT-ALIGN: right"><a class="smalltxt" onclick="copycode(findobj('code1'));" href="file:///E:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/CyberArticle/60.html###"><font color="#003366">[Copy to clipboard]</font></a></div></div><div class="altbg2" id="code1" style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">Windows Registry Editor Version 5.00<br /><br />[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\a\DefaultIcon]<br />@="E:\\ico\\floppy.ico,0"<br /><br />[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\DriveIcons\h\DefaultIcon]<br />@=E:\\ico\\cd1.ico,0"</div>保存退出，然后重命名为new.reg，接着双击导入注册表即可。要提醒的是，在上面的注册表文件里，必须把原来路径的"\"都改为"\\"。<br /><br /><br /><font color="blue"><b>4.自制品牌机</b></font><br /><br />品牌机和兼容机的一个不同之处，就是品牌机在打开"我的电脑"属性时能够查看厂商标志和支持信息！<br /><br />现在我们就来做一个属于自己的品牌机，首先新建一文本文件，输入以下内容：<br /><br /><div class="smalltxt" style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><div style="FLOAT: left">CODE:</div><div style="FLOAT: right; TEXT-ALIGN: right"><a class="smalltxt" onclick="copycode(findobj('code2'));" href="file:///E:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/CyberArticle/60.html###"><font color="#003366">[Copy to clipboard]</font></a></div></div><div class="altbg2" id="code2" style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">[General]<br />Manufacturer=很高很瘦的专用电脑<br />Model=无敌华丽型<br /><br />[Support Information]<br />Line1=每一种创伤，都是一种成熟。<br />Line2=上网不聊天，气死活神仙！</div>保存退出，然后重命名为"Oeminfo.ini"，然后再找一张BMP图片(不要太大，最好是100×100左右大小的)将其重命名为"Oemlogo.bmp"，接着把这两个文件复制到"C:\WINDOWS\system32"下，最后按下"Win＋Break"组合键就可以看到下面的效果了，如图4：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh04_AsGtp4DCJkwu.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh04_AsGtp4DCJkwu.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />点击"技术支持信息"还可以弹出一个信息窗口，显示的是上面"Line1＝"后面的内容，还可以在后面继续添加"Line3="等，字数不限，把一些名言警句或搞笑对话放在里面，很好玩的！^_^<br /><br /><br /><font color="blue"><b>5.超酷鼠标右键秀</b></font><br /><br />看看这样的鼠标右键，是不是很酷呢？图5：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh05_nrUTeL9ok0qw.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh05_nrUTeL9ok0qw.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />首先从<a href="http://www.virtualplastic.net/download/apps/byblos_if.zip" target="_blank"><font color="#003366">http://www.virtualplastic.net/download/apps/byblos_if.zip</font></a>下载一个zip压缩包，解压后得到Byblos.dll，再把这个文件复制到任意地方(如C盘根目录下)，然后在"运行"中输入"<font color="red">regsvr32.exe C:\Byblos.dll</font>"并回车，提示成功注册。接着在桌面空白处点右键就可以看到右键上漂亮的图案了！<br /><br />另外我们可以更改里面的图片(比如可以改成自己的或MM的照片等)，用ExeScope等资源提取工具打开Byblos.dll，在"位图"－"202"项导入一张自己想要的bmp格式的图片(大小自定，但不要太大)，保存后重新注册，如图6：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh06_Yf2EEgXBx2mC.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh06_Yf2EEgXBx2mC.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br />要卸载该右键秀，只需在"运行"中输入"<font color="red">regsvr32.exe C:\Byblos.dll /u</font>"，并回车即可。<br /><br /><br /><font color="blue"><b>6.漂亮的个性文件夹</b></font><br /><br />你是否注意到“我的文档”里的“我的音乐”、“图片收藏”等文件夹和一般的文件夹的图标是不一样的？<br />你是否了解其中的秘密？其实这些都是通过<font color="red">Desktop.ini</font>这个文件来实现的。<br /><br />一般地，你打开任意一个文件夹，在空白处点击鼠标右键－“自定义文件夹”，然后点击最下面的“更改图标”按钮，浏览选择一个图标，最后点击确定即可。刷新一下就可以看到文件夹图标已经改变了！如图7：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh07_5uziGLQbTIAd.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh07_5uziGLQbTIAd.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />除了简单的改变文件夹图标外，Desktop.ini还能做什么呢？<br /><br />要查看Desktop.ini这个文件，必须点击“工具”－“文件夹选项”－“查看”，把“隐藏受保护的操作系统文件(推荐)”和“隐藏已知文件类型的扩展名”前的小勾取消，并选择“显示所有文件和文件夹”，如图8：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh08_aCNmBvcHI3jK.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh08_aCNmBvcHI3jK.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />建立Desktop.ini这个文件有两种方法，一是按上面提到的用“自定义文件”的方法让系统自动建立；二是新建一文本文档，然后把文件名改为“Desktop.ini”(注意要连扩展名一起修改)，接着在“命令提示符”下输入下面的命令改变其属性：<br /><br /><div class="smalltxt" style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><div style="FLOAT: left">CODE:</div><div style="FLOAT: right; TEXT-ALIGN: right"><a class="smalltxt" onclick="copycode(findobj('code3'));" href="file:///E:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/CyberArticle/60.html###"><font color="#003366">[Copy to clipboard]</font></a></div></div><div class="altbg2" id="code3" style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">attrib +s +h Desktop.ini </div>Desktop.ini 基本的结构参数如下：<br /><br /><div class="smalltxt" style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><div style="FLOAT: left">CODE:</div><div style="FLOAT: right; TEXT-ALIGN: right"><a class="smalltxt" onclick="copycode(findobj('code4'));" href="file:///E:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/CyberArticle/60.html###"><font color="#003366">[Copy to clipboard]</font></a></div></div><div class="altbg2" id="code4" style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">[.ShellClassInfo]<br />ConfirmFileOp=0<br />NoSharing=1<br />IconFile=图标文件及路径<br />IconIndex=n<br />InfoTip=文件夹注释 </div><b>参数说明：</b><br /><br />“ConfirmFileOp=0” 代表在对移动或删除该文件夹时不提示“你所删除的文件是系统文件”；<br />“NoSharing=1” 代表该文件夹不被共享；<br />“IconFile=图标文件及路径” 其中图标文件也可以是.ico图标格式也可以是.exe可执行文件或.dll文件等；路径可以为相对路径或绝对路径；<br />“IconIndex=n” 表示使用指定文件的第几个图标，如果是图标文件则为0，如果是.exe或者.dll文件可以为1、3等；<br />“InfoTip=文件夹注释” 指当鼠标指向该文件夹时所显示的说明文字！<br /><br />*其中只有“IconFile=图标文件及路径”是必须的，其余皆可选！<br /><br />现在演示一下，该文件夹里有一个名为Popsicle.ico的图标，接着在Desktop.ini输入下面的代码：<br /><br /><div class="smalltxt" style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><div style="FLOAT: left">CODE:</div><div style="FLOAT: right; TEXT-ALIGN: right"><a class="smalltxt" onclick="copycode(findobj('code5'));" href="file:///E:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/CyberArticle/60.html###"><font color="#003366">[Copy to clipboard]</font></a></div></div><div class="altbg2" id="code5" style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">[.ShellClassInfo]<br />ConfirmFileOp=0<br />NoSharing=1<br />IconFile=Popsicle.ico<br />IconIndex=0<br />InfoTip=嘿嘿，看看效果！</div>效果如图9所示，不是不很漂亮？不过现在只穿了外衣，接下来我们还要给它穿上性感的内衣！^_^<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh09_GuIEpBmssnhM.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh09_GuIEpBmssnhM.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />找一个背景图片bg.gif放在文件夹内，然后修改Desktop.ini的内容为：<br /><br /><div class="smalltxt" style="FONT-WEIGHT: bold; MARGIN-LEFT: 2em; MARGIN-RIGHT: 2em"><div style="FLOAT: left">CODE:</div><div style="FLOAT: right; TEXT-ALIGN: right"><a class="smalltxt" onclick="copycode(findobj('code6'));" href="file:///E:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/CyberArticle/60.html###"><font color="#003366">[Copy to clipboard]</font></a></div></div><div class="altbg2" id="code6" style="CLEAR: both; BORDER-RIGHT: #698cc3 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #698cc3 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; MARGIN: 3px 2em 2em; BORDER-LEFT: #698cc3 1px solid; WORD-BREAK: break-all; PADDING-TOP: 5px; BORDER-BOTTOM: #698cc3 1px solid">[.ShellClassInfo]<br />ConfirmFileOp=0<br />NoSharing=1<br />IconFile=Popsicle.ico<br />IconIndex=0<br />InfoTip=嘿嘿，看看效果！<br /><br />[{BE098140-A513-11D0-A3A4-00C04FD706EC}]<br />IconArea_Image=bg.gif<br />IconArea_text=0x00483D8B </div>然后打开文件，如图10：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh10_ySKzcbFr6iR4.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh10_ySKzcbFr6iR4.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />呵呵，现在文件夹也可以像网页一样自由选择背景和字体颜色了！<br /><br /><b>参数说明：</b><br /><br />“IconArea_Image=” 是背景图片的文件名及路径，同样可以为相对路径或绝对路径；<br />“IconArea_text=” 是指文字的颜色代码！不过要注意的是这里的颜色代码和html的颜色不太一样，显示出来的是后面6位颜色编码的RGB模式中R和B对调后的颜色！<br /><br /><br /><font color="blue"><b>7.桌面超级图标</b></font><br /><br />像dock等软件有一个很实用的功能就是可以自由添加应用程序的快速打开方式，那不用软件能不能实现呢？<br />答案当然是肯定的啦，下面就来制作一个功能强大的桌面超级图标：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh11_lEI4MfKQ4UXt.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh11_lEI4MfKQ4UXt.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br />如图11，就是一个用于打开常用的Flash制作软件程序的超级图标，在图标上点击右键就可以弹出菜单，接着单击某一项目就可以打开相应的程序，非常方便和强大！这是通过修改注册表来实现的，在运行中输入"regedit"，回车后打开"注册表编辑器"：<br /><br /><b>Step1：</b>定位到[HKEY_CLASSES_ROOT\CLSID]，在下面新建一个子项"{00000000-0000-0000-0000-000000000000}"(这个值可以随便取，但是不能和原有的值相同，而且必须符合类标识符的命名规则)，双击右边窗口的"(默认)"项，填入图标的名称，如"Flash制作"；还可以新建一个字符串键值"InfoTip"，用来显示当鼠标指向该图标时显示的说明文字；<br /><br /><b>Step2：</b>在"{00000000-0000-0000-0000-000000000000}"下新建子项"DefaultIcon"，双击右边窗口的"(默认)"项，将其值改为要显示的图标的路径；<br /><br /><b>Step3：</b>新建子项"InProcServer32"，再将右边窗口的"(默认)"项的值改为"Shell32.dll"，接着创建一个名为"ThreadingModel"的字符串值，修改其值为"ApartMent"；<br /><br /><b>Step4：</b>新建子项"Shell"，并在其下面接着创建一个子项"XXX"，继续在下面新建子项"Command"。其中，"XXX"代表右键菜单里要显示的项目的名称，"Command"的值则修改为该程序的打开路径，比如"d:\Program Files\Macromedia\Flash MX 2004\Flash.exe"。你可以创建多个"XXX"的子项，然后按同样的方法创建并修改"Command"的值，如图12：<br /><br /><p align="center"><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www.chinadforce.com/attachments/day_050709/mh12_d0eHBAUpxKON.gif');}" src="http://www.chinadforce.com/attachments/day_050709/mh12_d0eHBAUpxKON.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /></p><br /><br /><b>Step5：</b>定位到注册表的[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace]，在下面新建一个子项"{00000000-0000-0000-0000-000000000000}"(这个值就必须和前面的一样即可)<br /><br /><b>Step6：</b>刷新注册表和桌面，这个超级图标就诞生鸟！<br /><br /><br /><b>说明：</b><br /><br />1.用同样的方法可以在桌面创建多个这样的图标，可以把不同类型的应用程序分别归类到这些图标中！要注意的是必须在[HKEY_CLASSES_ROOT\CLSID]下新建不同值的子项；<br />2.在桌面上右击该图标，选择"创建快捷方式"，接着可以把这个快捷方式拖放到系统的任意位置；<br />3.双击该图标会打开右键菜单的第一项；<br />4.菜单里的每一项都有相应的快捷键，就是下划显示的程序的首字母(中文的除外)；<br />5.并不是每个程序都可以用这个方法打开，比如磁盘碎片整理程序就不能用该法打开；<br />6.该超级图标还有更多扩展设置，具体的大家可以查看《电脑爱好者》杂志2004年第7期16页。<br /><br /><br /><br /><br />关于手工美化，就说到这里，实际上DIY系统的方法远不止这些，比如还可以手工修改VS主题文件、或修改注册表其它一些设置等，由于时间关系在这里就不多赘述了。<br /><br />大家自己可以多动脑筋，想出更多优化美化的方法来，也希望各位可以将自己的经验分享出来，和大家一起交流！<br /><br /><font color="red"><b>（全文完）</b></font><br /></span>
<img src ="http://www.blogjava.net/diego-liu/aggbug/47618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/diego-liu/" target="_blank">潜心</a> 2006-05-23 13:06 <a href="http://www.blogjava.net/diego-liu/archive/2006/05/23/47618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>