﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Alpha-随笔分类-Java J2EE JSP</title><link>http://www.blogjava.net/alpha/category/1968.html</link><description>多少春秋风雨改 多少崎岖不变爱</description><language>zh-cn</language><lastBuildDate>Wed, 27 Dec 2017 15:40:08 GMT</lastBuildDate><pubDate>Wed, 27 Dec 2017 15:40:08 GMT</pubDate><ttl>60</ttl><item><title>Ubuntu 14.04 安装 php nginx mysql JDK 8 svn</title><link>http://www.blogjava.net/Alpha/archive/2015/10/07/427653.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 07 Oct 2015 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2015/10/07/427653.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/427653.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2015/10/07/427653.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/427653.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/427653.html</trackback:ping><description><![CDATA[<h4>安装 MySQL 5 数据库</h4>
<p style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体">安装 MySQL 运行命令：</p>
sudo&nbsp;<span style="text-align: justify; background-color: #fafafc"><font face="tahoma, 宋体"><span style="line-height: 22px"><em>apt-get install mysql-server mysql-client</em></span></font><br />
<br />
</span>
<div><span style="line-height: 22px"><em>将mysql的datadir从默认的/var/lib/mysql 移到/app/data/mysql下，操作如下：</em></span></div>
<div></div>
<div><span style="line-height: 22px"><em>1.修改了/etc/mysql/my.cnf，改为：datadir = /app/data/mysql</em></span></div>
<div><span style="line-height: 22px"><em>2.cp -a /var/lib/mysql /app/data/</em></span></div>
<div><span style="line-height: 22px"><em>3./etc/init.d/mysql start</em></span></div>
<div><span style="line-height: 22px"><em><br />
</em></span></div>
<div><span style="line-height: 22px"><em><br />
</em></span></div>
<div><span style="line-height: 22px"><em>如果出现系统报错，无法启动mysql，日志显示为：Can't find file: "./mysql/plugin.frm'(errno:13)</em></span></div>
<div><span style="line-height: 22px"><em>[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.</em></span></div>
<div><span style="line-height: 22px"><em><br />
</em></span></div>
<div><span style="line-height: 22px"><em>修改系统的chroot，需要修改/etc/apparmor.d下的相关文件，这里以mysql为例，需要修改：usr.sbin.mysqld和abstractions/mysql两个文件。</em></span></div>
<div><span style="line-height: 22px"><em><br />
</em></span></div>
<div><span style="line-height: 22px"><em>1.修改usr.sbin.mysqld里面的两行内容：/var/lib/mysql/ r,改为：/app/data/mysql/ r,/var/lib/mysql/** rwk,改为：/app/data/mysql/** rwk,</em></span></div>
<div><span style="line-height: 22px"><em>2.修改abstractions/mysql中一行：/var/lib/mysql/mysql.sock rw,改为：/app/data/mysql/mysql.sock rw,</em></span></div>
<div><span style="line-height: 22px"><em>3.重新加载apparmor服务：/etc/init.d/apparmor reload</em></span></div>
<p style="line-height: 26px; background-color: #ffffff; font-family: Arial; color: #333333"></p>
<h4>安装 Nginx</h4>
<p style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体">在安装 Nginx 之前，如果你已经安装 Apache2 先删除在安装 nginx：</p>
<p style="text-align: justify; line-height: 22px; background-color: #fafafc; font-style: italic; font-family: tahoma, 宋体">service apache2 stop<br />
update-rc.d -f apache2 remove<br />
<span style="line-height: 21px; font-style: normal; font-family: verdana, 'courier new'">sudo&nbsp;</span>apt-get remove apache2</p>
sudo&nbsp;<span style="text-align: justify; line-height: 22px; background-color: #fafafc; font-style: italic; font-family: tahoma, 宋体">apt-get install nginx</span>
<h4 style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体">安装 PHP5</h4>
<p style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体">我们必须通过&nbsp;<a style="color: #003399" href="http://php-fpm.org/" target="_blank">PHP-FPM</a>&nbsp;才能让PHP5正常工作，安装命令：</p>
sudo&nbsp;<span style="text-align: justify; line-height: 22px; background-color: #fafafc; font-style: italic; font-family: tahoma, 宋体">apt-get install php5-fpm</span>
<p style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体">php-fpm是一个守护进程。<br />
<br />
安装mysql和GD扩展</p>
<div>sudo apt-get install php5-gd libapache2-mod-auth-mysql php5-mysql openssl&nbsp;<span style="line-height: 17px; background-color: #ffffff; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; white-space: pre; font-size: 16px">libssl-dev<br />
</span></div>
<p style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体"><span style="text-align: left; line-height: 26px; background-color: #ffffff; font-family: Arial">sudo apt-get install curl libcurl3 libcurl3-dev php5-curl</span><br />
</p>
<h4 style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体">安装 JDK8<br />
<p style="text-align: left; padding-bottom: 0px; line-height: 2em; background-color: #ffffff; margin: 8px 0px; padding-left: 0px; padding-right: 0px; font-family: 'Open Sans', sans-serif; word-wrap: break-word; letter-spacing: 0px; color: #373737; word-break: break-all; font-weight: normal; padding-top: 0px; font-stretch: normal">可以通过访问Oracle官网下载，或者直接通过命令行下载。</p>
<pre style="border-bottom: #dddddd 1px solid; text-align: left; border-left: #dddddd 1px solid; padding-bottom: 5px; line-height: 18px; margin-top: 0px; padding-left: 5px; padding-right: 5px; font-family: 'Courier New', Arial; margin-bottom: 0px;background: #f6f6f6; color: #333333; font-size: 9pt; border-top: #dddddd 1px solid; font-weight: normal; border-right: #dddddd 1px solid; padding-top: 5px">lxh@ubuntu:~$&nbsp;wget&nbsp;-c&nbsp;http://download.oracle.com/otn-pub/java/jdk/8u11-b12/<span style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体; font-size: 14px">jdk-8u25-linux-x64.tar.gz</span></pre>
</h4>
<h1 style="padding-bottom: 0px; line-height: 43px; background-color: #ffffff; margin: 20px 0px 10px; padding-left: 0px; padding-right: 0px; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; color: #333333; font-size: 24px; padding-top: 0px">解压安装</h1>
<pre style="border-bottom: #dddddd 1px solid; border-left: #dddddd 1px solid; padding-bottom: 5px; line-height: 18px; margin-top: 0px; padding-left: 5px; padding-right: 5px; font-family: 'Courier New', Arial; margin-bottom: 0px;background: #f6f6f6; color: #333333; font-size: 9pt; border-top: #dddddd 1px solid; border-right: #dddddd 1px solid; padding-top: 5px">lxh@ubuntu:~$&nbsp;mkdir&nbsp;-p&nbsp;/usr/lib/jvm <br />
lxh@ubuntu:~$&nbsp;sudo&nbsp;mv&nbsp;<span style="font-size: 9pt">jdk-8u25-linux-x64.tar.gz</span><span style="font-size: 9pt">&nbsp;/usr/lib/jvm </span><br />
lxh@ubuntu:~$&nbsp;cd&nbsp;/usr/lib/jvm <br />
lxh@ubuntu:~$&nbsp;sudo&nbsp;tar&nbsp;xzvf&nbsp;<span style="font-size: 9pt">jdk-8u25-linux-x64.tar.gz</span><span style="font-size: 9pt"> </span><br />
</pre>
<h1 style="padding-bottom: 0px; line-height: 43px; background-color: #ffffff; margin: 20px 0px 10px; padding-left: 0px; padding-right: 0px; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; color: #333333; font-size: 24px; padding-top: 0px"></h1>
<p style="padding-bottom: 0px; line-height: 2em; background-color: #ffffff; margin: 8px 0px; padding-left: 0px; padding-right: 0px; font-family: 'Open Sans', sans-serif; word-wrap: break-word; letter-spacing: 0px; color: #373737; word-break: break-all; padding-top: 0px; font-stretch: normal">在系统中添加环境变量，主要是PATH、CLASSPATH和JAVA_HOME。</p>
<pre style="border-bottom: #dddddd 1px solid; border-left: #dddddd 1px solid; padding-bottom: 5px; line-height: 18px; margin-top: 0px; padding-left: 5px; padding-right: 5px; font-family: 'Courier New', Arial; margin-bottom: 0px;background: #f6f6f6; color: #333333; font-size: 9pt; border-top: #dddddd 1px solid; border-right: #dddddd 1px solid; padding-top: 5px">lxh@ubuntu:~$&nbsp;<span style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体; white-space: normal; font-size: 14px">sudo vim ~/.profile</span></pre>
<p style="padding-bottom: 0px; line-height: 2em; background-color: #ffffff; margin: 8px 0px; padding-left: 0px; padding-right: 0px; font-family: 'Open Sans', sans-serif; word-wrap: break-word; letter-spacing: 0px; color: #373737; word-break: break-all; padding-top: 0px; font-stretch: normal">在文件最后加入</p>
<pre style="border-bottom: #dddddd 1px solid; border-left: #dddddd 1px solid; padding-bottom: 5px; line-height: 18px; margin-top: 0px; padding-left: 5px; padding-right: 5px; font-family: 'Courier New', Arial; margin-bottom: 0px;background: #f6f6f6; color: #333333; font-size: 9pt; border-top: #dddddd 1px solid; border-right: #dddddd 1px solid; padding-top: 5px"><div>
<div>export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_25/</div>
export JRE_HOME=/usr/lib/jvm/jdk1.8.0_25/jre <br />
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH <br />
export PATH=$JAVA_HOME/bin:$PATH</div>
</pre>
<p style="padding-bottom: 0px; line-height: 2em; background-color: #ffffff; margin: 8px 0px; padding-left: 0px; padding-right: 0px; font-family: 'Open Sans', sans-serif; word-wrap: break-word; letter-spacing: 0px; color: #373737; word-break: break-all; padding-top: 0px; font-stretch: normal">保存退出，并通过命令使脚本生效：</p>
<pre style="border-bottom: #dddddd 1px solid; border-left: #dddddd 1px solid; padding-bottom: 5px; line-height: 18px; margin-top: 0px; padding-left: 5px; padding-right: 5px; font-family: 'Courier New', Arial; margin-bottom: 0px;background: #f6f6f6; color: #333333; font-size: 9pt; border-top: #dddddd 1px solid; border-right: #dddddd 1px solid; padding-top: 5px">lxh@ubuntu:~$&nbsp;<span style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体; white-space: normal; font-size: 14px">$source ~/.profile</span></pre>
<h1>配置默认JDK版本</h1>
<p style="padding-bottom: 0px; line-height: 2em; background-color: #ffffff; margin: 8px 0px; padding-left: 0px; padding-right: 0px; font-family: 'Open Sans', sans-serif; word-wrap: break-word; letter-spacing: 0px; color: #373737; word-break: break-all; padding-top: 0px; font-stretch: normal">在有的系统中会预装OpenJDK，系统默认使用的是这个，而不是刚才装的。所以这一步是通知系统使用Oracle的JDK，非OpenJDK。</p>
<pre style="border-bottom: #dddddd 1px solid; border-left: #dddddd 1px solid; padding-bottom: 5px; line-height: 18px; margin-top: 0px; padding-left: 5px; padding-right: 5px; font-family: 'Courier New', Arial; margin-bottom: 0px;background: #f6f6f6; color: #333333; font-size: 9pt; border-top: #dddddd 1px solid; border-right: #dddddd 1px solid; padding-top: 5px"><div>sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_25/bin/java 300 <br />
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_25/bin/javac 300 <br />
sudo update-alternatives --config java</div>
</pre>
<p style="padding-bottom: 0px; line-height: 2em; background-color: #ffffff; margin: 8px 0px; padding-left: 0px; padding-right: 0px; font-family: 'Open Sans', sans-serif; word-wrap: break-word; letter-spacing: 0px; color: #373737; word-break: break-all; padding-top: 0px; font-stretch: normal">因为我是在虚拟机中安装的Ubuntu 14.04，默认不安装OpenJDK，所以没有需要选择的JDK版本。如果是在物理机上安装的Ubuntu版本，会出现几个候选项，可用于替换 java (提供 /usr/bin/java)。</p>
<p style="text-align: justify; line-height: 22px; background-color: #fafafc; font-family: tahoma, 宋体">====================================<br />
</p>
<h1 style="border-bottom: #dddddd 1px solid; padding-bottom: 0px; background-color: #ffffff; margin: 20px 0px 10px; padding-left: 0px; padding-right: 0px; padding-top: 0px" class="postTitle"><font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 14px">编译安装nginx&nbsp;</span></font><br />
<font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 14px">1. 下载最新版nginx</span></font><br />
<font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 14px">2.解压</span></font><br />
<font face="Verdana, Arial, Helvetica, sans-serif"><span style="font-size: 14px">3. 安装</span></font><br />
<span style="padding-bottom: 0px; line-height: 1.5; margin: 0px; padding-left: 0px; padding-right: 0px; font-family: 'Courier New'; white-space: pre-wrap; font-size: 12px; font-weight: normal; padding-top: 0px">
<div><span style="font-size: 14px">$ ./configure &nbsp;#检查编译前置条件</span></div>
<div><span style="font-size: 14px">$ make &nbsp;#编译</span></div>
<div><span style="font-size: 14px">$ sudo make install &nbsp;#使用sudo权限进行安装</span></div>
<div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px"><span style="line-height: 35px; font-family: 'microsoft yahei'; white-space: normal; color: #555555; font-size: 15px">安装后路径在&nbsp;/usr/local/<br /></span><pre style="padding: 0px; margin-top: 0px; word-wrap: break-word; margin-bottom: 0px;"><strong>启动nginx <br /></strong>/usr/local/nginx/sbin/nginx</pre>
<span style="line-height: 35px; font-family: 'microsoft yahei'; white-space: normal; color: #555555; font-size: 15px">1)使用在 /etc/init.d/ 目录下创建名为 nginx 文件，注意没有后缀名，将以下内容复制到该文件中（感谢提供脚本的兄弟）。</span></div>
</span>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080">&nbsp;1</span><span style="font-weight: normal;">&nbsp;#!&nbsp;/bin/sh<br />
<span style="color: #008080">&nbsp;2</span>&nbsp;#用来将Nginx注册为系统服务的脚本<br />
<span style="color: #008080">&nbsp;3</span>&nbsp;#Author&nbsp;CplusHua<br />
<span style="color: #008080">&nbsp;4</span>&nbsp;#http://www.219.me<br />
<span style="color: #008080">&nbsp;5</span>&nbsp;#chkconfig:&nbsp;-&nbsp;85&nbsp;15<br />
<span style="color: #008080">&nbsp;6</span>&nbsp;set&nbsp;-e<br />
<span style="color: #008080">&nbsp;7</span>&nbsp;PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin<br />
<span style="color: #008080">&nbsp;8</span>&nbsp;DESC="Nginx&nbsp;Daemon"<br />
<span style="color: #008080">&nbsp;9</span>&nbsp;NAME=nginx<br />
<span style="color: #008080">10</span>&nbsp;DAEMON=/usr/local/nginx/sbin/$NAME<br />
<span style="color: #008080">11</span>&nbsp;SCRIPTNAME=/etc/init.d/$NAME<br />
<span style="color: #008080">12</span>&nbsp;#守护进程不存在就退出<br />
<span style="color: #008080">13</span>&nbsp;test&nbsp;-x&nbsp;$DAEMON&nbsp;||exit&nbsp;0<br />
<span style="color: #008080">14</span>&nbsp;d_start(){<br />
<span style="color: #008080">15</span>&nbsp;&nbsp;&nbsp;$DAEMON&nbsp;||echo&nbsp;-n&nbsp;"aready&nbsp;running"<br />
<span style="color: #008080">16</span>&nbsp;}<br />
<span style="color: #008080">17</span>&nbsp;d_stop(){<br />
<span style="color: #008080">18</span>&nbsp;&nbsp;&nbsp;$DAEMON&nbsp;-s&nbsp;quit&nbsp;||&nbsp;echo&nbsp;-n&nbsp;"not&nbsp;running"<br />
<span style="color: #008080">19</span>&nbsp;}<br />
<span style="color: #008080">20</span>&nbsp;d_reload(){<br />
<span style="color: #008080">21</span>&nbsp;&nbsp;&nbsp;$DAEMON&nbsp;-s&nbsp;reload&nbsp;||&nbsp;echo&nbsp;-n&nbsp;"could&nbsp;not&nbsp;reload"<br />
<span style="color: #008080">22</span>&nbsp;}<br />
<span style="color: #008080">23</span>&nbsp;case&nbsp;"$1"&nbsp;in<br />
<span style="color: #008080">24</span>&nbsp;&nbsp;&nbsp;start)<br />
<span style="color: #008080">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;-n&nbsp;"Starting&nbsp;$DESC:&nbsp;$NAME"<br />
<span style="color: #008080">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d_start<br />
<span style="color: #008080">27</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"."<br />
<span style="color: #008080">28</span>&nbsp;&nbsp;&nbsp;;;<br />
<span style="color: #008080">29</span>&nbsp;&nbsp;&nbsp;stop)<br />
<span style="color: #008080">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;-n&nbsp;"Stopping&nbsp;$DESC:&nbsp;$NAME"<br />
<span style="color: #008080">31</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d_stop<br />
<span style="color: #008080">32</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"."<br />
<span style="color: #008080">33</span>&nbsp;&nbsp;&nbsp;;;<br />
<span style="color: #008080">34</span>&nbsp;&nbsp;&nbsp;reload)<br />
<span style="color: #008080">35</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;-n&nbsp;"Reloading&nbsp;$DESC:&nbsp;configurationg<img alt="" src="http://www.blogjava.net/Images/dot.gif" />.."<br />
<span style="color: #008080">36</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d_reload<br />
<span style="color: #008080">37</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"reloaded."<br />
<span style="color: #008080">38</span>&nbsp;&nbsp;&nbsp;;;<br />
<span style="color: #008080">39</span>&nbsp;&nbsp;&nbsp;restart)<br />
<span style="color: #008080">40</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;-n&nbsp;"Restarting&nbsp;$DESC:&nbsp;$NAME"<br />
<span style="color: #008080">41</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d_stop<br />
<span style="color: #008080">42</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep&nbsp;3<br />
<span style="color: #008080">43</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d_start<br />
<span style="color: #008080">44</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"."<br />
<span style="color: #008080">45</span>&nbsp;&nbsp;&nbsp;;;<br />
<span style="color: #008080">46</span>&nbsp;&nbsp;&nbsp;*)<br />
<span style="color: #008080">47</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;"Usage:&nbsp;$SCRIPTNAME&nbsp;{start|stop|restart|reload}"&nbsp;&gt;<span style="color: #ff0000">&amp;2</span><br />
<span style="color: #008080">48</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;3<br />
<span style="color: #008080">49</span>&nbsp;&nbsp;&nbsp;;;<br />
<span style="color: #008080">50</span>&nbsp;esac<br />
<span style="color: #008080">51</span>&nbsp;<br />
<span style="color: #008080">52</span>&nbsp;exit&nbsp;0</span></div>
</h1><div style="margin: 5px 0px;"><pre style="padding: 0px; margin-top: 0px; word-wrap: break-word; margin-bottom: 0px;"><br /> <strong><br /></strong>2)添加权限 <br />&nbsp;&nbsp;&nbsp;&nbsp;$ sudo chmod +x nginx  <br />3)服务方式启动 如果配置服务前已启动，执行以下命令停止Nginx。 <br />&nbsp;&nbsp;&nbsp;&nbsp;$ sudo service nginx stop <br />4)启动Nginx <br />&nbsp;&nbsp;&nbsp;&nbsp;$ sudo service nginx start    <br /><br />pastingnginx出现connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied)的错误 <br /><br />处理方式是：编辑/etc/php5/fpm/pool.d/www.conf文件，<br /><br />将以下的注释去掉:  <br />&nbsp;&nbsp;&nbsp;&nbsp;listen.owner = www-data   <br />&nbsp;&nbsp;&nbsp;&nbsp;listen.group = www-data   <br />&nbsp;&nbsp;&nbsp;&nbsp;listen.mode = 0660  <br /><br />然后重启php5-fpm  <br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family: verdana, 'courier new';">$ </span>sudo service php5-fpm restart  <br /><strong><br /><br />Ubuntu 14.04快速搭建SVN服务器及日常使用 </strong><br />SVN相关命令了解<br />    svn：命令行客户端   <br />&nbsp;&nbsp;&nbsp;&nbsp;svnadmin：用来创建、调整或修复版本库的工具   <br />&nbsp;&nbsp;&nbsp;&nbsp;svnserve：svn服务程序   <br />&nbsp;&nbsp;&nbsp;&nbsp;svndumpfilter：过滤svn版本库转储数据流的工具   <br />&nbsp;&nbsp;&nbsp;&nbsp;svnsync：svn数据同步工具，实现另外存一份相同的   <br />&nbsp;&nbsp;&nbsp;&nbsp;svnlook：用来查看办本科中不同的修订版和事务   <br /><br /><strong>直接安装</strong>   <br />&nbsp;&nbsp;&nbsp;&nbsp;# apt-get install subversion   <br /><strong>创建版本库</strong>   <br />&nbsp;&nbsp;&nbsp;&nbsp;# sudo mkdir /app/svn     <br />&nbsp;&nbsp;&nbsp;&nbsp;# sudo svnadmin create /app/svn/prj <br /><br /></pre></div>
<p style="line-height: 26px; background-color: #ffffff; font-family: Arial; color: #333333"></p>
<p style="text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #fafafc;"><strong>配置版本库</strong><br />
&nbsp; # sudo vi svnserve.conf&nbsp; #将以下参数去掉注释<span class="Apple-converted-space" style="font-weight: normal;">&nbsp;</span><br />
&nbsp; [general]<span class="Apple-converted-space" style="font-weight: normal;">&nbsp;</span><br />
&nbsp; anon-access = none&nbsp; &nbsp; #匿名访问权限，默认read，none为不允许访问<span class="Apple-converted-space" style="font-weight: normal;">&nbsp;</span><br />
&nbsp; auth-access = write&nbsp; #认证用户权限&nbsp;<span class="Apple-converted-space" style="font-weight: normal;">&nbsp;</span><br />
&nbsp; password-db = passwd&nbsp; #用户信息存放文件，默认在版本库/conf下面，也可以绝对路径指定文件位置<span class="Apple-converted-space" style="font-weight: normal;">&nbsp;</span><br />
&nbsp; authz-db = authz<br /><br /></p>
<p style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; # sudo vi passwd&nbsp; &nbsp; #格式是用户名=密码，采用明文密码<span class="Apple-converted-space">&nbsp;</span><br />
&nbsp; [users]<span class="Apple-converted-space">&nbsp;</span><br />
&nbsp; xiaoming = 123<span class="Apple-converted-space">&nbsp;</span><br />
&nbsp; zhangsan = 123<span class="Apple-converted-space">&nbsp;</span><br />
&nbsp;&nbsp; lisi = 123<br />
<br />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px"># sudo vi authz&nbsp;<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; [groups]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #定义组的用户<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; manager = xiaoming<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; core_dev = zhangsan,lisi<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; [repos:/]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #以根目录起始的repos版本库manager组为读写权限<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; @manager = rw<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; [repos:/media]&nbsp; &nbsp; #core_dev对repos版本库下media目录为读写权限<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; @core_dev = rw</span></p>
<p style="line-height: 26px; background-color: #ffffff; font-family: Arial; color: #333333"></p>
<span style="text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; background-color: #fafafc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /><strong>
&nbsp;启动svn服务</strong></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; # sudo svnserve -d -r /app/svn</span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; # 查看是否启动成功，可看的监听3690端口</span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; # sudo netstat -antp |grep svnserve</span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; display: inline !important; font: 14px/22px tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px">&nbsp; tcp&nbsp; &nbsp; 0&nbsp; &nbsp; &nbsp; 0 0.0.0.0:3690&nbsp; &nbsp; 0.0.0.0:*&nbsp; &nbsp; &nbsp; LISTEN&nbsp; &nbsp; 28967/svnserve<span class="Apple-converted-space">&nbsp;</span></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; background-color: #fafafc;">&nbsp; # 如果想关闭服务，可使用pkill svnserve<br />
<br />
<span style="text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; background-color: #fafafc;"><strong>访问svn</strong></span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="font-weight: normal; text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; background-color: #fafafc;">&nbsp; # 访问repos版本库地址</span><br style="text-align: justify; text-transform: none; background-color: #fafafc; text-indent: 0px; font: 14px/22px tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px" />
<span style="text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; float: none; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; background-color: #fafafc;">&nbsp; svn://192.168.1.100/prj<br />
<br />
<br />
<p style="text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #fafafc;"><strong>备份与恢复</strong><br />
&nbsp;&nbsp; svnadmin dump备份<br />
&nbsp; # 完整备份<br />
&nbsp; svnadmin dump /app/svn/prj &gt; YYmmdd_fully_backup.svn<br />
&nbsp; # 完整压缩备份<br />
&nbsp; svnadmin dump /app/svn/prj | gzip &gt; YYmmdd_fully_backup.gz<br />
&nbsp; # 备份恢复<br />
&nbsp; svnadmin load /app/svn/prj &lt; YYmmdd_fully_backup.svn<br />
&nbsp; zcat YYmmdd_fully_backup.gz | svnadmin load repos<br />
&nbsp; ### 增量备份 ###<br />
&nbsp; # 先完整备份<br />
&nbsp; svnadmin dump /app/svn/prj -r 0:100 &gt; YYmmdd_incremental_backup.svn<br />
&nbsp; # 再增量备份<br />
&nbsp; svnadmin dump /app/svn/prj -r 101:200 --incremental &gt; YYmmdd_incremental_backup.svn<br />
&nbsp;&nbsp;<br /><strong>
svnadmin hotcopy备份</strong></p>
<p style="font-weight: normal; text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #fafafc;">&nbsp; # 备份<br />
&nbsp; svnadmin hotcopy /app/svn/prj YYmmdd_fully_backup --clean-logs<br />
&nbsp; # 恢复<br />
&nbsp; svnadmin hotcopy YYmmdd_fully_backup /app/svn/prj <br />
<br />
<br />
Tomcat　内存优化<br />
<br />
</p>
<p style="font-weight: normal; text-align: left; padding: 0px; text-transform: none; text-indent: 0px; margin: 8px 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 13px; line-height: 23px; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; word-wrap: break-word; white-space: normal; letter-spacing: 0px; color: #333333; word-break: break-all; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">Linux下修改JVM内存大小</p>
<p style="font-weight: normal; text-align: left; padding: 0px; text-transform: none; text-indent: 0px; margin: 8px 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 13px; line-height: 23px; font-family: 'Microsoft YaHei', Verdana, sans-serif, 宋体; word-wrap: break-word; white-space: normal; letter-spacing: 0px; color: #333333; word-break: break-all; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">要添加在tomcat 的bin 下catalina.sh 里，位置cygwin=false前 。注意引号要带上,红色的为新添加的.</p>
<pre style="font-weight: normal; border: 1px solid #dddddd; text-align: left; padding: 5px; text-transform: none; text-indent: 0px; margin: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 9pt; line-height: 18px; font-family: 'Courier New', Arial; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #f6f6f6;"># OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="<font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" color="#ff0000">-</font><font style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" color="#ff0000">server -Xms512M -Xmx512M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=64M -XX:MaxPermSize=128m</font>"
cygwin=false</pre>
<p style="font-weight: normal; text-align: justify; text-transform: none; text-indent: 0px; font-style: normal; font-variant: normal; font-stretch: normal; font-size: 14px; line-height: 22px; font-family: tahoma, 宋体; white-space: normal; letter-spacing: normal; color: #333333; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #fafafc;">&nbsp;</p>
</span><br />
</span><img src ="http://www.blogjava.net/Alpha/aggbug/427653.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2015-10-07 15:28 <a href="http://www.blogjava.net/Alpha/archive/2015/10/07/427653.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp页面中，JSTL El表达式字符串比较常用方法</title><link>http://www.blogjava.net/Alpha/archive/2014/08/05/416592.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 05 Aug 2014 07:24:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2014/08/05/416592.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/416592.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2014/08/05/416592.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/416592.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/416592.html</trackback:ping><description><![CDATA[<a href="https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=dmb0rzcj&amp;amp;utm_source=dmb0rzcj" target="_blank"><img src="http://www.blogjava.net/images/blogjava_net/alpha/760-130.jpg" alt="阿里云服务器优惠券" /></a>
<p style="margin: 0px; padding: 0px; list-style-type: none; color: #333333; font-family: Verdana, Arial, Tahoma; line-height: 25px; background-color: #ffffff;">fn:contains 判断字符串是否包含另外一个字符串 &lt;c:if test="${fn:contains(name, searchString)}"&gt;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:containsIgnoreCase 判断字符串是否包含另外一个字符串(大小写无关) &lt;c:if test="${fn:containsIgnoreCase(name, searchString)}"&gt;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:endsWith 判断字符串是否以另外字符串结束 &lt;c:if test="${fn:endsWith(filename, ".txt")}"&gt;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:escapeXml 把一些字符转成XML表示，例如 &lt;字符应该转为&lt; ${fn:escapeXml(param:info)}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:indexOf 子字符串在母字符串中出现的位置 ${fn:indexOf(name, "-")}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:join 将数组中的数据联合成一个新字符串，并使用指定字符格开 ${fn:join(array, ";")}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:length 获取字符串的长度，或者数组的大小 ${fn:length(shoppingCart.products)}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:replace 替换字符串中指定的字符 ${fn:replace(text, "-", "?")}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:split 把字符串按照指定字符切分 ${fn:split(customerNames, ";")}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:startsWith 判断字符串是否以某个子串开始 &lt;c:if test="${fn:startsWith(product.id, "100-")}"&gt;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:substring 获取子串 ${fn:substring(zip, 6, -1)}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:substringAfter 获取从某个字符所在位置开始的子串 &nbsp;${fn:substringAfter(zip, "-")}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:substringBefore 获取从开始到某个字符所在位置的子串 ${fn:substringBefore(zip, "-")}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:toLowerCase 转为小写 ${fn.toLowerCase(product.name)}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:toUpperCase 转为大写字符 ${fn.UpperCase(product.name)}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:trim 去除字符串前后的空格 ${fn.trim(name)}<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
函数&nbsp;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
描述<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:contains(string, substring)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
如果参数string中包含参数substring，返回true<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:containsIgnoreCase(string, substring)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
如果参数string中包含参数substring（忽略大小写），返回true<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:endsWith(string, suffix)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
如果参数 string 以参数suffix结尾，返回true<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:escapeXml(string)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
将有特殊意义的XML (和HTML)转换为对应的XML character entity code，并返回<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:indexOf(string, substring)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
返回参数substring在参数string中第一次出现的位置<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:join(array, separator)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
将一个给定的数组array用给定的间隔符separator串在一起，组成一个新的字符串并返回。<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:length(item)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:replace(string, before, after)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方，并返回替换后的结果&nbsp;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:split(string, separator)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
返回一个数组，以参数separator 为分割符分割参数string，分割后的每一部分就是数组的一个元素<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:startsWith(string, prefix)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
如果参数string以参数prefix开头，返回true<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:substring(string, begin, end)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
返回参数string部分字符串, 从参数begin开始到参数end位置，包括end位置的字符<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:substringAfter(string, substring)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
返回参数substring在参数string中后面的那一部分字符串??&nbsp;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:substringBefore(string, substring)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
返回参数substring在参数string中前面的那一部分字符串<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:toLowerCase(string)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
将参数string所有的字符变为小写，并将其返回<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:toUpperCase(string)<br style="margin: 0px; padding: 0px; list-style-type: none;" />
将参数string所有的字符变为大写，并将其返回<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:trim(string)</p>
<p style="margin: 0px; padding: 0px; list-style-type: none; color: #333333; font-family: Verdana, Arial, Tahoma; line-height: 25px; background-color: #ffffff;"><br />
</p>
<p style="margin: 0px; padding: 0px; list-style-type: none; color: #333333; font-family: Verdana, Arial, Tahoma; line-height: 25px; background-color: #ffffff;">在jsp中 使用EL表达式时，不可以使用java提供的功能，比如indexOf()等。<br style="margin: 0px; padding: 0px; list-style-type: none;" />
&lt;c:if test="${Boolean.valueOf(requestScope.addresult)==false}"&gt;&nbsp;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
<br style="margin: 0px; padding: 0px; list-style-type: none;" />
报错&nbsp;<br style="margin: 0px; padding: 0px; list-style-type: none;" />
The function valueOf must be used with a prefix when a default namespace is not specified<br />
<br />
</p>
<a href="https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=dmb0rzcj&amp;amp;utm_source=dmb0rzcj" target="_blank"><img src="http://www.blogjava.net/images/blogjava_net/alpha/760-130.jpg" alt="阿里云服务器优惠券" /></a><img src ="http://www.blogjava.net/Alpha/aggbug/416592.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2014-08-05 15:24 <a href="http://www.blogjava.net/Alpha/archive/2014/08/05/416592.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lighttpd配置之代理、负载均衡(mod_proxy)</title><link>http://www.blogjava.net/Alpha/archive/2011/06/22/352846.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 22 Jun 2011 15:20:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2011/06/22/352846.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/352846.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2011/06/22/352846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/352846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/352846.html</trackback:ping><description><![CDATA[<p>使用proxy可以使lighttpd成为一个代理服务器。例如将java的请求全都转向给jboss来处理<br />mod_proxy有三个标签：<br />proxy.debug，0或者1. 表示是否启动调试模式。 1表示启动<br />proxy.balance，使用负载均衡的模式。可以使&#8220;hash&#8221;，&#8220;round-robin&#8221;,&#8221;fair&#8221;三种模式之一。<br />&#8217;round-robin&#8217; 交替轮训, &#8216;hash&#8217; 根据请求的url产生一个 hash值，来确保同样的请求的url都访问同样的主机<br />&#8216;fair&#8217; is the normal load-based, passive balancing.</p>
<p>语法结构</p>
<div class="dean_ch">&nbsp;<span class="br0"><font color="#66cc66">(</font></span> &lt;extension&gt; =&gt; <br />&nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="br0"><font color="#66cc66">[</font></span> &lt;name&gt; =&gt; <font color="#66cc66"><span class="br0">]</span><br /></font>&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; &lt;string&gt; ,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0"><font color="#ff0000">"port"</font></span> =&gt; &lt;integer&gt; <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; &lt;string&gt; ,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0"><font color="#ff0000">"port"</font></span> =&gt; &lt;integer&gt; <font color="#66cc66"><span class="br0">)</span><br /></font>&nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &lt;extension&gt; =&gt; &#8230; <br />&nbsp; &nbsp; <font color="#66cc66"><span class="br0">)</span><br /></font>&nbsp;</div>
<p>* <extension>: 表示请求url的文件扩展名或者文件前缀 (如果以&#8221;/&#8221;开始); 可以是空 (&#8220;&#8221;) 表示所有的请求<br />* <name>: 可选名称<br />* &#8220;host&#8221;: 被代理的服务器的ip<br />* &#8220;port&#8221;: 被代理服务器的端口，默认是80</p>
<p>如：</p>
<div class="dean_ch">proxy.server = <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">".jsp"</font></span> =&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0"><font color="#66cc66">(</font></span> <span class="br0"><font color="#66cc66">(</font></span> <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.242"</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0"><font color="#ff0000">"port"</font></span> =&gt; <font color="#ff33ff"><span class="nu0">8080</span><br /></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0"><font color="#66cc66">)</font></span> <font color="#66cc66"><span class="br0">)</span><br /></font>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<font color="#66cc66"><span class="br0">)</span><br /></font>&nbsp;</div>
<p>再如：</p>
<div class="dean_ch"><span class="re1">$HTTP</span><span class="br0"><font color="#66cc66">[</font></span><span class="st0"><font color="#ff0000">"host"</font></span><span class="br0"><font color="#66cc66">]</font></span> == <span class="st0"><font color="#ff0000">"www.domain.me"</font></span> <font color="#66cc66"><span class="br0">{</span><br /></font>&nbsp; &nbsp; &nbsp; &nbsp; proxy.server &nbsp;= <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">""</font></span> =&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="br0"><font color="#66cc66">(</font></span> <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"127.0.0.1"</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0"><font color="#ff0000">"port"</font></span>=&gt;<span class="st0"><font color="#ff0000">"8080"</font></span> &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">)</font></span> <span class="br0"><font color="#66cc66">)</font></span> <br />&nbsp; &nbsp; &nbsp; &nbsp; <font color="#66cc66"><span class="br0">)</span><br /><span class="br0">}</span><br /></font>&nbsp;</div>
<p>负载均衡的例子，例如有8个squid缓存，需要用lighttpd做负载均衡</p>
<div class="dean_ch">&nbsp; <span class="re1">$HTTP</span><span class="br0"><font color="#66cc66">[</font></span><span class="st0"><font color="#ff0000">"host"</font></span><span class="br0"><font color="#66cc66">]</font></span> == <span class="st0"><font color="#ff0000">"www.example.org"</font></span> <font color="#66cc66"><span class="br0">{</span><br /></font>&nbsp; &nbsp; proxy.balance = <span class="st0"><font color="#ff0000">"hash"</font></span> <br />&nbsp; &nbsp; proxy.server &nbsp;= <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">""</font></span> =&gt; <span class="br0"><font color="#66cc66">(</font></span> <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.10"</font></span> <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.11"</font></span> <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.12"</font></span> <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.13"</font></span> <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.14"</font></span> <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.15"</font></span> <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.16"</font></span> <span class="br0"><font color="#66cc66">)</font></span>,<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0"><font color="#66cc66">(</font></span> <span class="st0"><font color="#ff0000">"host"</font></span> =&gt; <span class="st0"><font color="#ff0000">"10.0.0.17"</font></span> <span class="br0"><font color="#66cc66">)</font></span> <span class="br0"><font color="#66cc66">)</font></span> <font color="#66cc66"><span class="br0">)</span><br /></font>&nbsp; <font color="#66cc66"><span class="br0">}</span><br /></font>&nbsp;</div>
<p>当一个服务器宕机后，它上面的请求将被转移给其他设备server</p><img src ="http://www.blogjava.net/Alpha/aggbug/352846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2011-06-22 23:20 <a href="http://www.blogjava.net/Alpha/archive/2011/06/22/352846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux+nginx+tomcat负载均衡，实现session同步</title><link>http://www.blogjava.net/Alpha/archive/2011/06/21/352745.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 21 Jun 2011 07:38:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2011/06/21/352745.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/352745.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2011/06/21/352745.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/352745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/352745.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 花了一个上午的时间研究nginx+tomcat的负载均衡测试，集群环境搭建比较顺利，但是session同步的问题折腾了几个小时才搞定，现把我的过程贴上来，以备用。软件及环境是：虚拟机上装centos 5.5IP为：192.168.0.51 装上nginx和tomcat &nbsp;6.0.32 命名为 Tomcat1一台win7上装tomcat &nbsp;6.0.32&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2011/06/21/352745.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/352745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2011-06-21 15:38 <a href="http://www.blogjava.net/Alpha/archive/2011/06/21/352745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CLASSPATH</title><link>http://www.blogjava.net/Alpha/archive/2011/05/09/349848.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Mon, 09 May 2011 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2011/05/09/349848.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/349848.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2011/05/09/349848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/349848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/349848.html</trackback:ping><description><![CDATA[CATALINA_BASE&nbsp;D:\tomcat<br />
CATALINA_HOME&nbsp;D:\tomcat<br />
CLASSPATH&nbsp;.;D:\Java\jdk1.6.0_24\lib;D:\Java\jdk1.6.0_24\lib\dt.jar;D:\Java\jdk1.6.0_24\lib\tools.jar;D:\tomcat\lib\servlet-api.jar<br />
JAVA_HOME&nbsp;D:\Java\jdk1.6.0_24<br />
Path&nbsp;;D:\Java\jdk1.6.0_24\bin<br />
TOMCAT_HOME&nbsp;D:\tomcat<br /><img src ="http://www.blogjava.net/Alpha/aggbug/349848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2011-05-09 16:29 <a href="http://www.blogjava.net/Alpha/archive/2011/05/09/349848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何选择开源许可证？</title><link>http://www.blogjava.net/Alpha/archive/2011/05/03/349407.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 03 May 2011 01:05:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2011/05/03/349407.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/349407.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2011/05/03/349407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/349407.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/349407.html</trackback:ping><description><![CDATA[<div class="asset-body">
<p>如何为代码选择开源许可证，这是一个问题。</p>
</div>
<div id="more" class="asset-more">
<p>世界上的开源许可证，大概有<a href="http://www.gnu.org/licenses/license-list.html" target="_blank">上百种</a>。很少有人搞得清楚它们的区别。即使在最流行的六种----<a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GPL</a>、<a href="http://en.wikipedia.org/wiki/BSD_licenses" target="_blank">BSD</a>、<a href="http://en.wikipedia.org/wiki/MIT_License" target="_blank">MIT</a>、<a href="http://www.mozilla.org/MPL/" target="_blank">Mozilla</a>、<a href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank">Apache</a>和<a href="http://www.gnu.org/copyleft/lesser.html" target="_blank">LGPL</a>----之中做选择，也很复杂。</p>
<p>乌克兰程序员<a href="http://pbagwl.com/post/5078147450/description-of-popular-software-licenses" target="_blank">Paul Bagwell</a>，画了一张分析图，说明应该怎么选择。这是我见过的最简单的讲解，只用两分钟，你就能搞清楚这六种许可证之间的最大区别。</p>
<p>下面是我制作的中文版，请点击看大图。</p>
<p><a href="http://image.beekka.com/blog/201105/free_software_licenses.png" target="_blank"><img alt="" src="http://static.oschina.net/uploads/img/201105/02214312_HMXD.png" /></a><br />
</p>
</div><img src ="http://www.blogjava.net/Alpha/aggbug/349407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2011-05-03 09:05 <a href="http://www.blogjava.net/Alpha/archive/2011/05/03/349407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>utf-8项目生成javadoc 编码GBK 的不可映射字符</title><link>http://www.blogjava.net/Alpha/archive/2011/04/26/349024.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 26 Apr 2011 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2011/04/26/349024.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/349024.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2011/04/26/349024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/349024.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/349024.html</trackback:ping><description><![CDATA[<br />
<br />
<br />
完善api-doc，用eclipse生成javadoc的时候发生&#8220;编码 GBK 的不可映射字符 &#8221;其实是字符编码问题。 <br />
打开eclipse，project -&gt; Generate javadoc 一项一项的选你要输出javadoc的项目，最后一步中VM设置行中加入以下代码 <br />
-encoding utf-8 -charset utf-8&nbsp; <br />
-encoding utf-8 -charset utf-8 -J-Xmx256m<br />
这次操作，输出的html代码不会发生&#8220;编码 GBK 的不可映射字符 &#8221;问题，而且html字符编码都设为了UTF-8，问题彻底解决<img src ="http://www.blogjava.net/Alpha/aggbug/349024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2011-04-26 11:15 <a href="http://www.blogjava.net/Alpha/archive/2011/04/26/349024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BeanUtils &amp; PropertyUtils &amp; MethodUtils类使用方法</title><link>http://www.blogjava.net/Alpha/archive/2010/05/10/320475.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Mon, 10 May 2010 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2010/05/10/320475.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/320475.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2010/05/10/320475.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/320475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/320475.html</trackback:ping><description><![CDATA[<p>一、简介： <br />
<br />
BeanUtils提供对 Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道，一个JavaBean通常包含了大量的属性，很多情况下，对JavaBean的处理导致大量get/set代码堆积，增加了代码长度和阅读代码的难度。 <br />
<br />
二、用法： <br />
<br />
BeanUtils是这个包里比较常用的一个工具类，这里只介绍它的copyProperties()方法。该方法定义如下： <br />
</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://gundumw100.javaeye.com/blog/611921#"><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;copyProperties(java.lang.Object&nbsp;dest,java.lang.Object&nbsp;orig) &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">throws</span><span>&nbsp;java.lang.IllegalAccessException, &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.lang.reflect.InvocationTargetException&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">  public static void copyProperties(java.lang.Object dest,java.lang.Object orig)
throws java.lang.IllegalAccessException,
java.lang.reflect.InvocationTargetException
</pre>
<p><br />
如果你有两个具有很多相同属性的JavaBean，一个很常见的情况就是Struts里的PO对象（持久对象）和对应的ActionForm，例如 Teacher和TeacherForm。我们一般会在Action里从ActionForm构造一个PO对象，传统的方式是使用类似下面的语句对属性逐个赋值： <br />
</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://gundumw100.javaeye.com/blog/611921#"><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="comment">//得到TeacherForm </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>TeacherForm&nbsp;teacherForm=(TeacherForm)form; &nbsp;&nbsp;</span></li>
    <li><span class="comment">//构造Teacher对象 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>Teacher&nbsp;teacher=</span><span class="keyword">new</span><span>&nbsp;Teacher(); &nbsp;&nbsp;</span></span></li>
    <li><span class="comment">//赋值 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>teacher.setName(teacherForm.getName()); &nbsp;&nbsp;</span></li>
    <li><span>teacher.setAge(teacherForm.getAge()); &nbsp;&nbsp;</span></li>
    <li><span>teacher.setGender(teacherForm.getGender()); &nbsp;&nbsp;</span></li>
    <li><span>teacher.setMajor(teacherForm.getMajor()); &nbsp;&nbsp;</span></li>
    <li><span>teacher.setDepartment(teacherForm.getDepartment()); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="comment">//持久化Teacher对象到数据库 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>HibernateDAO=; &nbsp;&nbsp;</span></li>
    <li><span>HibernateDAO.save(teacher); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>而使用BeanUtils后，代码就大大改观了，如下所示： &nbsp;&nbsp;</span></li>
    <li><span class="comment">//得到TeacherForm </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>TeacherForm&nbsp;teacherForm=(TeacherForm)form; &nbsp;&nbsp;</span></li>
    <li><span class="comment">//构造Teacher对象 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>Teacher&nbsp;teacher=</span><span class="keyword">new</span><span>&nbsp;Teacher(); &nbsp;&nbsp;</span></span></li>
    <li><span class="comment">//赋值 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>BeanUtils.copyProperties(teacher,teacherForm); &nbsp;&nbsp;</span></li>
    <li><span class="comment">//持久化Teacher对象到数据库 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>HibernateDAO=; &nbsp;&nbsp;</span></li>
    <li><span>HibernateDAO.save(teacher);&nbsp;&nbsp;</span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">//得到TeacherForm
TeacherForm teacherForm=(TeacherForm)form;
//构造Teacher对象
Teacher teacher=new Teacher();
//赋值
teacher.setName(teacherForm.getName());
teacher.setAge(teacherForm.getAge());
teacher.setGender(teacherForm.getGender());
teacher.setMajor(teacherForm.getMajor());
teacher.setDepartment(teacherForm.getDepartment());
//持久化Teacher对象到数据库
HibernateDAO=;
HibernateDAO.save(teacher);
而使用BeanUtils后，代码就大大改观了，如下所示：
//得到TeacherForm
TeacherForm teacherForm=(TeacherForm)form;
//构造Teacher对象
Teacher teacher=new Teacher();
//赋值
BeanUtils.copyProperties(teacher,teacherForm);
//持久化Teacher对象到数据库
HibernateDAO=;
HibernateDAO.save(teacher);
</pre>
<p><br />
如果Teacher和TeacherForm间存在名称不相同的属性，则BeanUtils不对这些属性进行处理，需要程序员手动处理。例如 Teacher包含modifyDate（该属性记录最后修改日期，不需要用户在界面中输入）属性而TeacherForm无此属性，那么在上面代码的 copyProperties()后还要加上一句： <br />
</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://gundumw100.javaeye.com/blog/611921#"><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span>teacher.setModifyDate(</span><span class="keyword">new</span><span>&nbsp;Date());&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">teacher.setModifyDate(new Date());
</pre>
<p><br />
怎么样，很方便吧！除BeanUtils外还有一个名为PropertyUtils的工具类，它也提供copyProperties()方法，作用与 BeanUtils的同名方法十分相似，主要的区别在于后者提供类型转换功能，即发现两个JavaBean的同名属性为不同类型时，在支持的数据类型范围内进行转换，而前者不支持这个功能，但是速度会更快一些。BeanUtils支持的转换类型如下： <br />
<br />
<br />
&nbsp;&nbsp;&nbsp; * java.lang.BigDecimal <br />
&nbsp;&nbsp;&nbsp; * java.lang.BigInteger <br />
&nbsp;&nbsp;&nbsp; * boolean and java.lang.Boolean <br />
&nbsp;&nbsp;&nbsp; * byte and java.lang.Byte <br />
&nbsp;&nbsp;&nbsp; * char and java.lang.Character <br />
&nbsp;&nbsp;&nbsp; * java.lang.Class <br />
&nbsp;&nbsp;&nbsp; * double and java.lang.Double <br />
&nbsp;&nbsp;&nbsp; * float and java.lang.Float <br />
&nbsp;&nbsp;&nbsp; * int and java.lang.Integer <br />
&nbsp;&nbsp;&nbsp; * long and java.lang.Long <br />
&nbsp;&nbsp;&nbsp; * short and java.lang.Short <br />
&nbsp;&nbsp;&nbsp; * java.lang.String <br />
&nbsp;&nbsp;&nbsp; * java.sql.Date <br />
&nbsp;&nbsp;&nbsp; * java.sql.Time <br />
&nbsp;&nbsp;&nbsp; * java.sql.Timestamp <br />
<br />
<br />
这里要注意一点，java.util.Date是不被支持的，而它的子类java.sql.Date是被支持的。因此如果对象包含时间类型的属性，且希望被转换的时候，一定要使用java.sql.Date类型。否则在转换时会提示argument mistype异常。 <br />
<br />
三、优缺点： <br />
<br />
Apache Jakarta Commons项目非常有用。我曾在许多不同的项目上或直接或间接地使用各种流行的commons组件。其中的一个强大的组件就是BeanUtils。我将说明如何使用BeanUtils将local实体bean转换为对应的value 对象： <br />
</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://gundumw100.javaeye.com/blog/611921#"><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span>BeanUtils.copyProperties(aValue,&nbsp;aLocal);&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre class="java" style="display: none" name="code">BeanUtils.copyProperties(aValue, aLocal);</pre>
<p><br />
上面的代码从aLocal对象复制属性到aValue对象。它相当简单！它不管local（或对应的value）对象有多少个属性，只管进行复制。我们假设local对象有100个属性。上面的代码使我们可以无需键入至少100行的冗长、容易出错和反复的get和set方法调用。这太棒了！太强大了！太有用了！ <br />
<br />
BeanUtils.copyProperties 与 PropertyUtils.copyProperties 都是拷贝对象属性的方法，BeanUtils 支持类型转换，而 PropertyUtils 不支持。但是 BeanUtils 不允许对象的属性值为 null，PropertyUtils 可以拷贝属性值 null 的对象。 <br />
如果对象属性值为 null，BeanUtils.copyProperties 方法会报 commons.beanutils.ConversionException: No value specified 错误。 <br />
<br />
现在，还有一个坏消息：使用BeanUtils的成本惊人地昂贵！我做了一个简单的测试，BeanUtils所花费的时间要超过取数据、将其复制到对应的 value对象（通过手动调用get和set方法），以及通过串行化将其返回到远程的客户机的时间总和。所以要小心使用这种威力！ <br />
<br />
<br />
MethodUtils类使用方法: <br />
</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="http://gundumw100.javaeye.com/blog/611921#"><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div>
</div>
<ol class="dp-j">
    <li><span><span class="keyword">package</span><span>&nbsp;rong.propertyUtils; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">import</span><span>&nbsp;java.util.Map; &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">import</span><span>&nbsp;org.apache.commons.beanutils.MethodUtils; &nbsp;&nbsp;</span></span></li>
    <li><span class="keyword">import</span><span>&nbsp;org.apache.commons.beanutils.PropertyUtils; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">class</span><span>&nbsp;TestPropertyUtils&nbsp;{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;</span><span class="keyword">static</span><span>&nbsp;</span><span class="keyword">void</span><span>&nbsp;main(String[]&nbsp;args)&nbsp;</span><span class="keyword">throws</span><span>&nbsp;Exception{ &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Entity&nbsp;entity&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Entity(); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//通过PropertyUtils的getProperty方法获取指定属性的值 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;id&nbsp;=&nbsp;(Integer)PropertyUtils.getProperty(entity,&nbsp;</span><span class="string">"id"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;=&nbsp;(String)PropertyUtils.getProperty(entity,&nbsp;</span><span class="string">"name"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">"id&nbsp;=&nbsp;"</span><span>&nbsp;+&nbsp;id&nbsp;+&nbsp;</span><span class="string">"&nbsp;&nbsp;name&nbsp;=&nbsp;"</span><span>&nbsp;+&nbsp;name); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//调用PropertyUtils的setProperty方法设置entity的指定属性 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyUtils.setProperty(entity,&nbsp;</span><span class="string">"name"</span><span>,&nbsp;</span><span class="string">"心梦帆影"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">"name&nbsp;=&nbsp;"</span><span>&nbsp;+&nbsp;entity.getName()); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//通过PropertyUtils的describe方法把entity的所有属性与属性值封装进Map中 </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Map&nbsp;map&nbsp;=&nbsp;PropertyUtils.describe(entity); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span class="string">"id&nbsp;=&nbsp;"</span><span>&nbsp;+&nbsp;map.get(</span><span class="string">"id"</span><span>)&nbsp;+&nbsp;</span><span class="string">"&nbsp;&nbsp;name&nbsp;=&nbsp;"</span><span>&nbsp;+&nbsp;map.get(</span><span class="string">"name"</span><span>)); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//通过MethodUtils的invokeMethod方法,执行指定的entity中的方法(无参的情况) </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;MethodUtils.invokeMethod(entity,&nbsp;</span><span class="string">"haha"</span><span>,&nbsp;</span><span class="keyword">null</span><span>)&nbsp;); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//通过MethodUtils的invokeMethod方法,执行指定的entity中的方法（1参的情况） </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodUtils.invokeMethod(entity,&nbsp;</span><span class="string">"sayHelle"</span><span>,&nbsp;</span><span class="string">"心梦帆影"</span><span>); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comment">//通过MethodUtils的invokeMethod方法,执行指定的entity中的方法（多参的情况） </span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object[]&nbsp;params&nbsp;=&nbsp;</span><span class="keyword">new</span><span>&nbsp;Object[]{</span><span class="keyword">new</span><span>&nbsp;Integer(</span><span class="number">10</span><span>),</span><span class="keyword">new</span><span>&nbsp;Integer(</span><span class="number">12</span><span>)}; &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;msg&nbsp;=&nbsp;(String)MethodUtils.invokeMethod(entity,&nbsp;</span><span class="string">"countAges"</span><span>,&nbsp;params); &nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(msg); &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>}&nbsp;&nbsp;</span></li>
</ol>
</div><img src ="http://www.blogjava.net/Alpha/aggbug/320475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2010-05-10 14:07 <a href="http://www.blogjava.net/Alpha/archive/2010/05/10/320475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache tomcat 日志分析</title><link>http://www.blogjava.net/Alpha/archive/2010/03/31/317082.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 31 Mar 2010 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2010/03/31/317082.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/317082.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2010/03/31/317082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/317082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/317082.html</trackback:ping><description><![CDATA[<p><font color="#351c75" size="3">最近在寻找这方面的资料:</font></p>
<p>&nbsp;</p>
<p><font color="#351c75" size="3">1,查看apache进程:<br />
ps aux | grep httpd | grep -v grep | wc -l</font></p>
<p><font color="#351c75" size="3">2,查看80端口的tcp连接:<br />
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l</font></p>
<p><font color="#351c75" size="3">3,通过日志查看当天ip连接数，过滤重复:</font></p>
<p><font color="#351c75" size="3">cat access_log | grep "24/Jul/2007" | awk '{print $2}' | sort | uniq -c | sort -nr</font></p>
<p><font color="#351c75" size="3">4,当天ip连接数最高的ip都在干些什么(原来是蜘蛛):<br />
cat access_log | grep "24/Jul/2007:00" | grep "61.135.166.230" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10</font></p>
<p><font color="#351c75" size="3">5,当天访问页面排前10的url:</font></p>
<p><font color="#351c75" size="3">cat access_log | grep "24/Jul/2007:00" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10</font></p>
<p><font color="#351c75" size="3">6,用tcpdump嗅探80端口的访问看看谁最高<br />
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr<br />
接着从日志里查看该ip在干嘛:<br />
cat access_log | grep 220.181.38.183| awk '{print $1"\t"$8}' | sort | uniq -c | sort -nr | less</font></p>
<p><br />
<font color="#351c75" size="3">7,查看某一时间段的ip连接数:<br />
grep "2006:0[7-8]" www20060723.log | awk '{print $2}' | sort | uniq -c| sort -nr | wc -l</font></p><img src ="http://www.blogjava.net/Alpha/aggbug/317082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2010-03-31 16:55 <a href="http://www.blogjava.net/Alpha/archive/2010/03/31/317082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何删除JSP编译后的空行</title><link>http://www.blogjava.net/Alpha/archive/2010/03/25/316505.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Thu, 25 Mar 2010 02:12:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2010/03/25/316505.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/316505.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2010/03/25/316505.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/316505.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/316505.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="word-spacing: 0px; font: 12px Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="line-height: 26px">
<ul class="summary" style="border-right: rgb(221,230,241) 1px dashed; padding-right: 16px; border-top: rgb(221,230,241) 1px dashed; padding-left: 16px; font-size: 14px; padding-bottom: 4px; margin: 0px; border-left: rgb(221,230,241) 1px dashed; width: 554px; color: rgb(0,81,151); line-height: 24px; padding-top: 8px; border-bottom: rgb(221,230,241) 1px dashed; list-style-type: none; background-color: rgb(254,253,232)">当你在客户端用view source看JSP生成的代码时，会发现有很多空行，他们是由&lt; %...% &gt;后的回车换行而生成的，也就是说每一行由&lt; %...% &gt;包含的JSP代码到客户端都变成一个空行，虽然不影响浏览，但还是希望能把他们删掉。这里将为大家介绍如何删除JSP编译后的空行。</ul>
    </span></span><span class="Apple-style-span" style="word-spacing: 0px; font: 12px Simsun; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="line-height: 26px">
    <ul class="con" style="border-top-width: 0px; padding-right: 24px; padding-left: 24px; border-left-width: 0px; font-size: 14px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; line-height: 26px; padding-top: 10px; list-style-type: none; border-right-width: 0px">
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">删除JSP编译后的空行办法如下：</strong></p>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">1. 支持JSP 2.1+ ，在每个要去空行的页面里包含下面代码：</p>
        <pre style="padding-right: 0px; overflow-y: auto; padding-left: 0px; font-size: 12px; overflow-x: auto; padding-bottom: 0px; margin: 0px 0px 1em; width: 584px; padding-top: 0px; font-family: 'Courier New', monospace; background-color: rgb(230,230,230); webkit-background-clip: initial; webkit-background-origin: initial">
        <ol class="dp-xml" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 20px; background-image: url(http://images.51cto.com/images/art0910/images/010101bg.gif); padding-bottom: 5px; margin: 0px 0px 1px 3em; border-left: 0px; color: rgb(0,0,0); line-height: 30px; padding-top: 5px; border-bottom: 0px; background-repeat: repeat-y; list-style-type: decimal; webkit-background-clip: initial; webkit-background-origin: initial">
            <li class="alt" style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699">&lt;</font></strong></span><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">%@&nbsp;page&nbsp;</span><span class="attribute" style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: red; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#ff0000">trimDirectiveWhitespaces</font></span><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">=</span><span class="attribute-value" style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: blue; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#0000ff">"true"</font></span><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;%</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699">&gt;</font></strong></span><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span></span></li>
        </ol>
        </pre>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">在 Tomcat 6.0.14下测试JSP编译成功</p>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">2. 支持servlet 2.5+, 即 web.xml的 XSD版本为2.5，在web.xml中加入如下代码</p>
        <pre style="padding-right: 0px; overflow-y: auto; padding-left: 0px; font-size: 12px; overflow-x: auto; padding-bottom: 0px; margin: 0px 0px 1em; width: 584px; padding-top: 0px; font-family: 'Courier New', monospace; background-color: rgb(230,230,230); webkit-background-clip: initial; webkit-background-origin: initial">
        <ol class="dp-xml" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 20px; background-image: url(http://images.51cto.com/images/art0910/images/010101bg.gif); padding-bottom: 5px; margin: 0px 0px 1px 3em; border-left: 0px; color: rgb(0,0,0); line-height: 30px; padding-top: 5px; border-bottom: 0px; background-repeat: repeat-y; list-style-type: decimal; webkit-background-clip: initial; webkit-background-origin: initial">
            <li class="alt" style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">jsp-config</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span></span>
            <li style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">jsp-property-group</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span>
            <li class="alt" style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">url-pattern</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">*.jsp</span><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;/</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">url-pattern</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span>
            <li style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">trim-directive-whitespaces</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">true</span><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;/</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">trim-directive-whitespaces</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span>
            <li class="alt" style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;/</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">jsp-property-group</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span>
            <li style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;/</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">jsp-config</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span></li>
        </ol>
        </pre>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">在tomcat 6.0.14下测试JSP编译成功</p>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">3. Tomcat 5.5.x+，在Tomcat安装目录/conf/web.xml中找到名叫"jsp"的servlet，添加下面一段代码：</p>
        <pre style="padding-right: 0px; overflow-y: auto; padding-left: 0px; font-size: 12px; overflow-x: auto; padding-bottom: 0px; margin: 0px 0px 1em; width: 584px; padding-top: 0px; font-family: 'Courier New', monospace; background-color: rgb(230,230,230); webkit-background-clip: initial; webkit-background-origin: initial">
        <ol class="dp-xml" style="border-right: 0px; padding-right: 0px; border-top: 0px; padding-left: 20px; background-image: url(http://images.51cto.com/images/art0910/images/010101bg.gif); padding-bottom: 5px; margin: 0px 0px 1px 3em; border-left: 0px; color: rgb(0,0,0); line-height: 30px; padding-top: 5px; border-bottom: 0px; background-repeat: repeat-y; list-style-type: decimal; webkit-background-clip: initial; webkit-background-origin: initial">
            <li class="alt" style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">init-param</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span></span>
            <li style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">param-name</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">trimSpaces</span><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;/</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">param-name</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span>
            <li class="alt" style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">param-value</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">true</span><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;/</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">param-value</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span>
            <li style="border-right: 0px; padding-right: 3px! important; border-top: 0px; padding-left: 14px; list-style-position: outside! important; background-image: url(http://images.51cto.com/images/art0910/AppData/Roaming/Adobe/Dreamweaver%20CS4/zh_CN/Configuration/images/dt1.gif); padding-bottom: 0px! important; margin: 0px; border-left: 0px; color: rgb(0,0,0); line-height: 24px; padding-top: 0px! important; border-bottom: 0px; background-repeat: no-repeat; webkit-background-clip: initial; webkit-background-origin: initial"><strong style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"><font style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px" color="#006699"><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&lt;/</span><span class="tag-name" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">init-param</span><span class="tag" style="padding-right: 0px; padding-left: 0px; font-weight: bold; padding-bottom: 0px; margin: 0px; color: rgb(0,102,153); border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&gt;</span></font></strong><span style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; color: black; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; border-bottom-style: none">&nbsp;</span></li>
        </ol>
        </pre>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">本人测过</p>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">trimSpaces&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Should white spaces in template text between&nbsp; actions or directives be trimmed?&nbsp; [false]</p>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">在实际操作中我加入了5.5的配置到页面中并反复启动了几次tomcat但是还是没有成功，后来才想到JSP已经编译成servlet了所以没有能改变，进入到tomcat中的work目录把已经进行JSP编译的class全部删除，哇哈哈，整个世界清净了，成功删除空行</p>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">&nbsp;</p>
        <p style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 10px 0px; text-indent: 28px; padding-top: 0px">&nbsp;</p>
    </ul>
    </span></span><img src ="http://www.blogjava.net/Alpha/aggbug/316505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2010-03-25 10:12 <a href="http://www.blogjava.net/Alpha/archive/2010/03/25/316505.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.lang.OutOfMemoryError: PermGen space及其解决方法</title><link>http://www.blogjava.net/Alpha/archive/2009/06/19/283242.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Fri, 19 Jun 2009 08:04:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2009/06/19/283242.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/283242.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2009/06/19/283242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/283242.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/283242.html</trackback:ping><description><![CDATA[<p>1<br />
<br />
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出，解决方法也一定是加大内存说说为什么会内存益出：这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域，它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误这种错误常见在web服务器对JSP进行pre compile的时候<br />
改正方法：-Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m <br />
2<br />
在tomcat中redeploy时出现outofmemory的错误.<br />
可以有以下几个方面的原因:<br />
１,使用了proxool,因为proxool内部包含了一个老版本的cglib.<br />
2, log4j,最好不用,只用common-logging<br />
3, 老版本的cglib,快点更新到最新版<br />
４，更新到最新的hibernate3.2<br />
<br />
3<br />
<br />
这里以tomcat环境为例，其它WEB服务器如jboss,weblogic等是同一个道理<br />
一java.lang.OutOfMemoryError: PermGen space <br />
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,<br />
这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,<br />
它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对<br />
PermGen space进行清理，所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,<br />
这种错误常见在web服务器对JSP进行pre compile的时候如果你的WEB APP下都用了大量的第三方jar, 其大小<br />
超过了jvm默认的大小(4M)那么就会产生此错误信息了<br />
解决方法： 手动设置MaxPermSize大小<br />
修改TOMCAT_HOME/bin/catalina.sh<br />
在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行：<br />
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m<br />
建议：将相同的第三方jar文件移置到tomcat/shared/lib目录下，这样可以达到减少jar 文档重复占用内存的目的<br />
二java.lang.OutOfMemoryError: Java heap space<br />
Heap size 设置<br />
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值，<br />
其初始空间(即-Xms)是物理内存的1/64，最大空间(-Xmx)是物理内存的1/4可以利用JVM提供的-Xmn -Xms -Xmx等选项可<br />
进行设置Heap size 的大小是Young Generation 和Tenured Generaion 之和<br />
提示：在JVM中如果98％的时间是用于GC且可用的Heap size 不足2％的时候将抛出此异常信息<br />
提示：Heap Size 最大不要超过可用物理内存的80％，一般的要将-Xms和-Xmx选项设置为相同，而-Xmn为1/4的-Xmx值 <br />
解决方法：手动设置Heap size<br />
修改TOMCAT_HOME/bin/catalina.sh<br />
在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行：<br />
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"<br />
三实例，以下给出1G内存环境下java jvm 的参数设置参考：<br />
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "<br />
<br />
三相关资料<br />
题外话：经常看到网友抱怨tomcat的性能不如...，不稳定等，其实根据笔者几年的经验，从"互联星空到现在的房产门户网，我们<br />
均使用tomcat作为WEB服务器，每天访问量百万多，tomcat仍然运行良好建议大家有问题多从自己程序入手，多看看java的DOC文档<br />
并详细了解JVM的知识这样开发的程序才会健壮<br />
</p><img src ="http://www.blogjava.net/Alpha/aggbug/283242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2009-06-19 16:04 <a href="http://www.blogjava.net/Alpha/archive/2009/06/19/283242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jconsole的使用</title><link>http://www.blogjava.net/Alpha/archive/2008/11/20/241650.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Thu, 20 Nov 2008 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2008/11/20/241650.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/241650.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2008/11/20/241650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/241650.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/241650.html</trackback:ping><description><![CDATA[<div class="blog_content">JDK中Jconsole的使用 <br />
2008-04-03 14:16 <br />
JAVA应用程序打成jar包的部署方式： <br />
<br />
一、Local方式 <br />
1、cmd进入dos下，进入到应用程序所在目录，执行语句如下： <br />
java -Dcom.sun.management.jmxremote -jar 程序名.jar <br />
(java -Dcom.sun.management.jmxremote -jar Java2Demo.jar)(测试例子Java2Demo.jar在C:\Program Files\Java\jdk1.6.0_02\demo\jfc\Java2D\) <br />
<br />
还出不来的话 直接 在dos里 jconsole 进程号 <br />
<br />
2、启动jdk_home\bin目录下的Jconsole.exe就可以看到有一个 <br />
<br />
本地的连接在里面。点击连接就可以进入相应的监视界面了。 <br />
<br />
二、JMX方式（远程连接）： <br />
1、cmd进入dos下，进入到应用程序所在目录，执行语句如下： <br />
java -Dcom.sun.management.jmxremote.port=8903 - <br />
<br />
Dcom.sun.management.jmxremote.ssl=false - <br />
<br />
Dcom.sun.management.jmxremote.authenticate=false <br />
-Djava.rmi.server.hostname=192.168.***.*** <br />
<br />
2、启动jdk_home\bin目录下的Jconsole.exe点高级。在JMX <br />
<br />
URL:中输入语句如下： <br />
<br />
service:jmx:rmi:///jndi/rmi://192.168.***.***:8903/jmxr <br />
<br />
mi <br />
点连接就可以进行远程监控了 <br />
<br />
<br />
<br />
web应用程序在tomcat中部署JMX（示例：tomcat-6.0.14） <br />
1、启动tomcat\bin目录下的tomcat6w.exe，在JAVA_OPTS里设 <br />
<br />
置如下： <br />
-Dcom.sun.management.jmxremote.port=8903 <br />
-Dcom.sun.management.jmxremote.ssl=false <br />
-Dcom.sun.management.jmxremote.authenticate=false <br />
-Djava.rmi.server.hostname=192.168.***.*** <br />
<br />
注意：不能有空格，不然tomcat不能启动。 <br />
<br />
2、tomcat启动成功后，就可以在另一台机器上启动 <br />
<br />
jdk_home\bin目录下的Jconsole.exe点高级。在JMX URL:中输 <br />
<br />
入语句如下： <br />
<br />
service:jmx:rmi:///jndi/rmi://192.168.***.***:8903/jmxr <br />
<br />
mi <br />
点连接就可以进行远程监控了 <br />
<br />
以上是JMX基本部署，没有涉及到验证方面，如果使用的话，可 <br />
<br />
能会有漏洞，因为SSL和authenticate设置为false的话，那么 <br />
<br />
8903端口就有可能有暴露的危险。 <br />
<br />
如果想进行密码验证话，可以在网上找资料，自己进行调试。 <br />
<br />
<br />
我自己的应用： <br />
1.修改Linux下tomcat的bin目录下的catalina.sh文件 <br />
添加 <br />
JAVA_OPTS=-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false <br />
-Dcom.sun.management.jmxremote.port=7080&nbsp; <br />
-Dcom.sun.management.jmxremote <br />
2.修改/etc/hosts文件下的localhost对应的IP（127.0.0.1）地址，改为linux自身的IP如10.0.0.157. <br />
3.打开jconsole远程输入 10.0.0.157:7080 <br />
<br />
三 <br />
<br />
Eden Space (heap)： 内存最初从这个线程池分配给大部分对象。 <br />
Survivor Space (heap)：用于保存在eden space内存池中经过垃圾回收后没有被回收的对象。 <br />
Tenured Generation (heap)：用于保持已经在 survivor space内存池中存在了一段时间的对象。 <br />
Permanent Generation (non-heap): 保存虚拟机自己的静态(refective)数据，例如类（class）和方法（method）对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的， <br />
Code Cache (non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码（native code）的内存，叫做&#8220;代码缓存区&#8221;（code cache） <br />
<br />
================================================<br />
<br />
使用 jconsole 监控 tomcat6 <br />
<br />
<p>在 </p>
<p>catalina.bat </p>
<p>找到</p>
<p>set DEBUG_OPTS=<br />
set JPDA=</p>
<p>在下面添加</p>
<p>set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false </p>
<p>保存</p>
<p>通过startup。bat启动 tomcat</p>
<p>启动jconsole （jdk1.6.0_02\lib）：输入</p>
<p>localhost:1090</p>
<p>用户名 口令 为空 </p>
<p>进入 即可 查看 </p>
<br />
</div><img src ="http://www.blogjava.net/Alpha/aggbug/241650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2008-11-20 15:00 <a href="http://www.blogjava.net/Alpha/archive/2008/11/20/241650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Log4j简介</title><link>http://www.blogjava.net/Alpha/archive/2008/03/01/183131.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Sat, 01 Mar 2008 06:02:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2008/03/01/183131.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/183131.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2008/03/01/183131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/183131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/183131.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Log4j是Apache的一个开放源代码项目，通过使用Log4j，我们可以控制日志信息输送的；我们也可以控制每一条日志的输出格式；通过定义每一条日志信息的级别，我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是，这些可以通过一个配置文件来灵活地进行配置，而不需要修改应用的代码。 &nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2008/03/01/183131.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/183131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2008-03-01 14:02 <a href="http://www.blogjava.net/Alpha/archive/2008/03/01/183131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA 读取 EXCEL不同文件格式的内容（代码）</title><link>http://www.blogjava.net/Alpha/archive/2007/11/21/162024.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 21 Nov 2007 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/11/21/162024.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/162024.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/11/21/162024.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/162024.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/162024.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用Windows操作系统的朋友对Excel（电子表格）一定不会陌生，但是要使用Java语言来操纵Excel文件并不是一件容易的事。在Web应用日益盛行的今天，通过Web来操作Excel文件的需求越来越强烈，目前较为流行的操作是在 JSP或Servlet 中创建一个CSV （comma separated values）文件，并将这个文件以MIME，text/csv类型返回给浏览器，接着浏览器调用Excel并且显示CSV文件。这样只是说可以访问到Excel文件，但是还不能真正的操纵Excel 文件，本文将给大家一个惊喜，向大家介绍一个开放源码项目 Java Excel API，使用它大家就可以方便地操纵Excel文件了。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/11/21/162024.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/162024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-11-21 10:29 <a href="http://www.blogjava.net/Alpha/archive/2007/11/21/162024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows下架设subversion服务器</title><link>http://www.blogjava.net/Alpha/archive/2007/08/29/141108.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 29 Aug 2007 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/08/29/141108.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/141108.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/08/29/141108.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/141108.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/141108.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: windows下架设subversion服务器&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/08/29/141108.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/141108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-08-29 22:13 <a href="http://www.blogjava.net/Alpha/archive/2007/08/29/141108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 图片合成　解决图片失真问题</title><link>http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Mon, 20 Aug 2007 08:01:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/138171.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/138171.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/138171.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java 图片合成　解决图片失真问题&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/138171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-08-20 16:01 <a href="http://www.blogjava.net/Alpha/archive/2007/08/20/138171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java线程控制的图像分割与合成</title><link>http://www.blogjava.net/Alpha/archive/2007/08/20/138065.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Mon, 20 Aug 2007 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/08/20/138065.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/138065.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/08/20/138065.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/138065.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/138065.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用Java对WEB静态图像进行分割重组，然后根据用户的交互操作合成显示，并利用线程对程序的并发性加以控制，从而达到图像显示的动态性和交互性效果。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/08/20/138065.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/138065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-08-20 10:51 <a href="http://www.blogjava.net/Alpha/archive/2007/08/20/138065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]JAVA 在图像处理中的应用</title><link>http://www.blogjava.net/Alpha/archive/2007/08/08/135138.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 08 Aug 2007 00:53:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/08/08/135138.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/135138.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/08/08/135138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/135138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/135138.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 相信大家平时碰到过一些在JAVA中对图像进行处理的需求，比如需要对上传的图片加上自己的签名或图标，或者生成和解析动态的GIF图片，以及处理PSD文件图像信息。本文就JAVA在图像处理中一些基本应用进行了介绍。希望通过能够对大家在以后的图像处理中有些帮助。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/08/08/135138.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/135138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-08-08 08:53 <a href="http://www.blogjava.net/Alpha/archive/2007/08/08/135138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]java生成缩略图代码 </title><link>http://www.blogjava.net/Alpha/archive/2007/08/08/135137.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 08 Aug 2007 00:51:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/08/08/135137.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/135137.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/08/08/135137.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/135137.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/135137.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: java生成缩略图代码&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/08/08/135137.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/135137.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-08-08 08:51 <a href="http://www.blogjava.net/Alpha/archive/2007/08/08/135137.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HttpServletRequest request</title><link>http://www.blogjava.net/Alpha/archive/2007/07/17/130885.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 17 Jul 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/07/17/130885.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/130885.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/07/17/130885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/130885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/130885.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: HttpServletRequest request&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/07/17/130885.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/130885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-07-17 16:51 <a href="http://www.blogjava.net/Alpha/archive/2007/07/17/130885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HttpClient 学习整理</title><link>http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Mon, 22 Jan 2007 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/95216.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html#Feedback</comments><slash:comments>44</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/95216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/95216.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: HttpClient 是 Apache Jakarta Common 下的子项目，用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包，并且它支持 HTTP 协议最新的版本和建议。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/95216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-01-22 09:39 <a href="http://www.blogjava.net/Alpha/archive/2007/01/22/95216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]利用Java编写HTML文件分析程序</title><link>http://www.blogjava.net/Alpha/archive/2007/01/18/94700.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Thu, 18 Jan 2007 08:58:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/01/18/94700.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/94700.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/01/18/94700.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/94700.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/94700.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文从实践的角度重点阐述Java语言中输入流类StreamTokenizer在编写HTML文件分析程序中的应用，并介绍了以字节为单位下载Web页面的例程。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/01/18/94700.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/94700.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-01-18 16:58 <a href="http://www.blogjava.net/Alpha/archive/2007/01/18/94700.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JFreeChart在JSP中的应用实例</title><link>http://www.blogjava.net/Alpha/archive/2007/01/13/93569.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Sat, 13 Jan 2007 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2007/01/13/93569.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/93569.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2007/01/13/93569.html#Feedback</comments><slash:comments>29</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/93569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/93569.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JFreeChart是一个开源的JAVA项目，它主要用来开发各种各样的图表，这些图表包括：饼图、柱状图(普通柱状图以及堆栈柱状图)、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。在这些不同式样的图表上可以满足目前商业系统的要求。JFreeChart是一种基于JAVA语言的图表开发技术。JFreeChart可用于Servlet、JSP、Applet、Java Appication环境中，通过JDBC可动态显示任何数据库数据，结合Itext可以输出至PDF文件。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2007/01/13/93569.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/93569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2007-01-13 11:08 <a href="http://www.blogjava.net/Alpha/archive/2007/01/13/93569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提升JSP应用程序的七大绝招</title><link>http://www.blogjava.net/Alpha/archive/2006/12/21/89192.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Thu, 21 Dec 2006 01:19:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2006/12/21/89192.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/89192.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2006/12/21/89192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/89192.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/89192.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 你时常被客户抱怨JSP页面响应速度很慢吗？你想过当客户访问次数剧增时，你的WEB应用能承受日益增加的访问量吗？本文讲述了调整JSP和servlet的一些非常实用的方法，它可使你的servlet和JSP页面响应更快，扩展性更强。而且在用户数增加的情况下，系统负载会呈现出平滑上长的趋势。在本文中，我将通过一些实际例子和配置方法使得你的应用程序的性能有出人意料的提升。其中，某些调优技术是在你的编程工作中实现的。而另一些技术是与应用服务器的配置相关的。在本文中，我们将详细地描述怎样通过调整servlet和JSP页面，来提高你的应用程序的总体性能。在阅读本文之前，假设你有基本的servlet和JSP的知识。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2006/12/21/89192.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/89192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2006-12-21 09:19 <a href="http://www.blogjava.net/Alpha/archive/2006/12/21/89192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多级反向代理[Squid]下获取客户端真实IP地址</title><link>http://www.blogjava.net/Alpha/archive/2006/07/12/57764.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Wed, 12 Jul 2006 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2006/07/12/57764.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/57764.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2006/07/12/57764.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/57764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/57764.html</trackback:ping><description><![CDATA[<a href="https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=dmb0rzcj&amp;amp;utm_source=dmb0rzcj" target="_blank"><img src="http://www.blogjava.net/images/blogjava_net/alpha/760-130.jpg" alt="阿里云服务器优惠券" /></a>
<br />
在很多应用下都可能有需要将用户的真实IP记录下来，这时就要获得用户的真实IP地址，在JSP里，获取客户端的IP地址的方法是：<strong>request.getRemoteAddr()</strong>，这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。<br />
<br />
这段时间在做IP统计的程序设计，由于服务器作了集群，使用了反向代理软件，将<a href="http://192.168.1.110:2046/">http://192.168.1.110:2046/</a>的URL反向代理为<a href="http://www.xxx.com/">http://www.xxx.com/</a>的URL时，用<strong>request.getRemoteAddr()</strong>方法获取的IP地址是：127.0.0.1　或　<u><font color="#0000ff">192.168.1.110</font></u>，而并不是客户端的真实ＩＰ。这是什么原因呢？<br />
<br />
这是反向代理的原因。经过代理以后，由于在客户端和服务之间增加了中间层，因此服务器无法直接拿到客户端的IP，服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中，增加了X－FORWARDED－FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问<a href="http://www.xxx.com/index.jsp/">http://www.xxx.com/index.jsp/</a>时，其实并不是我们浏览器真正访问到了服务器上的index.jsp文件，而是先由代理服务器去访问<a href="http://xxx.xxx.xxx.xxx:2046/index.jsp">http://192.168.1.110:2046/index.jsp</a>，代理服务器再将访问到的结果返回给我们的浏览器，因为是代理服务器去访问index.jsp的，所以index.jsp中通过<strong>request.getRemoteAddr()</strong>的方法获取的IP实际上是代理服务器的地址，并不是客户端的IP地址。<br />
<br />
于是可得出获得客户端真实IP地址的方法一：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img id="Codehighlighter1_53_229_Open_Image" onclick="this.style.display='none'; Codehighlighter1_53_229_Open_Text.style.display='none'; Codehighlighter1_53_229_Closed_Image.style.display='inline'; Codehighlighter1_53_229_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_53_229_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_53_229_Closed_Text.style.display='none'; Codehighlighter1_53_229_Open_Image.style.display='inline'; Codehighlighter1_53_229_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getIpAddr(HttpServletRequest&nbsp;request)&nbsp;</span><span id="Codehighlighter1_53_229_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_53_229_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;ip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getHeader(</span><span style="color: #000000">"</span><span style="color: #000000">x-forwarded-for</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img id="Codehighlighter1_152_204_Open_Image" onclick="this.style.display='none'; Codehighlighter1_152_204_Open_Text.style.display='none'; Codehighlighter1_152_204_Closed_Image.style.display='inline'; Codehighlighter1_152_204_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_152_204_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_152_204_Closed_Text.style.display='none'; Codehighlighter1_152_204_Open_Image.style.display='inline'; Codehighlighter1_152_204_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(ip&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;ip.length()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span id="Codehighlighter1_152_204_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_152_204_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getRemoteAddr();<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;ip;<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
可是当我访问<a href="http://www.xxx.com/index.jsp/">http://www.xxx.com/index.jsp/</a>时，返回的IP地址始终是unknown，也并不是如上所示的127.0.0.1　或　<u><font color="#0000ff">192.168.1.110</font></u>了，而我访问<a href="http://xxx.xxx.xxx.xxx:2046/index.jsp">http://192.168.1.110:2046/index.jsp</a>时，则能返回客户端的真实IP地址，写了个方法去验证。<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_2_29_Open_Image" onclick="this.style.display='none'; Codehighlighter1_2_29_Open_Text.style.display='none'; Codehighlighter1_2_29_Closed_Image.style.display='inline'; Codehighlighter1_2_29_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_2_29_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_2_29_Closed_Text.style.display='none'; Codehighlighter1_2_29_Open_Image.style.display='inline'; Codehighlighter1_2_29_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"><span style="color: #000000; background-color: #ffff00">&lt;%</span><span id="Codehighlighter1_2_29_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_2_29_Open_Text"><span style="color: #000000; background-color: #f5f5f5">@&nbsp;page&nbsp;import</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">java.util.*</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span></span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">table&nbsp;</span><span style="color: #ff0000">border</span><span style="color: #0000ff">=1&nbsp;</span><span style="color: #ff0000">cellspacing</span><span style="color: #0000ff">=0&nbsp;</span><span style="color: #ff0000">cellpadding</span><span style="color: #0000ff">=0&nbsp;</span><span style="color: #ff0000">align</span><span style="color: #0000ff">=center</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Name</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Value</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">th</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_138_362_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_362_Open_Text.style.display='none'; Codehighlighter1_138_362_Closed_Image.style.display='inline'; Codehighlighter1_138_362_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_138_362_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_138_362_Closed_Text.style.display='none'; Codehighlighter1_138_362_Open_Image.style.display='inline'; Codehighlighter1_138_362_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span id="Codehighlighter1_138_362_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_138_362_Open_Text"><span style="color: #000000; background-color: #f5f5f5">&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />Enumeration&nbsp;enumNames;&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #0000ff; background-color: #f5f5f5">String</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;strName,strValue;&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />enumNames&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;request.getHeaderNames();&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #0000ff; background-color: #f5f5f5">while</span><span style="color: #000000; background-color: #f5f5f5">(enumNames.hasMoreElements()){&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;strName&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;(</span><span style="color: #0000ff; background-color: #f5f5f5">String</span><span style="color: #000000; background-color: #f5f5f5">)enumNames.nextElement();&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;strValue&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;request.getHeader(strName);&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">strName</span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">strValue</span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">td</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img id="Codehighlighter1_449_453_Open_Image" onclick="this.style.display='none'; Codehighlighter1_449_453_Open_Text.style.display='none'; Codehighlighter1_449_453_Closed_Image.style.display='inline'; Codehighlighter1_449_453_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_449_453_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_449_453_Closed_Text.style.display='none'; Codehighlighter1_449_453_Open_Image.style.display='inline'; Codehighlighter1_449_453_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; background-color: #ffff00">&lt;%</span><span id="Codehighlighter1_449_453_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_449_453_Open_Text"><span style="color: #000000; background-color: #f5f5f5">&nbsp;<br />
</span><span style="color: #008080">21</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000; background-color: #f5f5f5"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span></span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">tr</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">table</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div>
<br />
<br />
出来的结果：X-Forwarded-For: unknown　。X-Forwarded-For确实存在，但其值却为unknown，继续找原因。上网搜了搜，原因出在了Squid上。<br />
<br />
squid.conf 的配制文件　forwarded_for 项默认是为on，如果 forwarded_for 设成了 off 　则：<br />
<br />
X-Forwarded-For: unknown<br />
<br />
一查，发现forwarded_for 项设为了off，原因找到了，把forwarded_for 项设为了on，重启后，访问<a href="http://www.xxx.com/index.jsp/">http://www.xxx.com/index.jsp/</a>　获得的IP是客户端的真实IP。<br />
<br />
于是可得出获得客户端真实IP地址的方法二：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_56_561_Open_Image" onclick="this.style.display='none'; Codehighlighter1_56_561_Open_Text.style.display='none'; Codehighlighter1_56_561_Closed_Image.style.display='inline'; Codehighlighter1_56_561_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_56_561_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_56_561_Closed_Text.style.display='none'; Codehighlighter1_56_561_Open_Image.style.display='inline'; Codehighlighter1_56_561_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;String&nbsp;getIpAddr(HttpServletRequest&nbsp;request)&nbsp;</span><span id="Codehighlighter1_56_561_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_56_561_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;ip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getHeader(</span><span style="color: #000000">"</span><span style="color: #000000">x-forwarded-for</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_193_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_193_258_Open_Text.style.display='none'; Codehighlighter1_193_258_Closed_Image.style.display='inline'; Codehighlighter1_193_258_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_193_258_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_193_258_Closed_Text.style.display='none'; Codehighlighter1_193_258_Open_Image.style.display='inline'; Codehighlighter1_193_258_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(ip&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;ip.length()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">unknown</span><span style="color: #000000">"</span><span style="color: #000000">.equalsIgnoreCase(ip))&nbsp;</span><span id="Codehighlighter1_193_258_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_193_258_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Proxy-Client-IP</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_337_405_Open_Image" onclick="this.style.display='none'; Codehighlighter1_337_405_Open_Text.style.display='none'; Codehighlighter1_337_405_Closed_Image.style.display='inline'; Codehighlighter1_337_405_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_337_405_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_337_405_Closed_Text.style.display='none'; Codehighlighter1_337_405_Open_Image.style.display='inline'; Codehighlighter1_337_405_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(ip&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;ip.length()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">unknown</span><span style="color: #000000">"</span><span style="color: #000000">.equalsIgnoreCase(ip))&nbsp;</span><span id="Codehighlighter1_337_405_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_337_405_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getHeader(</span><span style="color: #000000">"</span><span style="color: #000000">WL-Proxy-Client-IP</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_484_536_Open_Image" onclick="this.style.display='none'; Codehighlighter1_484_536_Open_Text.style.display='none'; Codehighlighter1_484_536_Closed_Image.style.display='inline'; Codehighlighter1_484_536_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_484_536_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_484_536_Closed_Text.style.display='none'; Codehighlighter1_484_536_Open_Image.style.display='inline'; Codehighlighter1_484_536_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(ip&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;ip.length()&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">unknown</span><span style="color: #000000">"</span><span style="color: #000000">.equalsIgnoreCase(ip))&nbsp;</span><span id="Codehighlighter1_484_536_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" alt="" /></span><span id="Codehighlighter1_484_536_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ip&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getRemoteAddr();<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;ip;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div>
<p><br />
<br />
可是，如果通过了多级反向代理的话，X-Forwarded-For的值并不止一个，而是一串Ｉｐ值，究竟哪个才是真正的用户端的真实IP呢？<br />
<br />
答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。<br />
<br />
如：<br />
X-Forwarded-For：192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100<br />
用户真实IP为： 192.168.1.110<br />
<br />
</p>
<p><br />
&nbsp;</p>
<a href="https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=dmb0rzcj&amp;amp;utm_source=dmb0rzcj" target="_blank"><img src="http://www.blogjava.net/images/blogjava_net/alpha/760-130.jpg" alt="阿里云服务器优惠券" /></a><img src ="http://www.blogjava.net/Alpha/aggbug/57764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2006-07-12 11:12 <a href="http://www.blogjava.net/Alpha/archive/2006/07/12/57764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下java中文字体问题[与JfreeChart有关]</title><link>http://www.blogjava.net/Alpha/archive/2006/05/20/47162.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Sat, 20 May 2006 05:10:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2006/05/20/47162.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/47162.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2006/05/20/47162.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/47162.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/47162.html</trackback:ping><description><![CDATA[<div>最近要用jfreechart,在图表中会用到中文,</div>
		<div>在windows环境下,不会发生乱码问题.</div>
		<div>但是部署到linux下,就发生中文乱码问题,中文全变成方框，摸索了一段时间才将之解决。</div>
		<div>
				<p>为了确定你的Linux环境下程序会使用的字体文件，先跑跑这个程序：from others<br /><br /></p>
				<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee">
						<span style="color: #008080">1</span>
						<img id="Codehighlighter1_25_333_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_333_Open_Text.style.display='none'; Codehighlighter1_25_333_Closed_Image.style.display='inline'; Codehighlighter1_25_333_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top">
						<img id="Codehighlighter1_25_333_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_25_333_Closed_Text.style.display='none'; Codehighlighter1_25_333_Open_Image.style.display='inline'; Codehighlighter1_25_333_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top">
						<span style="color: #0000ff">public</span>
						<span style="color: #000000">&nbsp;</span>
						<span style="color: #0000ff">class</span>
						<span style="color: #000000">&nbsp;PrintLocale&nbsp;</span>
						<span id="Codehighlighter1_25_333_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif"  alt="" />
						</span>
						<span id="Codehighlighter1_25_333_Open_Text">
								<span style="color: #000000">{<br /></span>
								<span style="color: #008080">2</span>
								<span style="color: #000000">
										<img id="Codehighlighter1_70_331_Open_Image" onclick="this.style.display='none'; Codehighlighter1_70_331_Open_Text.style.display='none'; Codehighlighter1_70_331_Closed_Image.style.display='inline'; Codehighlighter1_70_331_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top">
										<img id="Codehighlighter1_70_331_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_70_331_Closed_Text.style.display='none'; Codehighlighter1_70_331_Open_Image.style.display='inline'; Codehighlighter1_70_331_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span>
								<span style="color: #0000ff">public</span>
								<span style="color: #000000">&nbsp;</span>
								<span style="color: #0000ff">static</span>
								<span style="color: #000000">&nbsp;</span>
								<span style="color: #0000ff">void</span>
								<span style="color: #000000">&nbsp;main(String[]&nbsp;args)&nbsp;</span>
								<span id="Codehighlighter1_70_331_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">
										<img src="http://www.blogjava.net/images/dot.gif"  alt="" />
								</span>
								<span id="Codehighlighter1_70_331_Open_Text">
										<span style="color: #000000">{<br /></span>
										<span style="color: #008080">3</span>
										<span style="color: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(System.getProperty(</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">user.language</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">));<br /></span>
										<span style="color: #008080">4</span>
										<span style="color: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(System.getProperty(</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">user.region</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">));<br /></span>
										<span style="color: #008080">5</span>
										<span style="color: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(System.getProperty(</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">file.encoding</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">));<br /></span>
										<span style="color: #008080">6</span>
										<span style="color: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(System.getProperty(</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">os.version</span>
										<span style="color: #000000">"</span>
										<span style="color: #000000">));<br /></span>
										<span style="color: #008080">7</span>
										<span style="color: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span>
								</span>
								<span style="color: #000000">
										<br />
								</span>
								<span style="color: #008080">8</span>
								<span style="color: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span>
						</span>
						<span style="color: #000000">
								<br />
						</span>
						<span style="color: #008080">9</span>
						<span style="color: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />
						</span>
				</div>
		</div>
		<br />
		<div>访问顺序可以看:</div>
		<div>
				<a href="http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/yangyaping0307/waslinux.html">
						<font color="#0d5d91">
								<u>http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/yangyaping0307/waslinux.html</u>
						</font>
				</a>
		</div>
		<div>
				<font color="#0d5d91">
				</font>&nbsp;</div>
		<div>比如: linux as 3.0 ，linux 7.3 same</div>
		<div>会大概有如下的访问顺序:</div>
		<div>&nbsp;</div>
		<div>font.properties.zh_CN.Redhat</div>
		<div>
				<div>font.properties.zh_CN</div>
				<div>
						<div>font.properties.zh</div>
						<div>
								<div>font.properties</div>
								<div>&nbsp;</div>
								<div>&nbsp;</div>
								<div>1 . 将此文件拷贝到%JAVA_HOME%/jre/lib下面去<br /><br /><div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">serif.</span><span style="color: #000000">0</span><span style="color: #000000">=-</span><span style="color: #000000">b</span><span style="color: #000000">&amp;</span><span style="color: #000000">h</span><span style="color: #000000">-</span><span style="color: #000000">luxi&nbsp;serif</span><span style="color: #000000">-</span><span style="color: #000000">medium</span><span style="color: #000000">-</span><span style="color: #000000">r</span><span style="color: #000000">-</span><span style="color: #000000">normal</span><span style="color: #000000">--*-%</span><span style="color: #000000">d</span><span style="color: #000000">-*-*-</span><span style="color: #000000">p</span><span style="color: #000000">-*-</span><span style="color: #000000">iso8859</span><span style="color: #000000">-</span><span style="color: #000000">1<br />&nbsp;&nbsp;&nbsp; serif.</span><span style="color: #000000">1</span><span style="color: #000000">=-</span><span style="color: #000000">misc</span><span style="color: #000000">-</span><span style="color: #000000">ZYSong18030</span><span style="color: #000000">-</span><span style="color: #000000">medium</span><span style="color: #000000">-</span><span style="color: #000000">r</span><span style="color: #000000">-</span><span style="color: #000000">normal</span><span style="color: #000000">--*-%</span><span style="color: #000000">d</span><span style="color: #000000">-*-*-</span><span style="color: #000000">c</span><span style="color: #000000">-*-</span><span style="color: #000000">iso10646</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />serif.italic.</span><span style="color: #000000">0</span><span style="color: #000000">=-</span><span style="color: #000000">b</span><span style="color: #000000">&amp;</span><span style="color: #000000">h</span><span style="color: #000000">-</span><span style="color: #000000">luxi&nbsp;serif</span><span style="color: #000000">-</span><span style="color: #000000">medium</span><span style="color: #000000">-</span><span style="color: #000000">i</span><span style="color: #000000">-</span><span style="color: #000000">normal</span><span style="color: #000000">--*-%</span><span style="color: #000000">d</span><span style="color: #000000">-*-*-</span><span style="color: #000000">p</span><span style="color: #000000">-*-</span><span style="color: #000000">iso8859</span><span style="color: #000000">-</span><span style="color: #000000">1<br />&nbsp;&nbsp;&nbsp; serif.italic.</span><span style="color: #000000">1</span><span style="color: #000000">=-</span><span style="color: #000000">misc</span><span style="color: #000000">-</span><span style="color: #000000">ZYSong18030</span><span style="color: #000000">-</span><span style="color: #000000">medium</span><span style="color: #000000">-</span><span style="color: #000000">r</span><span style="color: #000000">-</span><span style="color: #000000">normal</span><span style="color: #000000">--*-%</span><span style="color: #000000">d</span><span style="color: #000000">-*-*-</span><span style="color: #000000">c</span><span style="color: #000000">-*-</span><span style="color: #000000">iso10646</span><span style="color: #000000">-</span><span style="color: #000000">1<br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp; <img src="http://www.blogjava.net/images/dot.gif"  alt="" /><img src="http://www.blogjava.net/images/dot.gif"  alt="" /><img src="http://www.blogjava.net/images/dot.gif"  alt="" />.<br />&nbsp; 略<br />&nbsp;&nbsp; <img src="http://www.blogjava.net/images/dot.gif"  alt="" /><img src="http://www.blogjava.net/images/dot.gif"  alt="" /><img src="http://www.blogjava.net/images/dot.gif"  alt="" /><br />&nbsp;&nbsp; .appendedfontpath</span><span style="color: #000000">=/</span><span style="color: #000000">usr</span><span style="color: #000000">/</span><span style="color: #000000">share</span><span style="color: #000000">/</span><span style="color: #000000">fonts</span><span style="color: #000000">/</span><span style="color: #000000">zh_CN</span><span style="color: #000000">/</span><span style="color: #000000">TrueType<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div><br /><br />请注意 字符串-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1，除了中间什么*-%--*--c*--之外
<div>必须跟 /usr/share/fonts/zh_CN/TrueType/fonts.dir 中的完全一致。</div><div>如果把 ZYSong --&gt; zysong 也是不行的。</div><div>&nbsp;</div><div>2. 设置中文环境</div><div>&nbsp;&nbsp; 我是在程序中如下设置的:<br /><br /><div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">System.setProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.language</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">zh</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;System.setProperty(</span><span style="color: #000000">"</span><span style="color: #000000">user.region</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">CN</span><span style="color: #000000">"</span><span style="color: #000000">);</span></div></div></div>
						</div>
				</div>
		</div>
		<br />
		<br />
		<div>3. 编译代码文件,要用</div>
		<div>
				<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; javac -encoding GBK&nbsp;&nbsp; xxxxxx.java </font>
		</div>
		<div>
				<font color="#000000">&nbsp; &nbsp;如果是用ant工具,</font>
		</div>
		<div>
				<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;target name="compile" depends="prepare" description="complie All Java source"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;copy todir="${build.dir}"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;fileset dir="${src.dir}" includes="**/*.properties" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/copy&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;javac srcdir="${src.dir}" destdir="${build.dir}" <font color="#ff0000">encoding="GBK"</font>&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;classpath refid="project.classpath" /&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&lt;/javac&gt;</font>
		</div>
		<div>
				<font color="#000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/target&gt;</font>
		</div>
		<div>
				<font size="2">
				</font>&nbsp;</div>
		<div>
				<font size="2">
				</font>&nbsp;</div>
		<div>
				<div>可以访问这里的资源: <a href="http://dev.csdn.net/article/55/55126.shtm"><font color="#0d5d91"><u>http://dev.csdn.net/article/55/55126.shtm</u></font></a><br /></div>
		</div><img src ="http://www.blogjava.net/Alpha/aggbug/47162.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2006-05-20 13:10 <a href="http://www.blogjava.net/Alpha/archive/2006/05/20/47162.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下配置jfreechart</title><link>http://www.blogjava.net/Alpha/archive/2006/05/09/45213.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 09 May 2006 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2006/05/09/45213.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/45213.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2006/05/09/45213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/45213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/45213.html</trackback:ping><description><![CDATA[在linux下，我把运行jfreechart相应的包jfreechart-0.9.18.jar、jcommon-0.9.3.jar等已经copy到tomcat的common/lib下，但是，程序运行还是提示如下错误：<br />java.lang.NoClassDefFoundError<br />org.jfree.chart.axis.Axis.&lt;init&gt;(Axis.java:180)<br />at org.jfree.chart.axis.CategoryAxis.&lt;init&gt;(CategoryAxis.java:137)<br />at org.jfree.chart.axis.CategoryAxis3D.&lt;init&gt;(CategoryAxis3D.java:78)<br />at org.jfree.chart.ChartFactory.createBarChart3D(ChartFactory.java:507)
<p>解决的办法是：<br />编辑/etc/profile文件，在最后加入export CATALINA_OPTS='-Djava.awt.headless=true'<br />即可<br /><br /><br /></p><img src ="http://www.blogjava.net/Alpha/aggbug/45213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2006-05-09 14:58 <a href="http://www.blogjava.net/Alpha/archive/2006/05/09/45213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java中获取MAC地址＆了解Mac地址</title><link>http://www.blogjava.net/Alpha/archive/2006/04/18/41584.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Tue, 18 Apr 2006 01:52:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2006/04/18/41584.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/41584.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2006/04/18/41584.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/41584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/41584.html</trackback:ping><description><![CDATA[通过调用dos命令实现获取<br /><br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.io.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img id="Codehighlighter1_37_771_Open_Image" onclick="this.style.display='none'; Codehighlighter1_37_771_Open_Text.style.display='none'; Codehighlighter1_37_771_Closed_Image.style.display='inline'; Codehighlighter1_37_771_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_37_771_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_37_771_Closed_Text.style.display='none'; Codehighlighter1_37_771_Open_Image.style.display='inline'; Codehighlighter1_37_771_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Test </span><span id="Codehighlighter1_37_771_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_37_771_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img id="Codehighlighter1_82_769_Open_Image" onclick="this.style.display='none'; Codehighlighter1_82_769_Open_Text.style.display='none'; Codehighlighter1_82_769_Closed_Image.style.display='inline'; Codehighlighter1_82_769_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_82_769_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_82_769_Closed_Text.style.display='none'; Codehighlighter1_82_769_Open_Image.style.display='inline'; Codehighlighter1_82_769_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span id="Codehighlighter1_82_769_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_82_769_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img id="Codehighlighter1_96_656_Open_Image" onclick="this.style.display='none'; Codehighlighter1_96_656_Open_Text.style.display='none'; Codehighlighter1_96_656_Closed_Image.style.display='inline'; Codehighlighter1_96_656_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_96_656_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_96_656_Closed_Text.style.display='none'; Codehighlighter1_96_656_Open_Image.style.display='inline'; Codehighlighter1_96_656_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_96_656_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_96_656_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            Process process </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Runtime.getRuntime().exec(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ipconfig /all</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            InputStreamReader ir </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> InputStreamReader(process<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    .getInputStream());<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            LineNumberReader input </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> LineNumberReader(ir);<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            String line;<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> ((line </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> input.readLine()) </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id="Codehighlighter1_477_646_Open_Image" onclick="this.style.display='none'; Codehighlighter1_477_646_Open_Text.style.display='none'; Codehighlighter1_477_646_Closed_Image.style.display='inline'; Codehighlighter1_477_646_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_477_646_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_477_646_Closed_Text.style.display='none'; Codehighlighter1_477_646_Open_Image.style.display='inline'; Codehighlighter1_477_646_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (line.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Physical Address</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_477_646_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_477_646_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    String MACAddr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> line.substring(line.indexOf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MAC address = [</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> MACAddr </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id="Codehighlighter1_688_763_Open_Image" onclick="this.style.display='none'; Codehighlighter1_688_763_Open_Text.style.display='none'; Codehighlighter1_688_763_Closed_Image.style.display='inline'; Codehighlighter1_688_763_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_688_763_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_688_763_Closed_Text.style.display='none'; Codehighlighter1_688_763_Open_Image.style.display='inline'; Codehighlighter1_688_763_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (java.io.IOException e) </span><span id="Codehighlighter1_688_763_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_688_763_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.err.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">IOException </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> e.getMessage());<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br /><br />顺便转一篇关于ＭＡＣ的文章：<br /><br />      近来在网上经常见有人问起Mac地址的问题，那么究竟Mac地址是什么？在现行的网络中，扮演什么角色呢？下面我们就一同来探讨一下关于Mac地址的知识。 <br />       什么是Mac地址? <br /><br />　　Mac地址就是在媒体接入层上使用的地址，通俗点说就是网卡的物理地址，现在的Mac地址一般都采用6字节48bit（在早期还有2字节16bit的Mac地址） <br /><br />　　前24位由是生产厂家向IEEE申请的厂商地址(这可是要花钱的哦！据说1000美元才能买一个地址块)。后24位就由生产厂家自行定以了。(早期的2字节的却不用申请) <br /><br />　　IP地址和Mac地址有什么联系和区别 <br /><br />　　大家都知道，现在有很多计算机都是通过先组建局域网，然后通过交换机和Internet连接的（大学里的校园网就是这样）。然后给每个用户分配固定的IP地址，由管理中心统一管理，这样为了管理方便就需要使用Mac地址来标志用户，防止发生混乱，明确责任（比如网络犯罪）。另外IP地址和Mac地址是有区别的，虽然他们在局域网中是一一对应的关系。IP地址是跟据现在的IPv4标准指定的，不受硬件限制比较容易记忆的地址，而Mac地址却是用网卡的物理地址，多少与硬件有关系，比较难于记忆。 <br /><br />　　如何知道自己的Mac地址 <br /><br />　　方法比较多，也比较得简单，在这里介绍两种常用的方法，在Win9x 可用：WinIPcfg获得，在2000、XP可用IPconfig -all获得。如果你已经给自己的网卡分配了IP还可以用 nbtstat -A 自己的IP 如下图，后者只能在2000/XP下使用。 <br /><br />如何获得别人的Mac <br /><br />　　其实上面已经涉及到了，如果是2000/XP用户可以用 nbtstat -A IP地址（还可以获得别的东东啊，可别学坏啊）。另外同一局域网内的，你可以用ping IP 或者ping 主机名，然后用arp -a 来获得。 <br /><br />　　如何修改自己的Mac地址 <br /><br />　　Mac地址是保存在网卡的EPROM里面，通过网卡生产厂家提供的修改程序可以更改存储器里的地址，即使网卡没有这样的设置我们也可以通过间接的方法修改，一般网卡发出的包的源Mac地址并不是网卡本身写上去的，而是应用程序提供的，只是在通常的实现中，应用程序先从网卡上得到Mac地址，每次发送的时候都用这个Mac做为源Mac而已，Windows中，网卡的Mac保存在注册表中，实际使用也是从注册表中提取的，所以只要修改注册表就可以简单的改变Mac <br /><br />　　Win9x中修改： <br /><br />　　打开注册表编辑器，在HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Service\Class\Net\下的0000，0001，0002 Win2000/XP中的修改：同样打开注册表编辑器，HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\4D36E970-E325-11CE-BFC1-08002BE10318 中的0000,0001,0002中的DriverDesc,如果在0000找到，就在0000下面添加字符串变量，命名为"NetworkAddress"，值为要设置的Mac地址，例如：000102030405 <br />完成上述操作后重启就好了。 <br /><br />　　Linux下的修改： <br /><br />　　1.必须关闭网卡设备，否则会报告系统忙，无法更改。 <br /><br />　　命令是："ifconfig eth0 down" <br /><br />　　2.修改Mac地址，这一步较Windows中的修改要简单。 <br /><br />　　命令是："ifconfig eth0 hw ether 00AABBCCDDEE" <br /><br />　　3.重新启用网卡 <br /><br />　　"ifconfig eth0 up"网卡的Mac地址更改就完成了。 <br /><br />　　现在还有很多软件提供了修改Mac地址的功能，如：Mac2001 <br /><br />　　那么既然IP和Mac地址都可以改，那么怎么防御呢？通过简单的交换机端口绑定（端口的Mac表使用静态表项），可以在每个交换机端口只连接一台主机的情况下防止修改Mac地址的盗用，如果是三层设备还可以提供：交换机端口－IP－Mac 三者的绑定，防止修改Mac的IP盗用，这种方法更有效！还有些方法如配置交换机的VLAN，使用用户认证等，都略显复杂，再次不多浪费笔墨。 <br /><br /><br /><br /><img src ="http://www.blogjava.net/Alpha/aggbug/41584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2006-04-18 09:52 <a href="http://www.blogjava.net/Alpha/archive/2006/04/18/41584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几种所见所得的在线编辑器的分析</title><link>http://www.blogjava.net/Alpha/archive/2006/02/23/32077.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Thu, 23 Feb 2006 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2006/02/23/32077.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/32077.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2006/02/23/32077.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/32077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/32077.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 以上的几种编辑器总体都不错,有心去找找,网上还有不少不错的编辑器,,找到一个合适自己的就行了,,<br>对于那些大型的CMS开发者,一个好的编辑器能省了使用者很多不必要的操作,<br>而且使web代码更为规范,清晰<br>以上内容均属于一家之言,如有纰漏,请指出,欢迎大家讨论..<br><br> <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2006/02/23/32077.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/32077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2006-02-23 11:04 <a href="http://www.blogjava.net/Alpha/archive/2006/02/23/32077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态生成HTML表单</title><link>http://www.blogjava.net/Alpha/archive/2005/10/27/17082.html</link><dc:creator>Alpha</dc:creator><author>Alpha</author><pubDate>Thu, 27 Oct 2005 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/Alpha/archive/2005/10/27/17082.html</guid><wfw:comment>http://www.blogjava.net/Alpha/comments/17082.html</wfw:comment><comments>http://www.blogjava.net/Alpha/archive/2005/10/27/17082.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/Alpha/comments/commentRss/17082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Alpha/services/trackbacks/17082.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       前段时间在做设票系统，瞎搞一会，用JavaScript搞了一些有趣的东西，因为投票的条数不定，一个题目有不定条选项，要实现一次把投票题目与不定数目选项的投票项目一次性添加进数据库，因些就想了用JavaScript写了一个动态生成的HTML的“文体框”。然后用数组把所有值写入数据库。&nbsp;&nbsp;<a href='http://www.blogjava.net/Alpha/archive/2005/10/27/17082.html'>阅读全文</a><img src ="http://www.blogjava.net/Alpha/aggbug/17082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Alpha/" target="_blank">Alpha</a> 2005-10-27 17:49 <a href="http://www.blogjava.net/Alpha/archive/2005/10/27/17082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>