??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠综合久久av一区二区老牛 ,97精品在线视频,久久久久亚洲精品http://www.aygfsteel.com/wansong/category/45596.htmlwansongzh-cnMon, 14 May 2012 21:31:36 GMTMon, 14 May 2012 21:31:36 GMT60java 文g 路径 http://www.aygfsteel.com/wansong/articles/378055.htmlw@ns0ngw@ns0ngSun, 13 May 2012 13:52:00 GMThttp://www.aygfsteel.com/wansong/articles/378055.htmlhttp://www.aygfsteel.com/wansong/comments/378055.htmlhttp://www.aygfsteel.com/wansong/articles/378055.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/378055.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/378055.html
http://www.aygfsteel.com/xuechen0721/articles/90805.html

InputStream in = new FileInputStream("abc.properties"); // 相对路径,目下的路径


w@ns0ng 2012-05-13 21:52 发表评论
]]>
jdk 6 jax-ws 例子http://www.aygfsteel.com/wansong/articles/364521.htmlw@ns0ngw@ns0ngTue, 22 Nov 2011 05:37:00 GMThttp://www.aygfsteel.com/wansong/articles/364521.htmlhttp://www.aygfsteel.com/wansong/comments/364521.htmlhttp://www.aygfsteel.com/wansong/articles/364521.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/364521.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/364521.htmlhttp://alvinqq.iteye.com/blog/647649

w@ns0ng 2011-11-22 13:37 发表评论
]]>
借助开源工具高效完成Java应用的运行分?/title><link>http://www.aygfsteel.com/wansong/articles/363529.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 11 Nov 2011 07:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/wansong/articles/363529.html</guid><wfw:comment>http://www.aygfsteel.com/wansong/comments/363529.html</wfw:comment><comments>http://www.aygfsteel.com/wansong/articles/363529.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wansong/comments/commentRss/363529.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wansong/services/trackbacks/363529.html</trackback:ping><description><![CDATA[<a >http://www.infoq.com/cn/articles/java-profiling-with-open-source</a><img src ="http://www.aygfsteel.com/wansong/aggbug/363529.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wansong/" target="_blank">w@ns0ng</a> 2011-11-11 15:12 <a href="http://www.aygfsteel.com/wansong/articles/363529.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jvm q接 localhost JMXhttp://www.aygfsteel.com/wansong/articles/361026.htmlw@ns0ngw@ns0ngWed, 12 Oct 2011 02:34:00 GMThttp://www.aygfsteel.com/wansong/articles/361026.htmlhttp://www.aygfsteel.com/wansong/comments/361026.htmlhttp://www.aygfsteel.com/wansong/articles/361026.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/361026.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/361026.html需 在eclipse的运行参敎ͼVM arguments:Q增加如下的参数Q?
-Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false

然后可用如下代码q行q接Q?br />
url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi");
JMXConnector jmxc = JMXConnectorFactory.connect(url);
mbs = jmxc.getMBeanServerConnection();

参考:(x)
http://jiangnanguying.iteye.com/blog/539697


w@ns0ng 2011-10-12 10:34 发表评论
]]>
Java同步文g到Jboss虚拟目录http://www.aygfsteel.com/wansong/articles/358297.htmlw@ns0ngw@ns0ngThu, 08 Sep 2011 05:55:00 GMThttp://www.aygfsteel.com/wansong/articles/358297.htmlhttp://www.aygfsteel.com/wansong/comments/358297.htmlhttp://www.aygfsteel.com/wansong/articles/358297.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/358297.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/358297.html

Java同步文g到Jboss虚拟目录


http://developer.51cto.com/art/201106/270337.htm



w@ns0ng 2011-09-08 13:55 发表评论
]]>
Quartz 配置(? - Trigger http://www.aygfsteel.com/wansong/articles/355948.htmlw@ns0ngw@ns0ngSun, 07 Aug 2011 05:25:00 GMThttp://www.aygfsteel.com/wansong/articles/355948.htmlhttp://www.aygfsteel.com/wansong/comments/355948.htmlhttp://www.aygfsteel.com/wansong/articles/355948.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/355948.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/355948.html触发?Trigger)

Trigger是一个抽象类Q?span style="font-family: Calibri">Quartz提供?jin)两个比较常用的触发?span style="font-family: Calibri">SimpleTrigger?span style="font-family: Calibri">CronTrigger。它们都?span style="font-family: Calibri">Trigger的子c?/span>

SimpleTrigger

q是一个简单的触发器,通过它我们可以定义触发的旉Qƈ选择性的讑֮重复的次数和间隔旉。它有以下常用的属?/span>

 

参数?/span>

参数cd

备注

name 

String

触发器名U?/span>

group 

String

触发器组名称

repeatCount 

int

重复ơ数Q注意:(x)如果?span style="font-family: Calibri">0表示不执行,-1表示不限制次敎ͼ直到q期Q,默认?span style="font-family: Calibri">0

repeatInterval 

long

间隔旉Q注意:(x)是以毫秒为单?/span>

startTime 

Date

开始时_(d)默认当前旉

endTime 

Date

