<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>中国web开发网</title><description><![CDATA[ ]]></description><link>http://www.chinascripts.com</link><language>UTF-8</language><copyright>www.ntsky.com</copyright><managingEditor>yntsky@gmail.com</managingEditor><webMaster>yntsky@gmail.com</webMaster><pubDate>2008-07-04 20:08:57</pubDate><item><title>安装 memcached</title><link>http://cs.ntsky.com/post/122</link><description><![CDATA[<p>memcached安装需要指定libevent</p>
<p>1、下载memcached和libevent</p>
<p>2、安装libevent</p>
<ul>
    <li>tar zxvf libevent-1.3d.tar.gz</li>
    <li>cd libevent-1.3d</li>
    <li>./configure -prefix=/usr</li>
    <li>make</li>
    <li>make install</li>
</ul>
<p>3、检查安装的libevent</p>
<p>ls -la /usr/lib | grep libevent</p>
<p>lrwxrwxrwx&nbsp;&nbsp;&nbsp; 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp; 7月&nbsp; 4 11:18 libevent-1.3d.so.1 -&gt; libevent-1.3d.so.1.0.3<br />
-rwxr-xr-x&nbsp;&nbsp;&nbsp; 1 root root&nbsp;&nbsp; 317044&nbsp; 7月&nbsp; 4 11:18 libevent-1.3d.so.1.0.3<br />
-rw-r--r--&nbsp;&nbsp;&nbsp; 1 root root&nbsp;&nbsp; 513386&nbsp; 7月&nbsp; 4 11:18 libevent.a<br />
-rwxr-xr-x&nbsp;&nbsp;&nbsp; 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 844&nbsp; 7月&nbsp; 4 11:18 libevent.la<br />
lrwxrwxrwx&nbsp;&nbsp;&nbsp; 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp; 7月&nbsp; 4 11:18 libevent.so -&gt; libevent-1.3d.so.1.0.3</p>
<p>4、memcached安装</p>
<ul>
    <li>tar xzvf memcached-1.2.4.tar.gz</li>
    <li>cd memcached-1.2.4</li>
    <li>./configure --prefix=/usr/local/memcached --with-libevent=/usr</li>
    <li>make</li>
    <li>make install</li>
