﻿<?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>IT博客-哈库拉玛塔塔——tjitty-随笔分类-实用技巧</title><link>http://www.cnitblog.com/tjitty/category/6889.html</link><description>记录下网络上的精品测试技术文章 and 生活</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 14:42:20 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 14:42:20 GMT</pubDate><ttl>60</ttl><item><title>Excel 常用技巧</title><link>http://www.cnitblog.com/tjitty/archive/2011/01/14/72654.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Fri, 14 Jan 2011 07:11:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2011/01/14/72654.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/72654.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2011/01/14/72654.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/72654.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/72654.html</trackback:ping><description><![CDATA[EXCEL定义名称的10个妙处

名称的定义是EXCEL的一基础的技能，可是，如果你掌握了，它将给你带来非常实惠的妙处！ 

1. 如何定义名称 
插入 – 名称 – 定义 

<img src ="http://www.cnitblog.com/tjitty/aggbug/72654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2011-01-14 15:11 <a href="http://www.cnitblog.com/tjitty/archive/2011/01/14/72654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Readme.txt</title><link>http://www.cnitblog.com/tjitty/archive/2010/07/22/67657.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Thu, 22 Jul 2010 13:38:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2010/07/22/67657.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/67657.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2010/07/22/67657.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/67657.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/67657.html</trackback:ping><description><![CDATA[
		<font face="Verdana">mount -o vers=3 bosnfs01:/u02/release /u01/share<br />mount -o vers=3 bosnfs01:/u01/home /home<br />mount -o vers=3 bosnfs01:/u01/builder /home/builder<br /><br />Find out the disk cost:<br />du . | sort -n -r | more<br /><br />Lumigent Schema Backup:<br />exp system/oracle owner=lumigent file=lumigent_ADB625drop7.dmp<br />imp system/oracle full=y file=lumigent_ADB625drop7.dmp<br /><br />export ORACLE_HOME=/u01/oracle/home/oracle<br />export ORACLE_BASE=/u01/oracle/<br />export ORACLE_SID=orcl<br />export PATH=$ORACLE_HOME/bin:$PATH<br />export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH:$ORACLE_HOME/ctx/lib:/usr/lib:/usr/local/lib<br /><br />Name  From  Host  Port No  Status    <br />TestEmailServer  tongyong1@lumigent.com  192.168.20.XXX  25  Enabled  <br />http://10.67.6.108:6080/<br /><br />如何查看Linux操作系统的位数<br />1.编程实现：<br />在程序中返回sizeof(int)的值，返回的结果是操作系统的字节数。若返回4则是32位操作系统，返回8即是64位。<br />2.2.getconf命令：<br />getconf命令可以获取系统的基本配置信息，比如操作系统位数，内存大小，磁盘大小等。<br />例如：<br />getconf LONG_BIT<br />3. uname -a<br /><br />' Get the Linux OS version<br />lsb_release -a<br /><br />=====================<br />Check solaris and Linux info:<br />=====================<br />Solaris<br />======<br /> prtdiag -v  //check solaris cpu info<br /> isainfo -kv  //check solaris 32/64bit<br /> prstat -a  //vmstat 3 : check solaris physical memory info<br />Linux<br />======<br /> [root@devblade09 ~]# more /etc/redhat-release  //check Linux version<br />Red Hat Enterprise Linux ES release 4 (Nahant)<br /> uname -a  //Check all infor<br /> uname  //check system infor<br /><br />设置WindowsUser域用户：control userpasswords2<br /><br />如何查看Linux系统版本<br />1)uname -a<br />2)cat /proc/version<br />3)cat /etc/issue<br /><br />查看HP-UX型号：<br />uname -a<br />model (pa-risc的产品号以rp打头，itanium的产品号以rx打头)<br /><br /><br />DB2 OS directory:<br />/home/db2inst2/sqllib/security (DB2 v9 or before)<br />/u01/IBM/db2inst1/sqllib/security/auditdata (DB2 v9.5)<br />Archive log file:<br />/home/db2inst2/archive/db2inst2/TEST/NODE0000/C0000000<br />/u01/IBM/db2inst1/archive/db2inst1/LLEE1/NODE0000/C0000000<br /><br />Edit /etc/group, add oracle to all db2 groups <br />Chmod read premission of DB2 archive log folder to Oracle user <br />chmod read premission of db2 auditdata files to Oracle user <br />Each time run archive log for db [database_name], remember to give its read premission to Oracle before collect. <br />Feel free to collect ^_^ <br /><br />Linux (devlnx07) [192.168.20.169]     db2inst2/db2inst1    50002<br />http://192.168.20.169:10080/eac/jsp/login.jsp<br />Solaris (devsol14) [172.16.1.198]    db2inst2/db2inst2    60008<br />http://172.16.1.198:10080/eac/jsp/login.jsp<br />AIX5.3 (devaix01) [192.168.20.64]     db2inst3/db2inst3    60008<br />http://192.168.20.64:10080/eac/jsp/login.jsp<br /><br />TO check if the DB2 works fine:<br />1 db2 list db directory<br />2 db2level<br />3 db2 get dbm cfg<br />4 cat /etc/services | grep db2c_db2inst2<br />5 connect to sample1 user db2admin using 8301206 <br />6 connect reset<br />7 db2 archive log for database TESTDB<br />8 db2 force application all (close all connections)<br />9 db2audit describe<br />9 db2audit prune all (/opt/db2inst1/sqllib/security/db2audit.log)<br />10 db2 drop db LUMIGENT<br />11 db2 "select * from syscat.bufferpools"<br />12 db2 list node directory<br />    db2 uncatalog node <node name=""><br />13 create table AAA ( A1 int, A2 int, A3 int)<br />14 db2 get db cfg for testdb<br />15 db2 list tables for schema REPLOG1<br />$ db2 catalog tcpip node aix01N remote devaix104 server 50000<br />$ db2 catalog db TestDB as TestDB2 at node aix01N<br />$ db2 connect to TestDB2 user db2inst1 using db2inst1<br /><br />----------------------------------------------------------------<br /> Deploy on tstauto02 using win2k3 package<br />----------------------------------------------------------------<br />USING QTP<br />------------------------------------------------------------------------------------------<br />1 setup an ODBC: run: C:\Windows\SysWOW64\odbcad32.exe<br />2 InternetExplorer path setting.<br />3 Uninstall Netwatch should show the iwatch servier window and start servier.<br />4 cookies and temp files problem<br />5 Cannot recognize "Create Audit Source" button in netwatch page.<br />6 When install, QTP stop at "Next" or "Browser" buttons.<br />7 When deployment Audit DB Report Server Templates finished, click "Reports" tab, the report templates didn't show out. But after refresh the page, they shows out.<br />8 When running QTP, it's better keep the window outest.<br />9 Sometime QTP will stop at Netwatch page(http://localhost:10080/eac/sniffer.do), it's didn't recognize the link in this page.<br /><br />10 How To disable the Windows Security Warning <br />start the Group Policy Editor (Start &gt; Run, type<br />-gpedit.msc- and press OK) and go to:<br /><br />-User Configuration &gt; Administrative Templates &gt; Windows Components &gt;<br />Attachment Manager- then set -Inclusion list for low file types- to<br />Enabled and enter the file types you don't want to be warned about in<br />the box (for example: .exe). <br /><br />----------------------------------------------------------------<br /> Deploy on Devsol12 using unix-oracle package<br />----------------------------------------------------------------<br />/usr/QTP/installFiles<br />/home/oracle/devsol12/lumigent/<br /><br />http://192.168.20.59:10080/eac/jsp/login.jsp<br /><br />DSName: ORA-DEVSOL12<br /><br />sqlplus "sys/oracle@sol12o9 as sysdba";<br />sqlplus Rep_Log/Rep_Log<br />select name from LUMREPORTSUMMARY_PR;<br /><br />ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor<br />listener.ora (ORACLE 11G)<br />======================================<br />SID_LIST_LISTENER =<br />  (SID_LIST =<br />    (SID_DESC =<br />      (SID_NAME = PLSExtProc)<br />      (ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)<br />      (PROGRAM = extproc)<br />    )<br />     (SID_DESC =<br />      (GLOBAL_DBNAME = orcl11g)<br />      (ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)<br />      (SID_NAME = orcl11g)<br />    )<br />  ) <br />  <br />今天莫名其妙的ls,mkdir等命令不能用了，需要添加绝对目录才能用<br /><br />网上google了两小时：<br /><br />在终端下执行 export PATH=/bin:/usr/bin:/sbin:/usr/sbin <br /><br />解决！<br /><br />oracle 11g 密码大小写敏感问题<br />=======================================<br />ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;<br />SHOW PARAMETER SEC_CASE_SENSITIVE_LOGON<br /><br />sqlplus / as sysdba 报错 ORA-01031: insufficient privileges<br />========================================<br />修改$ORACLE_HOME/network/admin/sqlnet.ora<br />SQLNET.AUTHENTICATION_SERVICES= (ALL)<br /><br />获取Windows命令的返回值（PASS/FAIL）：<br />C:\Documents and Settings\tjitty&gt;cd .<br />C:\Documents and Settings\tjitty&gt;echo %errorlevel%<br />0<br /><br />SQL SERVER Cluster move to the next node command:<br />cluster SQL2008CLSTR group "SQL Server (MSSQLSERVER)" /moveto:vmsql05<br /><br />alter system set audit_trail=db_extended scope=spfile;<br />show parameter audit;<br />show parameter audit_trail<br /><br />./lmSubmit load/RepYong aslog_AppGRC20PSF_20090122_081719.ecz<br />./lmAgentBroker publish RepYong<br /><br />./bin/LTMsiUpgrade --ccdb-patch<br />./bin/LTMsiUpgrade --rep-patch<br /><br />qahp02: file lmAgentExec<br />lmAgentExec:    ELF-64 executable object file - IA64<br /><br />source .profile<br /><br />/sbin/service vsftpd start(restart)    #Start ftp services<br />/sbin/service iptables stop        #Close the firewall<br />rpm -q vnc vnc-server        #Check if software installed<br />rm -rf *                #Delete All files and directories<br />wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz<br />gunzip iwatchip_solaris10_u2_u3_u4.tar.gz<br />tar -xvf iwatchip_solaris10_u2_u3_u4.tar<br />                #unzip tar.gz files<br /><br />//查看机器位数<br />getconf LONG_BIT<br /><br />ls –l 查看详细信息<br />ls –la 查看详细信息及隐藏文件<br />wc –l file 计算文件的行数<br />wc –w file 计算文件的单词数<br />wc –c file 统计字符数<br />cp sourcefile destfile 拷贝文件<br />mv oldname newfile 重命名文件<br />grep ‘pattern’ file 在文件内搜索字符串或和正则表达式匹配的字符串<br />grep “hello” file.txt | wc –l 在file.txt中搜索包含有”hello”的行并计算行数，这里grep命令的输出成了wc命令的输入<br />Cut –b column file 将指定范围内的文件内容输出到标准输出设备上。<br />例：输出每行第5至9个字符 cut -b5-9 file.txt<br />find . –name filename 在当前目录下搜索文件名为filename的文件<br />head file 打印文本文件开头几行<br />tail file 打印文本文件末尾几行<br />&gt;写入文件并覆盖旧文件<br />&gt;&gt;追加到文件的尾部，保留旧文件内容。<br /><br />Get ADB gui install address:        ps -ef |grep gui<br /><br />Start/stop gui:            ./web.init start/stop<br />start/stop agent:            ./entegra.init start/stop<br /><br />Start iwatch in non-loopback mode:    <br />        (Linux)        ./iwatch start -i etho -a -d<br />        (HP/Solaris)    ./iwatch start -a -d<br />Start iwatch in loopback mode:(use ifconfig -a to find out your interface)<br />        (Linux)        ./iwatch start -i lo -i eth0 -a -d<br />        (AIX)        ./iwatch start -i lo0 -i en0 -a -d<br />        (HP/Solaris)    ./iwatch start -i loopback -a -d<br /><br />Stop iwatch:            ./iwatch stop all<br />Check iwatch status:        ./iwatch status all<br /><br />Load ecz file using command<br />-------------------------------------<br />source env.sh<br />./lmSubmit load/repo /.../data/???.ecz<br />./lmAgentBroker publish repo<br /><br />ps -ef // iwatch process check<br />./pnameserver<br />./psummarizer<br />./pcapture_multi<br />./mcon<br />./pserver<br />./iArch<br /><br />ps -ef // iarchive process check<br />./NetArchive<br /><br />Start iArchive:            ./iwatch start<br />Stop iArchive:            ./iwatch stop<br />Check iArchive status:        ./iwatch status all<br /><br />memory watch            ipcs -m<br />memory stop            ipcrm –m SID<br /><br />remove driver(Solaris)        pkgrm iwatchip<br />remove driver(HP-UX)        swremove iwatchip<br /><br />ALTER DATABASE DATAFILE 'filename'  RESIZE 800M;   // resize datafile.<br />vmstat 1 10 //memory<br /><br />HOW TO ENABLE TELNET SERVER/CLIENT ON WINDOWS 2008<br />----------------------------------------------------------------<br />ServerManagerCmd.ext -install Telnet-Server<br />ServerManagerCmd.exe -install Telnet-Client<br /><br />SQL for SYBASE<br />======================================<br />select name from sysdatabases<br />go<br />use testdb<br />go<br /><br />-bash-3.2$ cat entegra.init<br />==============================================<br />#!/bin/ksh<br /># Copyright (c) 2005-2007 by Lumigent Technologies, Inc.<br /># All rights reserved.<br />#<br /><br />AUDITDB_USER=`ls -ld /opt/lumigent/agent/agent.qarh5-02.hq.lumigent.int | awk '{print $3}' `<br /><br />case "$1" in<br />start)<br />        echo "Starting Lumigent Audit DB Agent."<br />        su - $AUDITDB_USER -c /opt/lumigent/agent/agent.qarh5-02.hq.lumigent.int/etc/runEntegraAgent.sh<br />    ;;<br /><br /><br />stop)<br />        echo "Stopping Lumigent Audit DB Agent."<br />    pid=`/bin/ps -u $AUDITDB_USER -o pid,fname |<br />     /bin/grep lm[A-Z] |<br />     /bin/sed -e 's/^  *//' -e 's/ .*//'`<br />    [ "$pid" != "" ] &amp;&amp; kill -TERM $pid<br />    ;;<br />*)<br />    echo "Usage: $0 {start|stop}"<br />    exit 1<br />    ;;<br />esac<br /><br />exit 0<br />-bash-3.2$<br /><br /><br />-bash-3.2$ cat env.sh<br />============================================================<br /># Use this script to set your bourne shell environment variables to the values<br /># that the Audit DB agent uses, for the purpose of running Audit DB command<br /># line tools.<br />#<br /># run ". env.sh"<br />#<br /># Copyright (c) 2005-2007 by Lumigent Technologies, Inc.<br /># All rights reserved.<br />#<br /><br />ORACLE_HOME="/u01/app/oracle/product/10.2.0/db_4"<br />export ORACLE_HOME<br /><br />TNS_ADMIN=""<br />export TNS_ADMIN<br /><br />SYBASE="/opt/sybase"<br />export SYBASE<br />LANG=C<br />export LANG<br /><br />LD_LIBRARY_PATH="/u01/app/oracle/product/10.2.0/db_4/lib32:/u01/app/oracle/product/10.2.0/db_4/lib:/opt/lumigent/agent/lib"${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH<br />export LD_LIBRARY_PATH<br /><br />PATH="/opt/lumigent/agent/bin":/u01/app/oracle/product/10.2.0/db_4/bin:$PATH<br />-bash-3.2$<br /><br />-bash-3.2$ cat runEntegraAgent.sh<br />=========================================================================<br />#!/bin/ksh<br /><br />ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_4<br />export ORACLE_HOME<br /><br />TNS_ADMIN=""<br />export TNS_ADMIN<br /><br />SYBASE="/opt/sybase"<br />export SYBASE<br />LANG=C<br />export LANG<br /><br />LD_LIBRARY_PATH="/u01/app/oracle/product/10.2.0/db_4/lib32:/u01/app/oracle/product/10.2.0/db_4/lib:/opt/lumigent/agent/lib"<br /><br />export LD_LIBRARY_PATH<br /><br />PATH=/opt/lumigent/agent/bin:/u01/app/oracle/product/10.2.0/db_4/bin:/opt/lumigent/agent/bin:/u01/app/oracle/product/10.2.0/db_4/bin:/u01/app/oracle/product/10.2.0/db_4/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/bin:/usr/local/bin:/usr/openwin/bin/:/usr/lbin:/usr/expect/bin:/usr/tcl/bin.:/u01/app/oracle/product/10.2.0/db_4/bin<br />export PATH<br /><br />cd /opt/lumigent/agent/agent.qarh5-02.hq.lumigent.int/etc<br />lmAgentExec lmEntegraAgent  &gt;&gt; lmEntegraAgent.out 2&gt;&amp;1<br /><br />-bash-3.2$<br /><br /><br /></node></font>