q期旉Q默认一直执行(直到执行ơ数已达?span style="font-family: Calibri">repeatCountQ?/span>

 

CronTrigger

q个触发器的功能非常强大Q而且非常灉|Q但需要掌握有关的Cron表达式知?/span>

参数?/span>

参数cd

备注

name 

String

触发器名U?/span>

group 

String

触发器组名称

cronEx 

CronExpression

规则表达?/span>

startTime 

Date

开始时_(d)默认当前旉

endTime 

Date

q期旉Q默认一直执行(直到执行ơ数已达?span style="font-family: Calibri">repeatCountQ?/span>

 

触发器规则表辑ּ配置Q?/span> 

格式:

[U?span>] [分] [时] [日] [月] [周] [q]

 

格式说明Q?/span>

位置

旉域名

是否必须

允许?/span>

允许通配W?/span>

1

U?/span>

?/span>

0-59

, - * /

2

?/span>

?/span>

0-59

, - * /

3

?/span>

0-23

, - * /

4

?/span>

?/span>

1-31

, - * ? / L W

5

?/span>

?/span>

1-12

, - * /

6

?/span>

?/span>

1-7?span style="font-family: Calibri">MON-SUN

, - * ? / L #

7

q?/span>

?/span>

empty?span style="font-family: Calibri">1970-2099

, - * /

 通配W说明:(x)

 

 

*

可用在所有字D中Q表C对应时间域的每一个时刻,例如Q?span style="font-size: 9pt">*在分钟字D|Q表C?span style="font-size: 9pt">每分?span style="font-size: 9pt">

?

该字W只在日期和星期字段中用,它通常指定?span style="font-size: 9pt">无意义的?span style="font-size: 9pt">Q相当于点位W?/p>

-

表示区间。例?在小时上讄 "10-12",表示 10,11,12炚w?x)触?/span>

,

表示指定多个|例如在周字段上设|?span> "MON,WED,FRI" 表示周一Q周三和周五触发

/

x/y表达一个等步长序列Q?span style="font-size: 9pt">xv始|y为增量步长倹{如在分钟字D中使用0/15Q则表示?span style="font-size: 9pt">0,15,30?span style="font-size: 9pt">45U,?span style="font-size: 9pt">5/15在分钟字D中表示5,20,35,50Q你也可以?span style="font-size: 9pt">*/yQ它{同?span style="font-size: 9pt">0/y

L

该字W只在日期和星期字段中用,代表“Last”的意思,但它在两个字D中意思不同?span style="font-size: 9pt">L在日期字D中Q表C个月份的最后一天,如一月的31P非闰q二月的28P如果L用在星期中,则表C星期六Q等同于7。但是,如果L出现在星期字D里Q而且在前面有一个数?span style="font-size: 9pt">XQ则表示q个月的最?span style="font-size: 9pt">X?span style="font-size: 9pt">Q例如,6L表示该月的最后星期五

W

该字W只能出现在日期字段里,是对前导日期的修饎ͼ表示该日期最q的工作日。例?span style="font-size: 9pt">15W表示该?span style="font-size: 9pt">15hq的工作日,如果该月15h星期六,则匹?span style="font-size: 9pt">14h期五Q如?span style="font-size: 9pt">15日是星期日,则匹?span style="font-size: 9pt">16h期一Q如?span style="font-size: 9pt">15h星期二,那结果就?span style="font-size: 9pt">15h期二。但必须注意兌的匹配日期不能够跨月Q如你指?span style="font-size: 9pt">1WQ如?span style="font-size: 9pt">1h星期六,l果匚w的是3h期一Q而非上个月最后的那天?span style="font-size: 9pt">W字符串只能指定单一日期Q而不能指定日期范?/p>

#

该字W只能在星期字段中用,表示当月某个工作日。如6#3表示当月的第三个星期?span style="font-size: 9pt">(6表示星期五,#3表示当前的第三个)Q?span style="font-size: 9pt">4#5表示当月的第五个星期三,假设当月没有W五个星期三Q忽略不触发

 



w@ns0ng 2011-08-07 13:25 发表评论
]]>
Quartz 单的一个实?http://www.aygfsteel.com/wansong/articles/355949.htmlw@ns0ngw@ns0ngSun, 07 Aug 2011 05:25:00 GMThttp://www.aygfsteel.com/wansong/articles/355949.htmlhttp://www.aygfsteel.com/wansong/comments/355949.htmlhttp://www.aygfsteel.com/wansong/articles/355949.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/355949.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/355949.html

SimpleJob.java

 

package com.test.job;

 

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

 

public class SimpleJob implements Job{

    public void execute(JobExecutionContext context)

           throws JobExecutionException {

       // your business logic

       // ...

       System.out.println("simpleJob running ....");

    }

}

TestSimpleJob.java

 

package com.test.job;

 

import java.text.ParseException;

 

import org.quartz.CronExpression;

import org.quartz.CronTrigger;

import org.quartz.JobDetail;

import org.quartz.Scheduler;

import org.quartz.SchedulerException;

import org.quartz.SimpleTrigger;

import org.quartz.impl.StdSchedulerFactory;

 

public class TestSimpleJob {

    public static void main(String[] args){

       try {

           Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

          

           String jobName = "simpleJob";

           String groupName = "DEFAULT";

          

           //删除作业

           if(scheduler.getJobDetail(jobName,groupName) != null){

              scheduler.deleteJob(jobName, groupName);

           }

          

           //作业的详l信?/p>

           //d名称QQ务组名称QQ务实现类

           JobDetail jobDetail = new JobDetail(jobName,groupName,SimpleJob.class);

          

           //创徏单触发器

           SimpleTrigger simpleTrigger = new SimpleTrigger("simpleTrigger",null);

 

           simpleTrigger.setRepeatCount(100); // 调用100?/p>

           simpleTrigger.setRepeatInterval(5*1000); //?span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">5U钟调用一?/p>

 

           //注册作业

           scheduler.scheduleJob(jobDetail, simpleTrigger);

          

          

           CronTrigger cronTrigger = new CronTrigger("cronTrigger",null);

           CronExpression cronExpression = null;

           try {

              cronExpression = new CronExpression("0 0 12 * * ?"); //每天12点运?/p>

              cronTrigger.setCronExpression(cronExpression);

             

              //注册作业

              scheduler.scheduleJob(jobDetail, cronTrigger);

             

              if(! scheduler.isShutdown()){

                  scheduler.start();

              }

             

          

           } catch (ParseException e) {

              e.printStackTrace();

           }

          

       } catch (SchedulerException e) {

           e.printStackTrace();

       }

    }

}

 



w@ns0ng 2011-08-07 13:25 发表评论
]]>
Quarz 配置(一) - JobDetail http://www.aygfsteel.com/wansong/articles/355947.htmlw@ns0ngw@ns0ngSun, 07 Aug 2011 05:24:00 GMThttp://www.aygfsteel.com/wansong/articles/355947.htmlhttp://www.aygfsteel.com/wansong/comments/355947.htmlhttp://www.aygfsteel.com/wansong/articles/355947.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/355947.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/355947.htmlQuartz是一个开源的作业调度框架Q完全由java写的Q你能通过它创建简单或者复杂的d。他能提供巨大的灉|性,但又不牺牲简单性?/span>

 