</ul>
<p>5、启动memcached </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <span><span>/usr/local/<span class="hilite1">memcache</span>d/bin/<span class="hilite1">memcache</span>d&nbsp;-d&nbsp;-m&nbsp;128&nbsp;-p&nbsp;12121&nbsp;-u&nbsp;root</span></span></p>]]></description><author>ntsky</author><pubDate>2008-07-04 20:08:57.0</pubDate></item><item><title>IE下404页面不显示的问题</title><link>http://cs.ntsky.com/post/121</link><description><![CDATA[<p>在tomcat中设置了404和505等页面,设置方法，打开web.xml</p>
<p><br />
&nbsp;&nbsp;&nbsp; &lt;error-page&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error-code&gt;505/error-code&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location&gt;/505.html&lt;/location&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/error-page&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;error-page&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error-code&gt;403&lt;/error-code&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location&gt;/403.html&lt;location&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/error-page&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;error-page&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error-code&gt;404&lt;/error-code&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;location&gt;/404.html&lt;/location&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/error-page&gt;</p>
<p>设置404.html的内容为test 404,然后随便输入个URL用IE进行测试，显示始终是错误，但用FF就显示正常，然后就定位是IE的问题，调查资料发现IE存在问题，当404页面内容小于512bytes时候，就会用IE自带的错误显示页面.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></description><author>ntsky</author><pubDate>2008-06-16 21:58:40.0</pubDate></item><item><title>spring整合memcached</title><link>http://cs.ntsky.com/post/120</link><description><![CDATA[<p>下载windows下的memcached，安装运行步骤:</p>
<p>1、安装 c:\memcached\memcached.exe -d install</p>
<p>2、启动 c:\memcached\memcached.exe -d start</p>
<p><strong>memcached的基本设置</strong>：</p>
<p>-p <num></num>监听的端口<br />
-l <ip_addr></ip_addr>连接的IP地址, 默认是本机<br />
-d start 启动memcached服务<br />
-d restart 重起memcached服务<br />
-d stop|shutdown 关闭正在运行的memcached服务<br />
-d install 安装memcached服务<br />
-d uninstall 卸载memcached服务<br />
-u <username></username>以<username></username>的身份运行 (仅在以root运行的时候有效)<br />
-m <num></num>最大内存使用，单位MB。默认64MB<br />
-M 内存耗尽时返回错误，而不是删除项<br />
-c <num></num>最大同时连接数，默认是1024<br />
-f <factor></factor>块大小增长因子，默认是1.25<br />
-n <bytes></bytes>最小分配空间，key+value+flags默认是48<br />
-h 显示帮助 </p>
<p>&nbsp;</p>
<p>Spring applicationContext.xml中设置</p>
<div>
<div class="dp-highlighter">
<div class="bar"></div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">bean</span><span>&nbsp;</span><span class="attribute">id</span><span>=</span><span class="attribute-value">&quot;memcache&quot;</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;com.danga.MemCached.SockIOPool&quot;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">factory-method</span><span>=</span><span class="attribute-value">&quot;getInstance&quot;</span><span>&nbsp;</span><span class="attribute">init-method</span><span>=</span><span class="attribute-value">&quot;initialize&quot;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="attribute">destroy-method</span><span>=</span><span class="attribute-value">&quot;shutDown&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">constructor-arg</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>memcache</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">constructor-arg</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;servers&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>${memcache.server}</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">list</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;initConn&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>${memcache.initConn}</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;minConn&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>${memcache.minConn}</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;maxConn&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>${memcache.maxConn}</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;maintSleep&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>${memcache.maintSleep}</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;nagle&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>${memcache.nagle}</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">property</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;socketTO&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>${memcache.socketTO}</span><span class="tag">&lt;/</span><span class="tag-name">value</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">property</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class=""><span></span><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;</span></li>
</ol>
</div>
</div>
<div>配置信息</div>
<div>memcache.server=192.168.0.9:11211<br />
memcache.initConn=20<br />
memcache.minConn=10<br />
memcache.maxConn=50<br />
memcache.maintSleep=30<br />
memcache.nagle=false<br />
memcache.socketTO=3000</div>
<div>&nbsp;</div>
<div>memcached常用方法：</div>
<div>1、设置数据到内存</div>
<div>memCachedClient.set(key, value, cache中存在时长);</div>
<div>2、删除内存中的数据</div>
<div>memCachedClient.delete(key);</div>
<div>3、取得内存中的数据</div>
<div>memCachedClient.get(key);</div>
<link href="/scripts/FCKeditor/editor/plugins/highlighter/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css" type="text/css" rel="stylesheet" />]]></description><author>ntsky</author><pubDate>2008-06-02 19:28:31.0</pubDate></item><item><title>iframe跨域高度自适应解决方案</title><link>http://cs.ntsky.com/post/119</link><description><![CDATA[<p>我的iframe跨域实现方式如下：</p>
<p>main.html&nbsp; iframe.html&nbsp; 主页是main.html 子页是iframe.html</p>
<p>main.html在域名 <a href="http://www.ntsky.com/"><font color="#800080">www.ntsky.com</font></a></p>
<p>iframe.html在域名 <a href="http://www.nauto.net/">www.nauto.net</a></p>
<p>现在在iframe.html中指定</p>
<p>&nbsp;var ua = navigator.userAgent;<br />
&nbsp;var s = &quot;MSIE&quot;;<br />
&nbsp;if ((i = ua.indexOf(s)) &gt;= 0) {<br />
&nbsp;&nbsp;window.clipboardData.setData('text',String(window.document.body.scrollHeight));<br />
&nbsp;}</p>
<p>将高度数据设置在windows剪贴板中.</p>
<p>在main.html中调用方式如下:</p>
<p>&lt;iframe id=&quot;testFrame&quot; name=&quot;testFrame&quot; src=&quot;&quot; width=&quot;100%&quot; height=&quot;0px;&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;</p>
<p>&nbsp;window.onload = function(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; document.getElementById('testFrame').style.height=parseInt(window.clipboardData.getData('text'))+'px';<br />
&nbsp;}</p>
<p>此方法只适合在IE下使用</p>]]></description><author>ntsky</author><pubDate>2008-05-15 06:52:20.0</pubDate></item><item><title>AWStats使用笔记</title><link>http://cs.ntsky.com/post/118</link><description><![CDATA[AWstats是一个基于Perl的WEB日志分析工具，极其强大，界面友好，而且支持中文。<br />
<br />
该软件可以到:<br />
http://awstats.sourceforge.net/ 或者<br />
http://sourceforge.net/projects/awstats/<br />
下载。<br />
<br />
一、安装AWstats<br />
apache安装目录/usr/local/apache/<br />
<br />
tar xzvf awstats-6.7.tar.gz<br />
将awstats-6.7中的wwwroot移到/usr/local/apache/cgi-bin/下并命名为awstats<br />
<br />
二、配置apache<br />
<div>
<div class="dp-highlighter">
<ol start="1" class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">VirtualHost</span><span>&nbsp;*.*.*.*:80</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerName&nbsp;www.ntsky.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DocumentRoot&nbsp;/usr/local/tomcat/www/ntsky_cms&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ServerAdmin&nbsp;yntsky@gmail.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ErrorLog&nbsp;logs/error_ntsky.com_log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CustomLog&nbsp;logs/ntsky.com-access_log&nbsp;combined&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">VirtualHost</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<link rel="stylesheet" type="text/css" href="plugins/highlighter/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css" /></div>
注意这里的日志路径在logs/ntsky.com-access_log<br />
<br />
这里选择日志的格式为 combined,而不是common，awstats解析不了common<br />
<br />
三、配置awstats<br />
拷贝awstats.model.conf为awstats.<font color="#ff0000">ntsky</font>.conf<br />
vi awstats.ntsky.conf 修改几点<br />
1、LogFile=&quot;/usr/local/apache/logs/ntsky.com-access_log&quot;&nbsp; 这里的路径为apache日志路径<br />
2、SiteDomain=&quot;ntsky.com&quot;&nbsp; 这里设置访问domin，在awstats产看信息时候链接的头部会加上这个<br />
3、AllowToUpdateStatsFromBrowser=1 允许查看的时候进行更新日志数据<br />
<br />
将tar解压包中的icon和js拷贝到apache的默认访问目录。<br />
<br />
访问方法： http://ip地址/cgi-bin/awstats/awstats.pl?config=<font color="#ff0000">ntsky<br />
</font><br />
四、解析日志生成数据<br />
chmod -R 777 awstats<br />
perl awstats.pl -config=<font color="#ff0000">ntsky</font> -update -lang=cn<br />
这里的ntsky为刚才拷贝出来的文件按awstats的配置文件中间部分信息.<br />
<br />
五、访问权限配置<br />
有时候网站的日志信息不想给竞争对手看到，所以需要对日志查看进行授权，授权方式如下：<br />
编辑apache的配置文件 vi httpd.conf<br />
<div>
<div class="dp-highlighter">
<ol start="1" class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">Directory</span><span>&nbsp;&quot;/usr/local/apache/cgi-bin&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;AllowOverride&nbsp;None&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Options&nbsp;Indexes&nbsp;FollowSymLinks&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;Order&nbsp;allow,deny&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;Allow&nbsp;from&nbsp;all&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;AuthType&nbsp;Basic&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;AuthName&nbsp;&quot;Restricted&nbsp;Files&quot;&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;AuthUserFile&nbsp;/usr/local/apache/conf/passwords&nbsp;&nbsp;</span></li>
    <li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;Require&nbsp;user&nbsp;ntsky&nbsp;&nbsp;</span></li>
    <li class="alt"><span>&nbsp;&nbsp;</span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">Directory</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
