<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>漂流</title>
    <description></description>
    <link>http://liqi.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
          <item>
        <title>jquery在Struts中的使用示例。</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/224768" style="color:red;">http://liqi.javaeye.com/blog/224768</a>&nbsp;
          发表时间: 2008年08月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          jQuery是非常优美的js库，使得编写js代码变得非常简单。下载一个简单的示例，介绍在struts的页面中如何使用jQuery。示例代码如下：<br /><pre name="code" class="XML">
&lt;%@ taglib prefix="s" uri="/struts-tags" %>

&lt;html>
	&lt;head> 
		&lt;title>Checkbox	(Form Tag) Tag Example&lt;/title>
		&lt;script src="/struts-ajax/js/jquery.js" type="text/javascript">&lt;/script>
		&lt;script type="text/javascript">
			jQuery(document).ready(function(){
				$("#submit").click(function(){
					$("div.result").remove();
					$(":checkbox").each(function( index ) {
						if( this.checked ) {						
							$("#submit").after("&lt;div class='result'>" + this.name + "&lt;/div>");						
						}
					});
				});
			});
			
		&lt;/script>
	&lt;/head>
	&lt;body>
		&lt;h2>Checkbox Tag Example&lt;/h2>
			&lt;b>Sex&lt;/b>&lt;br>
			&lt;s:checkbox label="Male" name="male" value="true"/>&lt;br>
			&lt;s:checkbox label="Female" name="female" />
			
			&lt;s:submit id="submit" value="submit" align="left">&lt;/s:submit>
	&lt;/body>
&lt;/html>
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/224768#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 05 Aug 2008 22:38:17 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/224768</link>
        <guid>http://liqi.javaeye.com/blog/224768</guid>
      </item>
          <item>
        <title>mysql的操作</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/212492" style="color:red;">http://liqi.javaeye.com/blog/212492</a>&nbsp;
          发表时间: 2008年07月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一、mysql的1root用户密码修改<br /><br />装完mysql数据库后，默认情况下，root用户的密码为空的，以下是修改root用户密码的步骤：<br />1、mysqld_safe启动数据库。<br />2、mysql就登陆数据库。<br />3、mysqladmin -uroot password admin 修改root用户的密码<br />4、mysql -uroot -padmin 重新登陆数据库。<br /><br />二、mysql的用户<br />默认情况下，root用户是不支持远程登陆的，因此我们可以创建用户，支持远程登陆，具体操作如下：<br />1、user databasename;<br />2、grant all privileges on *.* to liqi@192.168.1.100 identified by 'admin';<br />3、mysql -uliqi -padmin -h192.168.1.8<br /><br />通过3步骤，即可测试能否用liqi用户登陆MySQL服务器。
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/212492#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 07 Jul 2008 21:29:44 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/212492</link>
        <guid>http://liqi.javaeye.com/blog/212492</guid>
      </item>
          <item>
        <title>java编写发送邮件程序</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/211622" style="color:red;">http://liqi.javaeye.com/blog/211622</a>&nbsp;
          发表时间: 2008年07月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          编写发送邮件程序的时候，需要考虑到两个问题：<br />1、邮件发送者需要登录到邮件服务器，也就是需要进行认证。<br />2、发送邮件，需要考虑其邮件格式，是纯文本，还是html格式，采用什么编码。<br /><br />下面是发送邮件的示例程序:<br />1、邮件认证类：<br /><pre name="code" class="java">
public class MailAuthenticator extends Authenticator {
        String authenName; // 用户名
        String authenPass; // 密码

        public MailAuthenticator(String authenName, String authenPass) {
                super();
                this.authenName = authenName;
                this.authenPass = authenPass;
        }