Quartz的核?j)概?/span> :调度器、触发器、作?nbsp;

调度?Scheduler)

Scheduler负责理Quartz的运行环境,Quartz它是Z多线E架构的Q它启动的时候会(x)初始化一套线E,q套U程?x)用来执行一些预|的作业?/span>

要创Z个作业ƈ能够被触发调用,必须?span style="font-family: Calibri">Scheduler上面注册一?span style="font-family: Calibri">JobDetail?span style="font-family: Calibri">Trigger?/span>

Scheduler提携?jin)所?span style="font-family: Calibri">Trigger?span style="font-family: Calibri">JobDetailQ它们协调工作。这?span style="font-family: Calibri">Trigger?span style="font-family: Calibri">JobDetail通过自n?span style="font-family: Calibri">name?span style="font-family: Calibri">group属性区?span>?/span>

       Scheduler ?span style="font-family: Calibri">SchedulerFactory产生Q我们可以通过以下方式获取Scheduler的实例:(x)

     //?span style="background: #d9d9d9">ServletContext上下文中查找SchedulerFactory

     SchedulerFactory   factory = (SchedulerFactory)

ServletActionContext.getServletContext().getAttribute("org.quartz.impl.StdSchedulerFactory.KEY");

 

   //获取Scheduler对象

   Scheduler defScheduler = factory.getScheduler();

作业

Job

dQ其实就是一个接口。要创徏一个Q务,必须得实现这个接口。该接口只有一个executeҎ(gu)QQ务每ơ被调用的时候都?x)执行这个executeҎ(gu)的逻辑?/span>

public class TestJob impletemens org.quartz.Job{

         @Override

         public void execute(JobExecutionContext context) throws JobExecutionException{

                   // you business logic

                   // …

                 System.out.println("########### this is testJob running ############");

     }

}

 

JobDetail

JobDetail 用来保存我们作业的详l信息。一个JobDetail可以有多个TriggerQ但是一个Trigger只能对应一个JobDetail。下面是JobDetail的一些常用的属性和含义

 

 

参数?/span>

cd

备注

name

String

d的名Uͼ必须

group

String

d所在组Q默认ؓ(f)DEFAULT

jobClass

Class

d的实现类Q必?/span>

description

String

描述

jobDataMap

JobDataMap

用来l作业提供数据支持的数据l构

volatility

Boolean

重启应用之后是否删除d的相关信息,默认false

durability

Boolean

d完成之后是否依然保留到数据库Q默?span style="font-family: Calibri">false

shouldRecover

Boolean

应用重启之后时候忽略过期Q务,默认false

jobListeners

Set

监听?/span>

 

 

JobDataMap

q是一个给作业提供数据支持的数据结构,使用Ҏ(gu)和java.util.Map一P非常方便。当一个作业被分配l调度器ӞJobDataMap实例随之生成?/p>

Job有一个StatefulJob子接口,代表有状态的dQ该接口是一个没有方法的标签接口Q其目的是让Quartz知道d的类型,以便采用不同的执行方案。无状态Q务在执行时拥有自qJobDataMap拯Q对JobDataMap的更改不?x)?jing)响下ơ的执行。而有状态Q务共享共享同一个JobDataMap实例Q每ơQ务执行对JobDataMap所做的更改?x)保存下来,后面的执行可以看到这个更改,也即每次执行d后都?x)对后面的执行发生?jing)响?/p>

正因个原因,无状态的Job可以q发执行Q而有状态的StatefulJob不能q发执行Q这意味着如果前次的StatefulJobq没有执行完毕,下一ơ的d阻塞等待,直到前次d执行完毕。有状态Q务比无状态Q务需要考虑更多的因素,E序往往拥有更高的复杂度Q因此除非必要,应该量使用无状态的Job?/p>

如果Q(jng)uartz使用?jin)数据库持久化Q务调度信息,无状态的JobDataMap仅会(x)在Scheduler注册d时保持一ơ,而有状态Q务对应的JobDataMap在每ơ执行Q务后都会(x)q行保存?/p>

JobDataMap实例也可以与一个触发器相关联。这U情况下Q对于同一作业的不同触发器Q我们可以在JobDataMap中添加不同的数据Q以便作业在不同旉执行时能够提供更为灵zȝ数据支持Q学校上午放g健操录音W一版,下午攄二版Q?/p>

