??xml version="1.0" encoding="utf-8" standalone="yes"?>97成人资源,国产色综合网,xxxxx成人.comhttp://www.aygfsteel.com/alpha/category/1968.html多少春秋风雨?多少崎岖不变?/description>zh-cnWed, 27 Dec 2017 15:40:08 GMTWed, 27 Dec 2017 15:40:08 GMT60Ubuntu 14.04 安装 php nginx mysql JDK 8 svnhttp://www.aygfsteel.com/Alpha/archive/2015/10/07/427653.htmlAlphaAlphaWed, 07 Oct 2015 07:28:00 GMThttp://www.aygfsteel.com/Alpha/archive/2015/10/07/427653.htmlhttp://www.aygfsteel.com/Alpha/comments/427653.htmlhttp://www.aygfsteel.com/Alpha/archive/2015/10/07/427653.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/427653.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/427653.html安装 MySQL 5 数据?/h4>

安装 MySQL q行命o(h)Q?/p> sudo apt-get install mysql-server mysql-client

mysql的datadir从默认的/var/lib/mysql Ud/app/data/mysql下,操作如下Q?/em>
1.修改?etc/mysql/my.cnfQ改为:(x)datadir = /app/data/mysql
2.cp -a /var/lib/mysql /app/data/
3./etc/init.d/mysql start


如果出现pȝ报错Q无法启动mysqlQ日志显CZؓ(f)QCan't find file: "./mysql/plugin.frm'(errno:13)
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.

修改pȝ的chrootQ需要修?etc/apparmor.d下的相关文gQ这里以mysqlZQ需要修改:(x)usr.sbin.mysqld和abstractions/mysql两个文g?/em>