        public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(authenName, authenPass);
        }
}
</pre><br />2、发送邮件的程序片段:<br /><pre name="code" class="java">
public void sendMail( UserInfo user ) {
                Authenticator ac = new MailAuthenticator( userName ,userPasswd );
                Properties props = System.getProperties();

                props.put("mail.smtp.host",host);
                props.put("mail.smtp.auth","true"); /*服务器需要认证*/
                Session session=Session.getInstance(props,ac); //Session会自动调用

                try {
                        String content = getMailTemplate(user);
                        BodyPart mdp=new MimeBodyPart();//新建一个存放信件内容的BodyPart对象
                        mdp.setContent(content,"text/html;charset=gb2312");//给BodyPart对象设置内容和格式/编码方式
                        Multipart mm=new MimeMultipart();
                        mm.addBodyPart(mdp);//将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
                        
                        Message msg = new MimeMessage(session);  
                        msg.setFrom(new InternetAddress(from));
                        InternetAddress[] address = { new InternetAddress( user.getEmail() ) };
                        msg.setRecipients(Message.RecipientType.TO, address);
                        msg.setSubject(SUBJECT);
                        msg.setSentDate(new Date());
                        msg.setText(content);
                        
                        msg.setContent(mm);
                        
                        Transport.send(msg);
                } catch (MessagingException mex) {
                        mex.printStackTrace();
                }
        }
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/211622#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 04 Jul 2008 16:22:05 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/211622</link>
        <guid>http://liqi.javaeye.com/blog/211622</guid>
      </item>
          <item>
        <title>集群配置</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/196098" style="color:red;">http://liqi.javaeye.com/blog/196098</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          使用Apache作为前端的负载均衡器，Apusic做为后台服务器。Apache接收客户端请求，并将请求转发给Apusic；当Apusic<br />服务器处理结束，将响应的信息转发给Apache，并通过Apache最终将响应信息传到客户端。<br />&nbsp;&nbsp; 使用Apache作为负载均衡器，可以有许多策略，我们现在配置的是session sticky策略。通俗的说，就是Session 粘住。可以这样来解释：<br />当浏览器通过Apache转发请求到某一台服务器后，此后Apache将所有的请求，都转发到这一台服务器上。有两种情况，Apache将请求转发到<br />另外一台服务器上：<br />1)、该服务器宕掉。<br />2)、浏览器关闭。<br /><br />集群的配置过程：<br />1、安装Apache<br />&nbsp;&nbsp;&nbsp;&nbsp; ./configure --prefix=/usr/local/apache2.2.4 --with-ssl=/usr/local/openssl --enable-so --enable-mods-shared="ssl headers proxy proxy_balancer proxy_connect proxy_http cache mem_cache"<br />&nbsp;&nbsp;&nbsp;&nbsp; make <br />&nbsp;&nbsp;&nbsp;&nbsp; make install<br />2、Apusic配置<br />&nbsp;&nbsp; apusic.conf中加入：<br />&nbsp;&nbsp; &lt;SERVICE<br />&nbsp;&nbsp;&nbsp; CLASS="com.apusic.cluster.ClusterService"<br />&nbsp;&nbsp;&nbsp; ><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ATTRIBUTE NAME="ClusterName" VALUE="ApusicCluster"/><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ATTRIBUTE NAME="LoadWeight" VALUE="100"/><br />&nbsp;&nbsp; &lt;/SERVICE><br />&nbsp;&nbsp; 将SessionService配置Session复制和转发<br />&nbsp;&nbsp; &lt;ATTRIBUTE NAME="Distributable" VALUE="True"/><br />&nbsp;&nbsp; &lt;ATTRIBUTE NAME="Replicable" VALUE="True"/><br />3、在Apusic配置集群队列<br />&nbsp;&nbsp; 在Linux操作系统下，需要编辑jgroup.xml文件，<br />&nbsp;&nbsp; &lt;UDP<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcast_addr="230.0.0.1" mcast_port="2550"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ip_ttl="8" ip_mcast="true" loopback="true"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcast_send_buf_size="32000" mcast_recv_buf_size="64000"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ucast_send_buf_size="32000" ucast_recv_buf_size="64000"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; down_thread="false" up_thread="false" bind_addr="192.168.6.129"/><br />&nbsp;&nbsp; 通过bind_addr，将IP绑定。<br />4、Apache的负载均衡的配置：<br />&nbsp;&nbsp; #&lt;VirtualHost *:80><br />&nbsp;&nbsp; ProxyPass / balancer://proxy/ stickysession=JSESSIONID nofailover=Off<br />&nbsp;&nbsp; #ProxyPass / balancer://proxy/<br />&nbsp;&nbsp; &lt;Proxy balancer://proxy><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BalancerMember http://192.168.6.129:6888 loadfactor=1 route=jvm1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BalancerMember http://192.168.6.69:6888/ loadfactor=1 route=jvm2<br />&nbsp;&nbsp; &lt;/Proxy><br />&nbsp;&nbsp; #&lt;/VirtualHost><br />&nbsp;&nbsp; <br />5、Apusic启动脚本<br />&nbsp;&nbsp; java -Dcom.apusic.jvm.route=jvm1 -Xms128m -Xmx512m -classpath "$CP" com.apusic.server.Main -root "$APUSIC_HOME" "$@"<br /><br />6、性能优化<br />&nbsp;&nbsp; 1)、Apache调优<br />&nbsp;&nbsp; 配置参数：<br />&nbsp;&nbsp; &lt;IfModule prefork.c><br />	ServerLimit&nbsp; 1000<br />	StartServers 5 <br />	MinSpareServers 5 <br />	MaxSpareServers 10 <br />	MaxClients 900 <br />	MaxRequestsPerChild 0 <br />&nbsp;&nbsp; &lt;/IfModule><br />&nbsp;&nbsp; 2)、Apusic调优<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;SERVICE<br />&nbsp;&nbsp;&nbsp; CLASS="com.apusic.util.ThreadPoolService"<br />&nbsp;&nbsp;&nbsp; NAME="apusic:service=ThreadPool,name=MuxHandler"<br />&nbsp;&nbsp;&nbsp; ><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MinSpareThreads" VALUE="0"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxSpareThreads" VALUE="10"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxThreads" VALUE="200"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxQueueSize" VALUE="500"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="IdleTimeout" VALUE="300"/><br />&nbsp;&nbsp;&nbsp; &lt;/SERVICE><br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;SERVICE<br />&nbsp;&nbsp;&nbsp; CLASS="com.apusic.util.ThreadPoolService"<br />&nbsp;&nbsp;&nbsp; NAME="apusic:service=ThreadPool,name=HTTPHandler"<br />&nbsp;&nbsp;&nbsp; ><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MinSpareThreads" VALUE="5"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxSpareThreads" VALUE="30"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxThreads" VALUE="300"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxQueueSize" VALUE="500"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="IdleTimeout" VALUE="300"/><br />&nbsp;&nbsp;&nbsp; &lt;/SERVICE><br /><br />&nbsp;&nbsp;&nbsp; &lt;SERVICE<br />&nbsp;&nbsp;&nbsp; CLASS="com.apusic.util.ThreadPoolService"<br />&nbsp;&nbsp;&nbsp; NAME="apusic:service=ThreadPool,name=ORBWorker"<br />&nbsp;&nbsp;&nbsp; ><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MinSpareThreads" VALUE="5"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxSpareThreads" VALUE="30"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxThreads" VALUE="30"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxQueueSize" VALUE="500"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="IdleTimeout" VALUE="300"/><br />&nbsp;&nbsp;&nbsp; &lt;/SERVICE><br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; &lt;SERVICE<br />&nbsp;&nbsp;&nbsp; CLASS="com.apusic.net.Muxer"<br />&nbsp;&nbsp;&nbsp; ><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="Port" VALUE="7888"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="Backlog" VALUE="150"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="Timeout" VALUE="600"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="MaxWaitingClients" VALUE="800"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="WaitingClientTimeout" VALUE="5"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="SSLEnabled" VALUE="True"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="SecurePort" VALUE="7889"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="KeyStore" VALUE="config/sslserver"/><br />&nbsp;&nbsp;&nbsp; 	&lt;ATTRIBUTE NAME="KeyPassword" VALUE="keypass"/><br />&nbsp;&nbsp;&nbsp; &lt;/SERVICE><br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 增加虚拟机内存参数：<br />&nbsp;&nbsp;&nbsp; $JAVA_RUN -Dcom.apusic.jvm.route=jvm1 -Djava.awt.headless=true&nbsp; -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Xms1024m -Xmx1536m -XX:MaxPermSize=128m -XX:MaxNewSize=256m -XX:NewRatio=2 -XX:NewSize=128M -XX:SurvivorRatio=8 -Xss128k&nbsp; -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalPacing -Xrs -Xloggc:gc.txt -XX:+PrintGC -XX:+PrintGCDetails -classpath "$CP" com.apusic.server.Main -root "$APUSIC_HOME" "$@"<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 3)、系统调优<br />&nbsp;&nbsp;&nbsp; ulimit –n 65535
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/196098#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 14:09:50 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/196098</link>
        <guid>http://liqi.javaeye.com/blog/196098</guid>
      </item>
          <item>
        <title>Oracle锁机制</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/193919" style="color:red;">http://liqi.javaeye.com/blog/193919</a>&nbsp;
          发表时间: 2008年05月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、行级锁<br />insert ,update ,delete，自动在行上加一个行级锁。通过commit,rollback解锁。<br />查看行级锁阻塞情况：<br />select sid , blocking_session,username,event from v$session where blocking_session_status='VALID';<br />查看session加锁情况，不含锁阻塞的情况：<br />select * from v$locked_objects;<br />oracle 加锁是依次执行的，假设有3个用户，同时修改某行数据。第一个用户先获得行级锁，其他两个用户处于等待状态，也就是阻塞了其他两个用户。当这个用户 commit操作，解放自身的行级锁。此时，第二个用户将获得行级锁，再阻塞第三个用户。直到第二个用户释放行级锁，第三个用户才有机会获得锁，否则将一直处于等待状态。<br /><br />2、表级锁<br />1) lock table tab_name in share mode(共享锁) 在表级别上加上共享锁，在该表上用户只能够select操作，其他操作都被阻塞，要一直等到该表的锁释放。同时还允许其他用户在该表上也加上share锁。Type为4。<br />解锁：用户在该表上执行commit或rollback后，将解除该锁。<br />2) lock table tab_name in exclusive mode(排他锁) 在表级别上加上排他锁，在该表上用户只能select操作，其他操作都被阻塞，通过还不允许用户再在该表上加上其他类型的锁。Type为6（加锁级别最高）。<br />解锁：用户在该表上执行commit或rollback后，将解除该锁。<br />3) Lock table tab_name in share row exclusive mode（）：在表级别上加上排他锁，在该表上用户只能select操作，其他操作将被阻塞，不能加共享锁、共享行排他锁和排他锁。Type为5。<br />解锁：用户在该表上执行commit或rollback后，将解除该锁。<br /><br />3、数据库级锁<br />1) alter system enable restricted session;<br />受限方式打开数据库，对已经连接上数据库的用户仍然能够操作数据库；要连接数据库，用户必须具有restrictive session的权限。<br />其目的主要是希望在数据库打开期间，且在没有用户会话干扰（如建立连接和执行任务）的情况下完成数据库的维护操作（如数据库的导入、导出）。<br />Alter system disable restricted session;解除数据库受限模式。<br />2) 以只读方式打开数据库<br />Shutdown immediate<br />Startup mount<br />Alter database open read only;<br />这时候数据库只能够执行select操作，其他操作就要抛出错。
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/193919#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 17:22:24 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/193919</link>
        <guid>http://liqi.javaeye.com/blog/193919</guid>
      </item>
          <item>
        <title>Oracle创建tablespace的问题，抛出RA-29339: 表空间块大小 2048 与配置的</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/193917" style="color:red;">http://liqi.javaeye.com/blog/193917</a>&nbsp;
          发表时间: 2008年05月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、create tablespace<br />9i以后还提供了可以设置多种数据块尺寸（2、4、8、16 或 32k）的buffer cache，以便存放不同数据块尺寸的表空间中的对象。使用初始化参数：db_Nk_cache_size来指定不同数据块尺寸的buffer cache，这里的N就是2、4、8、16 或 32。创建数据库时，使用初始化参数：db_block_size所指定缺省的数据块尺寸用于system表空间。然后可以指定最多4个不同数据块尺寸的表空间，每种数据块尺寸的表空间必须对应一种不同尺寸的buffer cache，否则不能创建不同数据块尺寸的表空间。<br /><br />例如：<br />create tablespace aom<br />datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom.dbf' size 10m blocksize 2048<br />segment space management auto;<br /><br />抛出这个错误：RA-29339: 表空间块大小 2048 与配置的块大小不匹配<br />分析原因：<br />没有定义db_2k_cache_size的大小，可以通过show parameter db_cache 查看<br />解决方案：<br />alter system set db_2k_cache_size=10M<br /><br />2、offline表空间<br />以上面aom表空间为例，来说明情况。<br />1)、select tablespace_name, status from dba_tablespaces (查看表空间的联机情况)。<br />2)、在该表空间上创建一个demo表，并插入数据<br />create table demo (id int);<br />insert into demo values(11);<br />2)、alter tablespace aom offline;(只有sysdba或sysoper才有权限操作)<br />再插入一条数据, insert into demo values(12)，就会抛出如下错误：<br />ORA-00376: 此时无法读取文件 6<br />ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\AOM.DBF'<br />说明表空间offline就不可用。<br /><br />3、表空间只读<br />以上面的aom表空间，来说明情况。虽然该表空间联机，但是设置其为只读，不允许该表空间中更改数据库<br />1)、alter tablespace aom read only;<br />也只有(sysdba或sysoper权限的用户才具备该操作)<br />2)、insert into demo values(22);<br />就会抛出如下错误：<br />ORA-00372: 此时无法修改文件 6<br />ORA-01110: 数据文件 6: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\AOM.DBF'<br />恢复表空间读写：alter tablespace aom read write;<br /><br />4、增大表空间的容量<br />1)、通过增大表空间数据文件的大小<br />alter database datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom.dbf' resize 20m;<br />2)、向表空间中加入数据库文件<br />alter tablespace aom add datafile 'E:\oracle\product\10.2.0\oradata\orcl\aom02.dbf' size 10m;<br /><br />5、用户默认表空间<br />1)、在数据库级别上修改用户的表空间，管理员新建用户时，默认就是该表空间<br />alter database default tablespace aom;<br />2）、创建用户时，指定一个表空间<br />create user test identified by test default tablespace aom;<br />3）、修改已有用户的表空间<br />alter user test default tablespace aom1;<br /><br />6、用户隶属表空间查询<br />1)、数据字典：dba_users;<br />2）、select username, default_tablespace from dba_users where username='TEST';
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/193917#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 17:20:39 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/193917</link>
        <guid>http://liqi.javaeye.com/blog/193917</guid>
      </item>
          <item>
        <title>WindowsXP作为时间服务器，Linux需要同步时间的客户端</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/193915" style="color:red;">http://liqi.javaeye.com/blog/193915</a>&nbsp;
          发表时间: 2008年05月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一、WindowsXP的配置<br />1、下载ntp服务组件，下载地址：http://www.meinberg.de/english/sw/ntp.htm#ntp_nt_stable<br />2、安装此组件完毕，在组件服务中将查看到“Network Time Protocal Daemon”服务，并确定服务已经启动。<br />3、配置ntp.conf文件（如果默认安装，则该文件在C:\Program Files\NTP\etc目录下），修改后的内容如下：<br />server 127.127.1.0<br />fudge 127.127.1.0 stratum 12<br />二、Linux客户端连接<br />1、杀死ntpd服务进程，否则，将出现“ntpdate[18038]: the NTP socket is in use, exiting”。<br />2、启动ntpdate 192.168.1.6，即可同步192.168.1.6的时间的。如果此时出现“ntpdate[18079]: no server suitable for synchronization found”，需要考虑三个原因：<br />1) Window的时间同步服务没有启动<br />2) Windows是否有防火墙<br />3) sntp的连接还没有建立，需要等待一段时间
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/193915#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 17:19:43 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/193915</link>
        <guid>http://liqi.javaeye.com/blog/193915</guid>
      </item>
          <item>
        <title>Oracle数据行的rowid分析</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/193914" style="color:red;">http://liqi.javaeye.com/blog/193914</a>&nbsp;
          发表时间: 2008年05月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在oracle8i后，rowid的格式为：OOOOOOOFFFBBBBBBRRR，其中O代表Object_id，F代表file_id，B代表块的id，R代表行的id号。<br />以创建test表为例，来介绍。<br />1、test表在数据库称为一个对象，可以查询其对象ID：<br />select object_id from dba_objects where object_name='TEST' and owner='U1';<br />2、每个数据行，Oracle都为其分配了一个rowid，这个rowid表示行的物理地址。它并不存在于数据块中，而存在于索引中。查看第一行的rowid值：<br />select rowid from test where rownum=1;<br />结果：AAAMttAAEAAAABUAAA(64位进制计算)<br />则：object_id=AAAMtt，file_id=AAE，block_id=AAAABU，row_id=AAA<br />3、通过oracle的dbms_rowid可以计算这些值：<br />select dbms_rowid.rowid_object('AAAMttAAEAAAABUAAA') object_id#, dbms_rowid.rowid_relative_fno('AAAMttAAEAAAABUAAA') file#,dbms_rowid.rowid_block_number('AAAMttAAEAAAABUAAA') block#, dbms_rowid.rowid_row_number('AAAMttAAEAAAABUAAA') row# from dual;<br /><br />结果：<br />OBJECT_ID# FILE# BLOCK# ROW#<br /><br />52077 4 84 0<br />4、可以查询该书库块在哪个数据文件中：<br />select file#,rfile#,name from v$datafile;
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/193914#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 17:19:08 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/193914</link>
        <guid>http://liqi.javaeye.com/blog/193914</guid>
      </item>
          <item>
        <title>Oracle专用服务器和共享服务器</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/193913" style="color:red;">http://liqi.javaeye.com/blog/193913</a>&nbsp;
          发表时间: 2008年05月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          查看客户端连接服务器端的类型<br />select p.spid, p.PROGRAM,s.process,s.PROGRAM ,s.SERVER, s.MACHINE from v$process p , v$session s where p.ADDR = s.PADDR and s.SID=(select sid from v$mystat where rownum=1);<br />其中，s.server可以显示连接服务器的类型。<br />1、如果客户端是采用以专用连接类型登陆服务器，那么s.server为DEDICATED<br />2、如果客户端是采用以共享连接类型登陆服务器，那么s.server为SHARED<br />客户端采用什么类型来连接数据库服务器。
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/193913#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 17 May 2008 17:18:36 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/193913</link>
        <guid>http://liqi.javaeye.com/blog/193913</guid>
      </item>
          <item>
        <title>awk编程示例</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/193123" style="color:red;">http://liqi.javaeye.com/blog/193123</a>&nbsp;
          发表时间: 2008年05月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          源文件如下：<br />Yellow#Junior<br />Orange#Senior<br />Yellow#Junior<br />Orange#Junior<br />Red#Senior<br />Red#Junior<br />现在需要统计文件中Yellow、Orange、Red个数以及Junior、Senior的个数。则利用awk编程<br />statistic1.awk<br />#!/bin/awk -f<br />BEGIN {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FS = "#";<br />}<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; split($0,students,"#");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i in students) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( students[i] == "Yellow" ){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yellow_count +=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if ( students[i] == "Orange" ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; orange_count +=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if ( students[i] == "Red" ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; red_count +=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if ( students[i] == "Junior" ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; junior_count +=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if ( students[i] == "Senior" ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; senior_count +=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />}<br />END {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "yellow_count:" yellow_count;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "orange_count:" orange_count;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "red_count:" red_count;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "junior_count:" junior_count;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print "senior_count:" senior_count;<br />}<br /><br />statistic2.awk<br />#!/bin/awk -f<br />BEGIN {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FS="#"<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colours["Yellow"]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colours["Orange"]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colours["Red"]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; students["Junior"]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; students["Senior"]<br />}<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( colour in colours ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($1 == colour) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; colours[colour]++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( student in students ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( $2 == student ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; students[student]++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />}<br /><br />END {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( colour in colours ) print "The Club has ", colours[colour],colour, "Beltes";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( student in students ) print "The Club has ", students[student],student, "students";<br /><br />}<br /><br />比较这两个编程，明显第二个方法要比第一种方法来的简练。
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/193123#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 14 May 2008 23:17:58 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/193123</link>
        <guid>http://liqi.javaeye.com/blog/193123</guid>
      </item>
          <item>
        <title>Linux系统下查看某文件修改的时间戳</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/192750" style="color:red;">http://liqi.javaeye.com/blog/192750</a>&nbsp;
          发表时间: 2008年05月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          查看文件时间戳命令：stat awk.txt<br />File: `awk.txt'<br />&nbsp; Size: 20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blocks: 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IO Block: 4096&nbsp;&nbsp; regular file<br />Device: 801h/2049d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Inode: 380730&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Links: 1<br />Access: (0644/-rw-r--r--)&nbsp; Uid: (&nbsp;&nbsp;&nbsp; 0/&nbsp;&nbsp;&nbsp; root)&nbsp;&nbsp; Gid: (&nbsp;&nbsp;&nbsp; 0/&nbsp;&nbsp;&nbsp; root)<br />Access: 2008-04-26 01:50:44.000000000 +0800<br />Modify: 2008-04-26 01:48:18.000000000 +0800<br />Change: 2008-04-26 01:48:18.000000000 +0800<br /><br />现在是要过滤出Modify的时间戳，并以yyyyMMddHHSS格式保存，则可以利用下面这条命令：<br />stat awk.txt | grep -i Modify | awk -F. '{print $1}' | awk '{print $2$3}'| awk -F- '{print $1$2$3}' | awk -F: '{print $1$2$3}'<br />输出结果：20080426014818
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/192750#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 May 2008 22:51:35 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/192750</link>
        <guid>http://liqi.javaeye.com/blog/192750</guid>
      </item>
          <item>
        <title>Oracle的PL/SQL编译问题</title>
        <author>liqi6510</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liqi.javaeye.com">liqi6510</a>&nbsp;
                    链接：<a href="http://liqi.javaeye.com/blog/192730" style="color:red;">http://liqi.javaeye.com/blog/192730</a>&nbsp;
          发表时间: 2008年05月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Oracle10g在默认情况下编译 pl/sql代码不做任何提示，默认情况下plsql_warnings='disable:all'，所以不做任何编译上的提示。因此通过设置plsql_warnings参数，可以在编译plsql代码的时候进行相应的提示。其中plsql_warings的参数取值如下：<br />1、server：表示检查可能出现不可预料的结果<br />2、performance：表示可能会遇到的性能问题，如：类型转换<br />3、informational：表示可能是死代码<br />4、all：表示检查所有警告<br />参数更改可以有如下两种方式进行更改：<br />1、alter session set plsql_warnings='enable:server';<br />2、alter system set plsql_warnings='enable:informational';<br />以存储dead_code存储过程为例，改存储过程代码如下：<br />create or replace dead_code is<br />&nbsp;&nbsp; x number :=10;<br />begin<br />&nbsp;&nbsp; if x = 10 then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x:=20;<br />&nbsp;&nbsp;&nbsp; else <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x := 100;<br />&nbsp;&nbsp;&nbsp; end if;<br />end;<br />其中x:=100将永远不会执行，称为死代码。当采用下面编译方式的时候，在编译阶段将会有提示：<br />1、alter session set plsql_warnings='enable:informational';<br />2、alter procedure dead_code complie;<br />将会看到编译提示，而且会定位到某一行。
          <br/><br/>
          <span style="color:red;">
            <a href="http://liqi.javaeye.com/blog/192730#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 13 May 2008 21:53:03 +0800</pubDate>
        <link>http://liqi.javaeye.com/blog/192730</link>
        <guid>http://liqi.javaeye.com/blog/192730</guid>
      </item>
      </channel>
</rss>