<img src ="http://www.cnitblog.com/tjitty/aggbug/67657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2010-07-22 21:38 <a href="http://www.cnitblog.com/tjitty/archive/2010/07/22/67657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Go ahead and live with google!</title><link>http://www.cnitblog.com/tjitty/archive/2010/05/29/66438.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Sat, 29 May 2010 04:43:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2010/05/29/66438.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/66438.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2010/05/29/66438.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/66438.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/66438.html</trackback:ping><description><![CDATA[http://74.125.71.99/
<p>http://74.125.153.99/</p><p> </p><p>最好写进hosts</p><p>C:\WINDOWS\system32\drivers\etc</p><p> # Copyright (c) 1993-1999 Microsoft Corp.<br />
#<br />
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.<br />
#<br />
# This file contains the mappings of IP addresses to host names. Each<br />
# entry should be kept on an individual line. The IP address should<br />
# be placed in the first column followed by the corresponding host name.<br />
# The IP address and the host name should be separated by at least one<br />
# space.<br />
#<br />
# Additionally, comments (such as these) may be inserted on individual<br />
# lines or following the machine name denoted by a '#' symbol.<br />
#<br />
# For example:<br />
#<br />
#      102.54.94.97     rhino.acme.com          # source server<br />
#       38.25.63.10     x.acme.com              # x client host</p><p>127.0.0.1       localhost</p><p>74.125.71.99  <a href="http://www.google.com/">www.google.com</a><br />
74.125.153.99  <a href="http://www.google.com/">www.google.com</a></p><p> </p><p> </p><p>Linux用户就不用我讲了吧，能玩linux的这个就不是问题了。</p><p> </p><p>一般人我不告诉</p><p>建议大家把这个设置为主页。不要用www.google.com.hk了</p><p>适用于SC&amp;SP</p><p>=============================</p><p>另外解释下楼主的问题，因为GFW会进行敏感词过滤，比如你搜索“胡萝卜”
那么你到www.google.com的链接会被重置。估计是有童鞋不小心搜到敏感词了。而我们都用同一个公网IP去链接google
的，GFW发现你搜敏感词，会封锁我们的公网IP一段时间，导致服务不可用。</p><p>至于敏感词，我就不知道哪些了，有关部门没有公布。</p><p><br /></p><p><br /></p><p>74.125.71.99  <a href="http://www.google.com/">www.google.com</a><br />
74.125.153.99  <a href="http://www.google.com/">www.google.com</a></p><p><br />
64.233.181.105 <a href="http://www.google.com/">www.google.com</a><br />
64.233.181.106 <a href="http://www.google.com/">www.google.com</a><br />
64.233.181.147 <a href="http://www.google.com/">www.google.com</a><br />
64.233.181.99 <a href="http://www.google.com/">www.google.com</a><br />
64.233.181.103 <a href="http://www.google.com/">www.google.com</a><br />
64.233.181.104 <a href="http://www.google.com/">www.google.com</a></p><p>都写到host里面，哈哈。后面几个是之前Email里有的</p><p><br /></p><img src ="http://www.cnitblog.com/tjitty/aggbug/66438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2010-05-29 12:43 <a href="http://www.cnitblog.com/tjitty/archive/2010/05/29/66438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 UNIX find 命令的高级技术</title><link>http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 20 Jan 2010 01:55:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/63833.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/63833.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/63833.html</trackback:ping><description><![CDATA[
		<p>转载自：http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html#listing1<br /></p>
		<p>没有什么能比得上探索和发现新的人、地方、事物所带来的刺激。领域可能有所不同，但有些原则却是一样的。在这些原则中，有一条是记录下您的旅程，另一条则是了解和使用工具。</p>
		<p>UNIX® 操作系统很像一片广阔的、未经标识的荒野。当您在这样的领域中旅行时，可以选择一些日后能够给您带来帮助的工具。<code>find</code> 命令便是这样一种工具。<code>find</code> 命令不仅能够简单地用来定位文件，正如本文将介绍的那样，它还可以自动地执行其他 UNIX 命令的序列，其中使用所查找到的文件名作为输入。</p>
		<p>
				<a name="N1006C">
						<span class="atitle">Find 的有关限制</span>
				</a>
		</p>
		<p>所有称职的操作系统都具有协助您查找相关内容的工具。与大多数工具不同的是，UNIX 中的 <code>find</code> 命令可以自动地对其查找到的文件执行许多操作。</p>
		<p>图形用户界面 (GUI) 中的标准 <code>find</code>