不管是有状态还是无状态的dQ在d执行期间对Trigger的JobDataMap所做的更改都不?x)进行持久,也即不?x)对下ơ的执行产生影响?/p>

 

 



w@ns0ng 2011-08-07 13:24 发表评论
]]>
java JAXBhttp://www.aygfsteel.com/wansong/articles/351037.htmlw@ns0ngw@ns0ngThu, 26 May 2011 01:02:00 GMThttp://www.aygfsteel.com/wansong/articles/351037.htmlhttp://www.aygfsteel.com/wansong/comments/351037.htmlhttp://www.aygfsteel.com/wansong/articles/351037.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/351037.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/351037.htmlhttp://download.oracle.com/javaee/5/tutorial/doc/bnazy.html

w@ns0ng 2011-05-26 09:02 发表评论
]]>
java jconsolehttp://www.aygfsteel.com/wansong/articles/350893.htmlw@ns0ngw@ns0ngTue, 24 May 2011 01:53:00 GMThttp://www.aygfsteel.com/wansong/articles/350893.htmlhttp://www.aygfsteel.com/wansong/comments/350893.htmlhttp://www.aygfsteel.com/wansong/articles/350893.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/350893.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/350893.htmlhttp://download.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html

w@ns0ng 2011-05-24 09:53 发表评论
]]>
java中垃圑֛收机?GC)http://www.aygfsteel.com/wansong/articles/350866.htmlw@ns0ngw@ns0ngMon, 23 May 2011 10:15:00 GMThttp://www.aygfsteel.com/wansong/articles/350866.htmlhttp://www.aygfsteel.com/wansong/comments/350866.htmlhttp://www.aygfsteel.com/wansong/articles/350866.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/350866.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/350866.htmlhttp://www.iteye.com/topic/244277

w@ns0ng 2011-05-23 18:15 发表评论
]]>
CORBA & JAVAhttp://www.aygfsteel.com/wansong/articles/346925.htmlw@ns0ngw@ns0ngThu, 24 Mar 2011 03:16:00 GMThttp://www.aygfsteel.com/wansong/articles/346925.htmlhttp://www.aygfsteel.com/wansong/comments/346925.htmlhttp://www.aygfsteel.com/wansong/articles/346925.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/346925.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/346925.html

w@ns0ng 2011-03-24 11:16 发表评论
]]>
mbean & tomcathttp://www.aygfsteel.com/wansong/articles/346587.htmlw@ns0ngw@ns0ngSat, 19 Mar 2011 03:00:00 GMThttp://www.aygfsteel.com/wansong/articles/346587.htmlhttp://www.aygfsteel.com/wansong/comments/346587.htmlhttp://www.aygfsteel.com/wansong/articles/346587.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/346587.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/346587.html
http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html

http://yuanlijia1.javaeye.com/blog/870106 :
set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

http://localhost:8080/manager/jmxproxy/


http://dev.firnow.com/course/3_program/java/javajs/20100719/460604.html
PermGen space的全U是Permanent Generation spaceQ是指内存的怹保存区域OutOfMemoryError: PermGen space。从文字上看是内存溢出Q解x法是加大内存。ؓ(f)什么会(x)内存溢出Q这是由于这块内存主要是被JVM存放Class和Meta信息的,Class在被Load的时候被攑օPermGen space区域Q它和存放Instance的Heap区域不同,GC(Garbage Collection)不会(x)在主E序q行期对PermGen spaceq行清理Q所以如果你的APP?x)LOAD很多CLASS的话Q就很可能出现PermGen space错误。这U错误常见在web服务器对JSPq行pre compile的时候。如果你的WEB APP下都用了(jin)大量的第三方jar, 其大超q了(jin)jvm默认的大?4M)那么׃(x)产生此错误信息了(jin)?br />

w@ns0ng 2011-03-19 11:00 发表评论
]]>
Java或Web中解x有\径问?/title><link>http://www.aygfsteel.com/wansong/articles/343321.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 21 Jan 2011 05:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/wansong/articles/343321.html</guid><wfw:comment>http://www.aygfsteel.com/wansong/comments/343321.html</wfw:comment><comments>http://www.aygfsteel.com/wansong/articles/343321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wansong/comments/commentRss/343321.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wansong/services/trackbacks/343321.html</trackback:ping><description><![CDATA[http://java.csdn.net/a/20110119/290452.html <img src ="http://www.aygfsteel.com/wansong/aggbug/343321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wansong/" target="_blank">w@ns0ng</a> 2011-01-21 13:46 <a href="http://www.aygfsteel.com/wansong/articles/343321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tiff 昄http://www.aygfsteel.com/wansong/articles/342883.htmlw@ns0ngw@ns0ngWed, 12 Jan 2011 12:23:00 GMThttp://www.aygfsteel.com/wansong/articles/342883.htmlhttp://www.aygfsteel.com/wansong/comments/342883.htmlhttp://www.aygfsteel.com/wansong/articles/342883.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/342883.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/342883.html
import java.awt.image.RenderedImage;
import java.io.File;

import com.sun.media.jai.codec.FileSeekableStream;
import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageDecoder;
import com.sun.media.jai.codec.SeekableStream;
import com.sun.media.jai.codec.TIFFDecodeParam;  

import javax.media.jai.JAI;

