﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-皮皮左耳</title><link>http://www.blogjava.net/evoleht/</link><description>evoleht</description><language>zh-cn</language><lastBuildDate>Sun, 26 Apr 2026 14:07:55 GMT</lastBuildDate><pubDate>Sun, 26 Apr 2026 14:07:55 GMT</pubDate><ttl>60</ttl><item><title>Scheduler定时器 </title><link>http://www.blogjava.net/evoleht/archive/2010/08/11/328567.html</link><dc:creator>皮卡诺</dc:creator><author>皮卡诺</author><pubDate>Wed, 11 Aug 2010 10:40:00 GMT</pubDate><guid>http://www.blogjava.net/evoleht/archive/2010/08/11/328567.html</guid><wfw:comment>http://www.blogjava.net/evoleht/comments/328567.html</wfw:comment><comments>http://www.blogjava.net/evoleht/archive/2010/08/11/328567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/evoleht/comments/commentRss/328567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/evoleht/services/trackbacks/328567.html</trackback:ping><description><![CDATA[<p><span style="color: #000080"><span style="color: #000000"><span style="color: #993300">首先添加所需要的类包：quartz-1.5.2.jar，quartz-all-1.5.2.jar，quartz-jboss-1.5.2.jar</span>&nbsp;<wbr><wbr><br />
</span><span style="color: #000000"><span style="color: #993300">//设置定时作业<br />
</span>&nbsp;<wbr><wbr>public void startScheduler(HttpServletRequest requests)throws SchedulerException{<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>try{<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr></span><span style="color: #000000"><span style="color: #993300">//建立作业调度器<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr><span style="color: #800080"><span style="color: #000000">Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();</span></span><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr><span style="color: #993300">//判断作业调度内是否有作业，如果有将其删除</span><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr></span><span style="color: #000000"><span style="color: #800080">if (!scheduler.isShutdown()) {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> }<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr><span style="color: #993300">//删除调度器的作业后，新建一个我们现在要完成的作业，该作业所需要的类是ReceiveJobd.class,作业名字是ReceiveOnTimes,所属分组是Scheduler.DEFAULT_GROUP</span><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #800080">JobDetail jobDetail = new JobDetail("ReceiveOnTimed",<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> Scheduler.DEFAULT_GROUP,<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> ReceiveJobd.class);</span><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> int m = ips.length;<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> int n = tablenames.length;<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> <span style="color: #993300">//向作业内设置要传入的参数</span><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #800080">jobDetail.getJobDataMap().put("scheduler", scheduler);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> jobDetail.getJobDataMap().put("ipLength", m);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> jobDetail.getJobDataMap().put("tablenameLength", n);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> jobDetail.getJobDataMap().put("wcx",wc);<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> for (int i = 0; i &lt; m; i++) {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> jobDetail.getJobDataMap().put("ip" + i, ips[i]);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> for (int j = 0; j &lt; n; j++) {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> jobDetail.getJobDataMap().put("tablename" + j, tablenames[j]);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> }<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> }<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #993300">//建立触发器，判断何时触发该作业,参数为触发器的名称，触发器分组，作业名称，作业分组，时间设定<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #800080">Trigger trigger = new CronTrigger("ReceiverOnTimeTriggerd",<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> scheduler.DEFAULT_GROUP,<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> "ReceiveOnTimed",<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> scheduler.DEFAULT_GROUP, time);<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #993300">//将作业和触发器添加到调度器<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #800080">scheduler.scheduleJob(jobDetail, trigger);<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #993300">//按照设置开始调度<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> <span style="color: #800080">scheduler.start();</span><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>}catch(Exception e){<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>e.printStackTrace();<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>}<br />
&nbsp;<wbr><wbr>}<br />
&nbsp;<wbr><wbr></span><span style="color: #000000"><span style="color: #993300">具体作业类的处理：<br />
</span>&nbsp;<wbr><wbr>package com.bodhiya.schsystem.business;</span></span></p>
<p><span style="color: #800080"><span style="color: #000000">import org.quartz.Job;<br />
import org.quartz.JobDataMap;<br />
import org.quartz.JobExecutionContext;<br />
import org.quartz.JobExecutionException;<br />
import org.quartz.Scheduler;<br />
import org.springframework.web.context.WebApplicationContext;</span></span></p>
<p><span style="color: #000080"><span style="color: #000000">public class ReceiveJobd <span style="color: #800080">implements Job</span>{<br />
&nbsp;<wbr><wbr>public void ReceiveJobd(){<br />
&nbsp;<wbr><wbr>}<br />
&nbsp;<wbr><wbr></span><span style="color: #000000"><span style="color: #993300">//作业具体实现的功能<br />
</span>&nbsp;<wbr><wbr>public void </span><span style="color: #000000"><span style="color: #800080">execute(JobExecutionContext context) throws<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> JobExecutionException</span> {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> try {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> <span style="color: #993300">//建立JobDataMap对象，用来接收传递的参数</span><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #800080">JobDataMap dataMap = context.getMergedJobDataMap();<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> int ipLength = dataMap.getInt("ipLength");<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> int tablenameLength = dataMap.getInt("tablenameLength");<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #800080">WebApplicationContext wc=(WebApplicationContext)dataMap.get("wcx");<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr><br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> String ip = "";<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> String tablename = "";<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> for (int i = 0; i &lt; ipLength; i++) {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> ip = dataMap.getString("ip" + i);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> for (int j = 0; j &lt; tablenameLength; j++) {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> tablename = dataMap.getString("tablename" + j);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> ExchangeAccess ea=new ExchangeAccess(ip,tablename,wc);<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr></span><span style="color: #000000"><span style="color: #800080">//启动线程<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> ea.start();<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> }<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> }<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> </span><span style="color: #000000"><span style="color: #800080">Scheduler scheduler = (Scheduler) dataMap.get("scheduler");<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> scheduler.deleteJob("ReceiveOnTimed", Scheduler.DEFAULT_GROUP);<br />
</span>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> } catch (Exception ex) {<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> ex.printStackTrace();<br />
&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr>&nbsp;<wbr><wbr> }<br />
&nbsp;<wbr><wbr>}<br />
}<br />
</span></span></p>
 <img src ="http://www.blogjava.net/evoleht/aggbug/328567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/evoleht/" target="_blank">皮卡诺</a> 2010-08-11 18:40 <a href="http://www.blogjava.net/evoleht/archive/2010/08/11/328567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>quartz-scheduler 定时器</title><link>http://www.blogjava.net/evoleht/archive/2010/08/11/328564.html</link><dc:creator>皮卡诺</dc:creator><author>皮卡诺</author><pubDate>Wed, 11 Aug 2010 10:28:00 GMT</pubDate><guid>http://www.blogjava.net/evoleht/archive/2010/08/11/328564.html</guid><wfw:comment>http://www.blogjava.net/evoleht/comments/328564.html</wfw:comment><comments>http://www.blogjava.net/evoleht/archive/2010/08/11/328564.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/evoleht/comments/commentRss/328564.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/evoleht/services/trackbacks/328564.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在阐述quartz是个什么东西之前，我先说个事。很多时候，我们经常在台历上标注出，某一天是某人的生日，某一天有某个重要的事情，给自己一个提醒。一个台历加上所要做的事情的内容，就是一个scheduler。计算机系统，是帮助人们完成既定事务的。所以，我们希望，把&#8220;日程规划＋具体事务&#8221;，交给系统，系统就能按照我们的要求自动去工作。<br />
&nbsp;&nbsp;&nbsp;&nbsp;好了，quartz就是这么一个东西。我们只需要定义好时间表，并对应指定的操作，它就能够按照我们的要求在指定时间驱动指定的工作，如此简单。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; quartz中，所有需要驱动的工作，都是实现job接口的类。job接口很简单，就只有一个excute()方法，只要把这个类交给quartz，它就会自动去执行这个方法。方法里面定义的就是我们真正需要进行的工作，恩，这都没有什么问题。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在的问题在于，很多时候我们需要执行的工作类，是外部类，并没有继承job接口。也就是说，我们希望quartz能够驱动任意的类的任意方法，这该怎么办？这也是我第一阶段的一个小目标。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;一开始我想改变quartz的驱动方式，也就是改变runshell里面的东西，后来发现，这太复杂了，这是quartz最核心的东西，动一发而牵全身。我只是想利用quartz的优势，并不想大规模的改动。<br />
&nbsp;&nbsp;&nbsp;&nbsp;走了不少弯路之后，想了一个不错的方案。就是，我们只需要定义好所需要的类名、方法名、方法需要的参数，然后利用reflect，来实例化类，然后invoke指定方法。而把这些工作放在一个通用的job模板中的excute方法，这样，我们只需要把指定参数传入这个通用job模板，然后直接驱动此job就能实现我们上面的目标。<br />
&nbsp;&nbsp;&nbsp;&nbsp;参数传递采用的方案是：<br />
&nbsp;&nbsp;&nbsp;&nbsp;1、数据源。把我们需要指定的信息以配置文件的方式给出，主要是，工作组、工作名、工作对应的类，指定的方法，所需的参数。<br />
&nbsp;&nbsp;&nbsp;&nbsp;2、数据传递。写一个metadata用来包装这些信息，这样做是为了将来管理的方便。然后用metadata来初始化jobdetail，重写工作组、工作名，将类信息保存在jobDataMap中，然后在执行excute的时候，再把这些信息取出来。<br />
&nbsp;&nbsp;&nbsp;&nbsp;3、工作执行。利用reflect技术，执行指定类的指定方式。<br />
&nbsp;&nbsp;&nbsp;&nbsp;4、数据返回。excute结束之前，把需要返回的数据放在jobDataMap中，scheduler结束之前，把这些数据从jobDataMap中取出来。<br />
&nbsp;&nbsp;&nbsp;&nbsp;完美的方案，开心一下！<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;下一步研究quartz的另外一个大部分&nbsp;时间表。<br />
<br />
&nbsp;&nbsp;&nbsp; quartz的一些基本概念<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Job&nbsp;与&nbsp;JobDetail<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Job是quartz中最基本的概念了，Job做为一个接口只有一个execute()方法等待实现，理论上所有用quartz执行的job都需要实现这个接口，但是现在大多数的系统都不会服从这种约束，而希望能够更自由的调用原有系统中的类的方法。实现自由调用，有两个途径，我上一节总结中的那个方案是一个简单的途径，另外一个途径就是借助于spring的class&nbsp;bean，这个将在后面介绍。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StatefullJob接口:&nbsp;无状态任务对应的JobDataMap可以认为是只读的,而有状态的任务在多次执行过程中保留对JobDataMap所作的修改,一个后果是有状态任务无法被并发执行。上面这句话是抄袭的，事实上我还是不是很清楚二者究竟的区别？<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JobDetail是用来包装Job实例的具体细节的。Job以class的方式传入JobDetail，quartz会自动实例化Job类的。同时需要规定job的name和group，在jobdetail的validate()下，一个job是必须有name和group属性，并且二者组合标示唯一的job。JobDetail中的一些重要数据存放在JobDataMap中，这个map可以用来在控制程序和job内传递需要传递的参数。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JobDetail还有三个重要的boolean值的属性，分别是durability、volatility、shouldRecover。这三个属性默认是false，主要在数据库操作的时候起作用。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trigger时间调度<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相对于job，trigger简单一些。所谓的时间调度，就是设置job执行的时间表。Trigger主要分为SimpleTrigger和CronTrigger两大类。前者主要是以1/1000<br />
为单位的简单时间，可是设置startTime、endTime、repeatCount、repeatInterval等主要参数。CronTrigger的详细用法参看quartz文档的的CronTriggers&nbsp;Tutorial。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler.schedulerJob(jobDetail,&nbsp;trigger);将JobDetail和对应的Trigger部署到scheduler中，然后根据trigger的定义，自动执行指定job。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Calendar这个类用来标识出特殊的时间，scheduler根据trigger执行job的时候，如果遇到这些标识出的特殊时间则不执行job。Calendar具体的接口有BaseCalendar、AnnualCalendar、HolidayCalendar、MonthlyCalendar、WeeklyCalendar等等。calendar的具体用法参看quartz的文档。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Misfire&nbsp;Instruction....设定当trigger错过了触发时刻的时候需要采取的处理策略<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TriggerUtils相当于一个trigger&nbsp;factory，方便我们取得特殊trigger的实例，而不用自己去构造。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener是用来监听quartz的执行过程的，主要有JobListener，TriggerListener，SchedulerListener。joblistener监听一个job在quartz中执行的待执行，禁止执行，执行完毕三个状态。TriggerListener监听trigger触发、完成、错过、禁止四个状态。SchedulerListener监听scheduler执行过程的一些状态，具体参看SchedulerListener的源代码。<br />
<br />
转自：http://flyinglife.javaeye.com/blog/74553<br />
另：http://forums.opensymphony.com/category.jspa?categoryID=8。<br />
另外推荐一个java的blog：http://www.blogjava.net/javaora/。
<img src ="http://www.blogjava.net/evoleht/aggbug/328564.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/evoleht/" target="_blank">皮卡诺</a> 2010-08-11 18:28 <a href="http://www.blogjava.net/evoleht/archive/2010/08/11/328564.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【java】位、字节、汉字、字符的关系</title><link>http://www.blogjava.net/evoleht/archive/2010/08/11/328486.html</link><dc:creator>皮卡诺</dc:creator><author>皮卡诺</author><pubDate>Wed, 11 Aug 2010 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/evoleht/archive/2010/08/11/328486.html</guid><wfw:comment>http://www.blogjava.net/evoleht/comments/328486.html</wfw:comment><comments>http://www.blogjava.net/evoleht/archive/2010/08/11/328486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/evoleht/comments/commentRss/328486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/evoleht/services/trackbacks/328486.html</trackback:ping><description><![CDATA[<p>bit、byte、位、字节、汉字的关系</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 bit&nbsp;&nbsp;&nbsp;&nbsp; = 1&nbsp; 二进制数据<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 byte&nbsp; = 8&nbsp; bit<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 字母 = 1&nbsp; byte = 8 bit<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 汉字 = 2&nbsp; byte = 16 bit</p>
<p><br />
1. bit：位<br />
&nbsp;&nbsp;&nbsp; 一个二进制数据0或1，是1bit；</p>
<p>2. byte：字节<br />
&nbsp;&nbsp;&nbsp; 存储空间的基本计量单位，如：MySQL中定义 VARCHAR(45)&nbsp; 即是指 45个字节；<br />
&nbsp;&nbsp;&nbsp; 1 byte = 8 bit</p>
<p>3. 一个英文字符占一个字节；<br />
&nbsp;&nbsp;&nbsp; 1 字母 = 1 byte = 8 bit</p>
<p>4. 一个汉字占2个字节；<br />
&nbsp;&nbsp;&nbsp; 1 汉字 = 2 byte = 16 bit</p>
<p>5. 标点符号<br />
&nbsp;&nbsp;&nbsp; A&gt;.&nbsp; 汉字输入状态下，默认为全角输入方式；<br />
&nbsp;&nbsp;&nbsp; B&gt;.&nbsp; 英文输入状态下，默认为半角输入方式；</p>
<p>&nbsp;&nbsp;&nbsp; C&gt;.&nbsp; 全角输入方式下，标点符号占2字节；<br />
&nbsp;&nbsp;&nbsp; D&gt;.&nbsp; 半角输入方式下，标点符号占1字节；</p>
<p>&nbsp;&nbsp;&nbsp; 故：汉字输入状态下的字符，占2个字节 (但不排除，自己更改了默认设置)；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 英文输入状态下的字符，占1个字节 (但不排除，自己更改了默认设置)；</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 老美在发明电脑时，肯定以自己的英文字母--即他们自认为的字符为最小的存储计量单位，于是也就有了不规范的1字符=1byte， 岂不知还有我们伟大的汉字计量单位，NND，一个汉字也是一个字符，我们的1汉字字符就等于2byte，后来，他们可能意识到这个尴尬的问题，于是又标榜为：一个字母为一个标准字符，去球吧，谁整天没事说个字符还&#8220;标准字符&#8221;，所以啊，个人认为：字符，不能用于标准的计量单位。<br />
--------------------------------<br />
补充：<br />
&nbsp;&nbsp;&nbsp;&nbsp;计算机对各国语言的支持度，可分为以下三个阶段，如图：<br />
<br />
<img height="490" alt="" src="http://www.blogjava.net/images/blogjava_net/myfly/bianm.jpg" width="591" border="0" /> </p>
<p><span style="font-family: Arial"><br />
更详细参考：<font style="background-color: #cce8cf"><a href="http://www.regexlab.com/zh/encoding.htm">http://www.regexlab.com/zh/encoding.htm</a>&nbsp;</font>。<br />
<br />
<br />
</span></p>
转自http://www.blogjava.net/myfly/archive/2008/09/24/230875.html
<img src ="http://www.blogjava.net/evoleht/aggbug/328486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/evoleht/" target="_blank">皮卡诺</a> 2010-08-11 10:50 <a href="http://www.blogjava.net/evoleht/archive/2010/08/11/328486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>