工具允许您对所查找到的文件进行一些常规操作任务：您可以将它们标记为剪切、复制和粘贴，您可以将它们移动到一个新的位置，并且可以使用创建它们的应用程
序来打开它们。这些操作涉及到两个或更多的步骤，并且不是自动完成的，即首先查找到文件，然后使用 GUI
为下一步的操作对它们进行标记。这种方法对许多用户来说没有问题，但是 Explorer 需要的不仅是这些。</p>
		<p>UNIX 的 <code>find</code> 命令可以删除、复制、移动和执行其查找到的文件。另外，使用 <code>-exec</code> 参数可以根据您所需要的 UNIX 命令的序列来自动地运行这些文件。它甚至可以在对任何文件执行这些操作前，进一步让您进行确认。</p>
		<p>
				<a name="N1008C">
						<span class="atitle">简化文件系统的管理</span>
				</a>
		</p>
		<p>与大多数 UNIX 命令一样，UNIX <code>find</code> 命令具有一长串令人生畏的选项和开关，它们会阻碍人们深入地学习该命令，但正是因为其范围广阔，真正的 Explorer  并不会被它们吓倒。一条好的通用原则在简化一个复杂问题时都会经过漫长的过程。启动一个 xterm，并尝试执行下面的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find . -name *.gif -exec ls {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<code>-exec</code> 参数中包含了真正有价值的操作。当查找到匹配搜索条件的文件时，<code>-exec</code> 参数定义了将对这些文件进行什么操作。该示例告诉计算机进行如下操作：

</p>
		<ol>
				<li>从当前文件夹开始往下搜索，紧跟在 <code>find</code> 之后，使用点号 (<code>.</code>)。</li>
				<li>定位所有名称以 .gif 结尾的文件（图形文件）。</li>
				<li>列出所有查找到的文件，使用 <code>ls</code> 命令。</li>
		</ol>
		<p>需要对 <code>-exec</code> 参数进行更深入地研究。当查找到匹配搜索条件的文件名时，<code>find</code> 命令执行 <code>ls {}</code> 字符串，用文件名和路径代替文本 <code>{}</code>。假设在搜索中查找到 saturn.gif 文件，<code>find</code> 将执行如下所示的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ ls ./gif_files/space/solar_system/saturn.gif<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>本文余下的内容建立在这条一般原则之上：仔细地使用 <code>find</code> 命令可以让 UNIX 文件系统的管理工作变得更加容易。例如，如果您使用了 <code>-fstype</code> 参数，<code>find</code> 命令可以根据查找到的文件所处的文件系统的类型来对命令进行相应的处理。在 <code>find</code> 命令对查找到的文件执行相应命令前将对您进行提示，这通常是非常有用的，您可以使用 <code>-ok</code> 参数告诉它继续执行该操作，接下来我们将对其进行介绍。</p>
		<p>
				<a name="N100F3">
						<span class="atitle">可选的执行</span>
				</a>
		</p>
		<p>
				<code>-ok</code> 是 <code>-exec</code> 参数的一个重要的替代项，它的行为和 <code>-exec</code> 一样，但它会提示您是否要对文件运行相应的命令。假设您想要删除 home 目录中的大部分 .txt 文件，但希望能够逐个文件地执行该操作。像 UNIX 中的 <code>rm</code> 命令那样的删除操作是很危险的，因为当使用像 <code>find</code> 这样的自动化处理方式来查找文件时，它可能一不小心会删除重要的文件，您也许希望在删除这些系统查找到的文件之前对其进行仔细检查。</p>
		<p>下面的命令列出了您的 home 目录中所有的 .txt 文件。要删除这些文件，必须在 <code>find</code> 命令通过列出文件名提示您确认操作时输入 <code>Y</code> 或者 <code>y</code>：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find $HOME/. -name *.txt -ok rm {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>它列出了查找到的每个文件，并且系统将暂停以等待您输入 <code>Y</code> 或者 <code>y</code>。如果您按下 <b>Enter</b> 键，系统将不会删除该文件。<a linkindex="23" href="http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html#listing1">清单 1</a> 显示了一些示例结果：</p>
		<br />
		<a name="listing1">
				<b>清单 1. 示例结果</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">&lt; rm ... /home/bill/./.kde/share/apps/karm/karmdata.txt &gt; ?<br />&lt; rm ... /home/bill/./archives/LDDS.txt &gt; ?<br />&lt; rm ... /home/bill/./www/txt/textfile1.txt &gt; ?<br />&lt; rm ... /home/bill/./www/txt/faq.txt &gt; ?<br />&lt; rm ... /home/bill/./www/programs/MIKE.txt &gt; ?<br />&lt; rm ... /home/bill/./www/programs/EESTRING.txt &gt; ?<br />.<br />.<br />.<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>系统将在每个问号之后暂停，在本示例中，每次都按下了 Enter 键以继续处理下一个文件。（没有删除任何文件。）<code>-ok</code> 参数允许您控制每个查找到的文件的自动化处理过程，这样就添加了一种避免自动删除文件的安全措施。</p>
		<p>如果在使用 <code>-ok</code> 参数时涉及到过多的文件，那么一个好的方法是先运行带 <code>-exec</code> 的 <code>find</code> 命令以列出所有将要删除的文件，然后在经过检查确保其中不会删除重要的文件后，再次运行该命令，其中用 <code>rm</code> 代替 <code>ls</code>。</p>
		<p>
				<code>-exec</code> 和 <code>-ok</code> 都非常有用，您必须确定在当前情况下哪一个能够更好的工作。请记住，安全第一！</p>
		<p>
				<a name="N10168">
						<span class="atitle">创造性地使用 find</span>
				</a>
		</p>
		<p>您可以使用 <code>find</code> 命令执行各种各样的任务。本部分内容提供了使用 <code>find</code> 命令来管理文件系统的几种方式的示例。</p>
		<p>为了保持简单，这些示例都避免了使用涉及通过管道将一个命令的输出传递到另一个命令的 <code>-exec</code> 命令。然而，您完全可以根据自己需要在 find 命令的 <code>-exec</code> 子句中使用这样的命令。</p>
		<p>
				<a name="N10185">
						<span class="smalltitle">清除临时文件</span>
				</a>
		</p>
		<p>您可以使用 <code>find</code> 命令来清除目录或子目录中在正常使用过程中生成的临时文件，这样可以节省磁盘空间。要实现该操作，请使用下面的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find . \( -name a.out -o -name '*.o' -o -name 'core' \) -exec rm {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>括号中的<i>文件掩码</i> 标识出了需要删除的文件类型，每个文件掩码的前面都有 <code>-name</code>。该列表可以扩展为包括您需要清除的系统中的任何临时文件类型。在代码的编译和连接过程中，程序员及其工具会生成示例中的那些文件类型：<code>a.out</code>、<code>*.o</code> 和 <code>core</code>。其他的用户通常也会生成类似的临时文件，可以使用如 <code>*.tmp</code>、<code>*.junk</code> 等文件掩码来对命令进行相应的编辑。您可能还发现将命令放入一个称作 <code>clean</code> 的脚本中非常有用，当需要清除一个目录中的内容的时候就可以执行该脚本。</p>
		<p>
				<a name="N101BA">
						<span class="smalltitle">复制目录中的内容</span>
				</a>
		</p>
		<p>
				<code>find</code> 命令允许您复制目录中的全部内容，同时保持每个文件和子目录的权限、时间和所有权。要完成该操作，需要组合使用 <code>find</code> 和 <code>cpio</code> 命令，如下所示：</p>
		<br />
		<a name="listing2">
				<b>清单 2. 组合使用 find 和 cpio 命令</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">
												<br />$ cd /path/to/source/dir<br /><br />$ find . | cpio -pdumv /path/to/destination/dir<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<code>cpio</code> 命令是一个复制命令，它设计用来将文件复制到或复制出一个 cpio 或 tar 存档文件，并自动地保持文件和子目录的权限、时间和所有权。</p>
		<p>
				<a name="N101DF">
						<span class="smalltitle">列出文本文件的第一行内容</span>
				</a>
		</p>
		<p>有些人使用每个文本文件的第一行作为标题或者文件内容的描述。可以使用列出文件名和所有文本文件第一行内容的报表更方便地对大量的文本文件进行筛选。下面的命令在报表中列出了您的 home 目录中所有文本文件的第一行内容，便于进一步地根据需要使用 <code>less</code> 命令进行检查：</p>
		<br />
		<a name="listing3">
				<b>清单 3. less 命令</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">
												<br />$ find $HOME/. -name *.txt -exec head -n 1 -v {} \; &gt; report.txt<br /><br />$ less &lt; report.txt<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="N101F7">
						<span class="smalltitle">维护 LOG 和 TMP 文件的存储空间</span>
				</a>
		</p>
		<p>要为生成大量文件的应用程序维护 LOG 和 TMP 文件存储空间，可以将下列命令放入到每天运行的 <code>cron</code> 任务中：</p>
		<br />
		<a name="listing4">
				<b>清单 4. 维护 LOG 和 TMP 文件存储空间</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">
												<br />$ find $LOGDIR -type d -mtime +0 -exec compress -r {} \;<br /><br />$ find $LOGDIR -type d -mtime +5 -exec rm -f {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>第一个命令找到 $LOGDIR 目录中所有包含在 24 小时内 (<code>-mtime +0</code>) 进行了修改的数据的目录 (<code>-type d</code>)，并对它们进行压缩 (<code>compress -r {}</code>) 以节省磁盘空间。如果这些目录超过了一个工作周 (<code>-mtime +5</code>)，第二个命令则将其删除 (<code>rm -f {}</code>)，以便增加磁盘上的可用空间。通过这种方式，cron 任务自动地根据您所指定的时间窗口对目录进行维护。</p>
		<p>
				<a name="N10226">
						<span class="smalltitle">复制复杂的目录树</span>
				</a>
		</p>
		<p>如果您想要将复杂的目录树从一台计算机复制到另一台计算机，同时保持副本权限以及 User ID 和 Group ID（UID 和 GID——操作系统所使用的标记文件的所有权的数值），并且不复制用户文件，那么就需要再次使用 <code>find</code> 和 <code>cpio</code>： </p>
		<br />
		<a name="listing5">
				<b>清单 5. 复制复杂的目录树</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ cd /source/directory<br /><br />$ find . -depth -print | cpio -o -O /target/directory<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="N10242">
						<span class="smalltitle">查找不指向任何地方的链接</span>
				</a>
		</p>
		<p>要查找不指向任何地方的链接，可以使用带 <code>find</code> 的 <code>perl</code> 解释器，如下所示：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find / -type l -print | perl -nle '-e || print';<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>该命令从最顶层目录 (/) 开始，列出由 <code>perl</code> 解释器确定不指向任何地方 (<code>-nle '-e || print'</code>) 的所有链接 (<code>-type l -print</code>)，关于 Unix Guru Universe 站点中这个技巧的更详细的信息，请参阅<a linkindex="24" href="http://www.ibm.com/developerworks/cn/aix/library/es-unix-find.html#resources">参考资料</a>部分。如果您想要删除这些文件，可以进一步使用管道将输出传递到 <code>rm -f {}</code> 命令。当然，Perl 可以在大多数的 UNIX 工具包中找到，它是许多功能强大的解释性语言工具中的一种。</p>
		<p>
				<a name="N10270">
						<span class="smalltitle">定位和重命名无法打印的目录</span>
				</a>
		</p>
		<p>在 UNIX 中，可能会有错误的或恶意的程序创建包含无法打印的字符的目录。定位和重命名这些目录，这样就可以更容易地检查并删除它们。要完成该操作，您首先需要在 <code>ls</code> 中包含 <code>-i</code> 开关，以获取该目录的索引节点的数值。然后，使用 <code>find</code> 将索引节点的数值转换为一个可以使用 <code>mv</code> 命令进行重命名的文件名：</p>
		<br />
		<a name="listing6">
				<b>清单 6. 定位和重命名无法打印的目录</b>
		</a>
		<br />
		<table width="572" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ ls -ail<br /><br />$ find . -inum 211028 -exec mv {} newname.dir \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>
				<a name="N10294">
						<span class="smalltitle">列出长度为零的文件</span>
				</a>
		</p>
		<p>要列出所有长度为零的文件，请使用下面的命令：</p>
		<table width="400" border="0" cellpadding="0" cellspacing="0">
				<tbody>
						<tr>
								<td class="code-outline">
										<pre class="displaycode">$ find . -empty -exec ls {} \;<br /></pre>
								</td>
						</tr>
				</tbody>
		</table>
		<br />
		<p>在查找到空文件之后，您可以选择用 <code>rm</code> 命令来代替 <code>ls</code> 命令，以删除这些文件。</p>
		<p>很明显，您对 UNIX <code>find</code> 命令的使用受到知识和创造性的限制。</p>
		<p>
				<a name="N102B5">
						<span class="atitle">结束语</span>
				</a>
		</p>
		<p>使用 <code>find</code> 命令，可以轻松地浏览 UNIX 文件系统中丰富的内容。很值得花时间来试验该命令，并了解它能为您做些什么。正如本文中所列出的示例，您可以通过许多创造性的方式来使用 <code>find</code>，这样可以轻松地浏览和管理文件系统，并且充满乐趣。</p>
		<p>
				<br />
		</p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/63833.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2010-01-20 09:55 <a href="http://www.cnitblog.com/tjitty/archive/2010/01/20/63833.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>How to determine that your OS is 64-bit compliant</title><link>http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Tue, 14 Jul 2009 14:05:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/60091.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/60091.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/60091.html</trackback:ping><description><![CDATA[
		<h3>
				<font face="Arial">How can I determine if my computer/operating system is 64-bit?</font>
		</h3>
		<table class="faqtitle">
				<tbody>
						<tr>
								<td>
										<font face="Arial">
	
	Title
	
    </font>
								</td>
								<td rowspan="3">
										<font face="Arial"> </font>
								</td>
								<td>
										<font face="Arial">
	
	How to determine that your OS is 64-bit compliant
	
    </font>
								</td>
						</tr>
						<tr>
								<td>
										<font face="Arial">
	
	Author
	
    </font>
								</td>
								<td>
										<font face="Arial">
	
	Pete Huckelba, StataCorp
	
    </font>
								</td>
						</tr>
						<tr>
								<td>
										<font face="Arial">
	
	Date
	
    </font>
								</td>
								<td>
										<font face="Arial">
	
	June 2005; updated February 2009
	
    </font>
								</td>
						</tr>
				</tbody>
		</table>
		<hr />
		<h3 id="windows">
				<font color="#ff0000" face="Arial">Windows</font>
		</h3>
		<p>
				<font face="Arial">
   If you are using Windows Vista, click <b>Start</b> -&gt; <b>Control Panel</b>
   -&gt; <b>System and Maintenance</b> -&gt; <b>System</b>.  The
   <b>System type:</b> line will give you the Operating System type:

</font>
		</p>
		<div class="centerit">
				<font face="Arial">
						<a href="javascript:big_window('/support/faqs/win/vista_64.gif')">
								<img src="http://www.stata.com/support/faqs/win/vista_64sm.gif" style="padding: 5px; width: 200px;" alt="" />
						</a>
				</font>
		</div>
		<p>
				<font face="Arial">
   If you are using Windows XP, click <b>Start</b> -&gt; <b>Run</b> and type
   <b>dxdiag</b>.  If a Windows dialog box is displayed asking if you want to
   verify your drivers, you can safely click <b>No</b> and continue.  When the
   program has finished loading, you should see something similar to one of the
   following images:

</font>
		</p>
		<div class="centerit">
				<table class="centerit" style="width: 100%;">
						<tbody>
								<tr>
										<td style="vertical-align: middle; text-align: center;">
												<font face="Arial">
														<a href="javascript:big_window('/support/faqs/win/winxp64.gif')">
																<img src="http://www.stata.com/support/faqs/win/winxp64sm.gif" style="padding: 5px; width: 200px;" alt="" />
														</a>

 

<a href="javascript:big_window('/support/faqs/win/winxp64-2.gif')"><img src="http://www.stata.com/support/faqs/win/winxp64-2sm.gif" style="padding: 5px; width: 200px;" alt="" /></a>

 

<a href="javascript:big_window('/support/faqs/win/win2003.gif')"><img src="http://www.stata.com/support/faqs/win/win2003sm.gif" style="padding: 5px; width: 200px;" alt="" /></a></font>
										</td>
								</tr>
						</tbody>
				</table>
		</div>
		<p>
				<font face="Arial">
  The <b>Operating System</b> line, refers to Windows &lt;some
  version&gt; x64 or 64-bit edition.  The last image above specifies the processor
  <b>Itanium</b>, which is a 64-bit processor.
</font>
		</p>
		<h3 id="mac">
				<font color="#ff0000" face="Arial">Mac</font>
		</h3>
		<p>
				<font face="Arial">
  Select <b>About this Mac</b> from the <b>Apple</b> menu.  The text below
  <b>Mac OS X</b> will give the operating system version, and the
  <b>Processor</b> line will give you the processor type.
</font>
		</p>
		<div class="centerit">
				<font face="Arial">
						<img src="http://www.stata.com/support/faqs/win/aboutthismac.jpg" alt="about this mac" />
				</font>
		</div>
		<p>
				<font face="Arial">
  Mac OS X 10.5 (or greater) is a 64-bit operating system.  Intel Core 2 Duo,
  Intel Xeon, and PowerPC G5 are 64-bit processors.  However, 64-bit Stata for
  Mac is available only for 64-bit Intel-based Macs.
</font>
		</p>
		<p>
				<font face="Arial">
  All currently shipping Macs have a 64-bit processor and a 64-bit operating
  system.
</font>
		</p>
		<h3 id="unix">
				<font color="#ff0000" face="Arial">Unix (IBM-AIX, Sun Solaris)</font>
		</h3>
		<ul class="plist">
				<li>
						<font face="Arial">IBM-AIX

   <br /><br />
   The <b>getconf</b> command will return the configuration of your machine.
   Since you are looking only for the kernel parameters, you should type

   <br /><br /></font>
						<div class="indent" style="font-family: courier,monospace;">
								<font face="Arial">
										<b>[cph@anna ~]$ getconf -a | grep KERN</b>
										<br />
   KERNEL_BITMODE:                         64</font>
						</div>
						<font face="Arial">
								<br />
   If that fails or does not return a result, try the <b>file</b> command.

   <br /><br /></font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>[cph@anna ~]$ file /usr/lib/boot/unix*</b>
										<br />
   /usr/lib/boot/unix: <span style="color: red;">64-bit XCOFF executable</span> or object module not stripped<br />
   /usr/lib/boot/unix_64: <span style="color: red;">64-bit XCOFF executable</span> or object module not stripped<br />
   /usr/lib/boot/unix_mp: executable (RISC System/6000) or object module not stripped<br />
   /usr/lib/boot/unix_up: executable (RISC System/6000) or object module not stripped<br /></font>
						</div>
						<p>
						</p>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>[cph@ozona ~]$ file /usr/lib/boot/unix*</b>
										<br />
   /usr/lib/boot/unix:     symbolic link to /usr/lib/boot/unix_up.<br />
   /usr/lib/boot/unix_kdb: executable (RISC System/6000) or object module not stripped<br />
   /usr/lib/boot/unix_up:  executable (RISC System/6000) or object module not stripped</font>
						</div>
						<font face="Arial">
								<br />

   We can see that 'anna' is a 64-bit capable platform, and 'ozona' is only 32-bit.
</font>
				</li>
				<li>
						<font face="Arial">Sun Solaris

  <br /><br />
   Sun's platforms transitioned to 64-bit over a period of time, making
   identifying the platform for 64-bit compliance tricky.  Sun has stated:
  <br /><br /></font>
						<div class="indent">
								<font face="Arial">
      Sun has implemented its 64-bit operating system in phases. The Solaris
      2.5 Operating Environment provided support for increased precision with
      64-bit math and also included support for 64-bit asynchronous I/O. The
      Solaris 2.6 Operating Environment added support for large datasets with
      large (1 Terabyte) filesystems while allowing co-existence of 32-bit and
      64-bit files. Beginning with the Solaris 7 Operating Environment, Sun
      introduced support for large virtual address spaces with a full 64-bit
      operating system. Sun began shipping 64-bit hardware in 1995. By phasing
      in operating system support for 64-bits Sun has provided 64-bit features
      as the market has demanded them while guaranteeing compatibility for
      existing 32-bit applications.
  </font>
						</div>
						<font face="Arial">
								<br />
   To determine what kind of binaries your Solaris machine can run, try the following:

   <br /><br /></font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>eden:/home/cph: isainfo -v</b>
										<br />
										<span style="color: red;">64-bit</span> sparcv9 applications<br />
   32-bit sparc applications</font>
						</div>
						<font face="Arial">
								<br />
   You can see that this Solaris machine is capable of running 32-bit as well
   as 64-bit applications.  If <b>isainfo</b> fails, running a 64-bit
   application on your Sun will generally not be possible, unless of course
   <b>isainfo</b> is not in your path or has not been installed.  You can also
   use the <b>uname</b> command to glean more information:

   <br /><br /></font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>eden:/home/cph: uname -a</b>
										<br />
   SunOS eden 5.8 Generic_108528-05 sun4u sparc SUNW,Ultra-5_10</font>
						</div>
						<font face="Arial">
								<br />
						</font>
						<div class="indent" style="font-family: monospace;">
								<font face="Arial">
										<b>lagrange:/usr/users/cph: uname -a</b>
										<br />
   SunOS lagrange 5.5.1 Generic_103640-29 sun4u sparc SUNW,Ultra-1</font>
						</div>
						<font face="Arial">
								<br />
								<br />
   SunOS/Solaris versions map to the following:

   </font>
						<div class="centerit" style="padding-top: 5px;">
								<table width="80%" align="center" border="1" cellpadding="0" cellspacing="0">
										<tbody>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">
																		<b>SunOS</b>
																</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">
																		<b>SOLARIS</b>
																</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.3</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.3</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.4</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.4</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.5</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.5</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.5.1</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.5.1</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.6</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.6</font>
														</td>
												</tr>
												<tr>
														<td width="50%" align="center">
																<font face="Arial">5.7 or greater is 64-bit compliant</font>
														</td>
														<td width="50%" align="center">
																<font face="Arial">2.7 or greater is 64-bit compliant</font>
														</td>
												</tr>
										</tbody>
								</table>
						</div>
						<font face="Arial">
								<br />
   While all UltraSparc processors are capable of 64-bit computing, the OS
   release level may be the limiting factor.  In the above excerpt, 'eden'
   (SunOS 5.8) is a fully compliant 64-bit platform, and 'lagrange' (SunOS
   5.5.1) is a 64-bit UltraSparc limited to 32-bit computing.
</font>
				</li>
		</ul>
		<h3 id="linux">
				<font color="#ff0000" face="Arial">Linux</font>
		</h3>
		<p>
				<font face="Arial">
  Linux users should type the <b>uname</b> command.  Depending on the
  platform, you may see
</font>
		</p>
		<p>
		</p>
		<div class="indent" style="font-family: monospace;">
				<font face="Arial">
						<b>[cph@gaylord ~]$ uname -a</b>
						<br />
Linux gaylord.stata.com 2.6.11-1.27_FC3 #1 Tue May 17 20:24:57 EDT 2005 x86_64 x86_64 <span style="color: red;">x86_64 GNU/Linux</span><br /></font>
		</div>
		<p>
		</p>
		<div class="indent" style="font-family: monospace;">
				<font face="Arial">
						<b>[cph@caddo ~]$ uname -a</b>
						<br />
Linux caddo.stata.com 2.6.9-5.0.5.EL #1 SMP Fri Apr 8 14:20:58 EDT 2005 ia64 ia64
<span style="color: red;">ia64 GNU/Linux</span></font>
		</div>
		<p>
		</p>
		<div class="indent" style="font-family: monospace;">
				<font face="Arial">
						<b>[cph@tango ~]$ uname -a</b>
						<br />
Linux tango.stata.com 2.6.10-1.771_FC2smp #1 SMP Mon Mar 28
01:10:51 EST 2005 i686 i686 <span style="color: red;">i386 GNU/Linux</span></font>
		</div>
		<p>
				<font face="Arial">
						<font color="#0000ff">In the above listing, 'gaylord' (x86_64 GNU/Linux) and 'caddo' (ia64
  GNU/Linux) are 64-bit compliant.  'tango' (i386 GNU/Linux) is only a 32-bit
  platform.
</font>
				</font>
		</p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/60091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2009-07-14 22:05 <a href="http://www.cnitblog.com/tjitty/archive/2009/07/14/60091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转贴：高效率编辑器 VIM－操作篇，非常适合 VIM 新手</title><link>http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 26 Mar 2008 12:09:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/41515.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/41515.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/41515.html</trackback:ping><description><![CDATA[
		<p>虽然从很久前就开始用 VIM 了，但一直都是半</p>
		<del datetime="2007-01-27T13:01:01+00:00">调</del>吊
子，翻来覆去只用自己会的命令。最近为了提高书写代码的效率，还有 coding 时候的乐趣，又重新钻研了一下 VIM，发现了一篇很好的 VIM
入门的文章，原文是英文版的，我觉得非常适合 VIM 使用入门，所以翻译了过来。这里是简单的介绍了 VIM 的操作方式，并没有说为什么要用
VIM，如果你想知道答案可以去 Google，VIM 被誉为编辑器之神。<p>这篇教程写了在不同工作模式下使用 VIM 的一些基本技巧——即插入模式（insert mode）， 命令模式（command mode）， 存取文件等。目的是帮助刚刚接触 VIM 的新手更加有效率的使用这个出色的编辑器。</p><p>说明：在这篇文章里面，&lt;C-X&gt; 代表 Ctrl + X——就是按住 Ctrl 键然后再按 X。而且你可以在很多情况下使用 :help command 来获得大部分命令的帮助，这个是 VIM 的内部帮助文件命令。</p><p><strong>高效率移动</strong></p><p><em>在插入模式之外</em></p><p>基本上来说，你应该尽可能少的呆在插入模式里面，因为在插入模式里面 VIM
就像一个“哑巴”编辑器一样。很多新手都会一直呆在插入模式里面，因为这样易于使用。但 VIM
的强大之处在于他的命令行模式！你会发现，在你越来越了解 VIM 之后，你就会花越来越少的时间使用插入模式了。</p><p><em>使用 h、j、k、l</em></p><p>使用 VIM 高效率编辑的第一步，就是放弃使用箭头键。使用
VIM，你就不用频繁的在箭头键和字母键之间移来移去了，这会节省你很多时间。当你在命令模式时，你可以用 h、j、k、l
来分别实现左、下、上、右箭头的功能。一开始可能需要适应一下，但一旦习惯这种方式，你就会发现这样操作的高效之处了。</p><p>在你编辑你的电子邮件或者其他有段落的文本时，你可能会发现使用方向键和你预期的效果不一样，有时候可能会一次跳过了很多行。这是因为你的段落在
VIM 看来是一个大的长长的行。这时你可以在按 h、j、k 或者 l 之前键入一个 g，这样 VIM 就会按屏幕上面的行如你所愿的移动了。</p><p><em>在当前行里面有效的移动光标</em></p><p>很多编辑器只提供了简单的命令来控制光标的移动（比如左、上、右、下、到行首/尾等）。VIM
则提供了很多强大的命令来满足你控制光标的欲望。当光标从一点移动到另外一点，在这两点之间的文本（包括这两个点）称作被“跨过”，这里的命令也被称作是
motion。（简单说明一下，后面会用到这个重要的概念）</p><p>这里是常用到的一些命令（motion）：</p><ul><li>fx：移动光标到当前行的下一个 x 处。很明显，x 可以是任意一个字母，而且你可以使用 ; 来重复你的上一个 f 命令。</li><li>tx：和上面的命令类似，但是是移动到 x 的左边一个位置。（这真的很有用）</li><li>Fx：和 fx 类似，不过是往回找。</li><li>w：光标往前移动一个词。</li><li>b：光标往后移动一个词。</li><li>0：移动光标到当前行首。</li><li>^：移动光标到当前行的第一个字母位置。</li><li>$：移动光标到行尾。</li><li>)：移动光标到下一个句子。</li><li>( ：移动光标到上一个句子。</li></ul><p><em>在整个文件里面有效移动光标</em></p><p>VIM 有很多命令，可以用来到达文件里面你想到达的地方。下面是一些在文件里面移动的命令：</p><ul><li>&lt;C-F&gt;：向下移动一屏。</li><li>&lt;C-B&gt;：向上移动一屏。</li><li>G：到文件尾</li><li>numG：移动光标到指定的行（num）。（比如 10G 就是到第 10 行）</li><li>gg：到文件首</li><li>H：移动光标到屏幕上面</li><li>M：移动光标到屏幕中间</li><li>L：移动光标到屏幕下面</li><li>*：读取光标处的字符串，并且移动光标到它再次出现的地方。</li><li>#：和上面的类似，但是是往反方向寻找。</li><li>/text：从当前光标处开始搜索字符串 text，并且到达 text 出现的地方。必须使用回车来开始这个搜索命令。如果想重复上次的搜索的话，按 n。</li><li>？text：和上面类似，但是是反方向。</li><li>ma：在当前光标的位置标记一个书签，名字为 a。书签名只能是小写字母。你看不见书签的存在，但它确实已经在那里了。</li><li>`a：到书签 a 处。注意这个不是单引号，它一般位于大部分键盘的 1 的左边。</li><li>`.：到你上次编辑文件的地方。这个命令很有用，而且你不用自己去标记它。</li></ul><p><strong>高效的输入</strong></p><p><em>使用关键词自动完成</em></p><p>VIM 有一个非常漂亮的关键词自动完成系统。这表示，你可以输入一个长词的一部分，然后按一下某个键，然后 VIM
就替你完成了这个长词的输入了。举个例子：你有一个变量名为 iAmALongAndAwkwardVarName
在你写的代码的某个地方。也许你不想每回都自己一个一个字母的去输入它。</p><p>使用关键词自动完成功能，你只需要输入开始几个字母（比如 iAmAL），然后按 &lt;C-N&gt;（按住 Ctrl，再按 N）或者 &lt;C-P&gt;。如果 VIM 没有给出你想要的词，继续按，直到你满意为止，VIM 会一直循环它找到的匹配的字符串。</p><p><em>聪明的进入插入模式</em></p><p>很多新手进入插入模式都只是用 i。这样当然可以进入插入模式，但通常不是那么合适，因为 VIM 提供了很多进入插入模式的命令。下面是最常用的一些：</p><ul><li>i：在当前字符的左边插入</li><li>I：在当前行首插入</li><li>a：在当前字符的右边插入</li><li>A：在当前行尾插入</li><li>o：在当前行下面插入一个新行</li><li>O：在当前行上面插入一个新行</li><li>c{motion}：删除 motion
命令跨过的字符，并且进入插入模式。比如：c$，这将会删除从光标位置到行尾的字符并且进入插入模式。ct！，这会删除从光标位置到下一个叹号（但不包
括），然后进入插入模式。被删除的字符被存在了剪贴板里面，并且可以再粘贴出来。</li><li>d{motion}：和上面差不多，但是不进入插入模式。</li></ul><strong>有效的移动大段的文本</strong><p><em>使用可视选择（visual selections）和合适的选择模式</em></p><p>不像最初的 VI，VIM 允许你高亮（选择）一些文本，并且进行操作。这里有三种可视选择模式：</p><ul><li>v：按字符选择。经常使用的模式，所以亲自尝试一下它。</li><li>V：按行选择。这在你想拷贝或者移动很多行的文本的时候特别有用。</li><li>&lt;C-V&gt;：按块选择。非常强大，只在很少的编辑器中才有这样的功能。你可以选择一个矩形块，并且在这个矩形里面的文本会被高亮。</li></ul><p>在选择模式的时候使用上面所述的方向键和命令（motion）。比如，vwww，会高亮光标前面的三个词。Vjj 将会高亮当前行以及下面两行。</p><p><em>在可视选择模式下剪切和拷贝</em></p><p>一旦你高亮了选区，你或许想进行一些操作：</p><ul><li>d：剪贴选择的内容到剪贴板。</li><li>y：拷贝选择的内容到剪贴板。</li><li>c：剪贴选择的内容到剪贴板并且进入插入模式。</li></ul><p><em>在非可视选择模式下剪切和拷贝</em></p><p>如果你很清楚的知道你想拷贝或者剪切什么，那你根本就不需要进入可视选择模式。这样也会节省时间：</p><ul><li>d{motion}：剪切 motion 命令跨过的字符到剪贴板。比如，dw 会剪切一个词而 dfS 会将从当前光标到下一个 S 之间的字符剪切至剪贴板。</li><li>y{motion}：和上面类似，不过是拷贝。</li><li>c{motion}：和 d{motion} 类似，不过最后进入插入模式。</li><li>dd：剪切当前行。</li><li>yy：拷贝当前行。</li><li>cc：剪切当前行并且进入插入模式。</li><li>D：剪切从光标位置到行尾到剪贴板。</li><li>Y：拷贝当前行。</li><li>C：和 D 类似，最后进入插入模式。</li><li>x：剪切当前字符到剪贴板。</li><li>s：和x类似，不过最后进入插入模式。</li></ul><p><em>粘贴</em></p><p>粘贴很简单，按 p。</p><p><em>使用多重剪贴板</em></p><p>很多编辑器都只提供了一个剪贴板。VIM 有很多。剪贴板在 VIM 里面被称为寄存器（Registers）。你可以列出当前定义的所有寄存器名和它们的内容，命令为“:reg”。最好使用小写字母来作为寄存器的名称，因为大写的有些被 VIM 占用了。</p><p>使用寄存器的命令为双引号 “。</p><p>比如：我们要拷贝当前行到寄存器 k。你应该按 “kyy。（你也可以使用 V”ky。为什么这样也可以呢？）现在当前行应该已经存在了寄存器 k 里面直到你又拷贝了一些东西进入寄存器 k。现在你可以使用命令 “kp 来粘贴寄存器 k 里面的内容到你想要的位置。</p><p><strong>避免重复</strong></p><p><em>令人惊奇的 . 命令</em></p><p>在 VI 里面，输入 . (小数点符号），将会重复你输入的上一个命令。比如，你上个命令为“dw”（删除一个词），VI 将会接着再删除一个词。</p><p><em>使用数字</em></p><p>使用数字也是 VIM 强大的而且很节省时间的重要特性之一。在很多 VIM 的命令之前都可以使用一个数字，这个数字将会告诉 VIM 这个命令需要执行几次。比如：</p><ul><li>3j 将会把光标向下移动三行。</li><li>10dd 将会删除十行。</li><li>y3″ 将会拷贝从当前光标到第三个出现的引号之间的内容到剪贴板。</li></ul><p>数字是扩展 motion 命令作用域非常有效的方法。</p><p><em>记录宏</em></p><p>有时候，你会发现你自己在文章的每段或者每行都重复相同的一系列动作。VIM 允许你记录一个宏来完成你的特殊需要。</p><ul><li>qregister：记录宏到寄存器 register，这里 register 是任意的你的寄存器的名字。比如 qa，将会记录并且把宏存在寄存器 a 里面。</li><li>q：结束宏的记录。</li><li>@register：使用存在寄存器 register 的宏。比如 @a，将会使用存在寄存器 a 里面的宏。</li></ul><p>必须要记住的是，宏只记录了你的系列按键并且重复执行它们。它们不是魔法。因为在 VIM 里面完成目的的方法有很多，所以有时候你要小心选择命令来记录你的宏。因为它们会在所有你要执行它的地方执行。</p><p><strong>用 VIM 写代码</strong></p><p>VIM 是一个用来写代码的绝好编辑器，因为它有一些特性是专门为程序员而设计的。这里是一些常用的：</p><ul><li>]p：和 p 的功能差不多，但是它会自动调整被粘贴的文本的缩进去适应当前代码的位置。试一下！</li><li>%：匹配花括号、方括号、括号等。在一个括号的上面，然后按 %，鼠标就会出现在匹配的另外一半括号处。</li><li>&gt;&gt;：缩进所有选择的代码</li><li>&lt;&lt;：和上面类似，但是反缩进</li><li>gd：到达光标所在处函数或者变量的定义处。</li><li>K：在 Man 里面查找光标当前所在处的词。 </li></ul><br /><br /><img src ="http://www.cnitblog.com/tjitty/aggbug/41515.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-26 20:09 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/26/41515.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何安装Linux的应用软件 </title><link>http://www.cnitblog.com/tjitty/archive/2008/03/26/41513.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 26 Mar 2008 11:23:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/26/41513.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/41513.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/26/41513.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/41513.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/41513.html</trackback:ping><description><![CDATA[如何安装Linux的应用软件 <br /><br />　　对于普通用户，安装或升级软件可以用Red Hat公司的软件包安装与管理工具RPM。使用后你就可以轻松安装软件、升级软件和卸载软件并查询软件信息。 <br /><br />　　如果你安装的是Red Hat Linux，那么你就可以使用RPM了，如果不是，你可以先安装RPM。方法如下： <br />　　1. 下载RPM软件包: download from the "synaptic package manager", search rpm...<a href="ftp://ftp.redhat.com/pub/code/rpm/rpm-2.3.11.tar.gz" target="_blank"><font color="#5c7f8b"></font></a><br />　　2. 在Linux命令行下依次运行： <br />　　cd/ <br />　　tar xzvf rmp-2.3.11.tar.gz <br />　　cd rpm-2.3.11 <br />　　./configure <br />　　make <br />　　make install <br />　　mkdir /var/local /var/local/lib /var/local/lib/rpm /var/lib/rpm <br /><br />　　这样，你就完成了RPM的安装,以后便可以在网上或光盘上寻找软件的RPM安装版。然后使用RPM进行安装，RPM的使用方法很简单： <br />　　1. 用RPM安装软件包 ：rpm -ivh 软件文件名 <br />　　例如 rpm -ivh fvwm95-2.0.43a.chinese-1.i386.rpm 屏幕上就会输出该软件包的名称和安装的进度条: <br />　　fvwm95 ############### <br />　　当进度条走到底，中文fvwm95（一种X-Window的界面）就安装完了，再运行X-Window，啊，全中文的fvwm95就在我的眼前。 <br /><br />　　2. 用RPM反安装软件包:rpm -e 软件名 <br />　　例如:rpm -e fvwm95 <br /><br />　　3. 用RPM升级软件包:rpm -Uvh 软件升级版文件名 <br />　　例如:rpm -Uvh fvwm95-2.1.0a.chinese-1.i386.rpm，RPM自动反安装原来的老版本，将升级版的软件安装入系统。怎么样，不难吧！ <img src ="http://www.cnitblog.com/tjitty/aggbug/41513.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-26 19:23 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/26/41513.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VI命令指导</title><link>http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 26 Mar 2008 10:21:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/41511.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/41511.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/41511.html</trackback:ping><description><![CDATA[
		<h2>进入vi的命令</h2>
		<p>vi filename: 打开或新建文件，并将光标置于第一行首
</p>
		<p>vi +n filename: 打开文件，并将光标置于第n行首
</p>
		<p>vi + filename: 打开文件，并将光标置于最后一行首
</p>
		<p>vi +/pattern filename: 打开文件，并将光标置于第一个与pattern匹配的串处
</p>
		<p>vi -r filename: 在上次正用vi编辑时发生系统崩溃，恢复filename
</p>
		<p>vi filename....filename: 打开多个文件，依次进行编辑
</p>
		<a name=".E7.A7.BB.E5.8A.A8.E5.85.89.E6.A0.87.E7.B1.BB.E5.91.BD.E4.BB.A4">
		</a>
		<h2>移动光标类命令</h2>
		<p>h: 光标左移一个字符
</p>
		<p>l: 光标右移一个字符
</p>
		<p>space: 光标右移一个字符
</p>
		<p>Backspace: 光标左移一个字符
</p>
		<p>k或Ctrl+p: 光标上移一行
</p>
		<p>j或Ctrl+n: 光标下移一行
</p>
		<p>Enter: 光标下移一行
</p>
		<p>w或W : 光标右移一个字至字首
</p>
		<p>b或B : 光标左移一个字至字首
</p>
		<p>e或E : 光标右移一个字至字尾
</p>
		<p>): 光标移至句尾
</p>
		<p>(: 光标移至句首
</p>
		<p>}: 光标移至段落开头
</p>
		<p>{: 光标移至段落结尾
</p>
		<p>nG: 光标移至第n行首
</p>
		<p>n+: 光标下移n行
</p>
		<p>n-: 光标上移n行
</p>
		<p>n$: 光标移至第n行尾
</p>
		<p>H: 光标移至屏幕顶行
</p>
		<p>M: 光标移至屏幕中间行
</p>
		<p>L: 光标移至屏幕最后行
</p>
		<p>0: 光标移至当前行首
</p>
		<p>$: 光标移至当前行尾</p>
		<a name=".E5.B1.8F.E5.B9.95.E7.BF.BB.E6.BB.9A.E7.B1.BB.E5.91.BD.E4.BB.A4">
		</a>
		<h2>屏幕翻滚类命令</h2>
		<p>Ctrl+u: 向文件首翻半屏
</p>
		<p>Ctrl+d: 向文件尾翻半屏
</p>
		<p>Ctrl+f: 向文件尾翻一屏
</p>
		<p>Ctrl＋b: 向文件首翻一屏
</p>
		<p>nz: 将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。
</p>
		<a name=".E6.8F.92.E5.85.A5.E6.96.87.E6.9C.AC.E7.B1.BB.E5.91.BD.E4.BB.A4">
		</a>
		<h2>插入文本类命令</h2>
		<p>i: 在光标前
</p>
		<p>I: 在当前行首
</p>
		<p>a: 光标后
</p>
		<p>A: 在当前行尾
</p>
		<p>o: 在当前行之下新开一行
</p>
		<p>O: 在当前行之上新开一行
</p>
		<p>r: 替换当前字符
</p>
		<p>R: 替换当前字符及其后的字符，直至按ESC键
</p>
		<p>s: 从当前光标位置处开始，以输入的文本替代指定数目的字符
</p>
		<p>S: 删除指定数目的行，并以所输入文本代替之
</p>
		<p>ncw或nCW: 修改指定数目的字
</p>
		<p>nCC: 修改指定数目的行
</p>
		<a name=".E5.88.A0.E9.99.A4.E5.91.BD.E4.BB.A4">
		</a>
		<h2>删除命令</h2>
		<p>ndw或ndW: 删除光标处开始及其后的n-1个字
</p>
		<p>do: 删至行首
</p>
		<p>d$: 删至行尾
</p>
		<p>ndd: 删除当前行及其后n-1行
</p>
		<p>x或X: 删除一个字符，x删除光标后的，而X删除光标前的
</p>
		<p>Ctrl+u: 删除输入方式下所输入的文本</p>
		<a name=".E6.90.9C.E7.B4.A2.E5.8F.8A.E6.9B.BF.E6.8D.A2.E5.91.BD.E4.BB.A4">
		</a>
		<h2>搜索及替换命令</h2>
		<pre>/pattern: 从光标开始处向文件尾搜索pattern<br />?pattern: 从光标开始处向文件首搜索pattern<br />n: 在同一方向重复上一次搜索命令<br />N: 在反方向上重复上一次搜索命令<br />:s/p1/p2/g: 将当前行中所有p1均用p2替代<br />:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代<br />:g/p1/s//p2/g: 将文件中所有p1均用p2替换</pre>
		<a name=".E9.80.89.E9.A1.B9.E8.AE.BE.E7.BD.AE">
		</a>
		<h2>选项设置</h2>
		<p>all: 列出所有选项设置情况
</p>
		<p>term: 设置终端类型
</p>
		<p>ignorance: 在搜索中忽略大小写
</p>
		<p>list: 显示制表位(Ctrl+I)和行尾标志($)
</p>
		<p>number: 显示行号
</p>
		<p>report: 显示由面向行的命令修改过的数目
</p>
		<p>terse: 显示简短的警告信息
</p>
		<p>warn: 在转到别的文件时若没保存当前文件则显示NO write信息
</p>
		<p>nomagic: 允许在搜索模式中，使用前面不带“\”的特殊字符
</p>
		<p>nowrapscan: 禁止vi在搜索到达文件两端时，又从另一端开始
</p>
		<p>mesg: 允许vi显示其他用户用write写到自己终端上的信息</p>
		<a name=".E6.9C.80.E5.90.8E.E8.A1.8C.E6.96.B9.E5.BC.8F.E5.91.BD.E4.BB.A4">
		</a>
		<h2>最后行方式命令</h2>
		<pre>:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下<br />:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下<br />:n1,n2 d: 将 n1行到n2行之间的内容删除<br />:w: 保存当前文件<br />:e filename: 打开文件filename进行编辑<br />:x: 保存当前文件并退出<br />:q: 退出vi<br />:q!: 不保存文件并退出vi<br />:!command: 执行shell命令command<br />:n1,n2 w!command: 将文件中n1行至n2行的内容作为command的输入并执行之，<br /> 若不指定n1，n2，则表示将整个文件内容作为command的输入<br />:r!command: 将命令command的输出结果放到当前行</pre>
		<a name=".E5.AF.84.E5.AD.98.E5.99.A8.E6.93.8D.E4.BD.9C">
		</a>
		<h2>寄存器操作</h2>
		<p>"?nyy: 将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字
</p>
		<p>"?nyw: 将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字
</p>
		<p>"?nyl: 将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字
</p>
		<p>"?p: 取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字
</p>
		<p>ndd: 将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中 <br /></p>
		<p>
				<br />
		</p>
		<h2>在Vi 中移动光标</h2>
		<pre class="example">  k        上<br />h   l    左  右<br />  j        下<br /><br />^        移动到该行第一个非空格的字符处<br />w        向前移动一个单词，将符号或标点当作单词处理<br />W        向前移动一个单词，不把符号或标点当作单词处理<br />b        向后移动一个单词，把符号或标点当作单词处理<br />B        向后移动一个单词，不把符号或标点当作单词处理<br />(        光标移至句首<br />)        光标移至句尾<br />{        光标移至段落开头<br />}        光标移至段落结尾<br />H        光标移至屏幕顶行<br />M        光标移至屏幕中间行<br />L        光标移至屏幕最后行 <br />0        到行首<br />$        到行尾<br />gg       到页首<br />G        到页末<br />行号+G   跳转到指定行<br />n+       光标下移n行<br />n-       光标上移n行 <br />Ctrl+g   查询当前行信息和当前文件信息<br /><br />fx       向右跳到本行字符x处（x可以是任何字符）<br />Fx       向左跳到本行字符x处（x可以是任何字符）<br /><br />tx       和fx相同，区别是跳到字符x前<br />Tx       和Fx相同，区别是跳到字符x后<br /><br />C-b      向上滚动一屏<br />C-f      向下滚动一屏<br />C-u      向上滚动半屏<br />C-d      向下滚动半屏<br />C-y      向上滚动一行<br />C-e      向下滚动一行<br /><br />nz       将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。 <br /></pre>
		<h2>进入和退出Vi命令</h2>
		<pre class="example">vi filename               打开或新建文件，并将光标置于第一行首<br />vi +n filename            打开文件，并将光标置于第n行首<br />vi + filename             打开文件，并将光标置于最后一行首<br />vi +/pattern filename     打开文件，并将光标置于第一个与pattern匹配的串处<br />vi -r filename            在上次正用vi编辑时发生系统崩溃，恢复filename<br />vi filename ... filename  打开多个文件，依次进行编辑 <br /><br />ZZ                        退出vi并保存<br />:q!                       退出vi，不保存<br />:wq                       退出vi并保存<br /></pre>
		<h2>重复操作</h2>
		<pre class="example">.        重复上一次操作<br /></pre>
		<h2>自动补齐</h2>
		<pre class="example">C-n      匹配下一个关键字<br />C-p      匹配上一个关键字<br /></pre>
		<h2>插入</h2>
		<pre class="example">o        在光标下方新开一行并将光标置于新行行首，进入插入模式。<br />O        同上，在光标上方。<br /><br />a        在光标之后进入插入模式。<br />A        同上，在光标之前。<br /><br /><br />R        进入替换模式，直到按下Esc<br />set xxx  设置XXX选项。<br /></pre>
		<h2>行合并</h2>
		<pre class="example">J        把下面一行合并到本行后面<br /></pre>
		<h2>Vi中查找及替换命令</h2>
		<pre class="example">/pattern         从光标开始处向文件尾搜索pattern<br />?pattern         从光标开始处向文件首搜索pattern<br />n                在同一方向重复上一次搜索命令<br />N                在反方向上重复上一次搜索命令<br />%                查找配对的括号<br />:s/p1/p2/g       将当前行中所有p1均用p2替代，若要每个替换都向用户询问则应该用gc选项<br />:n1,n2s/p1/p2/g  将第n1至n2行中所有p1均用p2替代<br />:g/p1/s//p2/g    将文件中所有p1均用p2替换<br /><br />.*[]^%~$ 在Vi中具有特殊含义，若需要查找则应该加上转义字符"\"<br /></pre>
		<h3>查找的一些选项</h3>
		<h4>设置高亮</h4>
		<pre class="example">:set hlsearch    设置高亮<br />:set nohlsearch  关闭高亮<br />:nohlsearch      关闭当前已经设置的高亮<br /></pre>
		<h4>增量查找</h4>
		<pre class="example">:set incsearch   设置增量查找<br />:set noincsearch 关闭增量查找<br /></pre>
		<h2>在Vi中删除</h2>
		<pre class="example">x        删除当前光标下的字符<br />dw       删除光标之后的单词剩余部分。<br />d$       删除光标之后的该行剩余部分。<br />dd       删除当前行。<br /><br />c        功能和d相同，区别在于完成删除操作后进入INSERT MODE<br />cc       也是删除当前行，然后进入INSERT MODE<br /><br /></pre>
		<h2>更改字符</h2>
		<pre class="example">rx       将当前光标下的字符更改为x（x为任意字符） <br />~        更改当前光标下的字符的大小写 <br /></pre>
		<h2>键盘宏操作</h2>
		<pre class="example">qcharacter  开始录制宏，character为a到z的任意字符<br />q           终止录制宏<br />@character  调用先前录制的宏<br /><br /></pre>
		<h2>恢复误操作</h2>
		<pre class="example">u        撤销最后执行的命令<br />U        修正之前对该行的操作<br />Ctrl+R   Redo<br /></pre>
		<h2>在Vi中操作Frame</h2>
		<pre class="example">c-w c-n  增加frame<br />c-w c-c  减少frame<br />c-w c-w  切换frame<br />c-w c-r  交换两个frame<br /></pre>
		<h2>VIM中的块操作</h2>
		<p>Vim支持多达26个剪贴板 </p>
		<pre class="example">  选块   先用v，C-v，V选择一块，然后用y复制，再用p粘贴。<br />  yy     复制当前整行<br />  nyy    复制当前行开始的n行内容<br />  ?nyy   将光标当前行及其下n行的内容保存到寄存器?中，其中?为一个字母，n为一个数字<br />  ?nyw   将光标当前行及其下n个词保存到寄存器?中，其中?为一个字母，n为一个数字<br />  ?nyl   将光标当前行及其下n个字符保存到寄存器?中，其中?为一个字母，n为一个数字<br />  ?p     将寄存器?中的内容粘贴到光标位置之后。如果?是用yy复制的完整行，<br />         则粘贴在光标所在行下面。这里?可以是一个字母，也可以是一个数字 <br />  ?P     将寄存器a中的内容粘贴到光标位置之前。如果?是用yy复制的完整行，<br />         则粘贴在光标所在行上面。这里?可以是一个字母，也可以是一个数字 <br />  ay[motion]<br />            ay$    复制光标位置到行末并保存在寄存器a中<br />            ayft   复制光标位置到当前行第一个字母t并保存在寄存器a中<br /></pre>
		<p> 以上指令皆可去掉a工作，则y,p对未命名寄存器工作（所有d,c,x,y的对象都被保存在这里）。</p>
		<h3>剪切/复制/粘贴</h3>
		<p>所有删除的内容自动被保存，可以用p键粘贴 </p>
		<h2>Vi的选项设置</h2>
		<pre class="example">all         列出所有选项设置情况<br />term        设置终端类型<br />ignorance   在搜索中忽略大小写<br />list        显示制表位(Ctrl+I)和行尾标志($)<br />number      显示行号<br />report      显示由面向行的命令修改过的数目<br />terse       显示简短的警告信息<br />warn        在转到别的文件时若没保存当前文件则显示NO write信息<br />nomagic     允许在搜索模式中，使用前面不带“\”的特殊字符<br />nowrapscan  禁止vi在搜索到达文件两端时，又从另一端开始<br />mesg        允许vi显示其他用户用write写到自己终端上的信息 <br /></pre>
		<h2>tips</h2>
		<p>对代码自动格式化 gg=G </p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/41511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-26 18:21 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/26/41511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决testdirector8.0不支持MSIE7.0的问题</title><link>http://www.cnitblog.com/tjitty/archive/2008/03/19/41148.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Wed, 19 Mar 2008 03:22:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/19/41148.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/41148.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/19/41148.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/41148.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/41148.html</trackback:ping><description><![CDATA[作者/<a href="http://itcat.it.com.cn/">itcat</a>　时间/2007-5-21 10:44:00　<br /><br />一、前言<br />　　由于小顾同事使用了ＩＥ7.0访问测试机上的testdirector，提示“Microsoft Internet Explorer : 4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; .NET CLR.3.0.04131.06) is not supported”，因为小顾使用的是ＩＥ７.0，而我们使用ＩＥ6.0或者其它浏览器的访问正常，估计原因是ＴＤ不支持ＩＥ7.0。<br /><br />二、解决办法<br />　　小顾帮忙在网上找了一个解决方案，就是修改testdirector的Start_a.htm的源代码，增加对IE7.0版本的判断，随后我就远程登录到测试机，找到C:\Inetpub\TDBIN下的Start_a.htm文件，备份原来的文件，并在小顾的指导下，修改源代码，保存文件。<br />　　操作步骤<br />　　１、在testdirecotr安装的机器中，打开C:\Inetpub\TDBIN目录，查看Start_a.htm文件的代码。<br />　　２、在代码中查找“ua.lastIndexOf('MSIE 6.0') != -1”，复制代码“|| (ua.lastIndexOf('MSIE 6.0') != -1)”，并粘贴在“|| (ua.lastIndexOf('MSIE 6.0') != -1) ”后面，把“MSIE 6.0”修改成‘'MSIE 7.0'’，保存文件就ＯＫ了。 <img src ="http://www.cnitblog.com/tjitty/aggbug/41148.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-19 11:22 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/19/41148.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vi命令一览表</title><link>http://www.cnitblog.com/tjitty/archive/2008/03/14/40933.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Fri, 14 Mar 2008 07:18:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/14/40933.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/40933.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/14/40933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/40933.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/40933.html</trackback:ping><description><![CDATA[
		<p>日期：2004-05-29   来源：<a href="http://www.chinaunix.com">http://www.chinaunix.com</a><br /><br />文本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等，其中，使用最为广泛的是vi，而vi命令繁多，论坛里好像这方面的总结不多，以下稍做总结，以资共享！渴望更正和补充！  <br />　<br />进入vi的命令 <br />vi filename :打开或新建文件，并将光标置于第一行首 <br />vi +n filename ：打开文件，并将光标置于第n行首 <br />vi + filename ：打开文件，并将光标置于最后一行首 <br />vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处 <br />vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename <br />vi filename....filename ：打开多个文件，依次进行编辑 </p>
		<p>移动光标类命令<br />h ：光标左移一个字符 <br />l ：光标右移一个字符 <br />space：光标右移一个字符 <br />Backspace：光标左移一个字符 <br />k或Ctrl+p：光标上移一行 <br />j或Ctrl+n ：光标下移一行 <br />Enter ：光标下移一行 <br />w或W ：光标右移一个字至字首 <br />b或B ：光标左移一个字至字首 <br />e或E ：光标右移一个字至字尾 <br />) ：光标移至句尾 <br />( ：光标移至句首 <br />}：光标移至段落开头 <br />{：光标移至段落结尾 <br />nG：光标移至第n行首 <br />n+：光标下移n行 <br />n-：光标上移n行 <br />n$：光标移至第n行尾 <br />H ：光标移至屏幕顶行 <br />M ：光标移至屏幕中间行 <br />L ：光标移至屏幕最后行 <br />0：（注意是数字零）光标移至当前行首 <br />$：光标移至当前行尾 </p>
		<p>屏幕翻滚类命令 <br />Ctrl+u：向文件首翻半屏 <br />Ctrl+d：向文件尾翻半屏 <br />Ctrl+f：向文件尾翻一屏 <br />Ctrl＋b；向文件首翻一屏 <br />nz：将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。 </p>
		<p>插入文本类命令 <br />i ：在光标前 <br />I ：在当前行首 <br />a：光标后 <br />A：在当前行尾 <br />o：在当前行之下新开一行 <br />O：在当前行之上新开一行 <br />r：替换当前字符 <br />R：替换当前字符及其后的字符，直至按ESC键 <br />s：从当前光标位置处开始，以输入的文本替代指定数目的字符 <br />S：删除指定数目的行，并以所输入文本代替之 <br />ncw或nCW：修改指定数目的字 <br />nCC：修改指定数目的行 </p>
		<p>删除命令 <br />ndw或ndW：删除光标处开始及其后的n-1个字 <br />do：删至行首 <br />d$：删至行尾 <br />ndd：删除当前行及其后n-1行 <br />x或X：删除一个字符，x删除光标后的，而X删除光标前的 <br />Ctrl+u：删除输入方式下所输入的文本 </p>
		<p>搜索及替换命令 <br />/pattern：从光标开始处向文件尾搜索pattern <br />?pattern：从光标开始处向文件首搜索pattern <br />n：在同一方向重复上一次搜索命令 <br />N：在反方向上重复上一次搜索命令 <br />：s/p1/p2/g：将当前行中所有p1均用p2替代 <br />：n1,n2s/p1/p2/g：将第n1至n2行中所有p1均用p2替代 <br />：g/p1/s//p2/g：将文件中所有p1均用p2替换 </p>
		<p>选项设置 <br />all：列出所有选项设置情况 <br />term：设置终端类型 <br />ignorance：在搜索中忽略大小写 <br />list：显示制表位(Ctrl+I)和行尾标志（$) <br />number：显示行号 <br />report：显示由面向行的命令修改过的数目 <br />terse：显示简短的警告信息 <br />warn：在转到别的文件时若没保存当前文件则显示NO write信息 <br />nomagic：允许在搜索模式中，使用前面不带“\”的特殊字符 <br />nowrapscan：禁止vi在搜索到达文件两端时，又从另一端开始 <br />mesg：允许vi显示其他用户用write写到自己终端上的信息 </p>
		<p>最后行方式命令 <br />：n1,n2 co n3：将n1行到n2行之间的内容拷贝到第n3行下 <br />：n1,n2 m n3：将n1行到n2行之间的内容移至到第n3行下 <br />：n1,n2 d ：将n1行到n2行之间的内容删除 <br />：w ：保存当前文件 <br />：e filename：打开文件filename进行编辑 <br />：x：保存当前文件并退出 <br />：q：退出vi <br />：q!：不保存文件并退出vi <br />：!command：执行shell命令command <br />：n1,n2 w!command：将文件中n1行至n2行的内容作为command的输入并执行之，若不指定n1，n2，则表示将整个文件内容作为command的输入 <br />：r!command：将命令command的输出结果放到当前行 </p>
		<p>寄存器操作 <br />"?nyy：将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字 <br />"?nyw：将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字 <br />"?nyl：将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字 <br />"?p：取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字 <br />ndd：将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中。</p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/40933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-14 15:18 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/14/40933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实用工具推荐</title><link>http://www.cnitblog.com/tjitty/archive/2008/03/14/40931.html</link><dc:creator>tjitty</dc:creator><author>tjitty</author><pubDate>Fri, 14 Mar 2008 07:02:00 GMT</pubDate><guid>http://www.cnitblog.com/tjitty/archive/2008/03/14/40931.html</guid><wfw:comment>http://www.cnitblog.com/tjitty/comments/40931.html</wfw:comment><comments>http://www.cnitblog.com/tjitty/archive/2008/03/14/40931.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/tjitty/comments/commentRss/40931.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/tjitty/services/trackbacks/40931.html</trackback:ping><description><![CDATA[
		<p>
				<strong>Dependency Walker</strong>
				<br />
				<br />软件简介：<br />    Dependency Walker 是 Microsoft Visual C++ 中提供的非常有用的 PE 模块依赖性分析工具。主要功能如下： </p>
		<p>查看 PE 模块的导入模块。 <br />查看 PE 模块的导入和导出函数。 <br />动态剖析 PE 模块的模块依赖性。 <br />解析 C++ 函数名称（我就要这个功能，o(∩_∩)o...哈哈）。<br /><br /><strong>JProfiler<br /></strong><br />是一个全功能的Java剖析工具（profiler），专用于分析J2SE和J2EE应用程序。它把CPU、执行绪和内存的剖析组合在一个强大的应用中。JProfiler可提供许多IDE整合和应用服务器整合用途。JProfiler直觉式的GUI让你可以找到效能瓶颈、抓出内存漏失(memory leaks)、并解决执行绪的问题。它让你得以对heap walker作资源回收器的root analysis，可以轻易找出内存漏失；heap快照（snapshot）模式让未被参照（reference）的对象、稍微被参照的对象、或在终结（finalization）队列的对象都会被移除；整合精灵以便剖析浏览器的Java外挂功能。</p>
<img src ="http://www.cnitblog.com/tjitty/aggbug/40931.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/tjitty/" target="_blank">tjitty</a> 2008-03-14 15:02 <a href="http://www.cnitblog.com/tjitty/archive/2008/03/14/40931.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>