HttpServletRequest request = ServletActionContext.getRequest();
  HttpServletResponse response = ServletActionContext.getResponse();
  
  Integer index = new Integer(request.getParameter("index"));
  
  System.out.println(request.getContextPath());
  System.out.println(request.getPathInfo());
  System.out.println(request.getRealPath("/"));
  
        File file = new File(request.getRealPath("/") + "/example/tiff/example.tif");
        SeekableStream s = new FileSeekableStream(file);
        ImageDecoder dec = ImageCodec.createImageDecoder("tiff", s, null);
        RenderedImage temp = dec.decodeAsRenderedImage(index);
        System.out.println("Width:" + temp.getWidth() + ",Height:" + temp.getHeight());

JAI.create("encode", temp, response.getOutputStream(), "JPEG", null);
return null;

w@ns0ng 2011-01-12 20:23 发表评论
]]>
jvm 参数 配置http://www.aygfsteel.com/wansong/articles/336932.htmlw@ns0ngw@ns0ngWed, 03 Nov 2010 07:14:00 GMThttp://www.aygfsteel.com/wansong/articles/336932.htmlhttp://www.aygfsteel.com/wansong/comments/336932.htmlhttp://www.aygfsteel.com/wansong/articles/336932.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/336932.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/336932.html   比如说你的机器有2G内存
  你用java -Xmx2048m -version
  如果能正常出现JAVA VERSION版本?br />   OK
  说明你的JVM的最大内存能上到2048
  但你要留l系l一点内?br />
因此Q对?048MB内存的服务器我是q样l的
  JAVA_OPTS="-server -Xms1928M -Xmx1928M "
  我的TOMCAT中的catalina.sh配置是:(x)
JAVA_OPTS="-server -Xms1928M -Xmx1928M -Xss512k -XX:+AggressiveOpts -XX:+UseParallelGC  -XX:+UseBiasedLocking -XX ermSize=256M -XX:MaxPermSize=512M"
  把XMX和XMS设成一Pq样TOMCAT上手启动分配了(jin)1928M内存Q如果你把XMS设了(jin)较小Q那pȝ上手?x)分配XMS的数额,然后上涨Q涨到XMX的数额时再下?br />   q样效率不高
  JVM来回回收Q因此效率不?br />   所以把XMS和XMX两个Dq?br />   那么JVM不就没有垃圾回收?jin)吗Q没事,加上-XX : PermSize=256M -XX : MaxPermSize=512M
  q两个东?br />   q两个东西就是JVM垃圾回收q程的内存,最增?56Q最大增长了(jin)512得要JVM回收垃圾?br />   至于其它的参敎ͼ(x)  -Xss512k -XX:+AggressiveOpts -XX:+UseParallelGC  -XX:+UseBiasedLocking  q些你可以GOOGLE一下,q些参数启用?jin)JVMq行“q发操作”Q强q回收等机制

基本是q些
  到底能分多大内存lJVMQ?2位机是最?GQ你物理?2GB也只?GQ?4位是可以H破q个限制

一般是把WEB或者是APP服务器的最大内存统l给?jin)JVMQ但不能全给Q因为我说了(jin)Q要保留点内存给操作pȝ本n

只知道不理TOMCATQW(xu)EBSPHEREq是WEBLOGIC-XX : PermSize=256M -XX : MaxPermSize=512M
q有-Xms1928M -Xmx1928M q?个参数是肯定要用得到?br />   具体q可以用到哪些参敎ͼ如:(x)厂商自带的一些参敎ͼq个p查文了(jin)

看你当前的JVM最大可用到多少内存Q用如下命o(h)Q?java -Xmx多大内存m -version

一定要在多大内存后面加上m哦,要不它认为是字节KB呢,?x)抛错?br />




w@ns0ng 2010-11-03 15:14 发表评论
]]>
优化JVM参数提高eclipseq行速度http://www.aygfsteel.com/wansong/articles/331348.htmlw@ns0ngw@ns0ngTue, 07 Sep 2010 13:32:00 GMThttp://www.aygfsteel.com/wansong/articles/331348.htmlhttp://www.aygfsteel.com/wansong/comments/331348.htmlhttp://www.aygfsteel.com/wansong/articles/331348.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/331348.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/331348.html

