1. 在Normal模式下,输入“>>”表示右移一个tab位,相似的,按“<<”左移。
2. 命令模式下,输入 le 表示该行左对齐,相似的,输入ri表示右对齐。居中对齐就是ce。这三个命令分别是left和right,center的头两个字母,比较利于记忆
3. gqq 命令,在本行进行段落重排。
4. gqQ命令,在全文段落重拍
2010年12月29日星期三
2010年12月28日星期二
gVim使用技巧:基本操作
找了很久的文本编辑器,最后发现vim才是最好用的。打算开始一步步踏踏实实的学习如何使用vim,因为工作用的Windows,所以下载了个gVim来用。以下是一些使用技巧:
1. 如何打开文件:直接把文件拖到gVim的编辑区或者在命令模式下输入“tabnew 文件名”,按tab键可以自动补全,然后回车即可。也可以显示命令菜单,然后点击“打开”来打开一个文件。
2. 光标移动:在Normal模式下,hjkl分别代表左下上右。gg回到文件开头,G$回到文件末尾。w跳过一个词,并且停留在词开头;e跳过一个词,并且停留在词结尾。i在光标前插入,I在行首插入。a在光标后插入,A在行尾插入。^ 键回到行首,$ 键回到行尾(类似正则表达式的首尾)。输入数字+G或者数字+gg可以跳到指定的行。
3. 文本编辑:
1) 复制&粘贴: 采用y命令组合来实现复制。例如
yy 表示复制一行
y$ 表示复制从光标到行尾
y^ 表示复制从光标到行首
采用p命令来实现粘贴。在要粘贴的地方直接按p,即可实现粘贴功能。
2) 查找:采用/或者?来进行查找,支持正则表达式。/ 为从上到下查找,? 为从下到上查找。查找到的结果会自动高亮。如果要移动到下一个查找到的目标,则按n键。移动到上一个查找到的目标按N键。
3)替换:采用s命令来进行替换。在正常模式下,按:进入命令模式,输入“%s/old/new”,其中,%表示全文替换,将所有找到的old用new来替换。为了保险起见,可以输入“%s/old/new/c”,c参数表示confirm,替换之前会进行一次确认。如果不指定范围,默认替换发生在光标所在的行。
4)删除:在正常模式下使用x命令进行删除单个字符。可以指定数字或者和光标移动命令组合使用。比如5x表示删除从光标开始的5个字符。可以使用dd来快速删除一行记录。dw删除一个词。
4. 保存文件:在命令模式下输入w表示保存(write),可以组合命令,比如qw表示保存且退出。
1. 如何打开文件:直接把文件拖到gVim的编辑区或者在命令模式下输入“tabnew 文件名”,按tab键可以自动补全,然后回车即可。也可以显示命令菜单,然后点击“打开”来打开一个文件。
2. 光标移动:在Normal模式下,hjkl分别代表左下上右。gg回到文件开头,G$回到文件末尾。w跳过一个词,并且停留在词开头;e跳过一个词,并且停留在词结尾。i在光标前插入,I在行首插入。a在光标后插入,A在行尾插入。^ 键回到行首,$ 键回到行尾(类似正则表达式的首尾)。输入数字+G或者数字+gg可以跳到指定的行。
3. 文本编辑:
1) 复制&粘贴: 采用y命令组合来实现复制。例如
yy 表示复制一行
y$ 表示复制从光标到行尾
y^ 表示复制从光标到行首
采用p命令来实现粘贴。在要粘贴的地方直接按p,即可实现粘贴功能。
2) 查找:采用/或者?来进行查找,支持正则表达式。/ 为从上到下查找,? 为从下到上查找。查找到的结果会自动高亮。如果要移动到下一个查找到的目标,则按n键。移动到上一个查找到的目标按N键。
3)替换:采用s命令来进行替换。在正常模式下,按:进入命令模式,输入“%s/old/new”,其中,%表示全文替换,将所有找到的old用new来替换。为了保险起见,可以输入“%s/old/new/c”,c参数表示confirm,替换之前会进行一次确认。如果不指定范围,默认替换发生在光标所在的行。
4)删除:在正常模式下使用x命令进行删除单个字符。可以指定数字或者和光标移动命令组合使用。比如5x表示删除从光标开始的5个字符。可以使用dd来快速删除一行记录。dw删除一个词。
4. 保存文件:在命令模式下输入w表示保存(write),可以组合命令,比如qw表示保存且退出。
2010年12月14日星期二
JRockit和Hotspot进行Heap Dump的参数
最新版的JRockit(R28,2010年4月)版本已经支持OOM时将堆内存转储出来,供离线分析使用了。使用的参数跟Sun的JDK类似,通过指定如下的JVM参数运行即可:
-XX:+HeapDumpOnOutOfMemoryError: Enables generation of Java heap dumps on out-of-memory errors
-XX:+HeapDumpOnCtrlBreak: Enables generation of Java heap dumps on pressing Ctrl-Break.
第一个参数是OOM时自动转储,第二个参数是在控制台按Ctrl+Break转储。
注意这个参数和使用jrcmd里面的print_threads,oom_diagnose之类的命令是不同的,后者产生的是标准的文本文件,供人阅读分析的。Heap Dump文件是二进制文件,可以使用MAT一类的离线分析工具来分析系统中可能存在的内存泄漏问题。
-XX:+HeapDumpOnOutOfMemoryError: Enables generation of Java heap dumps on out-of-memory errors
-XX:+HeapDumpOnCtrlBreak: Enables generation of Java heap dumps on pressing Ctrl-Break.
第一个参数是OOM时自动转储,第二个参数是在控制台按Ctrl+Break转储。
注意这个参数和使用jrcmd里面的print_threads,oom_diagnose之类的命令是不同的,后者产生的是标准的文本文件,供人阅读分析的。Heap Dump文件是二进制文件,可以使用MAT一类的离线分析工具来分析系统中可能存在的内存泄漏问题。
2010年12月7日星期二
Nginx反向代理配置
步骤如下:
1. 下载安装Nginx
2. 修改Nginx的配置文件nginx.conf,加入以下配置:
location /rc {
proxy_pass http://destHost:80/rc;
proxy_redirect default;
}
当请求本机Nginx监听端口时,Nginx会将该请求代理至目标服务器,由此实现反向代理和负载均衡。
3. 如果客户端至服务器中有Hessian请求时,需要修改Hessian请求参数,否则会导致Nginx抛出411异常,如下:
com.caucho.hessian.client.HessianConnectionException: 411:java.io.IOException: Server returned HTTP response code: 411 for URL:http://xxxx/xxx/xxxService
解决该问题的方法是关闭Hessian向服务端请求时的分块数据传送(chunked post),可以通过设置Hessian的客户端代理类的方式进行,具体如下:
proxyFactory.setChunkedPost(false);
这样就能解决Hessian应用走Nginx反向代理的异常。详细的说明可参见这里
1. 下载安装Nginx
2. 修改Nginx的配置文件nginx.conf,加入以下配置:
location /rc {
proxy_pass http://destHost:80/rc;
proxy_redirect default;
}
当请求本机Nginx监听端口时,Nginx会将该请求代理至目标服务器,由此实现反向代理和负载均衡。
3. 如果客户端至服务器中有Hessian请求时,需要修改Hessian请求参数,否则会导致Nginx抛出411异常,如下:
com.caucho.hessian.client.HessianConnectionException: 411:java.io.IOException: Server returned HTTP response code: 411 for URL:http://xxxx/xxx/xxxService
解决该问题的方法是关闭Hessian向服务端请求时的分块数据传送(chunked post),可以通过设置Hessian的客户端代理类的方式进行,具体如下:
proxyFactory.setChunkedPost(false);
这样就能解决Hessian应用走Nginx反向代理的异常。详细的说明可参见这里
Apache反向代理配置
Apache的反向代理设置较为简单,按以下步骤进行即可:
1. 下载安装apache http server
2. 安装
3. 编辑apache_install_directory/conf/httpd.conf文件:
1)开启加载反向代理模块,即取消一下两行配置代码的注释:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
2)增加如下配置:
1 <IfModule mod_proxy.c> 2 ProxyRequests off 3 <Proxy *> 4 Order deny,allow 5 Allow from all 6 </Proxy> 7 ProxyPass /rc http://target_host:port/rc 8 ProxyPassReverse /rc http://target_host:port/rc 9 </IfModule> 10将Proxy开启,其中ProxyPass为反向代理主要配置,当请求本机监听的端口,且URL为rc时,Apache将会去目标服务器(destHost)请求,从而代理该请求。ProxyPassReverse配置为Apache 调整HTTP重定向回应中
Location,Content-Location和URI头里的URL。代理的配置详细参数可参见这里。
4. 如果请求量比较大,则考虑关闭apache的访问日志,否则该日志增长过快,且影响性能,在httpd.conf里面注释掉配置项:
#CustomLog "logs/access.log" common
6. 如果是Windows系统,则可能会因为防火墙和杀毒软件的关系,导致apache报以下的异常:
(OS 64)指定的网络名不再可用。 : winnt_accept: Asynchronous AcceptEx failed.
造成该问题的原因是因为Apache使用了Windows的一个封装方法,加入以下配置消除该异常:
Win32DisableAcceptEx
ThreadsPerChild 250
MaxRequestsPerChild 0
7. 如果出现 Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting 的提示,则考虑增加ThreadsPerChil (子进程的线程数)值。
订阅:
博文 (Atom)