﻿<?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/hummer008/</link><description>不走寻常路,要走就走无间道</description><language>zh-cn</language><lastBuildDate>Mon, 27 Apr 2026 05:35:07 GMT</lastBuildDate><pubDate>Mon, 27 Apr 2026 05:35:07 GMT</pubDate><ttl>60</ttl><item><title>kettle 实践经验（不断更新中）</title><link>http://www.blogjava.net/hummer008/articles/354583.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Tue, 19 Jul 2011 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/354583.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/354583.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/354583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/354583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/354583.html</trackback:ping><description><![CDATA[1.异常处理<br />（1）插入数据库异常，不捕获出错处理，kettle抛出异常，程序处理中断；<br />（2）捕获异常，单条记录处理失败，后续记录处理继续进行。<br /><br />&nbsp; 定义错误处理 -----&gt; 输出错误日志信息<br /><br />2. commit size 对同步数据有影响<img src ="http://www.blogjava.net/hummer008/aggbug/354583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2011-07-19 09:45 <a href="http://www.blogjava.net/hummer008/articles/354583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高性能网站建设指南 阅读笔记</title><link>http://www.blogjava.net/hummer008/articles/310388.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Thu, 21 Jan 2010 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/310388.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/310388.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/310388.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/310388.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/310388.html</trackback:ping><description><![CDATA[黄金法则：<br />
只有10%-20%的最终用户响应时间花在了下载HTML文档上， 其余的80%-90%时间花在了下载页面中的所有组件上；（图片、脚本、样式表、<br />
FLASH）<br />
<br />
<br />
1.减少HTTP请求<br />
&nbsp;&nbsp; 图片地图、CSS Sprites、内联图片和脚本、样式表的合并；<br />
2.使用内容发布网络（Content Delivery Networks CDN）<br />
&nbsp;&nbsp; 内容发布网络：是一组分布在多个不同地理位置的 web服务器，用于更加有效地向用户发布内容。CDN可能选择阶跃数最小的服务器，<br />
或者具有最短响应时间的服务器。<br />
3.添加Expires头<br />
&nbsp; 配置组件，使其能够最大化地利用浏览器的缓存能力来改善页面的性能；<br />
&nbsp; 使用Expires头来告诉web客户端它可以使用一个组件的当前副本，直到指定时间为止；<br />
4.压缩组件<br />
&nbsp; 通过减小HTTP响应的大小来减少响应时间；<br />
5.将样式表放在顶部<br />
6.将脚本放在底部 <br />
&nbsp; http1.1 规范建议浏览器从每个主机名并行地下载2个组件。<br />
7.使用外部javaScript和css <br />
&nbsp; 外部javaScript和css可以利用浏览器缓存；<br />
8.减少DNS查找<br />
9.精简JavaScript <br />
&nbsp; 从代码中移除不必要地字符(空格、换行以及制表符)以减小其大小，进而改善加载时间的实践；
<img src ="http://www.blogjava.net/hummer008/aggbug/310388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2010-01-21 14:07 <a href="http://www.blogjava.net/hummer008/articles/310388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse快捷键大全(转载)</title><link>http://www.blogjava.net/hummer008/articles/288219.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Fri, 24 Jul 2009 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/288219.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/288219.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/288219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/288219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/288219.html</trackback:ping><description><![CDATA[<div><font size="2">Ctrl+1&nbsp;快速修复(最经典的快捷键,就不用多说了)<br />
Ctrl+D:&nbsp;删除当前行&nbsp;<br />
Ctrl+Alt+&#8595;&nbsp;复制当前行到下一行(复制增加)<br />
Ctrl+Alt+&#8593;&nbsp;复制当前行到上一行(复制增加)<br />
Alt+&#8595;&nbsp;当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)<br />
Alt+&#8593;&nbsp;当前行和上面一行交互位置(同上)<br />
Alt+&#8592;&nbsp;前一个编辑的页面<br />
Alt+&#8594;&nbsp;下一个编辑的页面(当然是针对上面那条来说了)<br />
Alt+Enter&nbsp;显示当前选择资源(工程,or&nbsp;文件&nbsp;or文件)的属性<br />
Shift+Enter&nbsp;在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后)<br />
Shift+Ctrl+Enter&nbsp;在当前行插入空行(原理同上条)<br />
Ctrl+Q&nbsp;定位到最后编辑的地方<br />
Ctrl+L&nbsp;定位在某行&nbsp;(对于程序超过100的人就有福音了)<br />
Ctrl+M&nbsp;最大化当前的Edit或View&nbsp;(再按则反之)<br />
Ctrl+/&nbsp;注释当前行,再按则取消注释<br />
Ctrl+O&nbsp;快速显示&nbsp;OutLine<br />
Ctrl+T&nbsp;快速显示当前类的继承结构<br />
Ctrl+W&nbsp;关闭当前Editer<br />
Ctrl+K&nbsp;参照选中的Word快速定位到下一个<br />
Ctrl+E&nbsp;快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)<br />
Ctrl+/(小键盘)&nbsp;折叠当前类中的所有代码<br />
Ctrl+&#215;(小键盘)&nbsp;展开当前类中的所有代码<br />
Ctrl+Space&nbsp;代码助手完成一些代码的插入(但一般和输入法有冲突,可以修改输入法的热键,也可以暂用Alt+/来代替)<br />
Ctrl+Shift+E&nbsp;显示管理当前打开的所有的View的管理器(可以选择关闭,激活等操作)<br />
Ctrl+J&nbsp;正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹配定位到某个单词,如果没有,则在stutes&nbsp;line中显示没有找到了,查一个单词时,特别实用,这个功能Idea两年前就有了)<br />
Ctrl+Shift+J&nbsp;反向增量查找(和上条相同,只不过是从后往前查)<br />
Ctrl+Shift+F4&nbsp;关闭所有打开的Editer<br />
Ctrl+Shift+X&nbsp;把当前选中的文本全部变味小写<br />
Ctrl+Shift+Y&nbsp;把当前选中的文本全部变为小写<br />
Ctrl+Shift+F&nbsp;格式化当前代码<br />
Ctrl+Shift+P&nbsp;定位到对于的匹配符(譬如{})&nbsp;(从前面定位后面时,光标要在匹配符里面,后面到前面,则反之)<br />
<br />
下面的快捷键是重构里面常用的,本人就自己喜欢且常用的整理一下(注:一般重构的快捷键都是Alt+Shift开头的了)<br />
Alt+Shift+R&nbsp;重命名&nbsp;(是我自己最爱用的一个了,尤其是变量和类的Rename,比手工方法能节省很多劳动力)<br />
Alt+Shift+M&nbsp;抽取方法&nbsp;(这是重构里面最常用的方法之一了,尤其是对一大堆泥团代码有用)<br />
Alt+Shift+C&nbsp;修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)<br />
Alt+Shift+L&nbsp;抽取本地变量(&nbsp;可以直接把一些魔法数字和字符串抽取成一个变量,尤其是多处调用的时候)<br />
Alt+Shift+F&nbsp;把Class中的local变量变为field变量&nbsp;(比较实用的功能)<br />
Alt+Shift+I&nbsp;合并变量(可能这样说有点不妥Inline)<br />
Alt+Shift+V&nbsp;移动函数和变量(不怎么常用)<br />
Alt+Shift+Z&nbsp;重构的后悔药(Undo)<br />
<br />
编辑<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;查找并替换&nbsp;Ctrl+F&nbsp;<br />
文本编辑器&nbsp;查找上一个&nbsp;Ctrl+Shift+K&nbsp;<br />
文本编辑器&nbsp;查找下一个&nbsp;Ctrl+K&nbsp;<br />
全局&nbsp;撤销&nbsp;Ctrl+Z&nbsp;<br />
全局&nbsp;复制&nbsp;Ctrl+C&nbsp;<br />
全局&nbsp;恢复上一个选择&nbsp;Alt+Shift+&#8595;&nbsp;<br />
全局&nbsp;剪切&nbsp;Ctrl+X&nbsp;<br />
全局&nbsp;快速修正&nbsp;Ctrl1+1&nbsp;<br />
全局&nbsp;内容辅助&nbsp;Alt+/&nbsp;<br />
全局&nbsp;全部选中&nbsp;Ctrl+A&nbsp;<br />
全局&nbsp;删除&nbsp;Delete&nbsp;<br />
全局&nbsp;上下文信息&nbsp;Alt+？<br />
Alt+Shift+?<br />
Ctrl+Shift+Space&nbsp;<br />
Java编辑器&nbsp;显示工具提示描述&nbsp;F2&nbsp;<br />
Java编辑器&nbsp;选择封装元素&nbsp;Alt+Shift+&#8593;&nbsp;<br />
Java编辑器&nbsp;选择上一个元素&nbsp;Alt+Shift+&#8592;&nbsp;<br />
Java编辑器&nbsp;选择下一个元素&nbsp;Alt+Shift+&#8594;&nbsp;<br />
文本编辑器&nbsp;增量查找&nbsp;Ctrl+J&nbsp;<br />
文本编辑器&nbsp;增量逆向查找&nbsp;Ctrl+Shift+J&nbsp;<br />
全局&nbsp;粘贴&nbsp;Ctrl+V&nbsp;<br />
全局&nbsp;重做&nbsp;Ctrl+Y&nbsp;<br />
<br />
&nbsp;<br />
查看<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;放大&nbsp;Ctrl+=&nbsp;<br />
全局&nbsp;缩小&nbsp;Ctrl+-&nbsp;<br />
<br />
&nbsp;<br />
窗口<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;激活编辑器&nbsp;F12&nbsp;<br />
全局&nbsp;切换编辑器&nbsp;Ctrl+Shift+W&nbsp;<br />
全局&nbsp;上一个编辑器&nbsp;Ctrl+Shift+F6&nbsp;<br />
全局&nbsp;上一个视图&nbsp;Ctrl+Shift+F7&nbsp;<br />
全局&nbsp;上一个透视图&nbsp;Ctrl+Shift+F8&nbsp;<br />
全局&nbsp;下一个编辑器&nbsp;Ctrl+F6&nbsp;<br />
全局&nbsp;下一个视图&nbsp;Ctrl+F7&nbsp;<br />
全局&nbsp;下一个透视图&nbsp;Ctrl+F8&nbsp;<br />
文本编辑器&nbsp;显示标尺上下文菜单&nbsp;Ctrl+W&nbsp;<br />
全局&nbsp;显示视图菜单&nbsp;Ctrl+F10&nbsp;<br />
全局&nbsp;显示系统菜单&nbsp;Alt+-&nbsp;<br />
<br />
&nbsp;<br />
导航<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
Java编辑器&nbsp;打开结构&nbsp;Ctrl+F3&nbsp;<br />
全局&nbsp;打开类型&nbsp;Ctrl+Shift+T&nbsp;<br />
全局&nbsp;打开类型层次结构&nbsp;F4&nbsp;<br />
全局&nbsp;打开声明&nbsp;F3&nbsp;<br />
全局&nbsp;打开外部javadoc&nbsp;Shift+F2&nbsp;<br />
全局&nbsp;打开资源&nbsp;Ctrl+Shift+R&nbsp;<br />
全局&nbsp;后退历史记录&nbsp;Alt+&#8592;&nbsp;<br />
全局&nbsp;前进历史记录&nbsp;Alt+&#8594;&nbsp;<br />
全局&nbsp;上一个&nbsp;Ctrl+,&nbsp;<br />
全局&nbsp;下一个&nbsp;Ctrl+.&nbsp;<br />
Java编辑器&nbsp;显示大纲&nbsp;Ctrl+O&nbsp;<br />
全局&nbsp;在层次结构中打开类型&nbsp;Ctrl+Shift+H&nbsp;<br />
全局&nbsp;转至匹配的括号&nbsp;Ctrl+Shift+P&nbsp;<br />
全局&nbsp;转至上一个编辑位置&nbsp;Ctrl+Q&nbsp;<br />
Java编辑器&nbsp;转至上一个成员&nbsp;Ctrl+Shift+&#8593;&nbsp;<br />
Java编辑器&nbsp;转至下一个成员&nbsp;Ctrl+Shift+&#8595;&nbsp;<br />
文本编辑器&nbsp;转至行&nbsp;Ctrl+L&nbsp;<br />
<br />
&nbsp;<br />
搜索<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;出现在文件中&nbsp;Ctrl+Shift+U&nbsp;<br />
全局&nbsp;打开搜索对话框&nbsp;Ctrl+H&nbsp;<br />
全局&nbsp;工作区中的声明&nbsp;Ctrl+G&nbsp;<br />
全局&nbsp;工作区中的引用&nbsp;Ctrl+Shift+G&nbsp;<br />
<br />
&nbsp;<br />
文本编辑<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
文本编辑器&nbsp;改写切换&nbsp;Insert&nbsp;<br />
文本编辑器&nbsp;上滚行&nbsp;Ctrl+&#8593;&nbsp;<br />
文本编辑器&nbsp;下滚行&nbsp;Ctrl+&#8595;&nbsp;<br />
<br />
&nbsp;<br />
文件<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;保存&nbsp;Ctrl+X&nbsp;<br />
Ctrl+S&nbsp;<br />
全局&nbsp;打印&nbsp;Ctrl+P&nbsp;<br />
全局&nbsp;关闭&nbsp;Ctrl+F4&nbsp;<br />
全局&nbsp;全部保存&nbsp;Ctrl+Shift+S&nbsp;<br />
全局&nbsp;全部关闭&nbsp;Ctrl+Shift+F4&nbsp;<br />
全局&nbsp;属性&nbsp;Alt+Enter&nbsp;<br />
全局&nbsp;新建&nbsp;Ctrl+N&nbsp;<br />
<br />
&nbsp;<br />
项目<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;全部构建&nbsp;Ctrl+B&nbsp;<br />
<br />
&nbsp;<br />
源代码<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
Java编辑器&nbsp;格式化&nbsp;Ctrl+Shift+F&nbsp;<br />
Java编辑器&nbsp;取消注释&nbsp;Ctrl+"&nbsp;<br />
Java编辑器&nbsp;注释&nbsp;Ctrl+/&nbsp;<br />
Java编辑器&nbsp;添加导入&nbsp;Ctrl+Shift+M&nbsp;<br />
Java编辑器&nbsp;组织导入&nbsp;Ctrl+Shift+O&nbsp;<br />
Java编辑器&nbsp;使用try/catch块来包围&nbsp;未设置，太常用了，所以在这里列出,建议自己设置。<br />
也可以使用Ctrl+1自动修正。&nbsp;<br />
<br />
&nbsp;<br />
运行<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;单步返回&nbsp;F7&nbsp;<br />
全局&nbsp;单步跳过&nbsp;F6&nbsp;<br />
全局&nbsp;单步跳入&nbsp;F5&nbsp;<br />
全局&nbsp;单步跳入选择&nbsp;Ctrl+F5&nbsp;<br />
全局&nbsp;调试上次启动&nbsp;F11&nbsp;<br />
全局&nbsp;继续&nbsp;F8&nbsp;<br />
全局&nbsp;使用过滤器单步执行&nbsp;Shift+F5&nbsp;<br />
全局&nbsp;添加/去除断点&nbsp;Ctrl+Shift+B&nbsp;<br />
全局&nbsp;显示&nbsp;Ctrl+D&nbsp;<br />
全局&nbsp;运行上次启动&nbsp;Ctrl+F11&nbsp;<br />
全局&nbsp;运行至行&nbsp;Ctrl+R&nbsp;<br />
全局&nbsp;执行&nbsp;Ctrl+U&nbsp;<br />
<br />
&nbsp;<br />
重构<br />
作用域&nbsp;功能&nbsp;快捷键&nbsp;<br />
全局&nbsp;撤销重构&nbsp;Alt+Shift+Z&nbsp;<br />
全局&nbsp;抽取方法&nbsp;Alt+Shift+M&nbsp;<br />
全局&nbsp;抽取局部变量&nbsp;Alt+Shift+L&nbsp;<br />
全局&nbsp;内联&nbsp;Alt+Shift+I&nbsp;<br />
全局&nbsp;移动&nbsp;Alt+Shift+V&nbsp;<br />
全局&nbsp;重命名&nbsp;Alt+Shift+R&nbsp;<br />
全局&nbsp;重做&nbsp;Alt+Shift+Y</font></div>
<img src ="http://www.blogjava.net/hummer008/aggbug/288219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2009-07-24 15:37 <a href="http://www.blogjava.net/hummer008/articles/288219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse 快捷键使用总结</title><link>http://www.blogjava.net/hummer008/articles/271707.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Wed, 20 May 2009 06:06:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/271707.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/271707.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/271707.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/271707.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/271707.html</trackback:ping><description><![CDATA[1、查看打开文件 Ctr + e <br />
<br />
2、查找选中的下一个:Ctr+k，反查:Ctr+Shift+k<br />
<br />
3、大小写转化：Ctr+Shift+X Ctr+Shift+Y<br />
<br />
4、ctrl+t（ctrl+t+t） 查看类或方法的继承结构 <br />
<br />
5、ctrl+shift+u 查看变量在哪里被引用了 <br />
<br />
6、ctrl+shift+g（alt+shift+h） 查看方法在哪里被调用了 <br />
<br />
7、ctrl+l 定位行号 <br />
<br />
8、选中类名 点击Edit 选择 Copy qualified Name 可以把类的完整路径copy下来 同样对方法名也适用<br />
<br />
9、Go to Next/Last Member&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ctrl+Shift+Down/Up<br />
<br />
10、Copy Lines&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ctrl+Alt+Down/Up<br />
<br />
11、ctrl+r,查找资源文件<br />
<br />
12、ctrl+t 查看类实现<br />
<br />
13、ctrl+shift+f 代码格式化
<img src ="http://www.blogjava.net/hummer008/aggbug/271707.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2009-05-20 14:06 <a href="http://www.blogjava.net/hummer008/articles/271707.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于 session cookie 设置</title><link>http://www.blogjava.net/hummer008/articles/239012.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Thu, 06 Nov 2008 05:38:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/239012.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/239012.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/239012.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/239012.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/239012.html</trackback:ping><description><![CDATA[1.不正确做法：<br />
<br />
docment.cookie="name=value;expires=;path=path...";<br />
只适用于 firefox<br />
<br />
2.正确做法：（不要设置expires的值）<br />
<br />
docment.cookie="name=value;path=path...";<br />
<br />
兼容ie和firefox<br />
<br />
<img src ="http://www.blogjava.net/hummer008/aggbug/239012.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2008-11-06 13:38 <a href="http://www.blogjava.net/hummer008/articles/239012.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实例分享 巧用宽带路由器建立个人网站（转）</title><link>http://www.blogjava.net/hummer008/articles/236903.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Mon, 27 Oct 2008 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/236903.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/236903.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/236903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/236903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/236903.html</trackback:ping><description><![CDATA[目前很多的年轻朋友都有建立自己网站的想法，拥有自己个性化的域名。从而更好地在因特网中与人交流，更好的利用因特网展示自己，更好地通过因特网远程获取
资源。通常建立自己的网站要经历一些很麻烦的事情，要购买域名，在服务商那里租用空间。而且每年都要花去数百元的租用费用，并不适合随着宽带接入普及和宽
带路由器的价格的下降很多的朋友都想使用宽带路由器进行共享上网，可是你们有没有注意到大多数宽带路由器都支持的一项功能呢。支持DDNS功能，就是可以
利用动态域名解析服务构建个人网站、搭建WEB、FTP等个人服务器。<br />
<br />
在说明如何用宽带路由器构建个人网站之前，我们先来详细介绍一下什么是动态域名和动态域名解析服务。做到知其然还要知其所以然。<br />
<br />
<strong>动态域名</strong><br />
<br />
Internet上的域名解析一般是静态的，即一个域名所对应的IP地址是静态的，长期不变的。也就是说，如果要在 Internet上提供服务，如搭建网站，架设邮件系统，一般需要有一个固定的IP地址。<br />
<br />
动态域名的功能就是实现固定域名到动态IP地址之间的解析。用户每次连接到 Internet 一般会自动得到新的 IP
地址之后，安装在用户计算机里的动态域名软件就会把这个 IP
地址发送到动态域名解析服务器，更新域名解析数据库。Internet上的其他人要访问这个域名的时候，动态域名解析服务器会返回正确的IP地址给他。<br />
<br />
因为绝大部分Internet用户上网的时候分配到的IP地址都是动态的。用传统的静态域名解析方法，用户想把域名解释到自己上网的计算机，是不太现实
的。而有了动态域名，这个美梦就可以成真。用户可以申请一个域名，利用动态域名解析服务，把域名与自己上网的计算机绑定在一起，这样就可以很方便的让
Internet 用户访问到自己的计算机。<br />
<br />
<strong>动态域名解析服务（DDNS）</strong><br />
<br />
动态
域名解析系统将用户的动态IP地址映射到一个固定的域名解析服务上（DDNS）。动态域名解析系统一般由两部分构成。第一部分是服务器端程序，位于服务商
的主机上。另一部分是客户端程序，就运行在广大用户的主机上。在每次连接网络的时候，客户端程序就会通过信息传递，把该主机的动态IP地址传送给位于服务
商主机上的服务器程序，服务器程序负责提供DNS服务并实现动态域名解析服务，再收到客户端通知后服务器端程序立即更新数据，将新的IP地址和原有的固定
域名绑定，这样就完成了动态域名解析的服务。别人也就可以通过域名访问你的服务器了。 <br />
<br />
<strong>利用宽带路由器建立个人网站</strong><br />
<br />
TP-LINK推出的TL-410是一款面向家庭用户的宽带路由器,其外观小巧时尚。在功能上,除了基本的支持多人共享宽带上网之外，还支持动态DNS
（DDNS），用户可以建立自己的个人网站或者是FTP服务器。而切最重要是价格便宜，非常适合家庭用户学生一族的使用，目前市场价格在180元左右。
<br />
<br />
TL-R410集成DDNS客户端软件，可自动捕获WAN口的IP变化，并自动联系DDNS服务提供商的DDNS域名服务器，将你注
册的固定域名指向新的变化了的IP地址，从而实现将静态的域名解释成动态的IP地址。有了TL-R410提供的DDNS功能，你只需要向服务商申请一个免
费域名，不用为租借服务商服务器等付费，就可以在自己的PC上，完成从规划、设计、架站，以至开发编程等一系列操作。<br />
市面上很多宽带路由器都提供
DDNS功能，但DDNS功能真正能用、能起作用的却非常少。带DDNS功能的宽带路由器，其实就是将某一个或多个DDNS服务商提供的DDNS客户端软
件集成到宽带路由器内。由于不同品牌的宽带路由器会集成不同的DDNS客户端软件，选择不同品牌的宽带路由器就相当于选择不同的DDNS客户端软件，也就
意味着选择不同的DDNS服务商。市面上绝大多数品牌的宽带路由器都产自台湾，这类带DDNS功能产品集成的不是大陆DDNS服务商提供的客户端软件，往
往DDNS只是功能摆设不起作用。 <br />
<br />
在DDNS功能上，TL-R410集成的是大陆应用最广泛的花生壳和科迈网DDNS客户端软
件，不仅保证DDNS功能可用，还因为掌握核心技术提供的是非常易用的DDNS。花生壳和科迈网一个在广州一个在深圳，因其提供的DDNS服务质量高、可
靠性好，在大陆得到广泛的应用，并逐渐成为国际动态域名服务商。在此提醒各位用户，若你要真正享受到免费获得个性域名，免费组建个人网站，免费搭建
WEB、FTP等个人服务器的乐趣，你一定要选购提供真正意义上的DDNS功能的产品，购买宽带路由器前一定要了解清楚产品集成的是什么服务商的DDNS
客户端软件。 <br />
<br />
笔者现在正在使用的这款宽带路由器。TL-R410虽然支持DDNS但是对于一些SOHO发烧友来说，如果真的想利
用DDNS建立个人网站，笔者建议您还选择TL-R460，TL-R460在TL-R410的基础上增加了很多的功能，而且具有很好的防病毒能力，可以确
保您的网站的安全。但是建立网站的步骤和对路由器的设置上TL-R460和TL-R410区别不大，下面就以TL-R410为例介绍一下如何建立免费的个
人网站。 <br />
<br />
在设置DDNS功能前要先到花生壳网站申请一个帐户、获得免费域名，并激活花生壳服务。TL-R410的DDNS设置页
里选择&#8220;花生壳&#8221;，然后点击&#8220;注册去&#8221;，系统会自动连接到花生壳的申请网页。根据页面提示，一步步进行，当申请成功后激活花生壳服务即可。假设申请的域名
是ddttcc.vi cp.net <br />
<br />
进入TL-410的配置界面选择动态DNS，出现如上图的界面填写在花生壳网站注册的帐号和密码。选择启用DDNS然后选择登陆。然后域名信息栏就会出现申请的免费域名。TL-R410上的需要做的设置就完了。 如下图：&nbsp;<br />
<br />
<br />
<img style="border-color: #000000;" alt="" src="http://www.txwb.com/Article/UploadFiles/200807/2008071123505832.jpg" border="0" />&nbsp;<br />
<br />
当然下面是WEB服务器软件的设置。首先要自己建立一个网站系统，当然这不是我们讲解的重点。可以自己先做几个简单的页面就可以，我们主要是介绍设置的
步骤即可。建立WEB服务器，在WINDOW下WEB服务器都是用IIS。原因也很明显，因为都是微软的产品兼容性最好。下面我们就介绍一下IIS的设
置。<br />
在Windows XP下面依次选择开始-&gt;控制面板-&gt;管理工具-&gt;Internet信息服务会出现IIS的设置界面。 如下图：&nbsp;<br />
<br />
<br />
<img style="border-color: #000000;" alt="" src="http://www.txwb.com/Article/UploadFiles/200807/2008071123505949.jpg" border="0" />&nbsp;<br />
<br />
然后右键点击图中的默认网站，选择属性出现默认网站属性的对话框。 如下图：&nbsp;<br />
<br />
<br />
<img style="border-color: #000000;" alt="" src="http://www.txwb.com/Article/UploadFiles/200807/2008071123505982.jpg" border="0" />&nbsp;<br />
<br />
网站标识中的描述一栏中可以选择对自己自己网站的描述，其他选项均可以不用改动。然后选择主目录。出现下面的对话况。 如下图：&nbsp;<br />
<br />
<br />
<img style="border-color: #000000;" alt="" src="http://www.txwb.com/Article/UploadFiles/200807/2008071123505957.jpg" border="0" />&nbsp;<br />
<br />
这个对话中你可以选择你的网站文件存在的磁盘目录。一般默认是存在inetpubwwwroot目录中，不过你可以选择你想要的目录。而且可以通过
IIS建立虚目录对网站文件进行管理，这些要涉及到其他有关于网站建设的问题。在此就多不讲，大家可以参考其他的相关书籍。最后还要设置你一默认的文档，
选择文档出现下面的对话框。 如下图：&nbsp;<br />
<br />
<br />
<img style="border-color: #000000;" alt="" src="http://www.txwb.com/Article/UploadFiles/200807/2008071123505912.jpg" border="0" />&nbsp;<br />
<br />
设置文档是当别人在访问你的网站的时候，键入你的域名以后服务器将打开哪一个文件。一般的网站的主页的文件名都是index或者default后缀名称
就可以选择添加，把你的网站主页的文件名称输入选择确定就可以。这样当你的服是由你选择的编程工具决定了。如果是ASP则是.asp，如果是
ASP.NET则是.aspx了。务器接到服务请求时，就打开这个文件以回应服务请求。
到此,个人网站就算设置完了。现在就可以通过浏览器来访问你的个人网站了。
<img src ="http://www.blogjava.net/hummer008/aggbug/236903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2008-10-27 16:44 <a href="http://www.blogjava.net/hummer008/articles/236903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>采用p6spy完整显示hibernate的SQL语句 (OK)</title><link>http://www.blogjava.net/hummer008/articles/236432.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Fri, 24 Oct 2008 08:22:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/236432.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/236432.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/236432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/236432.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/236432.html</trackback:ping><description><![CDATA[虽然在hibernate中有show_sql选项，但是显示出来的语句大多类似<br />
&nbsp;&nbsp;&nbsp; select * from xxx where value=?<br />
&nbsp;&nbsp;&nbsp; 但是有时候我们需要得到完整的SQL语句，怎么办呢？使用P6SPY就可以完成这个任务
<p>&nbsp;&nbsp;&nbsp; p6spy是一个开源软件，它可以跟踪任何使用jdbc的应用产生的数据库操作。特别适合于监控ejb服务器产生的 sql statements。<br />
&nbsp;&nbsp;&nbsp; 官方网址：<a href="http://www.p6spy.com/">http://www.p6spy.com/</a><br />
&nbsp;&nbsp;&nbsp; 目前p6spy 适用的应用服务器包括jboss, atg, orion, jonas, iplanet, weblogic, websphere, resin and tomcat.</p>
<p>下面我介绍一下p6spy在tomcat应用程序上安装的步骤：<br />
（1）<a href="http://www.p6spy.com/download.html">http://www.p6spy.com/download.html</a>，下载zip包<br />
（2）解压出p6spy.jar spy.properties两个文件<br />
（3）将p6spy.jar 放入应用程序的WEB-INF/lib目录，将spy.properties放入WEB-INF/classes目录<br />
（4）修改spy.properties</p>
<p>&nbsp;&nbsp;&nbsp; realdriver&nbsp; =com.mysql.jdbc.Driver&nbsp; 将这行前面的#去掉<br />
&nbsp;&nbsp;&nbsp; logfile&nbsp;&nbsp;&nbsp;&nbsp; = c:/spy.log&nbsp; 修改一个你需要的日志文件名<br />
&nbsp;&nbsp;&nbsp; <br />
（5）修改hibernate.xml，修改connection.driver_class的值为com.p6spy.engine.spy.P6SpyDriver<br />
（6）重启tomcat<br />
（7）这样在c:/下的spy.log记录了数据库的访问情况。</p>
<img src ="http://www.blogjava.net/hummer008/aggbug/236432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2008-10-24 16:22 <a href="http://www.blogjava.net/hummer008/articles/236432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>查询性能问题 </title><link>http://www.blogjava.net/hummer008/articles/235651.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Tue, 21 Oct 2008 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/235651.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/235651.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/235651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/235651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/235651.html</trackback:ping><description><![CDATA[<p>1.传递一组agent_id 提高SQL性能，不要一次传递一个agent_id</p>
<p>select agent_id agentId ,count(service_type) counts, sum(time_to_sec(end_time)-time_to_sec</p>
<p>(start_time)) seconds from et_service_log where service_type=? and site_id=? and agent_id in (?, ?, </p>
<p>?, ?, ?, ?, ?, ?, ?, ?)&nbsp; group by agent_id </p>
<p>SQLQuery sqlQuery = this.getSession().createSQLQuery(conditionSql);<br />
sqlQuery.setParameterList("agentId", agentIdList);</p>
<p>2.主从明细表关系查询优化<br />
&nbsp;<br />
普遍方法是 先查询主表IDLIST,再通过每个ID,获取一组明细表中的数据<br />
优化方法是 主从表 LEFT JOIN 一次执行就可以把相关数据RESRARCH</p>
<p>CODE ：<br />
&nbsp;Criteria criteria = createCriteria(MessageCategory.class)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add(Restrictions.eq("entityPk.siteId", siteId))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .add(Restrictions.eq("deleted", false));<br />
&nbsp;&nbsp; criteria.createAlias("messageContentSet", </p>
<p>"messageContentSet",JoinFragment.LEFT_OUTER_JOIN).setFetchMode("messageContentSet", </p>
<p>FetchMode.JOIN).add(<br />
&nbsp;&nbsp;&nbsp;&nbsp; Restrictions.eq("messageContentSet.deleted", false)).addOrder</p>
<p>(Order.desc("entityPk.id"));<br />
&nbsp;&nbsp; List listData=criteria.list();&nbsp;&nbsp; <br />
&nbsp;&nbsp; Set set =new HashSet(listData); (* 过滤重复数据)<br />
</p>
<img src ="http://www.blogjava.net/hummer008/aggbug/235651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2008-10-21 13:54 <a href="http://www.blogjava.net/hummer008/articles/235651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vi命令</title><link>http://www.blogjava.net/hummer008/articles/234642.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Thu, 16 Oct 2008 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/234642.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/234642.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/234642.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/234642.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/234642.html</trackback:ping><description><![CDATA[vi编辑器是所有Unix及Linux系统下标准的编辑器，它的强大不逊色于任何最新的文本编辑器，这里只是简单地介绍一下它的用法和一小部分指令。由于
对Unix及Linux系统的任何版本，vi编辑器是完全相同的，因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编
辑器，学会它后，您将在Linux的世界里畅行无阻。 <br />
1、vi的基本概念 <br />
基本上vi可以分为三种状态，分别是命令模式（command mode）、插入模式（Insert mode）和底行模式（last line mode），各模式的功能区分如下： <br />
1) 命令行模式command mode） <br />
控制屏幕光标的移动，字符、字或行的删除，移动复制某区段及进入Insert mode下，或者到 last line mode。 <br />
2) 插入模式（Insert mode） <br />
只有在Insert mode下，才可以做文字输入，按「ESC」键可回到命令行模式。 <br />
3) 底行模式（last line mode） <br />
将文件保存或退出vi，也可以设置编辑环境，如寻找字符串、列出行号&#8230;&#8230;等。 <br />
不过一般我们在使用时把vi简化成两个模式，就是将底行模式（last line mode）也算入命令行模式command mode）。 <br />
2、vi的基本操作 <br />
a) 进入vi <br />
在系统提示符号输入vi及文件名称后，就进入vi全屏幕编辑画面： <br />
$ vi myfile <br />
不过有一点要特别注意，就是您进入vi之后，是处于「命令行模式（command mode）」，您要切换到「插入模式（Insert
mode）」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标，结果电脑一直哔哔叫，把自己气个半死，所以进入vi后，先不要乱动，转换到
「插入模式（Insert mode）」再说吧！ <br />
b) 切换至插入模式（Insert mode）编辑文件 <br />
在「命令行模式（command mode）」下按一下字母「i」就可以进入「插入模式（Insert mode）」，这时候你就可以开始输入文字了。 <br />
c) Insert 的切换 <br />
您目前处于「插入模式（Insert mode）」，您就只能一直输入文字，如果您发现输错了字！想用光标键往回移动，将该字删除，就要先按一下「ESC」键转到「命令行模式（command mode）」再删除文字。 <br />
d) 退出vi及保存文件 <br />
在「命令行模式（command mode）」下，按一下「：」冒号键进入「Last line mode」，例如： <br />
: w filename （输入 「w filename」将文章以指定的文件名filename保存） <br />
: wq (输入「wq」，存盘并退出vi) <br />
: q! (输入q!， 不存盘强制退出vi) <br />
3、命令行模式（command mode）功能键 <br />
1）. 插入模式 <br />
按「i」切换进入插入模式「insert mode」，按&#8220;i&#8221;进入插入模式后是从光标当前位置开始输入文件； <br />
按「a」进入插入模式后，是从目前光标所在位置的下一个位置开始输入文字； <br />
按「o」进入插入模式后，是插入新的一行，从行首开始输入文字。 <br />
2）. 从插入模式切换为命令行模式 <br />
按「ESC」键。 <br />
3）. 移动光标 <br />
vi可以直接用键盘上的光标来上下左右移动，但正规的vi是用小写英文字母「h」、「j」、「k」、「l」，分别控制光标左、下、上、右移一格。 <br />
按「ctrl」+「b」：屏幕往&#8220;后&#8221;移动一页。 <br />
按「ctrl」+「f」：屏幕往&#8220;前&#8221;移动一页。 <br />
按「ctrl」+「u」：屏幕往&#8220;后&#8221;移动半页。 <br />
按「ctrl」+「d」：屏幕往&#8220;前&#8221;移动半页。 <br />
按数字「0」：移到文章的开头。 <br />
按「G」：移动到文章的最后。 <br />
按「$」：移动到光标所在行的&#8220;行尾&#8221;。 <br />
按「^」：移动到光标所在行的&#8220;行首&#8221; <br />
按「w」：光标跳到下个字的开头 <br />
按「e」：光标跳到下个字的字尾 <br />
按「b」：光标回到上个字的开头 <br />
按「#l」：光标移到该行的第#个位置，如：5l,56l。 <br />
4）. 删除文字 <br />
「x」：每按一次，删除光标所在位置的&#8220;后面&#8221;一个字符。 <br />
「#x」：例如，「6x」表示删除光标所在位置的&#8220;后面&#8221;6个字符。 <br />
「X」：大写的X，每按一次，删除光标所在位置的&#8220;前面&#8221;一个字符。 <br />
「#X」：例如，「20X」表示删除光标所在位置的&#8220;前面&#8221;20个字符。 <br />
「dd」：删除光标所在行。 <br />
「#dd」：从光标所在行开始删除#行 <br />
5）. 复制 <br />
「yw」：将光标所在之处到字尾的字符复制到缓冲区中。 <br />
「#yw」：复制#个字到缓冲区 <br />
「yy」：复制光标所在行到缓冲区。 <br />
「#yy」：例如，「6yy」表示拷贝从光标所在的该行&#8220;往下数&#8221;6行文字。 <br />
「p」：将缓冲区内的字符贴到光标所在位置。注意：所有与&#8220;y&#8221;有关的复制命令都必须与&#8220;p&#8221;配合才能完成复制与粘贴功能。 <br />
6）. 替换 <br />
「r」：替换光标所在处的字符。 <br />
「R」：替换光标所到之处的字符，直到按下「ESC」键为止。 <br />
7）. 回复上一次操作 <br />
「u」：如果您误执行一个命令，可以马上按下「u」，回到上一个操作。按多次&#8220;u&#8221;可以执行多次回复。 <br />
8）. 更改 <br />
「cw」：更改光标所在处的字到字尾处 <br />
「c#w」：例如，「c3w」表示更改3个字 <br />
9）. 跳至指定的行 <br />
「ctrl」+「g」列出光标所在行的行号。 <br />
「#G」：例如，「15G」，表示移动光标至文章的第15行行首。 <br />
4、Last line mode下命令简介 <br />
在使用「last line mode」之前，请记住先按「ESC」键确定您已经处于「command mode」下后，再按「：」冒号即可进入「last line mode」。 <br />
A) 列出行号 <br />
「set nu」：输入「set nu」后，会在文件中的每一行前面列出行号。 <br />
B) 跳到文件中的某一行 <br />
「#」：「#」号表示一个数字，在冒号后输入一个数字，再按回车键就会跳到该行了，如输入数字15，再回车，就会跳到文章的第15行。 <br />
C) 查找字符 <br />
「/关键字」：先按「/」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往后寻找到您要的关键字为止。 <br />
「?关键字」：先按「?」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往前寻找到您要的关键字为止。 <br />
D) 保存文件 <br />
「w」：在冒号输入字母「w」就可以将文件保存起来。 <br />
E) 离开vi <br />
「q」：按「q」就是退出，如果无法离开vi，可以在「q」后跟一个「!」强制离开vi。 <br />
「qw」：一般建议离开时，搭配「w」一起使用，这样在退出的时候还可以保存文件。 <br />
5、vi命令列表 <br />
1、下表列出命令模式下的一些键的功能： <br />
h <br />
左移光标一个字符 <br />
l <br />
右移光标一个字符 <br />
k <br />
光标上移一行 <br />
j <br />
光标下移一行 <br />
^ <br />
光标移动至行首 <br />
0 <br />
数字&#8220;0&#8221;，光标移至文章的开头 <br />
G <br />
光标移至文章的最后 <br />
$ <br />
光标移动至行尾 <br />
Ctrl+f <br />
向前翻屏 <br />
Ctrl+b <br />
向后翻屏 <br />
Ctrl+d <br />
向前翻半屏 <br />
Ctrl+u <br />
向后翻半屏 <br />
i <br />
在光标位置前插入字符 <br />
a <br />
在光标所在位置的后一个字符开始增加 <br />
o <br />
插入新的一行，从行首开始输入 <br />
ESC <br />
从输入状态退至命令状态 <br />
x <br />
删除光标后面的字符 <br />
#x <br />
删除光标后的＃个字符 <br />
X <br />
(大写X)，删除光标前面的字符 <br />
#X <br />
删除光标前面的#个字符 <br />
dd <br />
删除光标所在的行 <br />
#dd <br />
删除从光标所在行数的#行 <br />
yw <br />
复制光标所在位置的一个字 <br />
#yw <br />
复制光标所在位置的#个字 <br />
yy <br />
复制光标所在位置的一行 <br />
#yy <br />
复制从光标所在行数的#行 <br />
p <br />
粘贴 <br />
u <br />
取消操作 <br />
cw <br />
更改光标所在位置的一个字 <br />
#cw <br />
更改光标所在位置的#个字 <br />
2、下表列出行命令模式下的一些指令 <br />
w filename <br />
储存正在编辑的文件为filename <br />
wq filename <br />
储存正在编辑的文件为filename，并退出vi <br />
q! <br />
放弃所有修改，退出vi <br />
set nu <br />
显示行号 <br />
/或? <br />
查找，在/后输入要查找的内容 <br />
n <br />
与/或?一起使用，如果查找的内容不是想要找的关键字，按n或向后（与/联用）或向前（与?联用）继续查找，直到找到为止。 <br />
对于第一次用vi，有几点注意要提醒一下： <br />
1、用vi打开文件后，是处于「命令行模式（command mode）」，您要切换到「插入模式（Insert
mode）」才能够输入文字。切换方法：在「命令行模式（command mode）」下按一下字母「i」就可以进入「插入模式（Insert
mode）」，这时候你就可以开始输入文字了。 <br />
2、编辑好后，需从插入模式切换为命令行模式才能对文件进行保存，切换方法：按「ESC」键。 <br />
3、保存并退出文件：在命令模式下输入:wq即可！（别忘了wq前面的:） 
<img src ="http://www.blogjava.net/hummer008/aggbug/234642.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2008-10-16 10:19 <a href="http://www.blogjava.net/hummer008/articles/234642.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux 批处理脚本</title><link>http://www.blogjava.net/hummer008/articles/234443.html</link><dc:creator>hummer</dc:creator><author>hummer</author><pubDate>Wed, 15 Oct 2008 06:45:00 GMT</pubDate><guid>http://www.blogjava.net/hummer008/articles/234443.html</guid><wfw:comment>http://www.blogjava.net/hummer008/comments/234443.html</wfw:comment><comments>http://www.blogjava.net/hummer008/articles/234443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hummer008/comments/commentRss/234443.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hummer008/services/trackbacks/234443.html</trackback:ping><description><![CDATA[<br />
<br />
cd /root<br />
sh aaa.sh<br />
cd /infowarelab/common/easytouch20<br />
sh bbb.sh<br />
<br />
<br />
<br />
--aaa.sh<br />
rm webtouch-2.3.war<br />
wget http://192.168.0.41/temp/192.168.0.26/webtouch/war/webtouch-2.3.war (www提取文件)<br />
rm -rf /root/deploy/webtouch-2.3.war<br />
cp webtouch-2.3.war /root/deploy/webtouch-2.3.war<br />
<br />
--bbb.sh<br />
rm -rf webtouch-2.3_static.zip<br />
rm -rf static<br />
wget http://192.168.0.41/temp/192.168.0.26/webtouch/static/webtouch-2.3_static.zip<br />
unzip webtouch-2.3_static.zip -d static <br />
<br />
<br />
<img src ="http://www.blogjava.net/hummer008/aggbug/234443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hummer008/" target="_blank">hummer</a> 2008-10-15 14:45 <a href="http://www.blogjava.net/hummer008/articles/234443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>