w@ns0ng 2010-09-07 21:32 发表评论
]]>
XStream Annotations 入门【翻译?/title><link>http://www.aygfsteel.com/wansong/articles/331346.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 07 Sep 2010 13:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/wansong/articles/331346.html</guid><wfw:comment>http://www.aygfsteel.com/wansong/comments/331346.html</wfw:comment><comments>http://www.aygfsteel.com/wansong/articles/331346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wansong/comments/commentRss/331346.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wansong/services/trackbacks/331346.html</trackback:ping><description><![CDATA[<p>1、简单的转换器:(x)</p> <p>首先创徏CZ的环境,<br /> 下面介绍的是最基础的{换器Q首先创Z个Personc:(x)</p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }</pre> <p> 接着Q我们创Z个实例,q{化他Q?/p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class PersonTest { public static void main(String[] args) { Person person = new Person(); person.setName("Guilherme"); XStream xStream = new XStream(new DomDriver()); System.out.println(xStream.toXML(person)); } }</pre> <p> 如你所料,得到下面的结果:(x)</p> <pre language="xml" name="code"><com.thoughtworks.xstream.examples.Person> <name>Guilherme</name> </com.thoughtworks.xstream.examples.Person></pre> <p><font face="Courier New">下面我们为personcdZ个别名:(x)</font></p> <pre language="java" name="code">XStream xStream = new XStream(new DomDriver()); xStream.alias("person", Person.class); System.out.println(xStream.toXML(person));</pre> <p><font face="Courier New">现在的结果就很易M(jin)Q?/font></p> <pre language="xml" name="code"><person> <name>Guilherme</name> </person></pre> <p>到此Q我们已l徏立好一个可以供我们实验的基例子?jin),下面我们来看看XStream的{换器能ؓ(f)我们做些什么:(x)<br /> 2Q创Z个Person转换器:(x)<br /> 下面我们来创Z个简单的转换器,它能Q?br /> 1Q用来{换Personc?br /> 2Q将Person实例转换成XML<br /> 3Q将xml转换为Person实例<br /> 首先创徏一个PersonConverterc,q让q个cd现Converter接口Q?/p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class PersonConverter implements Converter { public boolean canConvert(Class clazz) { return false; } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { return null; } }</pre> <p><font face="Courier New">下面Q我们首先告诉{换器Q我们只能{换Personc,而不是别的类Q包括其子类Q?/font></p> <pre language="java" name="code">public boolean canConvert(Class clazz) { return clazz.equals(Person.class); }</pre> <p><font face="Courier New">q一步很单,除非你是用来处理泛型的{换器是会(x)困难一炏V?/font></p> <p><font face="Courier New">MarshalҎ(gu)是用来将对象转换为XML的,他有三个参数Q?br /> 1Q我们准备{换的对象<br /> 2Q我们准备输出对象的writer<br /> 3Q当前的marshaling context<br /> 首先我们object转换成Person</font></p> <p><font face="Courier New">Person person = (Person) value;<br /> 接着Q我们就可以开始输出数据了(jin)Q首先我们创Z个叫做fullname的节点,q将person的名字传l他Q?/font></p> <pre language="java" name="code">writer.startNode("fullname"); writer.setValue(person.getName()); writer.endNode();</pre> <p><font face="Courier New">呵呵~很单吧Q?/font></p> <pre language="java" name="code">public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Person person = (Person) value; writer.startNode("fullname"); writer.setValue(person.getName()); writer.endNode(); }</pre> <p><font face="Courier New">我们可以Lơ数的调用start/end nodeҎ(gu)Q但需要记住,你必d打开一个节点之后记住关闭它。一般来_(d)执行转换的操作在setValueҎ(gu)调用时发生?br /> 下面Q我们进入unmarshalҎ(gu)Q我们用moveDown和moveUpҎ(gu)在节Ҏ(gu)(wi)层次中移动,所以,q里我们只需要简单的moveDownQ得到|再moveUpQ?/font></p> <pre language="java" name="code">Person person = new Person(); reader.moveDown(); person.setName(reader.getValue()); reader.moveUp();</pre> <p><font face="Courier New">最后,我们得到?jin)一个这L(fng)转换器:(x)</font></p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class PersonConverter implements Converter { public boolean canConvert(Class clazz) { return clazz.equals(Person.class); } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Person person = (Person) value; writer.startNode("fullname"); writer.setValue(person.getName()); writer.endNode(); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Person person = new Person(); reader.moveDown(); person.setName(reader.getValue()); reader.moveUp(); return person; } }</pre> <p>接着Q我们在我们的mainҎ(gu)中注册这个{化器Q?/p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class PersonTest { public static void main(String[] args) { Person person = new Person(); person.setName("Guilherme"); XStream xStream = new XStream(new DomDriver()); xStream.registerConverter(new PersonConverter()); xStream.alias("person", Person.class); System.out.println(xStream.toXML(person)); } }</pre> <p>注意到我们怎么注册我们的{换器?jin)么Q只需要下面简单的一句:(x)</p> <p>xStream.registerConverter(new PersonConverter()); <br /> 最l得到的l果是:(x)</p> <p><person> <br />   <fullname>Guilherme</fullname> <br /> </person> <br /> 也许你会(x)_(d)(x)q只改变?jin)我输出的?wi)Q我需要用它来转换数据?br /> 下面我们来尝试在person标签中创Z个叫做fullname的属性,而不是新创徏一个节点:(x)<br /> 3Q一U可选的方式Q?br /> 首先Qؓ(f)Person创徏一个toStringҎ(gu)Q里面包含了(jin)所有能用来重新创徏一个Person实例的数据:(x)</p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return getName(); } }</pre> <p><font face="Courier New">现在Q我们就能把我们的{化器写ؓ(f)Q?/font></p> <p> </p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter; public class PersonConverter extends AbstractSingleValueConverter { public boolean canConvert(Class clazz) { return clazz.equals(Person.class); } public Object fromString(String str) { Person person = new Person(); person.setName(string); return person; } }</pre> <p><font face="Arial">现在Q输出的XML也会(x)变得更易读(为person创徏别名person之后Q:(x)</font></p> <p><font face="Arial"><person>Guilherme</person> <br /> 名字变成?jin)一个内|的|而不是一个单独的节点?br /> 4Q{换DateQ?br /> 我们已经知道Converter接口是怎样工作的了(jin)Q现在我们来创徏一个用Locale对象转换旉的{换器Q?br /> 在我们的转换器构造方法中Q我们将传入一个Locale对象Q该Locale对象?x)作Z个成员属性被转换器持有:(x)</font></p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import java.util.Locale; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class DateConverter implements Converter { private Locale locale; public DateConverter(Locale locale) { super(); this.locale = locale; } public boolean canConvert(Class clazz) { return false; } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { return null; } }</pre> <p><font face="Courier New">现在Q让我们能{换Q何承了(jin)Calendar对象的类Q?/font></p> <p><font face="Courier New">public boolean canConvert(Class clazz) { <br />         return Calendar.class.isAssignableFrom(clazz); <br /> } <br /> 首先Q我们来Calendar转换成本地化的字W串Q首先我们把object转化成Calendar,得到Date对象Qƈ使用DataFormatter来得C个本地化的时_(d)(x)</font></p> <pre language="java" name="code">public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Calendar calendar = (Calendar) value; // grabs the date Date date = calendar.getTime(); // grabs the formatter DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL, this.locale); // formats and sets the value writer.setValue(formatter.format(date)); }</pre> <p><font face="Courier New">另一斚wQ在unmarshallҎ(gu)中,我们创徏?jin)一个GregorianCalendarQ得到本地化的DataFormat实例Q将字符串{换成Date对象Qƈ赋值给GregorianCalendar?/font></p> <p><font face="Courier New">public Object unmarshal(HierarchicalStreamReader reader, <br />                 UnmarshallingContext context) { <br />         // creates the calendar <br />         GregorianCalendar calendar = new GregorianCalendar(); <br />         // grabs the converter <br />         DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL, <br />                         this.locale); <br />         // parses the string and sets the time <br />         try { <br />                 calendar.setTime(formatter.parse(reader.getValue())); <br />         } catch (ParseException e) { <br />                 throw new ConversionException(e.getMessage(), e); <br />         } <br />         // returns the new object <br />         return calendar; <br /> }</font></p> <p>注意Q?br /> 1Q记住一些DataFormat实现不是U程安全的,所以,不要让你的{换器持有DataFormat的引?br /> 2Q在l过?jin)保存和加蝲的过E后Q该转换器可以将其他Calendar实现转换为GregorianCalendar。如果这不是你希望的Q只需要修改canConvertҎ(gu)Qƈ在类型只有ؓ(f)GregorianCalendar的时候再q回true?br /> 现在Q我们得C(jin)下面q个转换器:(x)</p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import java.text.DateFormat; import java.text.ParseException; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import com.thoughtworks.xstream.converters.ConversionException; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class DateConverter implements Converter { private Locale locale; public DateConverter(Locale locale) { super(); this.locale = locale; } public boolean canConvert(Class clazz) { return Calendar.class.isAssignableFrom(clazz); } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Calendar calendar = (Calendar) value; Date date = calendar.getTime(); DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL, this.locale); writer.setValue(formatter.format(date)); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { GregorianCalendar calendar = new GregorianCalendar(); DateFormat formatter = DateFormat.getDateInstance(DateFormat.FULL, this.locale); try { calendar.setTime(formatter.parse(reader.getValue())); } catch (ParseException e) { throw new ConversionException(e.getMessage(), e); } return calendar; } }</pre> <p><font face="Courier New">现在Q我们来试一下,创徏一个mainҎ(gu)Q?br /> 1Q创Z个calendarQ?br /> 2Q创建XStream对象<br /> 3Q注册该转换器,q用Brazilian Portuguese本地化对?br /> 4Q将对象转化成XML<br /> 代码如下Q?/font></p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Locale; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.DomDriver; public class DateTest { public static void main(String[] args) { // grabs the current date from the virtual machine Calendar calendar = new GregorianCalendar(); // creates the xstream XStream xStream = new XStream(new DomDriver()); // brazilian portuguese locale xStream.registerConverter(new DateConverter(new Locale("pt", "br"))); // prints the result System.out.println(xStream.toXML(calendar)); } }</pre> <p> 可以得到cM如下的结果:(x)</p> <p><gregorian-calendar>Sexta-feira, 10 de Fevereiro de 2006</gregorian-calendar> <br /> 注意Q我们没有ؓ(f)GregorianCalendar创徏M别名Q而gregorian-calendar是默认的名字?br /> 下面我们来试试unmarshal Ҏ(gu)Q?/p> <p>// loads the calendar from the string <br /> Calendar loaded = (Calendar) xStream <br />                 .fromXML("<gregorian-calendar>Sexta-feira, 10 de Fevereiro de 2006</gregorian-calendar>"); <br /> 然后打印?gu)日期Q?/p> <p>// prints using the system defined locale <br /> System.out.println(DateFormat.getDateInstance(DateFormat.SHORT).format( <br />                 loaded.getTime())); <br /> 得到的结果ؓ(f)Q?/p> <p>2/10/06 <br /> 5Q复杂的转换器:(x)<br /> 创徏另一个例子:(x)<br /> 我们已经创徏?jin)两个对象?jin)Q现在把它们l合hQ?/p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; public class Birthday { private Person person; private Calendar date; public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public Calendar getDate() { return date; } public void setDate(Calendar date) { this.date = date; } }</pre> <p> 要{换该c,XStream一炚w题都没有。这里,我们实现自己的{换器主要是ؓ(f)?jin)验证,在这里,我们想重用我们刚才的PersonConverter和CalendarConverter。canConvert仍然很简单,不过q里Q我们不需要再为每一个属性重新写转换Ҏ(gu)?jin),我们只需要用已l注册了(jin)的{换器来完成{换:(x)</p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import java.util.Calendar; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class BirthdayConverter implements Converter { public boolean canConvert(Class clazz) { return Birthday.class == clazz; } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Birthday birthday = (Birthday)value; if (value.getPerson() != null) { writer.startNode("person"); context.convertAnother(value.getPerson()); writer.endNode(); } if (value.getDate() != null) { writer.startNode("birth"); context.convertAnother(value.getDate()); writer.endNode(); } } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Birthday birthday = new Birthday(); while (reader.hasMoreChildren()) { reader.moveDown(); if ("person".equals(reader.getNodeName())) { Person person = (Person)context.convertAnother(birthday, Person.class); birthday.setPerson(person); } else if ("birth".equals(reader.getNodeName())) { Calendar date = (Calendar)context.convertAnother(birthday, Calendar.class); birthday.setDate(date); } reader.moveUp(); } return birthday; } }</pre> <p> 如果birthday实例能够保不会(x)出现null|那么我们可以去掉marshal和unmarshalҎ(gu)中对null情况的判断,也不需要@环,而直接根据tag的名字进行解析:(x)</p> <pre language="java" name="code">package com.thoughtworks.xstream.examples; import java.util.Calendar; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; public class BirthdayConverter implements Converter { public boolean canConvert(Class clazz) { return Birthday.class == clazz; } public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Birthday birthday = (Birthday)value; writer.startNode("person"); context.convertAnother(value.getPerson()); writer.endNode(); writer.startNode("birth"); context.convertAnother(value.getDate()); writer.endNode(); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Birthday birthday = new Birthday(); reader.moveDown(); Person person = (Person)context.convertAnother(birthday, Person.class); birthday.setPerson(person); reader.moveUp(); reader.moveDown(); Calendar date = (Calendar)context.convertAnother(birthday, Calendar.class); birthday.setDate(date); reader.moveUp(); return birthday; } }</pre> <img src ="http://www.aygfsteel.com/wansong/aggbug/331346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wansong/" target="_blank">w@ns0ng</a> 2010-09-07 21:24 <a href="http://www.aygfsteel.com/wansong/articles/331346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java设计模式http://www.aygfsteel.com/wansong/articles/329624.htmlw@ns0ngw@ns0ngMon, 23 Aug 2010 02:15:00 GMThttp://www.aygfsteel.com/wansong/articles/329624.htmlhttp://www.aygfsteel.com/wansong/comments/329624.htmlhttp://www.aygfsteel.com/wansong/articles/329624.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/329624.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/329624.html
http://news.newhua.com/news1/program_net/2009/629/096291645F9AB1IE0K2GEB06GG3H9KID2IH4A1C0J6EK0AD9AAF52D.html?lt=common