</div>
在cgi-bin的配置中增加<br />
&nbsp;&nbsp;&nbsp; AuthType Basic<br />
&nbsp;&nbsp;&nbsp; AuthName &quot;Restricted Files&quot;<br />
&nbsp;&nbsp;&nbsp; AuthUserFile /usr/local/apache/conf/passwords<br />
&nbsp;&nbsp;&nbsp; Require user ntsky<br />
这里有个密码配置文件，文件路径在/usr/local/apache/conf/passwords,<br />
该文件的生成方式为:/usr/local/apache/bin/htpasswd -c /usr/local/apache/conf/passwords ntsky<br />
此时输入密码信息<br />
<br />
再次输入http://ip地址/cgi-bin/awstats/awstats.pl?config=<font color="#ff0000">ntsky <font color="#000000">时候就需要您输入用户名和密码</font><br />
</font>]]></description><author>ntsky</author><pubDate>2008-05-05 08:28:29.0</pubDate></item><item><title>Linux dns设置</title><link>http://cs.ntsky.com/post/117</link><description><![CDATA[由于需要使用wget下载文件，发现不能通过域名来下载，所以配置了主机DNS<br />
<br />
配置方式：<br />
vi /etc/resolv.conf<br />
增加nameserver<br />
nameserver 202.101.224.68<br />
nameserver 202.101.240.36<br />
nameserver 202.109.129.2<br />
其中nameserver后的IP为你主机所在区域的IP]]></description><author>ntsky</author><pubDate>2008-05-04 20:32:31.0</pubDate></item><item><title>FTP中mget批量下载文件而不提示</title><link>http://cs.ntsky.com/post/116</link><description><![CDATA[最近服务器进行迁移，需要通过ftp批量下载文件，直接使用mget * 时候,每下载个文件前总有提示信息，通过使用prompt来解决这个问题。<br />
<br />
命令 ：<br />
open <br />
&gt;ftp *.*.*.*<br />
&gt;prompt<br />
&gt;mget *]]></description><author>ntsky</author><pubDate>2008-05-03 11:17:04.0</pubDate></item><item><title>Linux下安装rzsz软件包</title><link>http://cs.ntsky.com/post/115</link><description><![CDATA[<p>定制安装的linux可能没有把rzsz包安装到系统，这对用securecrt这样的windows工具传输文件特别不方便。为了使用这个方便的法门，可以手动安装之。</p>
<p>1、下载软件 rzsz-3.34.tar.gz。登录linux，用命令</p>
<p>wget <a href="http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz">http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz</a>下载。</p>
<p>2、解压 tar zxvf&nbsp; rzsz-3.34.tar.gz</p>
<p>3、安装&nbsp; cd rzsz-3.34 ; make posix 。注意：这个软件安装与常规的GNU软件不同&mdash;没有configure(配置)及make install (安装过程)。</p>
<p>将安装目录的rz和sz拷贝到系统命令目录/usr/bin</p>
<p>&nbsp;</p>
<p>再使用rz 和sz就可以进行上传和下载了。</p>]]></description><author>ntsky</author><pubDate>2008-05-02 23:28:55.0</pubDate></item><item><title>使用p3p解决Iframe中cookie跨域问题</title><link>http://cs.ntsky.com/post/105</link><description><![CDATA[A页面的域名 a.com B页面的域名b.com，现A中iframe嵌了个B页面，此时B中的cookie就会失效。<br />
<br />
解决办法&nbsp; :<br />
1、增加P3P.xml文件<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在B的网站服务器上存放P3P.xml文件,文件内容为  <br />
<div>
<div class="dp-highlighter">
<ol start="1" class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">META</span><span>&nbsp;</span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">&quot;http://www.w3.org/2002/01/P3Pv1&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">POLICY-REFERENCES</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">POLICY-REF</span><span>&nbsp;</span><span class="attribute">about</span><span>=</span><span class="attribute-value">&quot;/w3c/P3P.xml&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;</span><span class="tag-name">COOKIE-INCLUDE</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;*&quot;</span><span>&nbsp;</span><span class="attribute">value</span><span>=</span><span class="attribute-value">&quot;*&quot;</span><span>&nbsp;</span><span class="attribute">domain</span><span>=</span><span class="attribute-value">&quot;*&quot;</span><span>&nbsp;</span><span class="attribute">path</span><span>=</span><span class="attribute-value">&quot;*&quot;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">POLICY-REF</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class=""><span><span class="tag">&lt;/</span><span class="tag-name">POLICY-REFERENCES</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">META</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<link rel="stylesheet" type="text/css" href="plugins/highlighter/dp.SyntaxHighlighter/Styles/SyntaxHighlighter.css" /></div>
2、在web.xml中增加个fliter，保证每次应答的时候浏览器头文件中都设置了p3p的头信息。<br />
<div>
<div class="dp-highlighter">
<ol start="1" class="dp-j">
    <li class="alt"><span><span>((HttpServletResponse)response).setHeader(</span><span class="string">&quot;P3P&quot;</span><span>,&nbsp;</span><span class="string">&quot;CP=\&quot;NOI&nbsp;ADM&nbsp;DEV&nbsp;PSAi&nbsp;COM&nbsp;NAV&nbsp;OUR&nbsp;OTR&nbsp;STP&nbsp;IND&nbsp;DEM\&quot;&nbsp;&nbsp;policyref=\&quot;http://www.udooo.com/w3c/P3P.xml\&quot;&quot;</span><span>);&nbsp; <br />
    </span></span></li>
</ol>
</div>
</div>]]></description><author>ntsky</author><pubDate>2007-11-27 10:23:46.0</pubDate></item><item><title>luceneweb 配置步骤</title><link>http://cs.ntsky.com/post/93</link><description><![CDATA[1、下载lucene,最新的版本为lucene-2.2<br />
2、运行luceneweb需要建立index文件,我们将下载的lucene的docs目录拷贝到tomcat下的luceneweb下。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在cmd中运行如下的命令 :<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  java -classpath &quot;D:\lucene-2.2.0\lucene-core-2.2.0.jar;D:\lucene-2.2.0\lucene-demos-2.2.0.jar&quot; org.apache.lucene.demo.IndexHTML -create -index &quot;D:\webserver\apache-tomcat-6.0.13_test\webapps\luceneweb\index&quot; &quot;D:\webserver\apache-tomcat-6.0.13_test\webapps\luceneweb\docs&quot;<br />
3、可以看到在D:\webserver\apache-tomcat-6.0.13_test\webapps\luceneweb\index下建立了几个索引文件。<br />
4、启动Tomcat<br />
5、在浏览器中运行 http://127.0.0.1:8080/luceneweb/将看到lucene的界面，输入apache将输出检索结果。]]></description><author>ntsky</author><pubDate>2007-10-25 18:35:20.0</pubDate></item><item><title>使用JDBC将SqlServer库导出到Mysql</title><link>http://cs.ntsky.com/post/92</link><description><![CDATA[<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" color:="" new="" courier="" style="font-size: 10pt;"><span style="">公司平台从ASP+SQLSERVER往J2EE+MYSQL迁移，需要将SQLSERVER的库转移到MYSQL,在网上找了些ETL工具，由于需要些逻辑运算，最后放弃了ETL工具，直接用JDBC来执行导出导入。<br />
</span></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp; </span></span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">public</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">void</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> convertDB(</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">int</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> start,</span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">int</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> end) </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">throws</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> InstantiationException,</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>IllegalAccessException, ClassNotFoundException {</span></p>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Class.<em>forName</em>(</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;com.microsoft.jdbc.sqlserver.SQLServerDriver&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String sqlserver_url = </span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;jdbc:microsoft:sqlserver://192.168.0.135:1433;DatabaseName=cubcn&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(63, 127, 95);">// mydb</span><span style="font-size: 10pt; font-family: 宋体; color: rgb(63, 127, 95);">为数据库</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String user = </span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;sa&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String password = </span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;1234&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Connection sql_conn = </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">null</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp; </span><span style="">&nbsp;&nbsp;&nbsp; </span>PreparedStatement sql_stmt = </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">null</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span></p>
<span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Connection mysql_conn = </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">null</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>PreparedStatement mysql_stmt = </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">null</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">try</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> {</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.</span><em><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(0, 0, 192);">out</span></em><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.print(</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;</span><span style="font-size: 10pt; font-family: 宋体; color: rgb(42, 0, 255);">开始</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">....&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>sql_conn = (Connection) DriverManager.<em>getConnection</em>(sqlserver_url, user,</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>password);</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>sql_stmt = (PreparedStatement) sql_conn.prepareStatement(</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;SELECT * FROM B_UserInfo where ui_id between '&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">+start+</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;' and '&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">+end+</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;'&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ResultSet sql_rs = (ResultSet) sql_stmt</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" class="MsoNormal" style="text-align: left;"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>.executeQuery();</span></p>]]></description><author>ntsky</author><pubDate>2007-10-25 15:43:53.0</pubDate></item><item><title>配置log4j查看ibatis输出的SQL信息</title><link>http://cs.ntsky.com/post/91</link><description><![CDATA[log4j.rootLogger=error, stdout<br />
<br />
log4j.appender.stdout=org.apache.log4j.ConsoleAppender<br />
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n<br />
<br />
log4j.appender.D2=org.apache.log4j.DailyRollingFileAppender<br />
log4j.appender.D2.DatePattern='.'yyyy-MM-dd<br />
log4j.appender.D2.File=c:/blog.log<br />
log4j.appender.D2.Append=true<br />
log4j.appender.D2.Threshold=INFO<br />
log4j.appender.D2.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.D2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n<br />
<br />
log4j.logger.com.ntsky.blog = warn stdout<br />
#log4j.logger.com.ibatis=ERROR D2<br />
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=ERROR D2<br />
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=ERROR D2<br />
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=ERROR D2<br />
#log4j.logger.java.sql.Connection=ERROR D2<br />
#log4j.logger.java.sql.Statement=DEBUG D2<br />
log4j.logger.java.sql.PreparedStatement=DEBUG stdout<br />
log4j.logger.java.sql.ResultSet=INFO stdout<br />
<br />
java.sql.PreparedStatement输出SQL信息,java.sql.ResultSet输出结果信息.]]></description><author>ntsky</author><pubDate>2007-10-23 11:59:38.0</pubDate></item><item><title>多用户系统安全问题和解决方案</title><link>http://cs.ntsky.com/post/90</link><description><![CDATA[web应用越来越趋向于多用户，像blog等，但同样在开发过程中不能忽视常见的安全问题。<br />
<br />
例如 :<br />
用户 A&nbsp; 写了两篇blog blog的ID号为 1、2<br />
用户 B&nbsp; 写了两篇blog blog的ID号为 3、4<br />
<br />
问题 ： 用户A在后台登录后通过模拟 postDelete?id=3来删除用户B的记录，这样就会造成用户A删除用户B记录的问题。<br />
<br />
解决方法 :<br />
1、在Action中执行删除前判断下该记录是否属于该记录，如果不属于就报非法操作，返回信息给用户<br />
2、在前台生成ID时候同时加上校验码，校验码信息为MD5（ID+内部分配的KEY）,在Action中同样再根据取得的ID和内部的KEY MD5一次， 判断传递过来的校验码是否属于等于根据ID生成的校验码。<br />
<br />
优劣 ：<br />
1、第一种传递参数方便，代码实现比较简单，需要根据ID查找次数据库。<br />
2、第二种需要多传递一个参数，进行两次MD5转换，不需要去查找数据库。<br />
<br />
由于第二种不需要去查找数据库，缓解了数据库的压力，我更倾向于第二种。]]></description><author>ntsky</author><pubDate>2007-10-22 11:48:10.0</pubDate></item><item><title>Error reading data from static cursor cache</title><link>http://cs.ntsky.com/post/89</link><description><![CDATA[JDBC连接SQL执行select语句，当SQL SERVER表中有text类型字段，并且字段中的内容为空时，就会出现 &ldquo;Error reading data from static cursor cache&rdquo; 错误。<br />
<br />
解决方法 ：<br />
1、保证text字段内容都不为空<br />
2、如果一定有空的话，存放个空格字符]]></description><author>ntsky</author><pubDate>2007-10-21 19:23:07.0</pubDate></item><item><title>Java split的几个注意点</title><link>http://cs.ntsky.com/post/88</link><description><![CDATA[总结Java中使用split分隔字符串<br />
<br />
1、转义字符 &quot;\&quot;<br />
转义字符进行分隔时，需要将转义字符再转义一次，也就是&quot;\\&quot;<br />
<br />
2、正则表达式字符<br />
<p align="left" style="text-align: left;" class="MsoNormal"><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">public</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">class</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> Test {</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp; </span></span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp; </span></span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">public</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">static</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> </span><strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(127, 0, 85);">void</span></strong><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"> main(String[] args) {</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>String str = </span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;a|b&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>System.</span><em><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(0, 0, 192);">out</span></em><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">.println(str.split(</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(42, 0, 255);">&quot;|&quot;</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">).</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(0, 0, 192);">length</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">);</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp; </span>}</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p align="left" style="text-align: left;" class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"><span style="">&nbsp;&nbsp;&nbsp; </span></span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;;"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;">}</span></p>
由于|属于正则表达式字符，split的参数也是正则表达式，这里 得到的结果是 4,修改&quot;|&quot;为[|],得到的结果为2<br />
<br />
从上面的结果我们可知，像replaceAll这类函数代替换字符为正则表达式字符时同样加上&quot;[]&quot;进行replace.]]></description><author>ntsky</author><pubDate>2007-10-12 00:19:25.0</pubDate></item><item><title>Linux下使用shell和ant发布项目</title><link>http://cs.ntsky.com/post/83</link><description><![CDATA[很久没写shell了，边看帮助边写了下面的shell，主要功能就是从cvs中checkout项目然后使用ant打包并在tomcat下发布。<br />
<br />
知识点 ：<br />
1、CVS登录设置<br />
CVSROOT=:pserver:ntsky:123456@192.168.0.6:/home/cvsroot,设置登录cvs的帐号，其中ntsky 是用户名，密码是123456<br />
2、shell的case语法<br />
case &quot;$2&quot; in<br />
war)<br />
<font color="#ff0000">;;<br />
</font>      *)<br />
esac<br />
3、ant打包项目<br />
ant -f build.xml target<br />
<br />
执行方法 ：~/build/build.sh cvs中的模块名 build.xml中的target]]></description><author>ntsky</author><pubDate>2007-09-29 18:17:55.0</pubDate></item><item><title>ubuntu root用户密码问题？</title><link>http://cs.ntsky.com/post/82</link><description><![CDATA[一直使用redhat，今天虚拟了个ubuntu，运行第一命令就遇到了问题，在切换到root 帐号居然不能用，查阅了资料，原来ubuntu默认设置下root帐号是被锁定的。<br />
<br />
<p>为了启用 root 帐号 (也就是 设置一个口令) 使用:</p>
sudo passwd root<br />
<p>当你使用完毕后屏蔽 root 帐号 使用:</p>
sudo passwd -l root]]></description><author>ntsky</author><pubDate>2007-09-29 16:34:54.0</pubDate></item><item><title>Ant编译打包项目</title><link>http://cs.ntsky.com/post/81</link><description><![CDATA[<p>Blog项目对应的文件目录树如下：</p>
<p>blog:.<br />
├─demo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &mdash;&mdash; demo 目录<br />
├─sql&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&mdash;&mdash; sql脚本目录<br />
├─src&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &mdash;&mdash; Java源文件目录<br />
├─test&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&mdash;&mdash; 测试文件目录<br />
└─web&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &mdash;&mdash;&nbsp;web存放目录<br />
&nbsp;&nbsp;&nbsp; ├─admin<br />
&nbsp;&nbsp;&nbsp; ├─common<br />
&nbsp;&nbsp;&nbsp; ├─includes<br />
&nbsp;&nbsp;&nbsp; ├─scripts<br />
&nbsp;&nbsp;&nbsp; ├─system<br />
&nbsp;&nbsp;&nbsp; ├─themes<br />
&nbsp;&nbsp;&nbsp; ├─UserFiles<br />
&nbsp;&nbsp;&nbsp; └─WEB-INF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&mdash;&mdash; j2ee规范目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─classes&nbsp;&nbsp;&nbsp;&nbsp; &mdash;&mdash; 编译路径<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ├─config<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; └─lib&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &mdash;&mdash; 类库目录</p>]]></description><author>ntsky</author><pubDate>2007-09-29 14:15:21.0</pubDate></item><item><title>Linux下JDK的安装和设置</title><link>http://cs.ntsky.com/post/80</link><description><![CDATA[从Sun网站上下载Linux版本的JDK，本站使用的是 jdk-1_5_0_08-linux-i586.bin<br />
一、安装步骤 :<br />
<ol>
    <li>将 jdk-1_5_0_08-linux-i586.bin 拷贝到/usr/local下</li>
    <li>chmod +x  jdk-1_5_0_08-linux-i586.bin 设置对bin有执行的权限</li>
    <li>./jdk-1_5_0_08-linux-i586.bin 一直安空格然后yes,完成安装,得到目录jdk1.5.0_08</li>