1.修改usr.sbin.mysqld里面的两行内容:(x)/var/lib/mysql/ r,改ؓ(f)Q?app/data/mysql/ r,/var/lib/mysql/** rwk,改ؓ(f)Q?app/data/mysql/** rwk,
2.修改abstractions/mysql中一行:(x)/var/lib/mysql/mysql.sock rw,改ؓ(f)Q?app/data/mysql/mysql.sock rw,
3.重新加蝲apparmor服务Q?etc/init.d/apparmor reload

安装 Nginx

在安?Nginx 之前Q如果你已经安装 Apache2 先删除在安装 nginxQ?/p>

service apache2 stop
update-rc.d -f apache2 remove
sudo apt-get remove apache2

sudo apt-get install nginx

安装 PHP5

我们必须通过 PHP-FPM 才能让PHP5正常工作Q安装命令:(x)

sudo apt-get install php5-fpm

php-fpm是一个守护进E?br />
安装mysql和GD扩展

sudo apt-get install php5-gd libapache2-mod-auth-mysql php5-mysql openssl libssl-dev

sudo apt-get install curl libcurl3 libcurl3-dev php5-curl

安装 JDK8

可以通过讉KOracle官网下蝲Q或者直接通过命o(h)行下载?/p>

lxh@ubuntu:~$ wget -c http://download.oracle.com/otn-pub/java/jdk/8u11-b12/jdk-8u25-linux-x64.tar.gz

解压安装

lxh@ubuntu:~$ mkdir -p /usr/lib/jvm 
lxh@ubuntu:~$ sudo mv jdk-8u25-linux-x64.tar.gz /usr/lib/jvm
lxh@ubuntu:~$ cd /usr/lib/jvm
lxh@ubuntu:~$ sudo tar xzvf jdk-8u25-linux-x64.tar.gz

在系l中d环境变量Q主要是PATH、CLASSPATH和JAVA_HOME?/p>

lxh@ubuntu:~$ sudo vim ~/.profile

在文件最后加?/p>

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_25/
export JRE_HOME=/usr/lib/jvm/jdk1.8.0_25/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

保存退出,q过命o(h)使脚本生效:(x)

lxh@ubuntu:~$ $source ~/.profile

配置默认JDK版本

在有的系l中?x)预装OpenJDKQ系l默认用的是这个,而不是刚才装的。所以这一步是通知pȝ使用Oracle的JDKQ非OpenJDK?/p>

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.8.0_25/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.8.0_25/bin/javac 300
sudo update-alternatives --config java

因ؓ(f)我是在虚拟机中安装的Ubuntu 14.04Q默认不安装OpenJDKQ所以没有需要选择的JDK版本。如果是在物理机上安装的Ubuntu版本Q会(x)出现几个候选项Q可用于替换 java (提供 /usr/bin/java)?/p>

====================================

~译安装nginx 
1. 下蝲最新版nginx
2.解压
3. 安装
$ ./configure  #(g)查编译前|条?/span>
$ make  #~译
$ sudo make install  #使用sudo权限q行安装
安装后\径在 /usr/local/
启动nginx 
/usr/local/nginx/sbin/nginx
1)使用?/etc/init.d/ 目录下创建名?nginx 文gQ注意没有后~名,以下内容复制到该文件中Q感谢提供脚本的兄弟Q?/span>
 1 #! /bin/sh
 2 #用来Nginx注册为系l服务的脚本
 3 #Author CplusHua
 4 #http://www.219.me
 5 #chkconfig: - 85 15
 6 set -e
 7 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 8 DESC="Nginx Daemon"
 9 NAME=nginx
10 DAEMON=/usr/local/nginx/sbin/$NAME
11 SCRIPTNAME=/etc/init.d/$NAME
12 #守护q程不存在就退?br /> 13 test -x $DAEMON ||exit 0
14 d_start(){
15   $DAEMON ||echo -n "aready running"
16 }
17 d_stop(){
18   $DAEMON -s quit || echo -n "not running"
19 }
20 d_reload(){
21   $DAEMON -s reload || echo -n "could not reload"
22 }
23 case "$1" in
24   start)
25     echo -n "Starting $DESC: $NAME"
26     d_start
27     echo "."
28   ;;
29   stop)
30     echo -n "Stopping $DESC: $NAME"
31     d_stop
32     echo "."
33   ;;
34   reload)
35     echo -n "Reloading $DESC: configurationg.."
36     d_reload
37     echo "reloaded."
38   ;;
39   restart)
40     echo -n "Restarting $DESC: $NAME"
41     d_stop
42     sleep 3
43     d_start
44     echo "."
45   ;;
46   *)
47     echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
48     exit 3
49   ;;
50 esac
51 
52 exit 0



2)d权限
    $ sudo chmod +x nginx
3)服务方式启动 如果配置服务前已启动Q执行以下命令停止Nginx?
    $ sudo service nginx stop
4)启动Nginx
    $ sudo service nginx start

pastingnginx出现connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied)的错?

处理方式是:(x)~辑/etc/php5/fpm/pool.d/www.conf文gQ?br />
以下的注释L:
    listen.owner = www-data
    listen.group = www-data
    listen.mode = 0660

然后重启php5-fpm
    $ sudo service php5-fpm restart


Ubuntu 14.04快速搭建SVN服务器及(qing)日常使用

SVN相关命o(h)了解
svnQ命令行客户?
    svnadminQ用来创建、调整或修复版本库的工具
    svnserveQsvn服务E序
    svndumpfilterQ过滤svn版本库{储数据流的工?
    svnsyncQsvn数据同步工具Q实现另外存一份相同的
    svnlookQ用来查看办本科中不同的修订版和事务

直接安装
    # apt-get install subversion
创徏版本?/strong>
    # sudo mkdir /app/svn
    # sudo svnadmin create /app/svn/prj

配置版本?/strong>
  # sudo vi svnserve.conf  #以下参数去掉注?span class="Apple-converted-space" style="font-weight: normal;"> 
  [general] 
  anon-access = none    #匿名讉K权限Q默认readQnoneZ允许讉K 
  auth-access = write  #认证用户权限  
  password-db = passwd  #用户信息存放文gQ默认在版本?conf下面Q也可以l对路径指定文g位置 
  authz-db = authz

  # sudo vi passwd    #格式是用户名=密码Q采用明文密?span class="Apple-converted-space"> 
  [users] 
  xiaoming = 123 
  zhangsan = 123 
   lisi = 123

# sudo vi authz  
  [groups]          #定义l的用户 
  manager = xiaoming 
  core_dev = zhangsan,lisi 
  [repos:/]          #以根目录起始的repos版本库managerlؓ(f)d权限 
  @manager = rw 
  [repos:/media]    #core_dev对repos版本库下media目录写权?span class="Apple-converted-space"> 
  @core_dev = rw

     
 启动svn服务

  # sudo svnserve -d -r /app/svn
  # 查看是否启动成功Q可看的监听3690端口
  # sudo netstat -antp |grep svnserve
  tcp    0      0 0.0.0.0:3690    0.0.0.0:*      LISTEN    28967/svnserve 
  # 如果惛_闭服务,可用pkill svnserve

讉Ksvn
  # 讉Krepos版本库地址
  svn://192.168.1.100/prj


备䆾与恢?/strong>
   svnadmin dump备䆾
  # 完整备䆾
  svnadmin dump /app/svn/prj > YYmmdd_fully_backup.svn
  # 完整压羃备䆾
  svnadmin dump /app/svn/prj | gzip > YYmmdd_fully_backup.gz
  # 备䆾恢复
  svnadmin load /app/svn/prj < YYmmdd_fully_backup.svn
  zcat YYmmdd_fully_backup.gz | svnadmin load repos
  ### 增量备䆾 ###
  # 先完整备?br />   svnadmin dump /app/svn/prj -r 0:100 > YYmmdd_incremental_backup.svn
  # 再增量备?br />   svnadmin dump /app/svn/prj -r 101:200 --incremental > YYmmdd_incremental_backup.svn
  
svnadmin hotcopy备䆾

  # 备䆾
  svnadmin hotcopy /app/svn/prj YYmmdd_fully_backup --clean-logs
  # 恢复
  svnadmin hotcopy YYmmdd_fully_backup /app/svn/prj


Tomcat 内存优化

Linux下修改JVM内存大小

要添加在tomcat 的bin 下catalina.sh 里,位置cygwin=false?。注意引可带上,U色的ؓ(f)新添加的.

# OS specific support. $var _must_ be set to either true or false.
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=64M -XX:MaxPermSize=128m"
cygwin=false

 




Alpha 2015-10-07 15:28 发表评论
]]>
jsp面中,JSTL El表达式字W串比较常用Ҏ(gu)http://www.aygfsteel.com/Alpha/archive/2014/08/05/416592.htmlAlphaAlphaTue, 05 Aug 2014 07:24:00 GMThttp://www.aygfsteel.com/Alpha/archive/2014/08/05/416592.htmlhttp://www.aygfsteel.com/Alpha/comments/416592.htmlhttp://www.aygfsteel.com/Alpha/archive/2014/08/05/416592.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/416592.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/416592.html阉K云服务器优惠? /></a>
<p style=fn:contains 判断字符串是否包含另外一个字W串 <c:if test="${fn:contains(name, searchString)}">
fn:containsIgnoreCase 判断字符串是否包含另外一个字W串(大小写无? <c:if test="${fn:containsIgnoreCase(name, searchString)}">
fn:endsWith 判断字符串是否以另外字符串结?<c:if test="${fn:endsWith(filename, ".txt")}">
fn:escapeXml 把一些字W{成XML表示Q例?<字符应该转ؓ(f)< ${fn:escapeXml(param:info)}
fn:indexOf 子字W串在母字符串中出现的位|?${fn:indexOf(name, "-")}
fn:join 数l中的数据联合成一个新字符Ԍq用指定字W格开 ${fn:join(array, ";")}
fn:length 获取字符串的长度Q或者数l的大小 ${fn:length(shoppingCart.products)}
fn:replace 替换字符串中指定的字W?${fn:replace(text, "-", "?")}
fn:split 把字W串按照指定字符切分 ${fn:split(customerNames, ";")}
fn:startsWith 判断字符串是否以某个子串开?<c:if test="${fn:startsWith(product.id, "100-")}">
fn:substring 获取子串 ${fn:substring(zip, 6, -1)}
fn:substringAfter 获取从某个字W所在位|开始的子串  ${fn:substringAfter(zip, "-")}
fn:substringBefore 获取从开始到某个字符所在位|的子串 ${fn:substringBefore(zip, "-")}
fn:toLowerCase 转ؓ(f)写 ${fn.toLowerCase(product.name)}
fn:toUpperCase 转ؓ(f)大写字符 ${fn.UpperCase(product.name)}
fn:trim 去除字符串前后的I格 ${fn.trim(name)}

函数 
描述
fn:contains(string, substring)
如果参数string中包含参数substringQ返回true

fn:containsIgnoreCase(string, substring)
如果参数string中包含参数substringQ忽略大写Q,q回true

fn:endsWith(string, suffix)
如果参数 string 以参数suffixl尾Q返回true

fn:escapeXml(string)
有Ҏ(gu)意义的XML (和HTML)转换为对应的XML character entity codeQƈq回

fn:indexOf(string, substring)
q回参数substring在参数string中第一ơ出现的位置

fn:join(array, separator)
一个给定的数组array用给定的间隔Wseparator串在一Pl成一个新的字W串q返回?br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:length(item)
q回参数item中包含元素的数量。参数Itemcd是数l、collection或者String。如果是Stringcd,q回值是String中的字符数?br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:replace(string, before, after)
q回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方Qƈq回替换后的l果 

fn:split(string, separator)
q回一个数l,以参数separator 为分割符分割参数stringQ分割后的每一部分是数组的一个元?br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:startsWith(string, prefix)
如果参数string以参数prefix开_(d)q回true

fn:substring(string, begin, end)
q回参数string部分字符? 从参数begin开始到参数end位置Q包括end位置的字W?br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:substringAfter(string, substring)
q回参数substring在参数string中后面的那一部分字符?? 

fn:substringBefore(string, substring)
q回参数substring在参数string中前面的那一部分字符?br style="margin: 0px; padding: 0px; list-style-type: none;" />
fn:toLowerCase(string)
参数string所有的字符变ؓ(f)写Qƈ其q回

fn:toUpperCase(string)
参数string所有的字符变ؓ(f)大写Qƈ其q回

fn:trim(string)


在jsp?使用EL表达式时Q不可以使用java提供的功能,比如indexOf(){?br style="margin: 0px; padding: 0px; list-style-type: none;" /> <c:if test="${Boolean.valueOf(requestScope.addresult)==false}"> 

报错 
The function valueOf must be used with a prefix when a default namespace is not specified

阉K云服务器优惠? /></a><img src =

Alpha 2014-08-05 15:24 发表评论
]]>
lighttpd配置之代理、负载均?mod_proxy)http://www.aygfsteel.com/Alpha/archive/2011/06/22/352846.htmlAlphaAlphaWed, 22 Jun 2011 15:20:00 GMThttp://www.aygfsteel.com/Alpha/archive/2011/06/22/352846.htmlhttp://www.aygfsteel.com/Alpha/comments/352846.htmlhttp://www.aygfsteel.com/Alpha/archive/2011/06/22/352846.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/352846.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/352846.html使用proxy可以使lighttpd成ؓ(f)一个代理服务器。例如将java的请求全都{向给jboss来处?br />mod_proxy有三个标{:(x)
proxy.debugQ?或?. 表示是否启动调试模式?1表示启动
proxy.balanceQ用负载均衡的模式。可以“hash”Q?#8220;round-robin”,”fair”三种模式之一?br />’round-robin’ 交替轮训, ‘hash’ Ҏ(gu)h的url产生一?hash|来确保同L(fng)h的url都访问同L(fng)L
‘fair’ is the normal load-based, passive balancing.

语法l构

 ( <extension> =>
      ( [ <name> => ]
        ( "host" => <string> ,
          "port" => <integer> ),
        ( "host" => <string> ,
          "port" => <integer> )
      ),
      <extension> => …
    )
 

* : 表示hurl的文件扩展名或者文件前~ (如果?#8221;/”开?; 可以是空 (“”) 表示所有的h
* : 可选名U?br />* “host”: 被代理的服务器的ip
* “port”: 被代理服务器的端口,默认?0

如:(x)

proxy.server = ( ".jsp" =>
                       ( (
                           "host" => "10.0.0.242",
                           "port" => 8080
                         ) )
                     )
 

再如Q?/p>

$HTTP["host"] == "www.domain.me" {
        proxy.server  = ( "" =>
        ( (
                "host" => "127.0.0.1",
                "port"=>"8080"  
        ) )
        )
}
 

负蝲均衡的例子,例如?个squid~存Q需要用lighttpd做负载均?/p>

  $HTTP["host"] == "www.example.org" {
    proxy.balance = "hash"
    proxy.server  = ( "" => ( ( "host" => "10.0.0.10" ),
                              ( "host" => "10.0.0.11" ),
                              ( "host" => "10.0.0.12" ),
                              ( "host" => "10.0.0.13" ),
                              ( "host" => "10.0.0.14" ),
                              ( "host" => "10.0.0.15" ),
                              ( "host" => "10.0.0.16" ),
                              ( "host" => "10.0.0.17" ) ) )
  }
 

当一个服务器宕机后,它上面的h被转移l其他设备server



Alpha 2011-06-22 23:20 发表评论
]]>
linux+nginx+tomcat负蝲均衡Q实现session同步http://www.aygfsteel.com/Alpha/archive/2011/06/21/352745.htmlAlphaAlphaTue, 21 Jun 2011 07:38:00 GMThttp://www.aygfsteel.com/Alpha/archive/2011/06/21/352745.htmlhttp://www.aygfsteel.com/Alpha/comments/352745.htmlhttp://www.aygfsteel.com/Alpha/archive/2011/06/21/352745.html#Feedback5http://www.aygfsteel.com/Alpha/comments/commentRss/352745.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/352745.html阅读全文

Alpha 2011-06-21 15:38 发表评论
]]>
CLASSPATHhttp://www.aygfsteel.com/Alpha/archive/2011/05/09/349848.htmlAlphaAlphaMon, 09 May 2011 08:29:00 GMThttp://www.aygfsteel.com/Alpha/archive/2011/05/09/349848.htmlhttp://www.aygfsteel.com/Alpha/comments/349848.htmlhttp://www.aygfsteel.com/Alpha/archive/2011/05/09/349848.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/349848.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/349848.html CATALINA_HOME D:\tomcat
CLASSPATH .;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
JAVA_HOME D:\Java\jdk1.6.0_24
Path ;D:\Java\jdk1.6.0_24\bin
TOMCAT_HOME D:\tomcat


Alpha 2011-05-09 16:29 发表评论
]]>
如何选择开源许可证Q?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2011/05/03/349407.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/349407.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2011/05/03/349407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/349407.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/349407.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="asset-body"> <p>如何Z码选择开源许可证Q这是一个问题?/p> </div> <div class="wmqeeuq" id="more" class="asset-more"> <p>世界上的开源许可证Q大概有<a target="_blank">上百U?/a>。很有人搞得清楚它们的区别。即使在最行的六U?---<a target="_blank">GPL</a>?a target="_blank">BSD</a>?a target="_blank">MIT</a>?a target="_blank">Mozilla</a>?a target="_blank">Apache</a>?a target="_blank">LGPL</a>----之中做选择Q也很复杂?/p> <p>乌克兰程序员<a target="_blank">Paul Bagwell</a>Q画了一张分析图Q说明应该怎么选择。这是我见过的最单的讲解Q只用两分钟Q你p搞清楚这六种许可证之间的最大区别?/p> <p>下面是我制作的中文版Q请点击看大图?/p> <p><a target="_blank"><img alt="" src="http://static.oschina.net/uploads/img/201105/02214312_HMXD.png" /></a><br /> </p> </div><img src ="http://www.aygfsteel.com/Alpha/aggbug/349407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2011-05-03 09:05 <a href="http://www.aygfsteel.com/Alpha/archive/2011/05/03/349407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>utf-8目生成javadoc ~码GBK 的不可映字W?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2011/04/26/349024.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/349024.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2011/04/26/349024.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/349024.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/349024.html</trackback:ping><description><![CDATA[<br /> <br /> <br /> 完善api-docQ用eclipse生成javadoc的时候发?#8220;~码 GBK 的不可映字W?”其实是字W编码问题?<br /> 打开eclipseQproject -> Generate javadoc 一一的选你要输出javadoc的项目,最后一步中VM讄行中加入以下代码 <br /> -encoding utf-8 -charset utf-8  <br /> -encoding utf-8 -charset utf-8 -J-Xmx256m<br /> q次操作Q输出的html代码不会(x)发生“~码 GBK 的不可映字W?”问题Q而且html字符~码都设ZUTF-8Q问题彻底解?img src ="http://www.aygfsteel.com/Alpha/aggbug/349024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2011-04-26 11:15 <a href="http://www.aygfsteel.com/Alpha/archive/2011/04/26/349024.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BeanUtils & PropertyUtils & MethodUtilscM用方?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2010/05/10/320475.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/320475.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2010/05/10/320475.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/320475.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/320475.html</trackback:ping><description><![CDATA[<p>一、简介:(x) <br /> <br /> BeanUtils提供?Java反射和自省API的包装。其主要目的是利用反机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积Q增加了代码长度和阅M码的隑ֺ?<br /> <br /> 二、用法:(x) <br /> <br /> BeanUtils是这个包里比较常用的一个工L(fng)Q这里只介绍它的copyProperties()Ҏ(gu)。该Ҏ(gu)定义如下Q?<br /> </p> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div> </div> <ol class="dp-j"> <li><span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">static</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> copyProperties(java.lang.Object dest,java.lang.Object orig)   </span></span></li> <li><span id="wmqeeuq" class="keyword">throws</span><span> java.lang.IllegalAccessException,   </span></span></li> <li><span>       java.lang.reflect.InvocationTargetException  </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 /> 如果你有两个h很多相同属性的JavaBeanQ一个很常见的情况就是Struts里的PO对象Q持久对象)(j)和对应的ActionFormQ例?Teacher和TeacherForm。我们一般会(x)在Action里从ActionForm构造一个PO对象Q传l的方式是用类g面的语句对属性逐个赋|(x) <br /> </p> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div> </div> <ol class="dp-j"> <li><span><span id="wmqeeuq" class="comment">//得到TeacherForm </span><span>  </span></span></li> <li><span>TeacherForm teacherForm=(TeacherForm)form;   </span></li> <li><span id="wmqeeuq" class="comment">//构造Teacher对象 </span><span>  </span></span></li> <li><span>Teacher teacher=</span><span id="wmqeeuq" class="keyword">new</span><span> Teacher();   </span></span></li> <li><span id="wmqeeuq" class="comment">//赋?</span><span>  </span></span></li> <li><span>teacher.setName(teacherForm.getName());   </span></li> <li><span>teacher.setAge(teacherForm.getAge());   </span></li> <li><span>teacher.setGender(teacherForm.getGender());   </span></li> <li><span>teacher.setMajor(teacherForm.getMajor());   </span></li> <li><span>teacher.setDepartment(teacherForm.getDepartment());   </span></li> <li><span>  </span></li> <li><span id="wmqeeuq" class="comment">//持久化Teacher对象到数据库 </span><span>  </span></span></li> <li><span>HibernateDAO=;   </span></li> <li><span>HibernateDAO.save(teacher);   </span></li> <li><span>  </span></li> <li><span>  </span></li> <li><span>而用BeanUtils后,代码大大改观了Q如下所C:(x)   </span></li> <li><span id="wmqeeuq" class="comment">//得到TeacherForm </span><span>  </span></span></li> <li><span>TeacherForm teacherForm=(TeacherForm)form;   </span></li> <li><span id="wmqeeuq" class="comment">//构造Teacher对象 </span><span>  </span></span></li> <li><span>Teacher teacher=</span><span id="wmqeeuq" class="keyword">new</span><span> Teacher();   </span></span></li> <li><span id="wmqeeuq" class="comment">//赋?</span><span>  </span></span></li> <li><span>BeanUtils.copyProperties(teacher,teacherForm);   </span></li> <li><span id="wmqeeuq" class="comment">//持久化Teacher对象到数据库 </span><span>  </span></span></li> <li><span>HibernateDAO=;   </span></li> <li><span>HibernateDAO.save(teacher);  </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后,代码大大改观了Q如下所C:(x) //得到TeacherForm TeacherForm teacherForm=(TeacherForm)form; //构造Teacher对象 Teacher teacher=new Teacher(); //赋? BeanUtils.copyProperties(teacher,teacherForm); //持久化Teacher对象到数据库 HibernateDAO=; HibernateDAO.save(teacher); </pre> <p><br /> 如果Teacher和TeacherForm间存在名UC相同的属性,则BeanUtils不对q些属性进行处理,需要程序员手动处理。例?Teacher包含modifyDateQ该属性记录最后修Ҏ(gu)期,不需要用户在界面中输入)(j)属性而TeacherForm无此属性,那么在上面代码的 copyProperties()后还要加上一句:(x) <br /> </p> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ><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 id="wmqeeuq" class="keyword">new</span><span> Date());  </span></span></li> </ol> </div> <pre class="java" style="display: none" name="code">teacher.setModifyDate(new Date()); </pre> <p><br /> 怎么P很方便吧Q除BeanUtils外还有一个名为PropertyUtils的工L(fng)Q它也提供copyProperties()Ҏ(gu)Q作用与 BeanUtils的同名方法十分相|主要的区别在于后者提供类型{换功能,卛_C个JavaBean的同名属性ؓ(f)不同cdӞ在支持的数据cd范围内进行{换,而前者不支持q个功能Q但是速度?x)更快一些。BeanUtils支持的{换类型如下:(x) <br /> <br /> <br />     * java.lang.BigDecimal <br />     * java.lang.BigInteger <br />     * boolean and java.lang.Boolean <br />     * byte and java.lang.Byte <br />     * char and java.lang.Character <br />     * java.lang.Class <br />     * double and java.lang.Double <br />     * float and java.lang.Float <br />     * int and java.lang.Integer <br />     * long and java.lang.Long <br />     * short and java.lang.Short <br />     * java.lang.String <br />     * java.sql.Date <br />     * java.sql.Time <br />     * java.sql.Timestamp <br /> <br /> <br /> q里要注意一点,java.util.Date是不被支持的Q而它的子cjava.sql.Date是被支持的。因此如果对象包含时间类型的属性,且希望被转换的时候,一定要使用java.sql.Datecd。否则在转换时会(x)提示argument mistype异常?<br /> <br /> 三、优~点Q?<br /> <br /> Apache Jakarta Commons目非常有用。我曑֜许多不同的项目上或直接或间接C用各U流行的commonslg。其中的一个强大的lg是BeanUtils。我说明如何用BeanUtilslocal实体bean转换为对应的value 对象Q?<br /> </p> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div> </div> <ol class="dp-j"> <li><span><span>BeanUtils.copyProperties(aValue, aLocal);  </span></span></li> </ol> </div> <pre class="java" style="display: none" name="code">BeanUtils.copyProperties(aValue, aLocal);</pre> <p><br /> 上面的代码从aLocal对象复制属性到aValue对象。它相当单!它不localQ或对应的valueQ对象有多少个属性,只管q行复制。我们假设local对象?00个属性。上面的代码使我们可以无需键入臛_100行的冗长、容易出错和反复的get和setҎ(gu)调用。这太棒了!太强大了Q太有用了! <br /> <br /> BeanUtils.copyProperties ?PropertyUtils.copyProperties 都是拯对象属性的Ҏ(gu)QBeanUtils 支持cd转换Q?PropertyUtils 不支持。但?BeanUtils 不允许对象的属性gؓ(f) nullQPropertyUtils 可以拯属性?null 的对象?<br /> 如果对象属性gؓ(f) nullQBeanUtils.copyProperties Ҏ(gu)?x)?commons.beanutils.ConversionException: No value specified 错误?<br /> <br /> 现在Q还有一个坏消息Q用BeanUtils的成本惊人地昂贵Q我做了一个简单的试QBeanUtils所p的时间要过取数据、将其复制到对应?value对象Q通过手动调用get和setҎ(gu)Q,以及(qing)通过串行化将其返回到q程的客h的时间d。所以要心使用q种威力Q?<br /> <br /> <br /> MethodUtilscM用方? <br /> </p> <div id="wmqeeuq" class="dp-highlighter"> <div id="wmqeeuq" class="bar"> <div id="wmqeeuq" class="tools">Java代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" ><img alt="复制代码" src="http://gundumw100.javaeye.com/images/icon_copy.gif" /></a></div> </div> <ol class="dp-j"> <li><span><span id="wmqeeuq" class="keyword">package</span><span> rong.propertyUtils;   </span></span></li> <li><span>  </span></li> <li><span id="wmqeeuq" class="keyword">import</span><span> java.util.Map;   </span></span></li> <li><span id="wmqeeuq" class="keyword">import</span><span> org.apache.commons.beanutils.MethodUtils;   </span></span></li> <li><span id="wmqeeuq" class="keyword">import</span><span> org.apache.commons.beanutils.PropertyUtils;   </span></span></li> <li><span>  </span></li> <li><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">class</span><span> TestPropertyUtils {   </span></span></li> <li><span>       </span></li> <li><span>    </span><span id="wmqeeuq" class="keyword">public</span><span> </span><span id="wmqeeuq" class="keyword">static</span><span> </span><span id="wmqeeuq" class="keyword">void</span><span> main(String[] args) </span><span id="wmqeeuq" class="keyword">throws</span><span> Exception{   </span></span></li> <li><span>           </span></li> <li><span>        Entity entity = </span><span id="wmqeeuq" class="keyword">new</span><span> Entity();   </span></span></li> <li><span>           </span></li> <li><span>        </span><span id="wmqeeuq" class="comment">//通过PropertyUtils的getPropertyҎ(gu)获取指定属性的?</span><span>  </span></span></li> <li><span>        Integer id = (Integer)PropertyUtils.getProperty(entity, </span><span id="wmqeeuq" class="string">"id"</span><span>);   </span></span></li> <li><span>        String name = (String)PropertyUtils.getProperty(entity, </span><span id="wmqeeuq" class="string">"name"</span><span>);   </span></span></li> <li><span>        System.out.println(</span><span id="wmqeeuq" class="string">"id = "</span><span> + id + </span><span id="wmqeeuq" class="string">"  name = "</span><span> + name);   </span></span></li> <li><span>           </span></li> <li><span>        </span><span id="wmqeeuq" class="comment">//调用PropertyUtils的setPropertyҎ(gu)讄entity的指定属?</span><span>  </span></span></li> <li><span>        PropertyUtils.setProperty(entity, </span><span id="wmqeeuq" class="string">"name"</span><span>, </span><span id="wmqeeuq" class="string">"心梦帆媄(jing)"</span><span>);   </span></span></li> <li><span>        System.out.println(</span><span id="wmqeeuq" class="string">"name = "</span><span> + entity.getName());   </span></span></li> <li><span>           </span></li> <li><span>        </span><span id="wmqeeuq" class="comment">//通过PropertyUtils的describeҎ(gu)把entity的所有属性与属性值封装进Map?</span><span>  </span></span></li> <li><span>        Map map = PropertyUtils.describe(entity);   </span></li> <li><span>        System.out.println(</span><span id="wmqeeuq" class="string">"id = "</span><span> + map.get(</span><span id="wmqeeuq" class="string">"id"</span><span>) + </span><span id="wmqeeuq" class="string">"  name = "</span><span> + map.get(</span><span id="wmqeeuq" class="string">"name"</span><span>));   </span></span></li> <li><span>           </span></li> <li><span>        </span><span id="wmqeeuq" class="comment">//通过MethodUtils的invokeMethodҎ(gu),执行指定的entity中的Ҏ(gu)(无参的情? </span><span>  </span></span></li> <li><span>        System.out.println( MethodUtils.invokeMethod(entity, </span><span id="wmqeeuq" class="string">"haha"</span><span>, </span><span id="wmqeeuq" class="keyword">null</span><span>) );   </span></span></li> <li><span>           </span></li> <li><span>        </span><span id="wmqeeuq" class="comment">//通过MethodUtils的invokeMethodҎ(gu),执行指定的entity中的Ҏ(gu)Q?参的情况Q?</span><span>  </span></span></li> <li><span>        MethodUtils.invokeMethod(entity, </span><span id="wmqeeuq" class="string">"sayHelle"</span><span>, </span><span id="wmqeeuq" class="string">"心梦帆媄(jing)"</span><span>);   </span></span></li> <li><span>           </span></li> <li><span>        </span><span id="wmqeeuq" class="comment">//通过MethodUtils的invokeMethodҎ(gu),执行指定的entity中的Ҏ(gu)Q多参的情况Q?</span><span>  </span></span></li> <li><span>        Object[] params = </span><span id="wmqeeuq" class="keyword">new</span><span> Object[]{</span><span id="wmqeeuq" class="keyword">new</span><span> Integer(</span><span id="wmqeeuq" class="number">10</span><span>),</span><span id="wmqeeuq" class="keyword">new</span><span> Integer(</span><span id="wmqeeuq" class="number">12</span><span>)};   </span></span></li> <li><span>        String msg = (String)MethodUtils.invokeMethod(entity, </span><span id="wmqeeuq" class="string">"countAges"</span><span>, params);   </span></span></li> <li><span>        System.out.println(msg);   </span></li> <li><span>           </span></li> <li><span>    }   </span></li> <li><span>  </span></li> <li><span>}  </span></li> </ol> </div><img src ="http://www.aygfsteel.com/Alpha/aggbug/320475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2010-05-10 14:07 <a href="http://www.aygfsteel.com/Alpha/archive/2010/05/10/320475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache tomcat 日志分析http://www.aygfsteel.com/Alpha/archive/2010/03/31/317082.htmlAlphaAlphaWed, 31 Mar 2010 08:55:00 GMThttp://www.aygfsteel.com/Alpha/archive/2010/03/31/317082.htmlhttp://www.aygfsteel.com/Alpha/comments/317082.htmlhttp://www.aygfsteel.com/Alpha/archive/2010/03/31/317082.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/317082.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/317082.html最q在Lq方面的资料:

 

1,查看apacheq程:
ps aux | grep httpd | grep -v grep | wc -l

2,查看80端口的tcpq接:
netstat -tan | grep "ESTABLISHED" | grep ":80" | wc -l

3,通过日志查看当天ipq接敎ͼqo(h)重复:

cat access_log | grep "24/Jul/2007" | awk '{print $2}' | sort | uniq -c | sort -nr

4,当天ipq接数最高的ip都在q些什?原来是蜘?:
cat access_log | grep "24/Jul/2007:00" | grep "61.135.166.230" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10

5,当天讉K面排前10的url:

cat access_log | grep "24/Jul/2007:00" | awk '{print $8}' | sort | uniq -c | sort -nr | head -n 10

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
接着从日志里查看该ip在干?
cat access_log | grep 220.181.38.183| awk '{print $1"\t"$8}' | sort | uniq -c | sort -nr | less


7,查看某一旉D늚ipq接?
grep "2006:0[7-8]" www20060723.log | awk '{print $2}' | sort | uniq -c| sort -nr | wc -l



Alpha 2010-03-31 16:55 发表评论
]]>
如何删除JSP~译后的Ihttp://www.aygfsteel.com/Alpha/archive/2010/03/25/316505.htmlAlphaAlphaThu, 25 Mar 2010 02:12:00 GMThttp://www.aygfsteel.com/Alpha/archive/2010/03/25/316505.htmlhttp://www.aygfsteel.com/Alpha/comments/316505.htmlhttp://www.aygfsteel.com/Alpha/archive/2010/03/25/316505.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/316505.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/316505.html
    当你在客L(fng)用view source看JSP生成的代码时Q会(x)发现有很多空行,他们是由< %...% >后的回R换行而生成的Q也是说每一行由< %...% >包含的JSP代码到客L(fng)都变成一个空行,虽然不媄(jing)响浏览,但还是希望能把他们删掉。这里将为大家介l如何删除JSP~译后的I?/ul>

      删除JSP~译后的I办法如下Q?/strong>

      1. 支持JSP 2.1+ Q在每个要去I的页面里包含下面代码Q?/p>

              
      1. <%@ page trimDirectiveWhitespaces="true" %> 

      ?Tomcat 6.0.14下测试JSP~译成功

      2. 支持servlet 2.5+, ?web.xml?XSD版本?.5Q在web.xml中加入如下代?/p>

              
      1. <jsp-config> 
      2. <jsp-property-group> 
      3. <url-pattern>*.jsp</url-pattern> 
      4. <trim-directive-whitespaces>true</trim-directive-whitespaces> 
      5. </jsp-property-group> 
      6. </jsp-config> 

      在tomcat 6.0.14下测试JSP~译成功

      3. Tomcat 5.5.x+Q在Tomcat安装目录/conf/web.xml中找到名?jsp"的servletQ添加下面一D代码:(x)

              
      1. <init-param> 
      2. <param-name>trimSpaces</param-name> 
      3. <param-value>true</param-value> 
      4. </init-param> 

      本h过

      trimSpaces          Should white spaces in template text between  actions or directives be trimmed?  [false]

      在实际操作中我加入了5.5的配|到面中ƈ反复启动了几ơtomcat但是q是没有成功Q后来才惛_JSP已经~译成servlet了所以没有能改变Q进入到tomcat中的work目录把已l进行JSP~译的class全部删除Q哇哈哈Q整个世界清净了,成功删除I

       

       



    Alpha 2010-03-25 10:12 发表评论
    ]]>java.lang.OutOfMemoryError: PermGen space?qing)其解决?gu)http://www.aygfsteel.com/Alpha/archive/2009/06/19/283242.htmlAlphaAlphaFri, 19 Jun 2009 08:04:00 GMThttp://www.aygfsteel.com/Alpha/archive/2009/06/19/283242.htmlhttp://www.aygfsteel.com/Alpha/comments/283242.htmlhttp://www.aygfsteel.com/Alpha/archive/2009/06/19/283242.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/283242.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/283242.html1

    PermGen space的全U是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决Ҏ(gu)也一定是加大内存说说Z么会(x)内存益出Q这一部分用于存放Class和Meta的信?Class在被 Load的时候被攑օPermGen space区域Q它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会(x)在主E序q行期对PermGen spaceq行清理Q所以如果你的APP?x)LOAD很多CLASS的话,很可能出现PermGen space错误q种错误常见在web服务器对JSPq行pre compile的时?br /> Ҏ(gu)Ҏ(gu)Q?Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
    2
    在tomcat中redeploy时出现outofmemory的错?
    可以有以下几个方面的原因:
    Q?使用了proxool,因ؓ(f)proxool内部包含了一个老版本的cglib.
    2, log4j,最好不?只用common-logging
    3, 老版本的cglib,快点更新到最新版
    Q,更新到最新的hibernate3.2

    3

    q里以tomcat环境ZQ其它WEB服务器如jboss,weblogic{是同一个道?br /> 一java.lang.OutOfMemoryError: PermGen space
    PermGen space的全U是Permanent Generation space,是指内存的永久保存区?
    q块内存主要是被JVM存放Class和Meta信息?Class在被Loader时就?x)被攑ֈPermGen space?
    它和存放cd?Instance)的Heap区域不同,GC(Garbage Collection)不会(x)在主E序q行期对
    PermGen spaceq行清理Q所以如果你的应用中有很多CLASS的话,很可能出现PermGen space错误,
    q种错误常见在web服务器对JSPq行pre compile的时候如果你的WEB APP下都用了大量的第三方jar, 其大?br /> 过了jvm默认的大?4M)那么׃(x)产生此错误信息了
    解决Ҏ(gu)Q?手动讄MaxPermSize大小
    修改TOMCAT_HOME/bin/catalina.sh
    在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:(x)
    JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m
    Q将相同的第三方jar文gUȝ到tomcat/shared/lib目录下,q样可以辑ֈ减少jar 文档重复占用内存的目?br /> 二java.lang.OutOfMemoryError: Java heap space
    Heap size 讄
    JVM堆的讄是指javaE序q行q程中JVM可以调配使用的内存空间的讄.JVM在启动的时候会(x)自动讄Heap size的|
    其初始空??Xms)是物理内存的1/64Q最大空?-Xmx)是物理内存的1/4可以利用JVM提供?Xmn -Xms -Xmx{选项?br /> q行讄Heap size 的大是Young Generation 和Tenured Generaion 之和
    提示Q在JVM中如?8Q的旉是用于GC且可用的Heap size 不2Q的时候将抛出此异怿?br /> 提示QHeap Size 最大不要超q可用物理内存的80Q,一般的要将-Xms?Xmx选项讄为相同,?Xmn?/4?Xmx?
    解决Ҏ(gu)Q手动设|Heap size
    修改TOMCAT_HOME/bin/catalina.sh
    在echo "Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行:(x)
    JAVA_OPTS="-server -Xms800m -Xmx800m -XX:MaxNewSize=256m"
    三实例,以下l出1G内存环境下java jvm 的参数设|参考:(x)
    JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

    三相兌?br /> 题外话:(x)l常看到|友抱怨tomcat的性能不如...Q不E_{,其实Ҏ(gu)W者几q的l验Q从"互联星空到现在的房门户|,我们
    均用tomcat作ؓ(f)WEB服务器,每天讉K量百万多Qtomcat仍然q行良好大家有问题多从自q序入手,多看看java的DOC文档
    q详l了解JVM的知识这样开发的E序才会(x)健壮



    Alpha 2009-06-19 16:04 发表评论
    ]]>
    Jconsole的?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2008/11/20/241650.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/241650.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2008/11/20/241650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/241650.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/241650.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="blog_content">JDK中Jconsole的?<br /> 2008-04-03 14:16 <br /> JAVA应用E序打成jar包的部v方式Q?<br /> <br /> 一、Local方式 <br /> 1、cmdq入dos下,q入到应用程序所在目录,执行语句如下Q?<br /> java -Dcom.sun.management.jmxremote -jar E序?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 /> q出不来的话 直接 在dos?jconsole q程?<br /> <br /> 2、启动jdk_home\bin目录下的Jconsole.exe可以看到有一?<br /> <br /> 本地的连接在里面。点击连接就可以q入相应的监视界面了?<br /> <br /> 二、JMX方式Q远E连接)(j)Q?<br /> 1、cmdq入dos下,q入到应用程序所在目录,执行语句如下Q?<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炚wU。在JMX <br /> <br /> URL:中输入语句如下:(x) <br /> <br /> service:jmx:rmi:///jndi/rmi://192.168.***.***:8903/jmxr <br /> <br /> mi <br /> 点连接就可以q行q程监控?<br /> <br /> <br /> <br /> web应用E序在tomcat中部|JMXQ示例:(x)tomcat-6.0.14Q?<br /> 1、启动tomcat\bin目录下的tomcat6w.exeQ在JAVA_OPTS里设 <br /> <br /> |如下:(x) <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 /> 注意Q不能有I格Q不然tomcat不能启动?<br /> <br /> 2、tomcat启动成功后,可以在另一台机器上启动 <br /> <br /> jdk_home\bin目录下的Jconsole.exe炚wU。在JMX URL:中输 <br /> <br /> 入语句如下:(x) <br /> <br /> service:jmx:rmi:///jndi/rmi://192.168.***.***:8903/jmxr <br /> <br /> mi <br /> 点连接就可以q行q程监控?<br /> <br /> 以上是JMX基本部vQ没有涉?qing)到验证斚wQ如果用的话,?<br /> <br /> 能会(x)有漏z,因ؓ(f)SSL和authenticate讄为false的话Q那?<br /> <br /> 8903端口有可能有暴露的危险?<br /> <br /> 如果惌行密码验证话Q可以在|上找资料,自己q行调试?<br /> <br /> <br /> 我自q应用Q?<br /> 1.修改Linux下tomcat的bin目录下的catalina.sh文g <br /> d <br /> JAVA_OPTS=-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false <br /> -Dcom.sun.management.jmxremote.port=7080  <br /> -Dcom.sun.management.jmxremote <br /> 2.修改/etc/hosts文g下的localhost对应的IPQ?27.0.0.1Q地址Q改为linux自n的IP?0.0.0.157. <br /> 3.打开jconsoleq程输入 10.0.0.157:7080 <br /> <br /> ?<br /> <br /> Eden Space (heap)Q?内存最初从q个U程池分配给大部分对象?<br /> Survivor Space (heap)Q用于保存在eden space内存池中l过垃圾回收后没有被回收的对象?<br /> Tenured Generation (heap)Q用于保持已l在 survivor space内存池中存在了一D|间的对象?<br /> Permanent Generation (non-heap): 保存虚拟q静?refective)数据Q例如类QclassQ和Ҏ(gu)QmethodQ对象。Java虚拟机共享这些类数据。这个区域被分割为只ȝ和只写的Q?<br /> Code Cache (non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码Qnative codeQ的内存Q叫?#8220;代码~存?#8221;Qcode cacheQ?<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 Qjdk1.6.0_02\libQ:(x)输入</p> <p>localhost:1090</p> <p>用户?口o(h) 为空 </p> <p>q入 卛_ 查看 </p> <br /> </div><img src ="http://www.aygfsteel.com/Alpha/aggbug/241650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2008-11-20 15:00 <a href="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2008/03/01/183131.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/183131.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2008/03/01/183131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/183131.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/183131.html</trackback:ping><description><![CDATA[     摘要: Log4j是Apache的一个开放源代码目Q通过使用Log4jQ我们可以控制日志信息输送的Q我们也可以控制每一条日志的输出格式Q通过定义每一条日志信息的U别Q我们能够更加细致地控制日志的生成过E。最令h感兴的是Q这些可以通过一个配|文件来灉|地进行配|,而不需要修改应用的代码?  <a href='http://www.aygfsteel.com/Alpha/archive/2008/03/01/183131.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Alpha/aggbug/183131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2008-03-01 14:02 <a href="http://www.aygfsteel.com/Alpha/archive/2008/03/01/183131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA d EXCEL不同文g格式的内容(代码Q?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2007/11/21/162024.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/162024.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2007/11/21/162024.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/162024.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/162024.html</trackback:ping><description><![CDATA[     摘要: 使用Windows操作pȝ的朋友对ExcelQ电(sh)子表|(j)一定不?x)陌生,但是要用Java语言来操UExcel文gq不是一件容易的事。在Web应用日益盛行的今天,通过Web来操作Excel文g的需求越来越强烈Q目前较为流行的操作是在 JSP或Servlet 中创Z个CSV Qcomma separated valuesQ文Ӟq将q个文g以MIMEQtext/csvcdq回l浏览器Q接着览器调用Excelq且昄CSV文g。这样只是说可以讉K到Excel文gQ但是还不能真正的操UExcel 文gQ本文将l大家一个惊喜,向大家介l一个开放源码项?Java Excel APIQ用它大家可以方便地操纵Excel文g了?nbsp; <a href='http://www.aygfsteel.com/Alpha/archive/2007/11/21/162024.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Alpha/aggbug/162024.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2007-11-21 10:29 <a href="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2007/08/29/141108.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/141108.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2007/08/29/141108.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/141108.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/141108.html</trackback:ping><description><![CDATA[     摘要: windows下架设subversion服务?nbsp; <a href='http://www.aygfsteel.com/Alpha/archive/2007/08/29/141108.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Alpha/aggbug/141108.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2007-08-29 22:13 <a href="http://www.aygfsteel.com/Alpha/archive/2007/08/29/141108.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java 囄合成 解决囄q问题http://www.aygfsteel.com/Alpha/archive/2007/08/20/138171.htmlAlphaAlphaMon, 20 Aug 2007 08:01:00 GMThttp://www.aygfsteel.com/Alpha/archive/2007/08/20/138171.htmlhttp://www.aygfsteel.com/Alpha/comments/138171.htmlhttp://www.aygfsteel.com/Alpha/archive/2007/08/20/138171.html#Feedback3http://www.aygfsteel.com/Alpha/comments/commentRss/138171.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/138171.html阅读全文

    Alpha 2007-08-20 16:01 发表评论
    ]]>
    JavaU程控制的图像分割与合成http://www.aygfsteel.com/Alpha/archive/2007/08/20/138065.htmlAlphaAlphaMon, 20 Aug 2007 02:51:00 GMThttp://www.aygfsteel.com/Alpha/archive/2007/08/20/138065.htmlhttp://www.aygfsteel.com/Alpha/comments/138065.htmlhttp://www.aygfsteel.com/Alpha/archive/2007/08/20/138065.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/138065.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/138065.html阅读全文

    Alpha 2007-08-20 10:51 发表评论
    ]]>
    [ZT]JAVA 在图像处理中的应?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2007/08/08/135138.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/135138.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2007/08/08/135138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/135138.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/135138.html</trackback:ping><description><![CDATA[     摘要: 怿大家qx到q一些在JAVA中对囑փq行处理的需求,比如需要对上传的图片加上自q{֐或图标,或者生成和解析动态的GIF囄Q以?qing)处理PSD文g囑փ信息。本文就JAVA在图像处理中一些基本应用进行了介绍。希望通过能够对大家在以后的图像处理中有些帮助?nbsp; <a href='http://www.aygfsteel.com/Alpha/archive/2007/08/08/135138.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Alpha/aggbug/135138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2007-08-08 08:53 <a href="http://www.aygfsteel.com/Alpha/archive/2007/08/08/135138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZT]java生成~略图代?http://www.aygfsteel.com/Alpha/archive/2007/08/08/135137.htmlAlphaAlphaWed, 08 Aug 2007 00:51:00 GMThttp://www.aygfsteel.com/Alpha/archive/2007/08/08/135137.htmlhttp://www.aygfsteel.com/Alpha/comments/135137.htmlhttp://www.aygfsteel.com/Alpha/archive/2007/08/08/135137.html#Feedback1http://www.aygfsteel.com/Alpha/comments/commentRss/135137.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/135137.html阅读全文

    Alpha 2007-08-08 08:51 发表评论
    ]]>
    HttpServletRequest requesthttp://www.aygfsteel.com/Alpha/archive/2007/07/17/130885.htmlAlphaAlphaTue, 17 Jul 2007 08:51:00 GMThttp://www.aygfsteel.com/Alpha/archive/2007/07/17/130885.htmlhttp://www.aygfsteel.com/Alpha/comments/130885.htmlhttp://www.aygfsteel.com/Alpha/archive/2007/07/17/130885.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/130885.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/130885.html阅读全文

    Alpha 2007-07-17 16:51 发表评论
    ]]>
    HttpClient 学习(fn)整理http://www.aygfsteel.com/Alpha/archive/2007/01/22/95216.htmlAlphaAlphaMon, 22 Jan 2007 01:39:00 GMThttp://www.aygfsteel.com/Alpha/archive/2007/01/22/95216.htmlhttp://www.aygfsteel.com/Alpha/comments/95216.htmlhttp://www.aygfsteel.com/Alpha/archive/2007/01/22/95216.html#Feedback44http://www.aygfsteel.com/Alpha/comments/commentRss/95216.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/95216.html阅读全文

    Alpha 2007-01-22 09:39 发表评论
    ]]>
    [转]利用Java~写HTML文g分析E序http://www.aygfsteel.com/Alpha/archive/2007/01/18/94700.htmlAlphaAlphaThu, 18 Jan 2007 08:58:00 GMThttp://www.aygfsteel.com/Alpha/archive/2007/01/18/94700.htmlhttp://www.aygfsteel.com/Alpha/comments/94700.htmlhttp://www.aygfsteel.com/Alpha/archive/2007/01/18/94700.html#Feedback3http://www.aygfsteel.com/Alpha/comments/commentRss/94700.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/94700.html阅读全文

    Alpha 2007-01-18 16:58 发表评论
    ]]>
    JFreeChart在JSP中的应用实例http://www.aygfsteel.com/Alpha/archive/2007/01/13/93569.htmlAlphaAlphaSat, 13 Jan 2007 03:08:00 GMThttp://www.aygfsteel.com/Alpha/archive/2007/01/13/93569.htmlhttp://www.aygfsteel.com/Alpha/comments/93569.htmlhttp://www.aygfsteel.com/Alpha/archive/2007/01/13/93569.html#Feedback29http://www.aygfsteel.com/Alpha/comments/commentRss/93569.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/93569.html阅读全文

    Alpha 2007-01-13 11:08 发表评论
    ]]>
    提升JSP应用E序的七大绝?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/Alpha/archive/2006/12/21/89192.html</guid><wfw:comment>http://www.aygfsteel.com/Alpha/comments/89192.html</wfw:comment><comments>http://www.aygfsteel.com/Alpha/archive/2006/12/21/89192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Alpha/comments/commentRss/89192.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Alpha/services/trackbacks/89192.html</trackback:ping><description><![CDATA[     摘要: 你时常被客户抱怨JSP面响应速度很慢吗?你想q当客户讉Kơ数剧增Ӟ你的WEB应用能承受日益增加的讉K量吗Q本文讲qC调整JSP和servlet的一些非常实用的Ҏ(gu)Q它可你的servlet和JSP面响应更快Q扩展性更强。而且在用h增加的情况下Q系l负载会(x)呈现出^滑上长的势。在本文中,我将通过一些实际例子和配置Ҏ(gu)使得你的应用E序的性能有出人意料的提升。其中,某些调优技术是在你的编E工作中实现的。而另一些技术是与应用服务器的配|相关的。在本文中,我们详l地描述怎样通过调整servlet和JSP面Q来提高你的应用E序的M性能。在阅读本文之前Q假设你有基本的servlet和JSP的知识?nbsp; <a href='http://www.aygfsteel.com/Alpha/archive/2006/12/21/89192.html'>阅读全文</a><img src ="http://www.aygfsteel.com/Alpha/aggbug/89192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Alpha/" target="_blank">Alpha</a> 2006-12-21 09:19 <a href="http://www.aygfsteel.com/Alpha/archive/2006/12/21/89192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>多反向代理[Squid]下获取客L(fng)真实IP地址http://www.aygfsteel.com/Alpha/archive/2006/07/12/57764.htmlAlphaAlphaWed, 12 Jul 2006 03:12:00 GMThttp://www.aygfsteel.com/Alpha/archive/2006/07/12/57764.htmlhttp://www.aygfsteel.com/Alpha/comments/57764.htmlhttp://www.aygfsteel.com/Alpha/archive/2006/07/12/57764.html#Feedback11http://www.aygfsteel.com/Alpha/comments/commentRss/57764.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/57764.html阉K云服务器优惠? /></a>
<br />
在很多应用下都可能有需要将用户的真实IP记录下来Q这时就要获得用L(fng)真实IP地址Q在JSP里,获取客户端的IP地址的方法是Q?strong>request.getRemoteAddr()</strong>Q这U方法在大部分情况下都是有效的。但是在通过了Apache,Squid{反向代理Y件就不能获取到客L(fng)的真实IP地址了?br />
<br />
q段旉在做IPl计的程序设计,׃服务器作了集,使用了反向代理YӞ?a >http://192.168.1.110:2046/</a>的URL反向代理?a >http://www.xxx.com/</a>的URLӞ?strong>request.getRemoteAddr()</strong>Ҏ(gu)获取的IP地址是:(x)127.0.0.1 或 <u><font color=192.168.1.110Q而ƈ不是客户端的真实QP。这是什么原因呢Q?br />
    q是反向代理的原因。经q代理以后,׃在客L(fng)和服务之间增加了中间层,因此服务器无法直接拿到客L(fng)的IPQ服务器端应用也无法直接通过转发h的地址q回l客L(fng)。但是在转发h的HTTP头信息中Q增加了XQFORWARDEDQFOR信息。用以跟t原有的客户端IP地址和原来客L(fng)h的服务器地址。当我们讉Khttp://www.xxx.com/index.jsp/Ӟ其实q不是我们浏览器真正讉KC服务器上的index.jsp文gQ而是先由代理服务器去讉Khttp://192.168.1.110:2046/index.jspQ代理服务器再将讉K到的l果q回l我们的览器,因ؓ(f)是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址Qƈ不是客户端的IP地址?br />
    于是可得得客L(fng)真实IP地址的方法一Q?br />
    1 public String getIpAddr(HttpServletRequest request) {
    2      String ip = request.getHeader("x-forwarded-for");
    3      if(ip == null || ip.length() == 0{
    4            ip = request.getRemoteAddr();
    5        }

    6        return ip;
    7    }

    可是当我讉Khttp://www.xxx.com/index.jsp/Ӟq回的IP地址始终是unknownQ也q不是如上所C的127.0.0.1 或 192.168.1.110了,而我讉Khttp://192.168.1.110:2046/index.jspӞ则能q回客户端的真实IP地址Q写了个Ҏ(gu)去验证?br />
     1<%@ page import="java.util.*" %>
     2<table border=1 cellspacing=0 cellpadding=0 align=center> 
     3<tr> 
     4<th>Name</th> 
     5<th>Value</th> 
     6</tr> 
     7<% 
     8Enumeration enumNames; 
     9String strName,strValue; 
    10
    11enumNames = request.getHeaderNames(); 
    12while(enumNames.hasMoreElements()){ 
    13    strName = (String)enumNames.nextElement(); 
    14    strValue = request.getHeader(strName); 
    15    
    %> 
    16    <tr> 
    17    <td><%=strName%></td> 
    18    <td><%=strValue%></td> 
    19    </tr> 
    20    <% 
    21
    22
    %>
    23<tr>
    24</table>
    25


    出来的结果:(x)X-Forwarded-For: unknown 。X-Forwarded-For实存在Q但其值却为unknownQl找原因。上|搜了搜Q原因出在了Squid上?br />
    squid.conf 的配制文件 forwarded_for w认是为onQ如?forwarded_for 设成?off  则:(x)

    X-Forwarded-For: unknown

    一查,发现forwarded_for 设ZoffQ原因找CQ把forwarded_for 设ZonQ重启后Q访?a >http://www.xxx.com/index.jsp/ 获得的IP是客L(fng)的真实IP?br />
    于是可得得客L(fng)真实IP地址的方法二Q?br />
     1    public String getIpAddr(HttpServletRequest request) {
     2        String ip = request.getHeader("x-forwarded-for");
     3        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
     4            ip = request.getHeader("Proxy-Client-IP");
     5        }

     6        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
     7            ip = request.getHeader("WL-Proxy-Client-IP");
     8        }

     9        if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
    10            ip = request.getRemoteAddr();
    11        }

    12        return ip;
    13    }

    14



    可是Q如果通过了多U反向代理的话,X-Forwarded-For的值ƈ不止一个,而是一Ԍp|I竟哪个才是真正的用L(fng)的真实IP呢?

    {案是取X-Forwarded-For中第一个非unknown的有效IP字符丌Ӏ?br />
    如:(x)
    X-Forwarded-ForQ?92.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
    用户真实IP为:(x) 192.168.1.110


     

    阉K云服务器优惠? /></a><img src =

    Alpha 2006-07-12 11:12 发表评论
    ]]>
    linux下java中文字体问题[与JfreeChart有关]http://www.aygfsteel.com/Alpha/archive/2006/05/20/47162.htmlAlphaAlphaSat, 20 May 2006 05:10:00 GMThttp://www.aygfsteel.com/Alpha/archive/2006/05/20/47162.htmlhttp://www.aygfsteel.com/Alpha/comments/47162.htmlhttp://www.aygfsteel.com/Alpha/archive/2006/05/20/47162.html#Feedback1http://www.aygfsteel.com/Alpha/comments/commentRss/47162.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/47162.html最q要用jfreechart,在图表中?x)用C?
    在windows环境?不会(x)发生q问题.
    但是部v到l(f)inux?发生中文ؕ码问?中文全变成方框,摸烦(ch)了一D|间才之解决?/div>

    Z定你的Linux环境下程序会(x)使用的字体文Ӟ先跑跑这个程序:(x)from others

    1 public   class  PrintLocale  {
    2      public   static   void  main(String[] args)  {
    3         System.out.println(System.getProperty( " user.language " ));
    4         System.out.println(System.getProperty( " user.region " ));
    5         System.out.println(System.getProperty( " file.encoding " ));
    6         System.out.println(System.getProperty( " os.version " ));
    7     }

    8 }

    9

    讉K序可以?
     
    比如: linux as 3.0 Qlinux 7.3 same
    ?x)大概有如下的访问顺?
     
    font.properties.zh_CN.Redhat
    font.properties.zh_CN
    font.properties.zh
    font.properties
     
     
    1 . 此文g拯?JAVA_HOME%/jre/lib下面?br />
    serif.0=-b&h-luxi serif-medium-r-normal--*-%d-*-*-p-*-iso8859-1
        serif.
    1=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
    serif.italic.
    0=-b&h-luxi serif-medium-i-normal--*-%d-*-*-p-*-iso8859-1
        serif.italic.
    1=-misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1
        .
      ?br />  
       .appendedfontpath
    =/usr/share/fonts/zh_CN/TrueType


    h?字符?misc-ZYSong18030-medium-r-normal--*-%d-*-*-c-*-iso10646-1Q除了中间什?-%--*--c*--之外
    必须?/usr/share/fonts/zh_CN/TrueType/fonts.dir 中的完全一致?/div>
    如果?ZYSong --> zysong 也是不行的?/div>
     
    2. 讄中文环境
       我是在程序中如下讄?

    System.setProperty("user.language","zh");     
       System.setProperty(
    "user.region","CN");


    3. ~译代码文g,要用
             javac -encoding GBK   xxxxxx.java
       如果是用ant工具,
           <target name="compile" depends="prepare" description="complie All Java source">
              <copy todir="${build.dir}">
                <fileset dir="${src.dir}" includes="**/*.properties" />
             </copy>
             <javac srcdir="${src.dir}" destdir="${build.dir}" encoding="GBK">
                <classpath refid="project.classpath" />
             </javac>
          </target>
     
     


    Alpha 2006-05-20 13:10 发表评论
    ]]>linux下配|jfreecharthttp://www.aygfsteel.com/Alpha/archive/2006/05/09/45213.htmlAlphaAlphaTue, 09 May 2006 06:58:00 GMThttp://www.aygfsteel.com/Alpha/archive/2006/05/09/45213.htmlhttp://www.aygfsteel.com/Alpha/comments/45213.htmlhttp://www.aygfsteel.com/Alpha/archive/2006/05/09/45213.html#Feedback0http://www.aygfsteel.com/Alpha/comments/commentRss/45213.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/45213.htmljava.lang.NoClassDefFoundError
    org.jfree.chart.axis.Axis.<init>(Axis.java:180)
    at org.jfree.chart.axis.CategoryAxis.<init>(CategoryAxis.java:137)
    at org.jfree.chart.axis.CategoryAxis3D.<init>(CategoryAxis3D.java:78)
    at org.jfree.chart.ChartFactory.createBarChart3D(ChartFactory.java:507)

    解决的办法是Q?br />~辑/etc/profile文gQ在最后加入export CATALINA_OPTS='-Djava.awt.headless=true'
    卛_




    Alpha 2006-05-09 14:58 发表评论
    ]]>
    java中获取MAC地址Q了解Mac地址http://www.aygfsteel.com/Alpha/archive/2006/04/18/41584.htmlAlphaAlphaTue, 18 Apr 2006 01:52:00 GMThttp://www.aygfsteel.com/Alpha/archive/2006/04/18/41584.htmlhttp://www.aygfsteel.com/Alpha/comments/41584.htmlhttp://www.aygfsteel.com/Alpha/archive/2006/04/18/41584.html#Feedback3http://www.aygfsteel.com/Alpha/comments/commentRss/41584.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/41584.html

     1import java.io.*;
     2
     3public class Test {
     4    public static void main(String[] args) {
     5        try {
     6            Process process = Runtime.getRuntime().exec("ipconfig /all");
     7            InputStreamReader ir = new InputStreamReader(process
     8                    .getInputStream());
     9            LineNumberReader input = new LineNumberReader(ir);
    10            String line;
    11            while ((line = input.readLine()) != null)
    12                if (line.indexOf("Physical Address"> 0{
    13                    String MACAddr = line.substring(line.indexOf("-"- 2);
    14                    System.out.println("MAC address = [" + MACAddr + "]");
    15                }

    16        }
     catch (java.io.IOException e) {
    17            System.err.println("IOException " + e.getMessage());
    18        }

    19    }

    20}
     
    21

    Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-

    Z转一关于݋QE的文章:(x)

          q来在网上经常见有h问vMac地址的问题,那么I竟Mac地址是什么?在现行的|络中,扮演什么角色呢Q下面我们就一同来探讨一下关于Mac地址的知识?
           什么是Mac地址?

      Mac地址是在媒体接入层上用的地址Q通俗点说是|卡的物理地址Q现在的Mac地址一般都采用6字节48bitQ在早期q有2字节16bit的Mac地址Q?

      ?4位由是生产厂家向IEEE甌的厂商地址(q可是要花钱的哦Q据?000元才能C个地址?。后24位就q产厂家自行定以了?早期?字节的却不用甌)

      IP地址和Mac地址有什么联pd区别

      大家都知道,现在有很多计机都是通过先组建局域网Q然后通过交换机和Internetq接的(大学里的校园|就是这P(j)。然后给每个用户分配固定的IP地址Q由理中心l一理Q这样ؓ(f)了管理方便就需要用Mac地址来标志用P防止发生混ؕQ明责任(比如|络犯罪Q。另外IP地址和Mac地址是有区别的,虽然他们在局域网中是一一对应的关pRIP地址是跟据现在的IPv4标准指定的,不受g限制比较Ҏ(gu)记忆的地址Q而Mac地址却是用网卡的物理地址Q多与g有关p,比较难于记忆?

      如何知道自己的Mac地址

      Ҏ(gu)比较多,也比较得单,在这里介l两U常用的Ҏ(gu)Q在Win9x 可用QWinIPcfg获得Q在2000、XP可用IPconfig -all获得。如果你已经l自q|卡分配了IPq可以用 nbtstat -A 自己的IP 如下图,后者只能在2000/XP下用?

    如何获得别h的Mac

      其实上面已经涉及(qing)CQ如果是2000/XP用户可以?nbtstat -A IP地址Q还可以获得别的东东啊,可别学坏啊)(j)。另外同一局域网内的Q你可以用ping IP 或者ping L名,然后用arp -a 来获得?

      如何修改自己的Mac地址

      Mac地址是保存在|卡的EPROM里面Q通过|卡生厂家提供的修改程序可以更改存储器里的地址Q即使网卡没有这L(fng)讄我们也可以通过间接的方法修改,一般网卡发出的包的源Mac地址q不是网卡本w写上去的,而是应用E序提供的,只是在通常的实CQ应用程序先从网卡上得到Mac地址Q每ơ发送的时候都用这个Mac做ؓ(f)源Mac而已QW(xu)indows中,|卡的Mac保存在注册表中,实际使用也是从注册表中提取的Q所以只要修Ҏ(gu)册表可以简单的改变Mac

      Win9x中修改:(x)

      打开注册表编辑器Q在HKEY_LOCAL_MacHINE\SYSTEM\CurrentControlSet\Service\Class\Net\下的0000Q?001Q?002 Win2000/XP中的修改Q同h开注册表编辑器QHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\4D36E970-E325-11CE-BFC1-08002BE10318 中的0000,0001,0002中的DriverDesc,如果?000扑ֈQ就?000下面d字符串变量,命名?NetworkAddress"Qgؓ(f)要设|的Mac地址Q例如:(x)000102030405
    完成上述操作后重启就好了?

      Linux下的修改Q?

      1.必须关闭|卡讑֤Q否则会(x)报告pȝ忙,无法更改?

      命o(h)是:(x)"ifconfig eth0 down"

      2.修改Mac地址Q这一步较Windows中的修改要简单?

      命o(h)是:(x)"ifconfig eth0 hw ether 00AABBCCDDEE"

      3.重新启用|卡

      "ifconfig eth0 up"|卡的Mac地址更改完成了?

      现在q有很多软g提供了修改Mac地址的功能,如:(x)Mac2001

      那么既然IP和Mac地址都可以改Q那么怎么防M呢?通过单的交换机端口绑定(端口的Mac表用静态表)(j)Q可以在每个交换机端口只q接一C机的情况下防止修改Mac地址的盗用,如果是三层设备还可以提供Q交换机端口QIPQMac 三者的l定Q防止修改Mac的IP盗用Q这U方法更有效Q还有些Ҏ(gu)如配|交换机的VLANQ用用戯证等Q都略显复杂Q再ơ不多浪费笔墨?





    Alpha 2006-04-18 09:52 发表评论
    ]]>
    几种所见所得的在线~辑器的分析http://www.aygfsteel.com/Alpha/archive/2006/02/23/32077.htmlAlphaAlphaThu, 23 Feb 2006 03:04:00 GMThttp://www.aygfsteel.com/Alpha/archive/2006/02/23/32077.htmlhttp://www.aygfsteel.com/Alpha/comments/32077.htmlhttp://www.aygfsteel.com/Alpha/archive/2006/02/23/32077.html#Feedback1http://www.aygfsteel.com/Alpha/comments/commentRss/32077.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/32077.html对于那些大型的CMS开发?一个好的编辑器能省了用者很多不必要的操?
    而且使web代码更ؓ(f)规范,清晰
    以上内容均属于一家之a,如有U漏,h?Ƣ迎大家讨论..


      阅读全文

    Alpha 2006-02-23 11:04 发表评论
    ]]>
    动态生成HTML表单http://www.aygfsteel.com/Alpha/archive/2005/10/27/17082.htmlAlphaAlphaThu, 27 Oct 2005 09:49:00 GMThttp://www.aygfsteel.com/Alpha/archive/2005/10/27/17082.htmlhttp://www.aygfsteel.com/Alpha/comments/17082.htmlhttp://www.aygfsteel.com/Alpha/archive/2005/10/27/17082.html#Feedback7http://www.aygfsteel.com/Alpha/comments/commentRss/17082.htmlhttp://www.aygfsteel.com/Alpha/services/trackbacks/17082.html阅读全文

    Alpha 2005-10-27 17:49 发表评论
    ]]>
    վ֩ģ壺 | ɳ| | | ɽ| ɽ| | | ̨| Դ| ȷ| Դ| | | | | | | | ˳| | ƽ| | | ƽ| | | | | | | | | | | Ϫ| | | | ɣ| |