w@ns0ng 2010-08-23 10:15 发表评论
]]>
servlet U程 安全?http://www.aygfsteel.com/wansong/articles/329280.htmlw@ns0ngw@ns0ngWed, 18 Aug 2010 14:28:00 GMThttp://www.aygfsteel.com/wansong/articles/329280.htmlhttp://www.aygfsteel.com/wansong/comments/329280.htmlhttp://www.aygfsteel.com/wansong/articles/329280.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/329280.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/329280.htmlhttp://www.yesky.com/334/1951334.shtml  实例变量  局部变量(Q?br />
在Serlet中避免用实例变量是保证ServletU程安全的最佳选择。从Java 内存模型也可以知道,Ҏ(gu)中的临时变量是在栈上分配I间Q而且每个U程都有自己U有的栈I间Q所以它们不?x)?jing)响线E的安全?br />
Ҏ(gu)JMM的设计,pȝ存在一个主内存(Main Memory)QJava中所有实例变量都储存在主存中Q对于所有线E都是共享的。每条线E都有自q工作内存(Working Memory)Q工作内存由~存和堆栈两部分l成Q缓存中保存的是d中变量的拯Q缓存可能ƈ不dd同步Q也是~存中变量的修改可能没有立刻写到d中;堆栈中保存的是线E的局部变量,U程之间无法怺直接讉K堆栈中的变量?br />
java的堆栈变量,实例变量Qstatic变量Q?br /> http://www.qqread.com/java/w952395600.html