</ol>
<br />
二、JDK设置<br />
<ol>
    <li>用vi 编辑/etc/profile，打开系统环境变量配置文件profile</li>
    <li>设置JAVA_HOME,CLASS_PATH和PATH
    <ol>
        <li>export JAVA_HOME=/usr/local/jdk1.5.0_08</li>
        <li>export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar</li>
        <li>export PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:</li>
    </ol>
    </li>
</ol>]]></description><author>ntsky</author><pubDate>2007-09-29 12:26:28.0</pubDate></item><item><title>ibatis实现取得mysql表中auto_increment的值</title><link>http://cs.ntsky.com/post/79</link><description><![CDATA[当我们在ibatis中使用一对一的时候，想取得自增加字段的值。 &nbsp;  <br />
<br />
Ibatis也提供这种取值方式，具体的配置如下 ：<br />
<br />
DROP TABLE IF EXISTS `t_blog`;<br />
CREATE TABLE `t_blog`(<br />
&nbsp; `id` bigint NOT NULL auto_increment,&nbsp;&nbsp;&nbsp; -- blog编号<br />
&nbsp; `name` varchar(255) NOT NULL ,&nbsp; -- blog名称<br />
&nbsp; `description` varchar(255) default '' ,&nbsp; -- blog介绍<br />
&nbsp; `domain` varchar(255) NOT NULL ,&nbsp; -- blog域名<br />
&nbsp; PRIMARY KEY&nbsp; (`id`)<br />
)<br />
TYPE=InnoDB DEFAULT CHARSET=utf8 ;<br />
<br />
ibatis中对应的配置如下：<br />
&lt;!-- 添加博客 --&gt;<br />
&lt;insert id=&quot;insertBlog&quot;&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; insert into t_blog <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (name, description, domain)<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; values <br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (#name#, #description#, #domain#)<br />
<font color="#ff0000">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;selectKey resultClass=&quot;int&quot; keyProperty=&quot;id&quot; &gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; SELECT @@IDENTITY AS ID<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/selectKey&gt; </font><br />
&lt;/insert&gt;]]></description><author>ntsky</author><pubDate>2007-09-26 00:10:12.0</pubDate></item></channel></rss>