w@ns0ng 2010-08-18 22:28 发表评论
]]>
MessageFormathttp://www.aygfsteel.com/wansong/articles/326844.htmlw@ns0ngw@ns0ngThu, 22 Jul 2010 08:13:00 GMThttp://www.aygfsteel.com/wansong/articles/326844.htmlhttp://www.aygfsteel.com/wansong/comments/326844.htmlhttp://www.aygfsteel.com/wansong/articles/326844.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/326844.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/326844.html logMessage = MessageFormat.format(portletLogFormat, args).toString();

w@ns0ng 2010-07-22 16:13 发表评论
]]>
ASM cglibhttp://www.aygfsteel.com/wansong/articles/326714.htmlw@ns0ngw@ns0ngWed, 21 Jul 2010 02:58:00 GMThttp://www.aygfsteel.com/wansong/articles/326714.htmlhttp://www.aygfsteel.com/wansong/comments/326714.htmlhttp://www.aygfsteel.com/wansong/articles/326714.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/326714.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/326714.html

w@ns0ng 2010-07-21 10:58 发表评论
]]>
Enum 使用http://www.aygfsteel.com/wansong/articles/326230.htmlw@ns0ngw@ns0ngThu, 15 Jul 2010 13:57:00 GMThttp://www.aygfsteel.com/wansong/articles/326230.htmlhttp://www.aygfsteel.com/wansong/comments/326230.htmlhttp://www.aygfsteel.com/wansong/articles/326230.html#Feedback0http://www.aygfsteel.com/wansong/comments/commentRss/326230.htmlhttp://www.aygfsteel.com/wansong/services/trackbacks/326230.html

w@ns0ng 2010-07-15 21:57 发表评论
]]>
վ֩ģ壺 | | | | ³ľ| | | | | | ϰ| Ҧ| ۽| ƺ| | | | | «| º| ɽ| ũ| | | ԫ| | | żҽ| ɰ| ˮ| | | | | | Զ| ڽ| ȫ| ɶ| ľ| ֬|