﻿<?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-&lt;h3 style="font-family: Comic Sans MS"&gt;&lt;font color="#FA1A0A" size="10"&gt;︻┳═一Java&lt;/font&gt;&lt;/h3&gt;-随笔分类-转载</title><link>http://www.blogjava.net/rain1102/category/16395.html</link><description>&lt;b&gt;&lt;font color="#3C1435"&gt;08年奋斗目标：&lt;/font&gt;&lt;font color="#F70E0A"&gt;赚钱买个房子！&lt;/font&gt;&lt;/b&gt;</description><language>zh-cn</language><lastBuildDate>Thu, 15 May 2008 15:33:01 GMT</lastBuildDate><pubDate>Thu, 15 May 2008 15:33:01 GMT</pubDate><ttl>60</ttl><item><title>Red5+OpenOffice+OpenMeetings架设视频会议网络(转)</title><link>http://www.blogjava.net/rain1102/archive/2008/05/15/200591.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 15 May 2008 02:58:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/05/15/200591.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/200591.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/05/15/200591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/200591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/200591.html</trackback:ping><description><![CDATA[因工作需要，这两天弄了一个视频会议服务器。采用了flash流媒体服务器Red5+OpenMeetings。其实是OpenMeetings的运行依 赖于Red5，也就是说OpenMeetings是一个基于Flash的视频会议解决方案。OpenMeetings的一大亮点是能够在会议过程中做 PPT的演示，这一功能得益于OpenOffice的文档转换能力和提供Java远程访问的能力。<br />
&nbsp;&nbsp;&nbsp; 整个架设过程非常简单。<br />
&nbsp;&nbsp;&nbsp; 1、Red5提供了个常见操作系统的安装包，完全傻瓜式的安装，下一步下一步解决。<br />
&nbsp;&nbsp;&nbsp; 2、从OpenMeetings的网站（http://code.google.com/p/openmeetings/downloads/list）下载最新的Web应用，解压到Red5的webapps目录下（Red5内置Tomcat服务器）；<br />
&nbsp;&nbsp;&nbsp; 3、在OpenMeetings的web应用的install目录下修改hibernate.cfg.xml文件，将数据库配置到已创建的数据库（只需要创建数据库，不需要手工建表）；<br />
&nbsp;&nbsp;&nbsp; 4、重启Red5服务，加载OpenMettings应用；<br />
&nbsp;&nbsp;&nbsp; 5、打开浏览器输入http://localhost:5080/xmlcrm/Install(注意大小写，如果你修改了Red5的端口，将5080修 改成您指定的端口)；在现实的页面上点击&#8220;Step 1&#8221;开始OpenMeetings配置。需要注意的是邮件服务器必须正确的填写，否则无法进行用户注册，也就没有用户可以登录使用了。部署时还需要注意两 个工具的配置，一个是SWF工具（完成其它类型文档到swf的转换）和图形工具，这两个工具在配置页面上提供了下载地址（google so cool！），再输入工具地址的时候要以"/"结束。<br />
&nbsp;&nbsp;&nbsp; 6、上一步输入完成后点击&#8220;send&#8221;开始配置，这个配置的过程大概需要5--10分钟，不要以为应用死翘翘了:-)。<br />
&nbsp;&nbsp;&nbsp; 7、配置完成以后就可以登录使用了，enjoy it！<br />
<br />
后记：由于OpenMeetings默认的一个会议室只能4个人参加，不知道老外怎么想的。没办法，只能下载OpeenMeetings的源码作修改。 OpenMeetins的客户端源码是一个&#8220;OpenLaszlo &#8221;的应用，被逼无奈研究了一下OpenLaszlo ，感觉还算是个不错的RIA解决方案。放开人员的限制只需要修改videoconference\xmlcrm\content\conference\ roomlistItem.lzx文件的maxUsers变量的值就可以了；但是你会发现人员限制放开了，但是会议室里面的摄像头个数还是4个，怎么办？ 这个只需要修改一下videoconference\xmlcrm\content\conference\conference.lzx文件，参考原来 的摄像头布局，添加摄像头个数就可以了，不过摄像头个数确实不适合太多，因为摄像头一多数据流量会相当大，服务器压力太大，而且一般的视频会议也就是几个 领导+几个小兵，小兵就不用摄像头了嘛，乖乖的看和听就可以了。&nbsp;<img src ="http://www.blogjava.net/rain1102/aggbug/200591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-05-15 10:58 <a href="http://www.blogjava.net/rain1102/archive/2008/05/15/200591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript类库 - Rico</title><link>http://www.blogjava.net/rain1102/archive/2008/05/13/200217.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Tue, 13 May 2008 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/05/13/200217.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/200217.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/05/13/200217.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/200217.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/200217.html</trackback:ping><description><![CDATA[<p>Apache License的，一个免费使用的东东。<br />
Rico (http://openrico.org/)是开源的JavaScript类库，用来创建丰富的internet应用。<br />
1、可以方便地制作很玄地圆角矩形。<br />
2、可以设置TAB面板<br />
3、支持DRAG&amp;DROP<br />
4、提供一个LiveGrid的数据表格，支持Title Sorting和Page splite<br />
5、提供一个Ajax引擎。<br />
6、提供一个色彩库，默认一些色彩。<br />
7、主页是<a href="http://openrico.org/rico/home.page">http://openrico.org/rico/home.page</a>。&nbsp;<br />
<br />
因为Rico是建立在Prototype类库之上的，所以你在使用Rico的时候必须对Prototype进行引用： <br />
&lt;script type="text/javascript" <br />
&nbsp;src="prototype.js"&gt; <br />
&lt;/script&gt; <br />
&lt;script type="text/javascript" <br />
&nbsp;src="rico.js"&gt; <br />
&lt;/script&gt;</p><img src ="http://www.blogjava.net/rain1102/aggbug/200217.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-05-13 15:28 <a href="http://www.blogjava.net/rain1102/archive/2008/05/13/200217.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于T60、X60重装系统的解决方案</title><link>http://www.blogjava.net/rain1102/archive/2008/05/06/198758.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Tue, 06 May 2008 09:29:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/05/06/198758.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/198758.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/05/06/198758.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/198758.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/198758.html</trackback:ping><description><![CDATA[&nbsp;<span style="font-size: 11.5pt; color: black; font-family: Arial"><font face="宋体" size="2">T60、X60</font></span><span style="font-size: 11.5pt; color: black; font-family: 宋体">联想采用了</span><span style="font-size: 11.5pt; color: black; font-family: Arial">sata</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">接口的硬盘，安装系统时会出现蓝屏而终止，解决方案如下：</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">开机进</span><span style="font-size: 11.5pt; color: black; font-family: Arial">bios</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">，将</span><span style="font-size: 11.5pt; color: black; font-family: Arial">sata</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">里的</span><span style="font-size: 11.5pt; color: black; font-family: Arial">AHCI</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">模式改为</span><span style="font-size: 11.5pt; color: black; font-family: Arial">compatibility</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">模式，</span><span style="font-size: 11.5pt; color: black; font-family: Arial">F10</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">保存重启，然后安装系统</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">安装完系统后下载</span><span style="font-size: 11.5pt; color: black; font-family: Arial">Intel Matrix Storage Manager Driver</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">（见我贴的附件），默认解压缩至</span><span style="font-size: 11.5pt; color: black; font-family: Arial">C:"DRIVERS"WIN"IMSM</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">，执行</span><span style="font-size: 11.5pt; color: black; font-family: Arial">C:"DRIVERS"WIN"IMSM"prepare"install.bat</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">，重启，</span><span style="font-size: 11.5pt; color: black; font-family: Arial">f1</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">进入</span><span style="font-size: 11.5pt; color: black; font-family: Arial">bios</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">，</span><span style="font-size: 11.5pt; color: black; font-family: Arial">sata</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">改回</span><span style="font-size: 11.5pt; color: black; font-family: Arial">AHCI<br />
</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">进入</span><span style="font-size: 11.5pt; color: black; font-family: Arial">win</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">，发现</span><span style="font-size: 11.5pt; color: black; font-family: Arial">sata</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">控制器，不要搜索，安装驱动时指向</span><span style="font-size: 11.5pt; color: black; font-family: Arial">C:"DRIVERS"WIN"IMSM</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">，系统至此就</span><span style="font-size: 11.5pt; color: black; font-family: Arial">ok</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">了</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
<br />
</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">前面的太简单了，来个详细的</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
T60/X60</span><span style="font-size: 11.5pt; color: black; font-family: 宋体">安装操作系统全攻略</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
<br />
</span><span style="font-size: 10pt; color: black; font-family: Arial">1</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">bios</span><span style="font-size: 10pt; color: black; font-family: 宋体">设置。这一步是针对</span><span style="font-size: 10pt; color: black; font-family: Arial">T60/X60</span><span style="font-size: 10pt; color: black; font-family: 宋体">的。开机按</span><span style="font-size: 10pt; color: black; font-family: Arial">f1</span><span style="font-size: 10pt; color: black; font-family: 宋体">进入</span><span style="font-size: 10pt; color: black; font-family: Arial">bios</span><span style="font-size: 10pt; color: black; font-family: 宋体">，进入</span><span style="font-size: 10pt; color: black; font-family: Arial">configuration</span><span style="font-size: 10pt; color: black; font-family: 宋体">，然后在</span><span style="font-size: 10pt; color: black; font-family: Arial">SATA</span><span style="font-size: 10pt; color: black; font-family: 宋体">里面将</span><span style="font-size: 10pt; color: black; font-family: Arial">SATA</span><span style="font-size: 10pt; color: black; font-family: 宋体">的模式设置成</span><span style="font-size: 10pt; color: black; font-family: Arial">compatibility</span><span style="font-size: 10pt; color: black; font-family: 宋体">（兼容模式），默认的是</span><span style="font-size: 10pt; color: black; font-family: Arial">AHCI</span><span style="font-size: 10pt; color: black; font-family: 宋体">模式（高级主控接口），这一步很重要，否则安装操作系统时会蓝屏，其中的原因，是因为</span><span style="font-size: 10pt; color: black; font-family: Arial">XP</span><span style="font-size: 10pt; color: black; font-family: 宋体">系统安装盘一般不带</span><span style="font-size: 10pt; color: black; font-family: Arial">SATA</span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动。然后按</span><span style="font-size: 10pt; color: black; font-family: Arial">f10</span><span style="font-size: 10pt; color: black; font-family: 宋体">，回车，退出</span><span style="font-size: 10pt; color: black; font-family: Arial">bios</span><span style="font-size: 10pt; color: black; font-family: 宋体">。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;2</span><span style="font-size: 10pt; color: black; font-family: 宋体">、安装光盘。用一张可以光盘启动的</span><span style="font-size: 10pt; color: black; font-family: Arial">XP</span><span style="font-size: 10pt; color: black; font-family: 宋体">安装光盘启动你的电脑，接下来就开始安装了，相对于准备工作，安装倒是轻松很多，经过很多大家熟悉的画面后，</span><span style="font-size: 10pt; color: black; font-family: Arial">XP</span><span style="font-size: 10pt; color: black; font-family: 宋体">安装完成。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;3</span><span style="font-size: 10pt; color: black; font-family: 宋体">、安装系统之后驱动程序的安装还是有点讲究的。最先安装的应该是</span><span style="font-size: 10pt; color: black; font-family: Arial">SATA</span><span style="font-size: 10pt; color: black; font-family: 宋体">硬盘的驱动，否则你就只能一直用兼容模式运行了，那不是可惜了</span><span style="font-size: 10pt; color: black; font-family: Arial">sata</span><span style="font-size: 10pt; color: black; font-family: 宋体">的传输速度了。先在恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里，找到</span><span style="font-size: 10pt; color: black; font-family: Arial">Matrix Storage.exe </span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，双击，会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/drivers/win/imsm</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录，然后运行</span><span style="font-size: 10pt; color: black; font-family: Arial">c:/drivers/win/imsm/prepare</span><span style="font-size: 10pt; color: black; font-family: 宋体">里面的</span><span style="font-size: 10pt; color: black; font-family: Arial">install.bat</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，完成之后，重启，就可以在</span><span style="font-size: 10pt; color: black; font-family: Arial">bios</span><span style="font-size: 10pt; color: black; font-family: 宋体">里面把</span><span style="font-size: 10pt; color: black; font-family: Arial">sata</span><span style="font-size: 10pt; color: black; font-family: 宋体">的模式改回</span><span style="font-size: 10pt; color: black; font-family: Arial">ahci</span><span style="font-size: 10pt; color: black; font-family: 宋体">了，进入系统之后会提示发现</span><span style="font-size: 10pt; color: black; font-family: Arial">ide</span><span style="font-size: 10pt; color: black; font-family: 宋体">控制器，安装驱动时指向</span><span style="font-size: 10pt; color: black; font-family: Arial">c:/drivers/win/imsm</span><span style="font-size: 10pt; color: black; font-family: 宋体">即可。</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
</span><span style="font-size: 10pt; color: black; font-family: Arial">4</span><span style="font-size: 10pt; color: black; font-family: 宋体">、接下来安装其他驱动程序和软件。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">一、芯片组驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;Intel</span><span style="font-size: 10pt; color: black; font-family: 宋体">芯片组驱动</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/WIN/INTELINF</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">二、显卡驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60</span><span style="font-size: 10pt; color: black; font-family: 宋体">显卡驱动</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/WIN/VIDEO</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">三、电源管理驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;IBM</span><span style="font-size: 10pt; color: black; font-family: 宋体">电源管理</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/WIN/IBMPM</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">四、安全芯片驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;</span><span style="font-size: 10pt; color: black; font-family: 宋体">安全芯片</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERSWIN/TPM</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">五、</span><span style="font-size: 10pt; color: black; font-family: Arial">HD</span><span style="font-size: 10pt; color: black; font-family: 宋体">总线驱动。装驱动第二个难点在于</span><span style="font-size: 10pt; color: black; font-family: Arial">HD</span><span style="font-size: 10pt; color: black; font-family: 宋体">总线，这是</span><span style="font-size: 10pt; color: black; font-family: Arial">T60/X60</span><span style="font-size: 10pt; color: black; font-family: 宋体">上的一个高端东西，就是高清晰的音频总线。在设备管理器里有个未知设备，把它的驱动程序路径指向恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">－</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;HD</span><span style="font-size: 10pt; color: black; font-family: 宋体">总线</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录，就可以顺利安装了。只有先安装了</span><span style="font-size: 10pt; color: black; font-family: Arial">HD</span><span style="font-size: 10pt; color: black; font-family: 宋体">总线，才能安装声卡和</span><span style="font-size: 10pt; color: black; font-family: Arial">modem</span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动，切记！</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">六、声卡、</span><span style="font-size: 10pt; color: black; font-family: Arial">modem</span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;</span><span style="font-size: 10pt; color: black; font-family: 宋体">声卡驱动</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件和</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;modem</span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/WINAudio</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial">modem </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/HDAMODEM </span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">七、网卡、无线网卡驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;</span><span style="font-size: 10pt; color: black; font-family: 宋体">网卡驱动</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件和</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;</span><span style="font-size: 10pt; color: black; font-family: 宋体">无线网卡驱动</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/WIN/ETHERNET </span><span style="font-size: 10pt; color: black; font-family: 宋体">和</span><span style="font-size: 10pt; color: black; font-family: Arial"> WLANINT </span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">八、鼠标、触摸板驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;UltraNav.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件（</span><span style="font-size: 10pt; color: black; font-family: Arial">X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">是</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;Trackpoint.exe</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件），它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/W2K/UNAV </span><span style="font-size: 10pt; color: black; font-family: 宋体">和</span><span style="font-size: 10pt; color: black; font-family: Arial"> TPOINT </span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">九、指纹识别驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;</span><span style="font-size: 10pt; color: black; font-family: 宋体">指纹识别</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，就可以安装了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;</span><span style="font-size: 10pt; color: black; font-family: 宋体">十、蓝牙驱动。运行恢复光盘里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;T60/X60 </span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动和软件</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;</span><span style="font-size: 10pt; color: black; font-family: 宋体">蓝牙</span><span style="font-size: 10pt; color: black; font-family: Arial">.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">文件，它会解压到</span><span style="font-size: 10pt; color: black; font-family: Arial">C:/DRIVERS/WIN/TPBTooth</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录下。到此目录下运行</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;setup.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">就可以安装了。</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
<br />
</span><span style="font-size: 10pt; color: black; font-family: Arial">IBM</span><span style="font-size: 10pt; color: black; font-family: 宋体">的各种工具软件，有些很实用，有些没用，大家各取所需吧。下面一一介绍：</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;1</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Configuration utility</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－系统实用配置工具，在这里，你可以了解你电脑的方方面面，包括系统信息、操作使用和配置。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;2</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Hotkey</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－快捷键及屏幕显示工具。如果你突然发现你按了音量键或者调整屏幕亮度，却没看到屏幕上有显示，安装它就没错了。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;3</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">power manager</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－察看你的电池信息，调整电源使用方案。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;4</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">APS</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－硬盘保护工具，保护你的硬盘不受伤害。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;5</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">EasyEject</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－快速弹出</span><span style="font-size: 10pt; color: black; font-family: Arial">USB </span><span style="font-size: 10pt; color: black; font-family: 宋体">设备的工具，要想使用</span><span style="font-size: 10pt; color: black; font-family: Arial">Fn</span><span style="font-size: 10pt; color: black; font-family: 宋体">＋</span><span style="font-size: 10pt; color: black; font-family: Arial">F9</span><span style="font-size: 10pt; color: black; font-family: 宋体">的功能键，就先安装它。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;6</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Keyboard Customizer</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－定制键盘快捷键的工具。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;7</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">systemupdate</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－要保持你的驱动和软件是最新版本就用它吧，会为你上网搜索最新的驱动和工具软件。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;8</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Access Connections</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－让你在不同的网络环境下自由切换，减少烦琐的设置。如果你想使用</span><span style="font-size: 10pt; color: black; font-family: Arial">Fn</span><span style="font-size: 10pt; color: black; font-family: 宋体">＋</span><span style="font-size: 10pt; color: black; font-family: Arial">F5</span><span style="font-size: 10pt; color: black; font-family: 宋体">的快捷键，也要安装它。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;9</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">UltraNav Wizard</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－小红帽与触摸板的调整工具，安装它，你可以使用</span><span style="font-size: 10pt; color: black; font-family: Arial">Fn</span><span style="font-size: 10pt; color: black; font-family: 宋体">＋</span><span style="font-size: 10pt; color: black; font-family: Arial">F8</span><span style="font-size: 10pt; color: black; font-family: 宋体">的快捷键。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;10</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Presentation</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－把电脑输出到投影仪上的调整工具。</span><span style="font-size: 11.5pt; color: black; font-family: Arial"><br />
</span><span style="font-size: 10pt; color: black; font-family: Arial">11</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Productivity</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－一个介绍怎样使用小黑各种功能的工具。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;12</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Help Center</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－帮助中心，有问题就到这里找答案。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;13</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Message Center</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－发布关于小黑的最新消息。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;14</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Away Manager</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－当你离开电脑的时候，可以用这个工具来设置，让小黑继续按照你的意愿继续工作。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;15</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Client Security Solution</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－客户端安装解决方案，可以用它来为文件加密，还有密码管理器功能。提醒大家一定要小心使用，如果因为使用它而导致任何数据及资料损失，本站概不负责！</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
&nbsp;&nbsp;16</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Rescue and Recovery</span><span style="font-size: 10pt; color: black; font-family: 宋体">－－备份与恢复软件。要使用到</span><span style="font-size: 10pt; color: black; font-family: Arial">IBM</span><span style="font-size: 10pt; color: black; font-family: 宋体">的一键恢复功能，一定要先安装它。本人认为，这是一个笨拙、烦琐的东西，不推荐使用。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
<br />
</span><span style="font-size: 10pt; color: black; font-family: 宋体">备注：安装</span><span style="font-size: 10pt; color: black; font-family: Arial">Windows 2003 </span><span style="font-size: 10pt; color: black; font-family: 宋体">的要点：</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
1</span><span style="font-size: 10pt; color: black; font-family: 宋体">、先升级到</span><span style="font-size: 10pt; color: black; font-family: Arial">SP1</span><span style="font-size: 10pt; color: black; font-family: 宋体">；</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
2</span><span style="font-size: 10pt; color: black; font-family: 宋体">、安装</span><span style="font-size: 10pt; color: black; font-family: Arial">2003</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里的</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;WindowsServer2003-KB901105-v3-x86-CHS.exe&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">补丁，否则无法安装声卡驱动和</span><span style="font-size: 10pt; color: black; font-family: Arial">modem</span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动；</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
3</span><span style="font-size: 10pt; color: black; font-family: 宋体">、有个未知设备是</span><span style="font-size: 10pt; color: black; font-family: Arial">SD</span><span style="font-size: 10pt; color: black; font-family: 宋体">读卡器，驱动在</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8220;2003&#8221;-&#8220;SD</span><span style="font-size: 10pt; color: black; font-family: 宋体">驱动</span><span style="font-size: 10pt; color: black; font-family: Arial">&#8221;</span><span style="font-size: 10pt; color: black; font-family: 宋体">里；</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
4</span><span style="font-size: 10pt; color: black; font-family: 宋体">、</span><span style="font-size: 10pt; color: black; font-family: Arial">Windows 2003 </span><span style="font-size: 10pt; color: black; font-family: 宋体">企业版本身不支持红外线设备，所以必须另外安装红外线驱动。驱动也在</span><span style="font-size: 10pt; color: black; font-family: Arial">2003</span><span style="font-size: 10pt; color: black; font-family: 宋体">目录里。</span><span style="font-size: 10pt; color: black; font-family: Arial"><br />
</span><span style="font-size: 10pt; color: black; font-family: 宋体">其余驱动的安装方法与</span><span style="font-size: 10pt; color: black; font-family: Arial">XP</span><span style="font-size: 10pt; color: black; font-family: 宋体">一样。</span><img src ="http://www.blogjava.net/rain1102/aggbug/198758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-05-06 17:29 <a href="http://www.blogjava.net/rain1102/archive/2008/05/06/198758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache Commons工具集简介[转]</title><link>http://www.blogjava.net/rain1102/archive/2008/05/04/198009.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Sun, 04 May 2008 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/05/04/198009.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/198009.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/05/04/198009.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/198009.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/198009.html</trackback:ping><description><![CDATA[Apache&nbsp;Commons包含了很多开源的工具，用于解决平时编程经常会遇到的问题，减少重复劳动。我选了一些比较常用的项目做简单介绍。文中用了很多网上现成的东西，我只是做了一个汇总整理。<br />
<br />
<strong>Commons&nbsp;BeanUtils</strong><br />
<a href="http://jakarta.apache.org/commons/beanutils/index.html">http://jakarta.apache.org/commons/beanutils/index.html</a><br />
说明：针对Bean的一个工具集。由于Bean往往是有一堆get和set组成，所以BeanUtils也是在此基础上进行一些包装。<br />
使用示例：功能有很多，网站上有详细介绍。一个比较常用的功能是Bean&nbsp;Copy，也就是copy&nbsp;bean的属性。如果做分层架构开发的话就会用到，比如从PO（Persistent&nbsp;Object）拷贝数据到VO（Value&nbsp;Object）。<br />
传统方法如下：<br />
//得到TeacherForm<br />
&nbsp;TeacherForm&nbsp;teacherForm=(TeacherForm)form;<br />
&nbsp;//构造Teacher对象<br />
&nbsp;Teacher&nbsp;teacher=new&nbsp;Teacher();<br />
&nbsp;//赋值<br />
&nbsp;teacher.setName(teacherForm.getName());<br />
&nbsp;teacher.setAge(teacherForm.getAge());<br />
&nbsp;teacher.setGender(teacherForm.getGender());<br />
&nbsp;teacher.setMajor(teacherForm.getMajor());<br />
&nbsp;teacher.setDepartment(teacherForm.getDepartment());<br />
&nbsp;&nbsp;<br />
&nbsp;//持久化Teacher对象到数据库<br />
&nbsp;HibernateDAO=&nbsp;;<br />
&nbsp;HibernateDAO.save(teacher);<br />
<br />
使用BeanUtils后，代码就大大改观了，如下所示：<br />
//得到TeacherForm<br />
&nbsp;TeacherForm&nbsp;teacherForm=(TeacherForm)form;<br />
&nbsp;//构造Teacher对象<br />
&nbsp;Teacher&nbsp;teacher=new&nbsp;Teacher();<br />
&nbsp;//赋值<br />
&nbsp;BeanUtils.copyProperties(teacher,teacherForm);<br />
&nbsp;//持久化Teacher对象到数据库<br />
&nbsp;HibernateDAO=&nbsp;;<br />
&nbsp;HibernateDAO.save(teacher);<br />
<br />
<strong>Commons&nbsp;CLI</strong><br />
<a href="http://jakarta.apache.org/commons/cli/index.html">http://jakarta.apache.org/commons/cli/index.html</a><br />
说明：这是一个处理命令的工具。比如main方法输入的string[]需要解析。你可以预先定义好参数的规则，然后就可以调用CLI来解析。<br />
使用示例：<br />
//&nbsp;create&nbsp;Options&nbsp;object<br />
Options&nbsp;options&nbsp;=&nbsp;new&nbsp;Options();<br />
//&nbsp;add&nbsp;t&nbsp;option,&nbsp;option&nbsp;is&nbsp;the&nbsp;command&nbsp;parameter,&nbsp;false&nbsp;indicates&nbsp;that&nbsp;<br />
//&nbsp;this&nbsp;parameter&nbsp;is&nbsp;not&nbsp;required.<br />
options.addOption(&#8220;t&#8221;,&nbsp;false,&nbsp;&#8220;display&nbsp;current&nbsp;time&#8221;);<br />
options.addOption("c",&nbsp;true,&nbsp;"country&nbsp;code");<br />
CommandLineParser&nbsp;parser&nbsp;=&nbsp;new&nbsp;PosixParser();<br />
CommandLine&nbsp;cmd&nbsp;=&nbsp;parser.parse(&nbsp;options,&nbsp;args);<br />
if(cmd.hasOption("t"))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;print&nbsp;the&nbsp;date&nbsp;and&nbsp;time<br />
}<br />
else&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;print&nbsp;the&nbsp;date<br />
}<br />
//&nbsp;get&nbsp;c&nbsp;option&nbsp;value<br />
String&nbsp;countryCode&nbsp;=&nbsp;cmd.getOptionValue("c");<br />
<br />
if(countryCode&nbsp;==&nbsp;null)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;print&nbsp;default&nbsp;date<br />
}<br />
else&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;print&nbsp;date&nbsp;for&nbsp;country&nbsp;specified&nbsp;by&nbsp;countryCode<br />
}<br />
<br />
<strong>Commons&nbsp;Codec</strong><br />
<a href="http://jakarta.apache.org/commons/codec/index.html">http://jakarta.apache.org/commons/codec/index.html</a><br />
说明：这个工具是用来编码和解码的，包括Base64，URL，Soundx等等。用这个工具的人应该很清楚这些，我就不多介绍了。<br />
<br />
<strong>Commons&nbsp;Collections</strong><br />
<a href="http://jakarta.apache.org/commons/collections/">http://jakarta.apache.org/commons/collections/</a><br />
说明：你可以把这个工具看成是java.util的扩展。<br />
使用示例：举一个简单的例子<br />
OrderedMap&nbsp;map&nbsp;=&nbsp;new&nbsp;LinkedMap();<br />
map.put("FIVE",&nbsp;"5");<br />
map.put("SIX",&nbsp;"6");<br />
map.put("SEVEN",&nbsp;"7");<br />
map.firstKey();&nbsp;&nbsp;//&nbsp;returns&nbsp;"FIVE"<br />
map.nextKey("FIVE");&nbsp;&nbsp;//&nbsp;returns&nbsp;"SIX"<br />
map.nextKey("SIX");&nbsp;&nbsp;//&nbsp;returns&nbsp;"SEVEN"<br />
<br />
<strong>Commons&nbsp;Configuration<br />
</strong><a href="http://jakarta.apache.org/commons/configuration/">http://jakarta.apache.org/commons/configuration/</a><br />
说明：这个工具是用来帮助处理配置文件的，支持很多种存储方式<br />
1.&nbsp;&nbsp;&nbsp;&nbsp;Properties&nbsp;files<br />
2.&nbsp;&nbsp;&nbsp;&nbsp;XML&nbsp;documents<br />
3.&nbsp;&nbsp;&nbsp;&nbsp;Property&nbsp;list&nbsp;files&nbsp;(.plist)<br />
4.&nbsp;&nbsp;&nbsp;&nbsp;JNDI<br />
5.&nbsp;&nbsp;&nbsp;&nbsp;JDBC&nbsp;Datasource<br />
6.&nbsp;&nbsp;&nbsp;&nbsp;System&nbsp;properties<br />
7.&nbsp;&nbsp;&nbsp;&nbsp;Applet&nbsp;parameters<br />
8.&nbsp;&nbsp;&nbsp;&nbsp;Servlet&nbsp;parameters<br />
使用示例：举一个Properties的简单例子<br />
#&nbsp;usergui.properties,&nbsp;definining&nbsp;the&nbsp;GUI,<br />
colors.background&nbsp;=&nbsp;#FFFFFF<br />
colors.foreground&nbsp;=&nbsp;#000080<br />
<br />
window.width&nbsp;=&nbsp;500<br />
window.height&nbsp;=&nbsp;300<br />
<br />
PropertiesConfiguration&nbsp;config&nbsp;=&nbsp;new&nbsp;PropertiesConfiguration("usergui.properties");<br />
config.setProperty("colors.background",&nbsp;"#000000);<br />
config.save();<br />
config.save("usergui.backup.properties);//save&nbsp;a&nbsp;copy<br />
Integer&nbsp;integer&nbsp;=&nbsp;config.getInteger("window.width");<br />
<br />
<strong>Commons&nbsp;DBCP<br />
</strong><a href="http://jakarta.apache.org/commons/dbcp/">http://jakarta.apache.org/commons/dbcp/</a><br />
说明：Database&nbsp;Connection&nbsp;pool,&nbsp;Tomcat就是用的这个，不用我多说了吧，要用的自己去网站上看说明。<br />
<br />
<strong>Commons&nbsp;DbUtils</strong><br />
<a href="http://jakarta.apache.org/commons/dbutils/">http://jakarta.apache.org/commons/dbutils/</a><br />
说明：我以前在写数据库程序的时候，往往把数据库操作单独做一个包。DbUtils就是这样一个工具，以后开发不用再重复这样的工作了。值得一体的是，这个工具并不是现在流行的OR-Mapping工具（比如Hibernate），只是简化数据库操作，比如<br />
QueryRunner&nbsp;run&nbsp;=&nbsp;new&nbsp;QueryRunner(dataSource);<br />
//&nbsp;Execute&nbsp;the&nbsp;query&nbsp;and&nbsp;get&nbsp;the&nbsp;results&nbsp;back&nbsp;from&nbsp;the&nbsp;handler<br />
Object[]&nbsp;result&nbsp;=&nbsp;(Object[])&nbsp;run.query(<br />
&nbsp;&nbsp;&nbsp;&nbsp;"SELECT&nbsp;*&nbsp;FROM&nbsp;Person&nbsp;WHERE&nbsp;name=?",&nbsp;"John&nbsp;Doe");<br />
<br />
<strong>Commons&nbsp;FileUpload</strong><br />
<a href="http://jakarta.apache.org/commons/fileupload/">http://jakarta.apache.org/commons/fileupload/</a><br />
说明：jsp的上传文件功能怎么做呢？<br />
使用示例：<br />
//&nbsp;Create&nbsp;a&nbsp;factory&nbsp;for&nbsp;disk-based&nbsp;file&nbsp;items<br />
FileItemFactory&nbsp;factory&nbsp;=&nbsp;new&nbsp;DiskFileItemFactory();<br />
<br />
//&nbsp;Create&nbsp;a&nbsp;new&nbsp;file&nbsp;upload&nbsp;handler<br />
ServletFileUpload&nbsp;upload&nbsp;=&nbsp;new&nbsp;ServletFileUpload(factory);<br />
<br />
//&nbsp;Parse&nbsp;the&nbsp;request<br />
List&nbsp;/*&nbsp;FileItem&nbsp;*/&nbsp;items&nbsp;=&nbsp;upload.parseRequest(request);<br />
//&nbsp;Process&nbsp;the&nbsp;uploaded&nbsp;items<br />
Iterator&nbsp;iter&nbsp;=&nbsp;items.iterator();<br />
while&nbsp;(iter.hasNext())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;FileItem&nbsp;item&nbsp;=&nbsp;(FileItem)&nbsp;iter.next();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(item.isFormField())&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processFormField(item);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;processUploadedFile(item);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
<strong>Commons&nbsp;HttpClient</strong><br />
<a href="http://jakarta.apache.org/commons/httpclient/">http://jakarta.apache.org/commons/httpclient/</a><br />
说明：这个工具可以方便通过编程的方式去访问网站。<br />
使用示例：最简单的Get操作<br />
GetMethod&nbsp;get&nbsp;=&nbsp;new&nbsp;GetMethod("http://jakarta.apache.org");<br />
//&nbsp;execute&nbsp;method&nbsp;and&nbsp;handle&nbsp;any&nbsp;error&nbsp;responses.<br />
&nbsp;&nbsp;...<br />
InputStream&nbsp;in&nbsp;=&nbsp;get.getResponseBodyAsStream();<br />
//&nbsp;Process&nbsp;the&nbsp;data&nbsp;from&nbsp;the&nbsp;input&nbsp;stream.<br />
&nbsp;get.releaseConnection();<br />
<br />
<strong>Commons&nbsp;IO</strong><br />
http://jakarta.apache.org/commons/io/<br />
说明：可以看成是java.io的扩展，我觉得用起来非常方便。<br />
使用示例：<br />
1．读取Stream<br />
标准代码：<br />
InputStream&nbsp;in&nbsp;=&nbsp;new&nbsp;URL(&nbsp;"http://jakarta.apache.org"&nbsp;).openStream();<br />
&nbsp;try&nbsp;{<br />
&nbsp;&nbsp;&nbsp;InputStreamReader&nbsp;inR&nbsp;=&nbsp;new&nbsp;InputStreamReader(&nbsp;in&nbsp;);<br />
&nbsp;&nbsp;&nbsp;BufferedReader&nbsp;buf&nbsp;=&nbsp;new&nbsp;BufferedReader(&nbsp;inR&nbsp;);<br />
&nbsp;&nbsp;&nbsp;String&nbsp;line;<br />
&nbsp;&nbsp;&nbsp;while&nbsp;(&nbsp;(&nbsp;line&nbsp;=&nbsp;buf.readLine()&nbsp;)&nbsp;!=&nbsp;null&nbsp;)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;line&nbsp;);<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;}&nbsp;finally&nbsp;{<br />
&nbsp;&nbsp;&nbsp;in.close();<br />
&nbsp;}<br />
使用IOUtils<br />
InputStream&nbsp;in&nbsp;=&nbsp;new&nbsp;URL(&nbsp;"http://jakarta.apache.org"&nbsp;).openStream();<br />
&nbsp;try&nbsp;{<br />
&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;IOUtils.toString(&nbsp;in&nbsp;)&nbsp;);<br />
&nbsp;}&nbsp;finally&nbsp;{<br />
&nbsp;&nbsp;&nbsp;IOUtils.closeQuietly(in);<br />
&nbsp;}<br />
<br />
2．读取文件<br />
File&nbsp;file&nbsp;=&nbsp;new&nbsp;File("/commons/io/project.properties");<br />
List&nbsp;lines&nbsp;=&nbsp;FileUtils.readLines(file,&nbsp;"UTF-8");<br />
<br />
3．察看剩余空间<br />
long&nbsp;freeSpace&nbsp;=&nbsp;FileSystemUtils.freeSpace("C:/");<br />
<br />
<br />
<strong>Commons&nbsp;JXPath</strong><br />
http://jakarta.apache.org/commons/jxpath/<br />
说明：Xpath你知道吧，那么JXpath就是基于Java对象的Xpath，也就是用Xpath对Java对象进行查询。这个东西还是很有想像力的。<br />
使用示例：<br />
Address&nbsp;address&nbsp;=&nbsp;(Address)JXPathContext.newContext(vendor).<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getValue("locations[address/zipCode='90210']/address");<br />
上述代码等同于<br />
Address&nbsp;address&nbsp;=&nbsp;null;<br />
Collection&nbsp;locations&nbsp;=&nbsp;vendor.getLocations();<br />
Iterator&nbsp;it&nbsp;=&nbsp;locations.iterator();<br />
while&nbsp;(it.hasNext()){<br />
&nbsp;&nbsp;&nbsp;&nbsp;Location&nbsp;location&nbsp;=&nbsp;(Location)it.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;zipCode&nbsp;=&nbsp;location.getAddress().getZipCode();<br />
&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(zipCode.equals("90210")){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;address&nbsp;=&nbsp;location.getAddress();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
<br />
<strong>Commons&nbsp;Lang</strong><br />
http://jakarta.apache.org/commons/lang/<br />
说明：这个工具包可以看成是对java.lang的扩展。提供了诸如StringUtils,&nbsp;StringEscapeUtils,&nbsp;RandomStringUtils,&nbsp;Tokenizer,&nbsp;WordUtils等工具类。<br />
<br />
<strong>Commons&nbsp;Logging<br />
</strong>http://jakarta.apache.org/commons/logging/<br />
说明：你知道Log4j吗？<br />
<br />
<strong>Commons&nbsp;Math</strong><br />
http://jakarta.apache.org/commons/math/<br />
说明：看名字你就应该知道这个包是用来干嘛的了吧。这个包提供的功能有些和Commons&nbsp;Lang重复了，但是这个包更专注于做数学工具，功能更强大。<br />
<br />
<strong>Commons&nbsp;Net</strong><br />
http://jakarta.apache.org/commons/net/<br />
说明：这个包还是很实用的，封装了很多网络协议。<br />
1.&nbsp;&nbsp;&nbsp;&nbsp;FTP<br />
2.&nbsp;&nbsp;&nbsp;&nbsp;NNTP<br />
3.&nbsp;&nbsp;&nbsp;&nbsp;SMTP<br />
4.&nbsp;&nbsp;&nbsp;&nbsp;POP3<br />
5.&nbsp;&nbsp;&nbsp;&nbsp;Telnet<br />
6.&nbsp;&nbsp;&nbsp;&nbsp;TFTP<br />
7.&nbsp;&nbsp;&nbsp;&nbsp;Finger<br />
8.&nbsp;&nbsp;&nbsp;&nbsp;Whois<br />
9.&nbsp;&nbsp;&nbsp;&nbsp;rexec/rcmd/rlogin<br />
10.&nbsp;&nbsp;&nbsp;&nbsp;Time&nbsp;(rdate)&nbsp;and&nbsp;Daytime<br />
11.&nbsp;&nbsp;&nbsp;&nbsp;Echo<br />
12.&nbsp;&nbsp;&nbsp;&nbsp;Discard<br />
13.&nbsp;&nbsp;&nbsp;&nbsp;NTP/SNTP<br />
使用示例：<br />
TelnetClient&nbsp;telnet&nbsp;=&nbsp;new&nbsp;TelnetClient();<br />
telnet.connect(&nbsp;"192.168.1.99",&nbsp;23&nbsp;);<br />
InputStream&nbsp;in&nbsp;=&nbsp;telnet.getInputStream();<br />
PrintStream&nbsp;out&nbsp;=&nbsp;new&nbsp;PrintStream(&nbsp;telnet.getOutputStream()&nbsp;);<br />
...<br />
telnet.close();<br />
<br />
<strong>Commons&nbsp;Validator</strong><br />
http://jakarta.apache.org/commons/validator/<br />
说明：用来帮助进行验证的工具。比如验证Email字符串，日期字符串等是否合法。<br />
使用示例：<br />
//&nbsp;Get&nbsp;the&nbsp;Date&nbsp;validator<br />
DateValidator&nbsp;validator&nbsp;=&nbsp;DateValidator.getInstance();<br />
//&nbsp;Validate/Convert&nbsp;the&nbsp;date<br />
Date&nbsp;fooDate&nbsp;=&nbsp;validator.validate(fooString,&nbsp;"dd/MM/yyyy");<br />
if&nbsp;(fooDate&nbsp;==&nbsp;null)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;error...not&nbsp;a&nbsp;valid&nbsp;date<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br />
}<br />
<br />
<strong>Commons&nbsp;Virtual&nbsp;File&nbsp;System<br />
</strong>http://jakarta.apache.org/commons/vfs/<br />
说明：提供对各种资源的访问接口。支持的资源类型包括<br />
1.&nbsp;&nbsp;&nbsp;&nbsp;CIFS&nbsp;<br />
2.&nbsp;&nbsp;&nbsp;&nbsp;FTP&nbsp;<br />
3.&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;Files&nbsp;<br />
4.&nbsp;&nbsp;&nbsp;&nbsp;HTTP&nbsp;and&nbsp;HTTPS&nbsp;<br />
5.&nbsp;&nbsp;&nbsp;&nbsp;SFTP&nbsp;<br />
6.&nbsp;&nbsp;&nbsp;&nbsp;Temporary&nbsp;Files&nbsp;<br />
7.&nbsp;&nbsp;&nbsp;&nbsp;WebDAV&nbsp;<br />
8.&nbsp;&nbsp;&nbsp;&nbsp;Zip,&nbsp;Jar&nbsp;and&nbsp;Tar&nbsp;(uncompressed,&nbsp;tgz&nbsp;or&nbsp;tbz2)&nbsp;<br />
9.&nbsp;&nbsp;&nbsp;&nbsp;gzip&nbsp;and&nbsp;bzip2&nbsp;<br />
10.&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;<br />
11.&nbsp;&nbsp;&nbsp;&nbsp;ram&nbsp;<br />
这个包的功能很强大，极大的简化了程序对资源的访问。<br />
使用示例：<br />
从jar中读取文件<br />
//&nbsp;Locate&nbsp;the&nbsp;Jar&nbsp;file<br />
FileSystemManager&nbsp;fsManager&nbsp;=&nbsp;VFS.getManager();<br />
FileObject&nbsp;jarFile&nbsp;=&nbsp;fsManager.resolveFile(&nbsp;"jar:lib/aJarFile.jar"&nbsp;);<br />
<br />
//&nbsp;List&nbsp;the&nbsp;children&nbsp;of&nbsp;the&nbsp;Jar&nbsp;file<br />
FileObject[]&nbsp;children&nbsp;=&nbsp;jarFile.getChildren();<br />
System.out.println(&nbsp;"Children&nbsp;of&nbsp;"&nbsp;+&nbsp;jarFile.getName().getURI()&nbsp;);<br />
for&nbsp;(&nbsp;int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;children.length;&nbsp;i++&nbsp;)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&nbsp;children[&nbsp;i&nbsp;].getName().getBaseName()&nbsp;);<br />
}<br />
从smb读取文件<br />
StaticUserAuthenticator&nbsp;auth&nbsp;=&nbsp;new&nbsp;StaticUserAuthenticator("username",&nbsp;"password",&nbsp;null);<br />
FileSystemOptions&nbsp;opts&nbsp;=&nbsp;new&nbsp;FileSystemOptions();<br />
DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts,&nbsp;auth);&nbsp;<br />
FileObject&nbsp;fo&nbsp;=&nbsp;VFS.getManager().resolveFile("smb://host/anyshare/dir",&nbsp;opts);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
有人说Apache就像是丐帮，里面的项目多而杂。的确如此，Apache的项目水平参差不齐，而且不同的项目之间也常常会有功能重叠，甚至有撞车，比如Ant和Maven。不过Apache的优秀项目还是有很多的，比如Apache&nbsp;Http&nbsp;Server，Tomcat，Ant,&nbsp;Geronimo等等。Apache&nbsp;Commons是工具包，为其他项目提供支持，很多Commons中的项目就是从其他项目中抽取出来的。希望我的介绍能对你有所帮助，有些我提到的Commons中的项目我也没有用过，只是现学现卖，难免错误和疏漏，希望谅解。<br /><img src ="http://www.blogjava.net/rain1102/aggbug/198009.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-05-04 10:27 <a href="http://www.blogjava.net/rain1102/archive/2008/05/04/198009.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[译]volatile关键字有什么用？[转载]</title><link>http://www.blogjava.net/rain1102/archive/2008/04/24/195408.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 24 Apr 2008 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/24/195408.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/195408.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/24/195408.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/195408.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/195408.html</trackback:ping><description><![CDATA[<p>最近看LumaQQ的源码发现一个volatile（中文意思是&#8220;可变的、不稳定的&#8221;），找了篇英文介绍。抽空我翻译了一下，翻错了大家不要见笑。。。</p>
<p>volatile关键字有什么用？<br />
　　恐怕比较一下volatile和synchronized的不同是最容易解释清楚的。volatile是变量修饰符，而synchronized则作用于一段代码或方法；看如下三句get代码：</p>
<span style="color: olive">
<li class="hl-firstline"><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">i1</span><span style="color: gray">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">geti1</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">i1</span><span style="color: gray">;</span><span style="color: olive">}</span>
<li><span style="color: green">volatile</span><span style="color: gray">&nbsp;</span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">i2</span><span style="color: gray">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">geti2</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">i2</span><span style="color: gray">;</span><span style="color: olive">}</span>
<li><span class="hl-types">int</span><span style="color: gray">&nbsp;</span><span style="color: blue">i3</span><span style="color: gray">; </span><span style="color: green">synchronized</span><span style="color: gray">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">geti3</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">i3</span><span style="color: gray">;</span><span style="color: olive">}</span></li>
</span>
<p>　　geti1()得到存储在当前线程中i1的数值。多个线程有多个i1变量拷贝，而且这些i1之间可以互不相同。换句话说，另一个线程可能已经改变了它线程内的i1值，而这个值可以和当前线程中的i1值不相同。事实上，Java有个思想叫&#8220;主&#8221;内存区域，这里存放了变量目前的&#8220;准确值&#8221;。每个线程可以有它自己的变量拷贝，而这个变量拷贝值可以和&#8220;主&#8221;内存区域里存放的不同。因此实际上存在一种可能：&#8220;主&#8221;内存区域里的i1值是1，线程1里的i1值是2，线程2里的i1值是3——这在线程1和线程2都改变了它们各自的i1值，而且这个改变还没来得及传递给&#8220;主&#8221;内存区域或其他线程时就会发生。<br />
　　而geti2()得到的是&#8220;主&#8221;内存区域的i2数值。用volatile修饰后的变量不允许有不同于&#8220;主&#8221;内存区域的变量拷贝。换句话说，一个变量经volatile修饰后在所有线程中必须是同步的；任何线程中改变了它的值，所有其他线程立即获取到了相同的值。理所当然的，volatile修饰的变量存取时比一般变量消耗的资源要多一点，因为线程有它自己的变量拷贝更为高效。<br />
　　既然volatile关键字已经实现了线程间数据同步，又要synchronized干什么呢？呵呵，它们之间有两点不同。首先，synchronized获得并释放监视器——如果两个线程使用了同一个对象锁，监视器能强制保证代码块同时只被一个线程所执行——这是众所周知的事实。但是，synchronized也同步内存：事实上，synchronized在&#8220;主&#8221;内存区域同步整个线程的内存。因此，执行geti3()方法做了如下几步：<br />
1. 线程请求获得监视this对象的对象锁（假设未被锁，否则线程等待直到锁释放）<br />
2. 线程内存的数据被消除，从&#8220;主&#8221;内存区域中读入（Java虚拟机能优化此步。。。[后面的不知道怎么表达,汗]）<br />
3. 代码块被执行<br />
4. 对于变量的任何改变现在可以安全地写到&#8220;主&#8221;内存区域中（不过geti3()方法不会改变变量值）<br />
5. 线程释放监视this对象的对象锁<br />
　　因此volatile只是在线程内存和&#8220;主&#8221;内存间同步某个变量的值，而synchronized通过锁定和解锁某个监视器同步所有变量的值。显然synchronized要比volatile消耗更多资源。</p>
<p>附英文原文：<br />
What does volatile do? </p>
<li class="hl-firstline"><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">i1</span><span style="color: gray">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">geti1</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">i1</span><span style="color: gray">;</span><span style="color: olive">}</span>
<li><span style="color: green">volatile</span><span style="color: gray">&nbsp;</span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">i2</span><span style="color: gray">;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">geti2</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">i2</span><span style="color: gray">;</span><span style="color: olive">}</span>
<li><span class="hl-types">int</span><span style="color: gray">&nbsp;</span><span style="color: blue">i3</span><span style="color: gray">; </span><span style="color: green">synchronized</span><span style="color: gray">&nbsp;&nbsp;&nbsp;&nbsp; </span><span class="hl-types">int</span><span style="color: gray"> </span><span style="color: blue">geti3</span><span style="color: olive">()</span><span style="color: gray"> </span><span style="color: olive">{</span><span style="color: green">return</span><span style="color: gray"> </span><span style="color: blue">i3</span><span style="color: gray">;</span><span style="color: olive">}</span></li>
<p>geti1() accesses the value currently stored in i1 in the current thread. Threads can have local copies of variables, and the data does not have to be the same as the data held in other threads. In particular, another thread may have updated i1 in it&#8217;s thread, but the value in the current thread could be different from that updated value. In fact <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a> has the idea of a &#8220;main&#8221; memory, and this is the memory that holds the current &#8220;correct&#8221; value for variables. Threads can have their own copy of data for variables, and the thread copy can be different from the &#8220;main&#8221; memory. So in fact, it is possible for the &#8220;main&#8221; memory to have a value of 1 for i1, for thread1 to have a value of 2 for i1 and for thread2 to have a value of 3 for i1 if thread1 and thread2 have both updated i1 but those updated value has not yet been propagated to &#8220;main&#8221; memory or other threads. </p>
<p>On the other hand, geti2() effectively accesses the value of i2 from &#8220;main&#8221; memory. A volatile variable is not allowed to have a local copy of a variable that is different from the value currently held in &#8220;main&#8221; memory. Effectively, a variable declared volatile must have it&#8217;s data synchronized across all threads, so that whenever you access or update the variable in any thread, all other threads immediately see the same value. Of course, it is likely that volatile variables have a higher access and update overhead than &#8220;plain&#8221; variables, since the reason threads can have their own copy of data is for better efficiency. </p>
<p>Well if volatile already synchronizes data across threads, what is synchronized for? Well there are two differences. Firstly synchronized obtains and releases locks on monitors which can force only one thread at a time to execute a code block, if both threads use the same monitor (effectively the same object lock). That&#8217;s the fairly well known aspect to synchronized. But synchronized also synchronizes memory. In fact synchronized synchronizes the whole of thread memory with &#8220;main&#8221; memory. So executing geti3() does the following: </p>
<p>1. The thread acquires the lock on the monitor for object this (assuming the monitor is unlocked, otherwise the thread waits until the monitor is unlocked).<br />
2. The thread memory flushes all its variables, i.e. it has all of its variables effectively read from &#8220;main&#8221; memory (JVMs can use dirty sets to optimize this so that only &#8220;dirty&#8221; variables are flushed, but conceptually this is the same. See section 17.9 of the <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a> language specification).<br />
3. The code block is executed (in this case setting the return value to the current value of i3, which may have just been reset from &#8220;main&#8221; memory).<br />
4. (Any changes to variables would normally now be written out to &#8220;main&#8221; memory, but for geti3() we have no changes.)<br />
5. The thread releases the lock on the monitor for object this. </p>
<p>So where volatile only synchronizes the value of one variable between thread memory and &#8220;main&#8221; memory, synchronized synchronizes the value of all variables between thread memory and &#8220;main&#8221; memory, and locks and releases a monitor to boot. Clearly synchronized is likely to have more overhead than volatile.</p><img src ="http://www.blogjava.net/rain1102/aggbug/195408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-24 10:15 <a href="http://www.blogjava.net/rain1102/archive/2008/04/24/195408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 下配置一个ip绑定多个域名</title><link>http://www.blogjava.net/rain1102/archive/2008/04/22/194908.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Tue, 22 Apr 2008 15:34:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/22/194908.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/194908.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/22/194908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/194908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/194908.html</trackback:ping><description><![CDATA[tomcat下配置 一ip对多域名的方法详细如下,按下面配置一定能成功,经过测试了.
<p>&lt;Host name="localhost" debug="0" appBase="D:\\Tomcat 5.0\\webapps"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unpackWARs="true" autoDeploy="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlValidation="false" xmlNamespaceAware="false"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Alias&gt;localhost.com&lt;/Alias&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Logger className="org.apache.catalina.logger.FileLogger"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory="logs"&nbsp; prefix="localhost_log." suffix=".txt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timestamp="true"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Context path="" docBase="D:\\Tomcat 5.0\\webapps\\gg"&nbsp; reloadable="true" caseSensitive="false" debug="0"&gt;&lt;/Context&gt;<br />
&lt;/Host&gt;</p>
<p>&lt;Host name="one.localhost" debug="0" appBase="D:\\Tomcat 5.0\\webapps"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unpackWARs="true" autoDeploy="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlValidation="false" xmlNamespaceAware="false"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Alias&gt;one.localhost.com&lt;/Alias&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Logger className="org.apache.catalina.logger.FileLogger"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory="logs"&nbsp; prefix="localhost_log." suffix=".txt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timestamp="true"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Context path="" docBase="D:\\Tomcat 5.0\\webapps\\kk\\a"&nbsp; reloadable="true" caseSensitive="false" debug="0"&gt;&lt;/Context&gt;<br />
&lt;/Host&gt;</p>
<p>&lt;Host name="two.localhost" debug="0" appBase="D:\\Tomcat 5.0\\webapps"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unpackWARs="true" autoDeploy="true"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlValidation="false" xmlNamespaceAware="false"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Alias&gt;two.localhost.com&lt;/Alias&gt; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Logger className="org.apache.catalina.logger.FileLogger"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; directory="logs"&nbsp; prefix="localhost_log." suffix=".txt"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timestamp="true"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Context path="" docBase="D:\\Tomcat 5.0\\webapps\\kk\\b"&nbsp; reloadable="true" caseSensitive="false" debug="0"&gt;&lt;/Context&gt;<br />
&lt;/Host&gt;</p>
<p>因无域名解析服务器,所以在hosts上配,来模拟dns解析.</p>
<p>10.1.1.241&nbsp; localhost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指向gg文件夹<br />
10.1.1.241&nbsp; localhost.com&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指向gg文件夹<br />
10.1.1.241&nbsp; one.localhost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指向a文件夹<br />
10.1.1.241&nbsp; one.localhost.com&nbsp;&nbsp;&nbsp;指向a文件夹<br />
10.1.1.241&nbsp; two.localhost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指向b文件夹<br />
10.1.1.241&nbsp; two.localhost.com&nbsp;&nbsp; 指向b文件夹</p>
<p>经过多方面尝试,终于在tomcat下配置成功了.</p><img src ="http://www.blogjava.net/rain1102/aggbug/194908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-22 23:34 <a href="http://www.blogjava.net/rain1102/archive/2008/04/22/194908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何用JNI技术提高Java的性能详解</title><link>http://www.blogjava.net/rain1102/archive/2008/04/14/192771.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Mon, 14 Apr 2008 06:32:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/14/192771.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/192771.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/14/192771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/192771.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/192771.html</trackback:ping><description><![CDATA[<table style="margin-bottom: 20px" cellspacing="0" cellpadding="0" width="560" border="0">
    <tbody>
        <tr>
            <td align="center"><span class="b">发布时间：2006.03.01 08:22</span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="b"> 来源：赛迪网Java开发者论坛</span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="b">作者：灰色依旧</span></td>
        </tr>
    </tbody>
</table>
<table class="p11" cellspacing="0" cellpadding="0" width="560" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" align="left">
            <p class="a14c" style="text-indent: 2em"><span class="a14c" id="zoom">
            <p style="text-indent: 2em">
            <p class="a14">阻碍Java获得广泛应用的一个主要因素是Java程序的运行效率。Java是介于解释型和编译型之间的一种语言，同样的程序，如果用编译型语言C来实现，其运行速度一般要比Java快一倍以上。Java具有平台无关性，这使人们在开发企业级应用的时候总是把它作为主要候选方案之一，但是性能方面的因素又大大削弱了它的竞争力。为此，提高Java的性能就显得十分重要。
            <p class="a14"><strong>问题的提出</strong>
            <p class="a14">Sun公司及Java的支持者们为提高Java的运行速度已经做出了许多努力，其中大多数集中在程序设计的方法和模式选择方面。由于算法和设计模式的优化是通用的，对Java有效的优化算法和设计模式，对其他编译语言也基本同样适用，因此不能从根本上改变Java程序与编译型语言在执行效率方面的差异。
            <p class="a14">JIT(Just In Time，及时编译)技术是个比较好的思想。它的基本原理是：首先通过Java编译器把Java源代码编译成平台无关的二进制字节码。然后在Java程序真正执行之前，系统通过JIT编译器把Java的字节码编译为本地化机器码。最后，系统执行本地化机器码，节省了对字节码进行解释的时间。这样做的优点是大大提高了Java程序的性能，缩短了加载程序的时间；同时，由于编译的结果并不在程序运行间保存，因此也节约了存储空间。缺点是由于JIT编译器对所有的代码都想优化，因此同样也占用了很多时间。
            <p class="a14">动态优化技术是提高Java性能的另一个尝试。该技术试图通过把Java源程序直接编译成机器码，以充分利用Java动态编译和静态编译技术来提高Java的性能。该方法把输入的Java源码或字节码转换为经过高度优化的可执行代码和动态库 (Windows中的. dll文件或Unix中的. so文件)。该技术能大大提高程序的性能，但却破坏了Java的可移植性。
            <p class="a14"><strong>JNI技术</strong>
            <p class="a14">实际上，有一种通常为我们忽视的技术可以在很大程度上解决这个难题，那就是JNI(Java Native Interface, Java本地化方法)。主张采用纯Java的人们通常反对本地化代码的使用，他们认为在Java程序执行的过程中调用C/C++程序会影响程序的可移植性和安全性。还有一些人认为JNI只是对过去混合编程技术的简单扩展，其实际目的是为了充分利用大量原有的C程序库。
            <p class="a14">其实，我们不必拘泥于严格的平台独立性限制，因为采用JNI技术只是针对一些严重影响Java性能的代码段，该部分可能只占源程序的极少部分，所以几乎可以不考虑该部分代码在主流平台之间移植的工作量。同时，也不必过分担心类型匹配问题，我们完全可以控制代码不出现这种错误。此外，也不必担心安全控制问题，因为Java安全模型已扩展为允许非系统类加载和调用本地方法。根据Java规范，从JDK 1. 2开始，FindClass将设法找到与当前的本地方法关联的类加载器。如果平台相关代码属于一个系统类，则无需涉及任何类加载器; 否则，将调用适当的类加载器来加载和链接已命名的类。换句话说，如果在Java程序中直接调用C/C++语言产生的机器码，该部分代码的安全性就由Java虚拟机控制。
            <p class="a14"><strong>JNI实现步骤</strong>
            <p class="a14">编写JNI代码的大致流程如下图所示：
            <p align="center"><img style="border-right: black 1px solid; border-top: black 1px solid; border-left: black 1px solid; border-bottom: black 1px solid" src="http://java.ccidnet.com/col/attachment/2006/2/596881.jpg"  alt="" />
            <p class="a14">JNI实现流程图
            <p class="a14">1. 首先编写需要JNI功能的Java类源文件。其中，需要JNI实现的方法应当用native关键字声明。在该类中，用System. loadLibrary()方法加载需要的动态链接库。关键代码如下：
            <p class="a14">//Compute.java
            <p class="a14">&#8230;&#8230;
            <p class="a14">public class Compute {
            <p class="a14">public native double comp (double [] params);
            <p class="a14">&#8230;&#8230;
            <p class="a14">static {
            <p class="a14">// 调用动态链接库
            <p class="a14">System. loadLibrary(&#8220;mathlib&#8221;);
            <p class="a14">}
            <p class="a14">&#8230;&#8230;
            <p class="a14">}
            <p class="a14">2. 将该类源文件用Java类编译器编译成二进制字节码文件。由于采用了native关键字声明，编译器会忽视没有代码体的JNI方法部分。
            <p class="a14">3. 利用javah -jni *.class 生成相关JNI方法的头文件。我们可以手工生成该文件，但是由于Java虚拟机是根据一定的命名规范完成对JNI方法的调用，所以手工编写头文件需要特别小心。
            <p class="a14">上述文件产生的头文件部分代码如下：
            <p class="a14">//Compute. h
            <p class="a14">&#8230;&#8230;
            <p class="a14">extern &#8220;C&#8221; {
            <p class="a14">JNIEXPORT jdouble JNICALL Java_Compute_comp (JNIEnv *, jobject, jdoubleArray);
            <p class="a14">}
            <p class="a14">&#8230;&#8230;
            <p class="a14">可以看出，JNI函数名称分为三部分：首先是Java关键字，供Java虚拟机识别；然后是调用者类名称（全限定的类名，其中用下划线代替名称分隔符）；最后是对应的方法名称，各段名称之间用下划线分割。
            <p class="a14">JNI函数的参数也由三部分组成: 首先是JNIEnv *，是一个指向JNI运行环境的指针；第二个参数随本地方法是静态还是非静态而有所不同——非静态本地方法的第二个参数是对对象的引用，而静态本地方法的第二个参数是对其 <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a> 类的引用; 其余的参数对应通常 <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a> 方法的参数，参数类型需要根据一定规则进行映射。
            <p class="a14">4. 根据头文件编写相应方法的实现代码。由于篇幅所限，具体的实现部分在此不再赘述。在编码过程中，需要注意变量的长度问题，例如Java的整型变量长度为32位，而C语言为16位，所以要仔细核对变量类型映射表，防止在传值过程中出现问题。
            <p class="a14">5. 利用C/C++编译器将JNI实现代码编译成动态链接库。调用者类中需要显式调用该链接库。
            <p class="a14">在Win32环境下，可以利用Visual C ++或其他能产生DLL文件的C/C++编译器将实现代码编译成动态链接库。笔者利用的是Microsoft.NET Framework的编译器。编译指令如下，其中%Java_HOME%是笔者的jdk安装目录变量：
            <p class="a14">cl -I%Java_HOME%\include
            <p class="a14">-I%Java_HOME%\include\win32
            <p class="a14">-LD jnicomp. c -Femathlib. dll
            <p class="a14">在Sun Soloaris下，相应指令为：
            <p class="a14">cc -G -I/usr/local/java/include -I/usr/local/java/include/solaris jnicomp. c \
            <p class="a14">-o mathlib. so
            <p class="a14">注意，编译的时候需要用I指令包含必要的库文件路径。
            <p class="a14">经过上述处理，就基本上完成了一个包含本地化方法的Java类的开发。
            <p class="a14"><strong>JNI技术的应用</strong>
            <p class="a14">一些主要的Java技术，如JDBC和RMI，大部分都采用JNI方式实现。但是，采用JNI确实会影响程序的平台无关性，所以只能在特别需要的地方才能使用。通常来说，如果遇到下面的情况，我们可以考虑JNI:
            <p class="a14">● 需要直接操作物理设备，而没有相关的驱动程序，这时候我们可能需要用C甚至汇编语言来编写该设备的驱动，然后通过JNI调用；
            <p class="a14">● 涉及大量数学运算的部分，用Java会带来些效率上的损失；
            <p class="a14">● 用Java会产生系统难以支付的开销，如需要大量网络链接的场合；
            <p class="a14">● 存在大量可重用的C/C++代码，通过JNI可以减少开发工作量，避免重复开发。
            <p class="a14">另外，在利用JNI技术的时候要注意以下几点：
            <p class="a14">● 由于Java安全机制的限制，不要试图通过Jar文件的方式发布包含本地化方法的Applet到客户端；
            <p class="a14">● 注意内存管理问题，虽然在本地方法返回 <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a> 后将自动释放局部引用，但过多的局部引用将使虚拟机在执行本地方法时耗尽内存；
            <p class="a14">● JNI技术不仅可以让Java程序调用C/C++代码，也可以让C/C++代码调用Java代码。 </p>
            <p class="a14">(T117)</p>
            </span></td>
        </tr>
    </tbody>
</table><img src ="http://www.blogjava.net/rain1102/aggbug/192771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-14 14:32 <a href="http://www.blogjava.net/rain1102/archive/2008/04/14/192771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源ROME处理RSS</title><link>http://www.blogjava.net/rain1102/archive/2008/04/11/192227.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Fri, 11 Apr 2008 09:01:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/11/192227.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/192227.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/11/192227.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/192227.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/192227.html</trackback:ping><description><![CDATA[ROME是一组Atom/RSS工具类它使得用Java来操作大部份syndication格式变得更加容易: <br />
<li>RSS 0.90
<li>RSS 0.91 Netscape
<li>RSS 0.91 Userland
<li>RSS 0.92
<li>RSS 0.93
<li>RSS 0.94
<li>RSS 1.0
<li>RSS 2.0
<li>Atom 0.3
<li>Atom 1.0 <br />
ROME不仅包括各种syndication feeds的解析器与生成器,而且还包括能够把一种格式转换成另外一种格式的转换器。 </li>
<p><br />
Tutorials<br />
</p>
<p>The following tutorials show how to use the ROME API. They focus on the higher abstraction layer of classes offered by ROME, what we call the Synd* classes. By using the Synd* classes developers don't have to deal with the specifics of any syndication feed. They work with normalized feeds, the Synd* feeds. This makes it much easier to write applications that have to deal with all the variety of syndication feed types in use today.
<p>
<ol>
    <li><a class="twikiLink" href="http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedReader?TWIKISID=3a1cf01647196714b8f8a04c5903bc8d">Using ROME to read a syndication feed</a>
    <li><a class="twikiLink" href="http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedConverter?TWIKISID=3a1cf01647196714b8f8a04c5903bc8d">Using ROME to convert a syndication feed from one type to another</a>
    <li><a class="twikiLink" href="http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedAggregator?TWIKISID=3a1cf01647196714b8f8a04c5903bc8d">Using ROME to aggregate many syndication feeds into a single one</a>
    <li><a class="twikiLink" href="http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedWriter?TWIKISID=3a1cf01647196714b8f8a04c5903bc8d">Using ROME to create and write a feed</a>
    <li><a class="twikiLink" href="http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialSampleModule?TWIKISID=3a1cf01647196714b8f8a04c5903bc8d">Defining a Custom Module bean, parser and generator</a>
    <li><a class="twikiLink" href="http://wiki.java.net/bin/view/Javawsxml/Rome05TutorialFeedServlet?TWIKISID=3a1cf01647196714b8f8a04c5903bc8d">Using ROME within a Servlet to create and return a feed</a> </li>
</ol>
<p>For instructions on how to build and run the samples used in the tutorials <a class="twikiLink" href="http://wiki.java.net/bin/view/Javawsxml/Rome05SamplesHowTo?TWIKISID=3a1cf01647196714b8f8a04c5903bc8d">click here</a>. </p><img src ="http://www.blogjava.net/rain1102/aggbug/192227.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-11 17:01 <a href="http://www.blogjava.net/rain1102/archive/2008/04/11/192227.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>十个习惯让你精通新的开发技术</title><link>http://www.blogjava.net/rain1102/archive/2008/04/10/191803.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 10 Apr 2008 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/10/191803.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/191803.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/10/191803.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/191803.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/191803.html</trackback:ping><description><![CDATA[<p><strong>【IT168 管理文档】</strong></p>
<p>&nbsp;&nbsp;&nbsp; Ben Watson，知名开发者。任职于GeoEye，是其所属开发团队的领导者。本文发表于他自己的博客，阐述了十种学习新技术的方法。</p>
<p>&nbsp;&nbsp;&nbsp; 这篇文章，是从我的《高效开发人员的五个特征》一文中抽出的一个观点。从我自身的事业和习惯中，我考虑了很多方式怎么样才能有效地学习。</p>
<p>&nbsp;&nbsp;&nbsp; 1. 要看书。在成千上万的编程图书中，可能很大一部分根本毫无用处。但是仍然有很多图书对你的(编程)能力有很大的提升。我一直坚持，相比在网络上查找很多有用信息，在同类图书中查找要来得更容易更快捷。阅读技术图书可心更好地抓住核心内容。对于理论，架构和设计等方面来说，图书也一样很有帮助。只不过要找到高质量的、权威的信息，就不如网络上可供查找的范围广。</p>
<p>&nbsp;&nbsp;&nbsp; 2. 读代码。这也是我很喜欢的一种方式。如果我并没有几年的专业编程工作经验，在学习之初我并不会去读很多复杂的代码。如果我要是早些开始学习，我将是一个比现在更好的程序员。但是，开始时我会从一些开源项目里，去学习那些源代码(当然，这些代码不能与我的工作有关，也不是我自己写的)。要从自己会使用到的，或者自己感兴趣的程序开始这项工作。我是从 Paint.net 这个网站里开始学习的，而且已经积累了很多关于 .NET 的编程技术。</p>
<p>&nbsp;&nbsp;&nbsp; 读别人的代码可以为你提供更多不同的工作思路，这比你完全凭自己思考得到的工作方式要多。</p>
<p>&nbsp;&nbsp;&nbsp; 3. 写代码。谨记，要写大量的代码。从根本上来讲，最好的学习方法就是实践。如果不写代码，你根本不能把(某种语言中)内在的东西学习透彻。学习之初，可以从一些技术指南和图书中照搬一些尽量简单的程序。当然，这种照搬是要自己完全手工输入，而不是复制和粘贴，这两种之间的效果差别是很大的。这种方法的主旨就在于，使知识内在化，并思考其用法，而不是盲目照抄。学习过程中，要时常查找新的 API 调用方法，这其实是简单的事情。</p>
<p>&nbsp;&nbsp;&nbsp; 最重要的是，要写一个你自己的程序，不管它是一个简单的游戏，或者是一个参与开源项目的程序，还是一个公为你自己使用的简单插件。用不同的方式来写程序，尽量尝试使用新的技术，新的技巧，新的设计方式。一定要让现在的项目比以往的项目更好。想要成一个优秀的开发者，这一点是核心。</p>
<p>&nbsp;&nbsp;&nbsp; 4. 与其他开发者交流。像 Apple，微软，Google 等大公司一样的新闻描述的一样，(与其他开发者交流)可以让你解决一些复杂的问题。虽然这并不能让你感觉到自己已经成一个团队或是社区的成员，但是这种方法可以让你接触到更多不同的想法。</p>
<p>&nbsp;&nbsp;&nbsp; 不同类型的项目要求不同的设计方法，代码技术，开发流程和设计思想。如果你工作在一个小团队里，你不必与太多的人接触，只要在用户群会议中找到一些人(来讨论)即可。如果这样还不行的话，参与到在线论坛中与其他人讨论(这时你需要更努力地寻找高质量的讨论内容)。</p>
<p>&nbsp;&nbsp;&nbsp; 6. 教会别人。相对于仅仅读代码之类的工作，教其他人学习可以让你更深入地学习某个技术，这种方法有着非凡的效果。教会别人某个技术，同样也会让你更专注于这种技术，并且可以比别人更深层次地理解它。同样你也会面对一些问题。</p>
<p>&nbsp;&nbsp;&nbsp; &#8220;如果你不能向一个六岁的儿童解析清楚一个概念，那么其实是你并没有完全理解它。&#8221;Albert Einstein说。</p>
<p>&nbsp;&nbsp;&nbsp; 教学场景可以是无穷无尽的：与工作搭档一对一交流，休息碰面，非正式周会，学习茶会，教室，讨论发表会，等等。每周在相同理念开发者之间举办一次30分钟的非正式会议怎么样？每周，让几个人来就他们想要更深入了解话题，向大家传授这些技术知识，并且展开讨论。如果你知道你将要向团队成员们传授正学学习的知识，你是不是更想要了解这项技术的每个细节呢？</p>
<p>&nbsp;&nbsp;&nbsp; 6. 收听网络电台。如果你有空闲的时间，可以订阅网络电台节目。我现在最喜欢的编程节目就是 .Net Rocks。这个节目还会做一些视频节目，叫做 dnrTV 。这样会让你即时捕捉到最新最好的技术。一个人是不能学习到所有知识的，而网络电台刚是一个学习了解广泛知识的途径。</p>
<p>&nbsp;&nbsp;&nbsp; 7. 阅读博客。博客远远比阅读者要多，但是其中有一些却是极其优秀的。我这里不并不是要推荐博客，因为网络上已经有了足够多的博客。这是与真正在开发你所喜欢和使用的软件的开者联系的好方法。</p>
<p>&nbsp;&nbsp;&nbsp; 8. 学习新的语言。即使你已经在 C(++,#) / <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a> 等语言上有很好的造诣，仍然有很多其他可以解决问题的编程语言。学习新的语言，是对你已有思维方式的挑战。这不仅仅是另一种语言，更是对思维的重新架构。的确，所有的语言最后都会被编译成汇编程序，但是这并不意味着高级语言毫无价值。</p>
<p>&nbsp;&nbsp;&nbsp; 9. 学习不正确的方式。除了要学习应该怎么做，还要学习不应该怎么做。经常阅读 Dailywtf.com ，学习你并不知道的经验与教训。学习适当的面向对象设计方式，代码写作方式，和必须要写的代码等，是很好的方式，但是如果不细心的话也容易养成不良习惯。学习认识不正确的思路是负责项目开发至关重要的一环。</p>
<p>&nbsp;&nbsp;&nbsp; 维基百科对很多觉的不正确方式有十分透彻的分类。</p>
<p>&nbsp;&nbsp;&nbsp; 10. 要谦虚。</p>
<p>&nbsp;&nbsp;&nbsp; 学习，意味着：</p>
<ul>
    <li>用更好的知识代替不完美的知识
    <li>增长你所不知道的知识 </li>
</ul>
<p>&nbsp;&nbsp;&nbsp; 只有承认自己有所不足，才能有学习的动力。归根到底，就是谦虚，不对吗？如果你开始认为你已经掌握了所有需要的知识，那么你就危险了。真正的学习是如饥似渴地追逐知识并使其内在化，这需要很大的努力。我们都知道这一点，但是要必须时常不断地提醒自己。</p><img src ="http://www.blogjava.net/rain1102/aggbug/191803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-10 11:14 <a href="http://www.blogjava.net/rain1102/archive/2008/04/10/191803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jMaki</title><link>http://www.blogjava.net/rain1102/archive/2008/04/08/191499.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Tue, 08 Apr 2008 07:10:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/08/191499.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/191499.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/08/191499.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/191499.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/191499.html</trackback:ping><description><![CDATA[jMaki是SUN支持的一个AJAX框架。这个项目的是让Java开发人员在其基于Java的应用程序中(不管是JSP标签库还是JSF组件)都能使用AJAX技术。jMaki使用了Java与JavaScript中最优秀的部分以此来提供一些Rich AJAX style widgets。jMaki当前提供的bootstrap widget是来自<a href="http://dojotoolkit.org/">Dojo</a>,<a href="http://script.aculo.us/">Scriptaculus</a>,<a href="http://developer.yahoo.com/yui/">Yahoo UI Widgets</a>,<a href="http://labs.adobe.com/technologies/spry/">Spry</a>,<a href="http://www.dhtmlgoodies.com/">DHTML Goodies</a>,和<a href="http://www.google.com/">Google</a>等组件库。jMaki提供为这些widget组件库提供了一个公共接口以便让你可以在同一页面中一起使用这些组件库。如果你有兴趣利用jMaki项目来快速开发Web应用程序，可以使用NetBeans 5.5的jMaki插件。这个插件可以直接把jMaki组件拖放到JSP页面中。如果不熟悉该插件可以通过其网站提供一段<a href="https://ajax.dev.java.net/screencast/jMakiDemo.html">视频</a>来学习。<img src ="http://www.blogjava.net/rain1102/aggbug/191499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-08 15:10 <a href="http://www.blogjava.net/rain1102/archive/2008/04/08/191499.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解密Google成功七大密码</title><link>http://www.blogjava.net/rain1102/archive/2008/04/06/191114.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Sun, 06 Apr 2008 13:12:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/06/191114.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/191114.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/06/191114.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/191114.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/191114.html</trackback:ping><description><![CDATA[一、消费者的方便性
<p>　　茫茫网海，获取有用的相关信息犹如大海捞针，LarryPage和SergeyBrin设计了Google搜索引擎。由于Google致力于提供全球最优秀的搜索引擎服务，通过其强大的、迅速和方便的搜索引擎，Google每天为全球上百万的用户提供准确详实、符合他们需要的信息。</p>
<p>　　二、专注和执着 </p>
<p>　　Google不是第一家做互联网搜索技术的公司，之前的搜索引擎公司，包括AltaVista、Lycos、Excite、Infoseek、Inktomi在内，大都成功上市、融资，迅速膨胀，兼并或被兼并，很多公司后来转型做起了门户网站。这些曾经风光一时的互联网公司，今天大部分仍在亏损的深渊中挣扎。Google没有过早上市，集中精力于搜索业务。正是这样的专注和执着，使Google能够把搜索引擎做得如此有用。 </p>
<p>　　三、先进的技术 </p>
<p>　　关注于技术也给Google带来了幸运。越来越多的网站上遍布散乱的广告，网民已不堪其扰，而Google的主页始终保持着清新的风格，一下子就给人留下了好印象。Google以其强大的功能赢得了越来越多的用户，它支持包括简体中文和繁体中文在内的多达132种语言的搜索。 </p>
<p>　　四、当Google成为文化 </p>
<p>　　Google的负责人认为，决定文档在搜索结果排列位置的因素是一个文档在其它网页中出现的频率和这些网页的可信度，网页在受众中的知名度和质量是决定性因素。事实证明，这一判断是正确的，Google的使用率越来越高，每天的搜索量由四年前的100万次增至目前的1.5亿次。 </p>
<p>　　五、关注消费者的利益 </p>
<p>　　有用户投诉，总是收到Google发送的弹出式广告，Google于是发表了一份公告，称弹出式广告是&#8220;令人讨厌&#8221;的，如果用户收到了弹出式广告，它们并不是由Google发送的，而是由第三方的应用程序引起的。Google公司建议，如果用户受到弹出式广告的侵扰，可以安装广告探查软件，阻截弹出式广告。这表明，尽管Google需要盈利，但绝没有一味地钻到钱眼中而忽略用户的利益，能够具有这样的责任感，我们相信其基础是很牢固的。 </p>
<p>　　六、不一样的收入模式 </p>
<p>　　打开Google的主页，你根本看不到任何广告，但事实上广告却是Google创收的主要源泉。其奥秘在于Google独特的广告经营方式，Google的广告形式不采用横幅广告，也没有Flash动画广告，所有的广告都是文字格式的，同时这种文字信息的广告被列入搜索信息条中。这种机动灵活的广告方式不仅在技术上处于领先，而且深受商家欢迎，用户也不会有太大的反感，同时也为Google带来滚滚财源。 </p>
<p>　　七、简单就是美 </p>
<p>　　当其他的竞争者想方设法地把首页复杂化，股价查询、天气预报等等过量的信息被填塞在页面上时，极端的实用主义却统治着Google的网站风格：其首页上只有一个搜索框，别无他物。调查发现，人们如果在12秒钟内找不到自己所需的内容的话就会超出忍耐限度。这也许说明了为何Google每月会有至少5000万的忠实用户，且用户满意率竟高达97%。</p><img src ="http://www.blogjava.net/rain1102/aggbug/191114.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-06 21:12 <a href="http://www.blogjava.net/rain1102/archive/2008/04/06/191114.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AICC和SCORM介绍</title><link>http://www.blogjava.net/rain1102/archive/2008/04/01/190178.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Tue, 01 Apr 2008 10:52:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/04/01/190178.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/190178.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/04/01/190178.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/190178.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/190178.html</trackback:ping><description><![CDATA[AICC简介： <br />
AICC（The Aviation Industry CBT Committee）即航空工业CBT（计算机辅助培训）委员会（AICC），它是一个国际性的培训技术专业性组织。AICC为航空业的发展、传送和CBT评价及相关的培训技术制定指导方针。AICC最重要的贡献就是定出了许多共通性的技术规范—AGRs(AICC Guidelines and Recommendations)系列规范。虽然AICC主要侧重于航空工业，但它多年来制定的一些标准以及在教育方面的经验都可供其他领域借鉴。 <br />
 <br />
AICC标准由于需要跨过电子远程教育功能性的三个关键域而显得尤为重要：内容编辑、内容管理及传输和电子远程教育的学员评估。可以说AICC已成为未来教育的一个范本。因为飞机的寿命有二十年，需要许多维修人员，为提高训练成效，航空业大都用计算机软件来训练维修工程师，但因计算机技术的变换快速，为维持训练软件的可用性，从使用者角度提出CMI规范，希望飞航训练单位依此规范所采用的软件，能够避免因计算机软硬件环境的改变而失效。这些规范主要为维持早期开发的训练软件能够持续使用并适用于网络环境而制定。这是最新出现的一种教育模式，对于航空业具有重大影响，但航空业是一个特殊的行业，我们要合理采用其教育与培训的理念过行移植，从而在其他行业产生价值，但是这个过程需要较长时间的摸索与较大的投入。 <br />
 <br />
目前AICC的规范覆盖了九个主要领域，从学习物件到学习管理系统，主要围绕CMI（Computer Managed Instruction）系统的互操作性提供了整体的规划，目前已提交到IEEE/LTSC作为规范草案，并开始影响到了各种行业。 <br />
 <br />
SCORM简介： <br />
SCORM（The Sharable Content Object Reference Model）即可共享内容对象参考模型，是美国国防部于1997年启动的一个称为&#8220;高级分布式学习&#8221;（ ADL: Advanced Distributed Learning）研究项目制订的一份规范。它定义了一个网络化学习的&#8220;内容聚合模型&#8221;（Content Aggregation Model）和学习对象的&#8220;运行环境&#8221;（Run-time Environment）。简单说，它就是为了满足对网络化学习内容的高水平要求而设计的。其目的是为了解决: 使课程能够从一个平台迁移到另一个平台，创建可供不同课程共享的可重用构件，以及快速又准确地寻找课程素材。 <br />
 <br />
AICC和SCORM应用： <br />
在远程教育行业，AICC和SCORM是已经被广泛采用的两个标准。 <br />
 <br />
实现标准化接口，实现跟踪、管理等功能是标准的第一个层次，AICC与SCORM都可以实现，AICC是由CBT标准发展而来，对课件开发而言比较符合&#8220;脚本&#8221;的思路，SCORM更多考虑网络化，提倡LO（学习对象）的可重用性，虽然AU与SCO形式上是一致的，但体现的理念却完全不同，AICC中的AU是死的，SCORM的SCO确是活的，当前我们确实看不到AICC的发展方向（可能也到了尽头），SCORM却对未来描述的十分清楚，而且越来越多的平台、课程开发商加入SCORM的行列。 <br />
 <br />
其实AICC不是被网络教育淘汰了，而是被网络的发展淘汰了，目前很多课件是基于web的，我们会发现，AICC的数据模型和http绑定实现方法91年后好像就没有新版本了，因为那时美国航天部为了自己的培训而做的，那是采用的课件大多是本地程序，只不过是在学习后有本地程序将学习成果发给CMI(在标准领域LMS与CMI没有区别)。随着网络的WEB发展，AICC的东西已经不好用了，当然是通讯方式HTTP绑定不好用了，因为web课件不依赖服务器时无法独立发http请求，除非靠activex or <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a> applet等，这样不方便。因此SCORM的API绑定更适用WEB。因此要注意到，AICC与SCORM的数据模型很像，只是SCORM去掉了web不用的数据字段。IEEE原来引用AICC的东西，现在改用SCORM的了，这大概就是将来的发展趋势了。 <br />
 <br />
总结： <br />
对于AICC----AICC课件因为已经经营管理了10多年，因此市场上大量的采购课件都是AICC标准的，尽管SCORM课件的推进速度很快，但是毕竟只有很短的时间，让AICC退出历史舞台，还需要很长的时间，因为大家都知道，skillsoft、netg、smartfouce的课件都是AICC标准的， AICC的课件制作工具目前仍在使用，很多的课件制作公司并没有放弃，因为不想去改变它。 <br />
对于SCORM----相信SCORM将会成为在线教育的未来标准。它显著提高了内容开发和LMS领域的竞争性，提高了学习质量、降低了开发成本、在线教育课程素材的市场响应时间。 只须要有一个依从标准的学习平台，便可从众多的内容服务供货商选取现成的教材，辅以根据公司所需而自制的教材，这样便能合乎经济成本效益，以更低的成本而享有更高的灵活度。 <br />
 <br />
对课程设置的影响： <br />
考虑到远程教育平台的支持，AICC对平台的要求相对简单一些，对课件制作的难度较大，SCORM正好相反。目前同时支持AICC\SCORM的平台很少，一般国内平台都是支持AICC，而且支持的程度、标准化都是根据自己的理解进行的，在某些地方并不是很完善，所以在实际制作过程中有许多意想不到的问题，我们作出的产品如果同时要支持两种标准，这对我们来说是一种挑战。 <br />
 <br />
同时，AICC/SCORM并不是简单的数据模型、协议，事实上贯穿课件开发整个过程，从设计开始就需要有AU\SCO等方面的考虑，而这些往往对制作人员的要求很高，工作量也会放大。<img src ="http://www.blogjava.net/rain1102/aggbug/190178.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-04-01 18:52 <a href="http://www.blogjava.net/rain1102/archive/2008/04/01/190178.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CsvJdbc - a JDBC driver for CSV files</title><link>http://www.blogjava.net/rain1102/archive/2008/03/19/187236.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Wed, 19 Mar 2008 05:43:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/03/19/187236.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/187236.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/03/19/187236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/187236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/187236.html</trackback:ping><description><![CDATA[&nbsp;
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: Arial">About<span style="font-size: 12pt; font-family: 宋体">&nbsp; </p>
<hr align="center" width="100%" color="gray" noShade size="1" />
<p style="text-align: left" align="left"></span></span></strong></p>
<p><span style="font-size: 10pt; font-family: Arial">CsvJdbc is a simple read-only JDBC driver that uses Comma Separated Value (CSV) files as database tables. It is ideal for writing data importing programs</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: Arial">How is it used<br />
<span style="font-size: 12pt; font-family: 宋体"></p>
<hr align="center" width="100%" color="gray" noShade size="1" />
<p style="text-align: left" align="left"></span></span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">The CsvJDBC driver is used just like any other JDBC driver. This example code shows how the driver is used. </span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">import <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a>.sql.*;</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">public class DemoDriver</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">{</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;public static void main(String[] args)</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;{</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; try</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // load the driver into memory</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class.forName("org.relique.jdbc.csv.CsvDriver");</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create a connection. The first command line parameter is assumed to</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;be the directory in which the .csv files are held</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + args[0] );</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // create a Statement object to execute the query with</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Statement stmt = conn.createStatement();</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Select the ID and NAME columns from sample.csv</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResultSet results = stmt.executeQuery("SELECT ID,NAME FROM sample");</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // dump out the results</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while (results.next())</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("ID= " + results.getString("ID") + "&nbsp;&nbsp; NAME= " + results.getString("NAME"));</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // clean up</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; results.close();</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stmt.close();</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.close();</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; catch(Exception e)</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Oops-&gt; " + e);</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;}</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">}</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: Arial">Advanced Options<span style="font-size: 12pt; font-family: 宋体">&nbsp; </p>
<hr align="center" width="100%" color="gray" noShade size="1" />
<p style="text-align: left" align="left"></span></span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">The driver also supports a number of parameters that change the default behaviour of the driver.</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">These properties are:</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; font-family: Arial">separator</span></strong></p>
<p style="margin-left: 36pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">Used to specify a different column separator (Default is ','). </span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; font-family: Arial">suppressHeaders</span></strong></p>
<p style="margin-left: 36pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">Used to specify if the first line contains column header information (Default is </span><span style="font-size: 12pt; font-family: 宋体">false</span><span style="font-size: 10pt; font-family: Arial">; column headers are on first line). </span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; font-family: Arial">fileExtension</span></strong></p>
<p style="margin-left: 36pt; text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">Used to specify a different file extension (Default is ".csv") </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">This following example code shows how these properties are used. </span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;...</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;Properties props = new <a title="Java爱好者" href="http://www.blogjava.net/rain1102" >Java</a>.util.Properties();</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;props.put("separator","|");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // separator is a bar</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;props.put("suppressHeaders","true");&nbsp;&nbsp;&nbsp;&nbsp; // first line contains data</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;props.put("fileExtension",".txt");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // file extension is .txt</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;Connection conn = Drivermanager.getConnection("jdbc:relique:csv:" + args[0],props)</span></p>
<p style="text-align: left; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" align="left"><span style="font-size: 10pt; font-family: 宋体">&nbsp;...</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 12pt; font-family: Arial">Download<span style="font-size: 12pt; font-family: 宋体">&nbsp; </p>
<hr align="center" width="100%" color="gray" noShade size="1" />
<p style="text-align: left" align="left"></span></span></strong></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: Arial">The latest version of the software can be found at <a href="http://www.sourceforge.net/projects/csvjdbc">http://www.sourceforge.net/projects/csvjdbc</a>. </span></p><img src ="http://www.blogjava.net/rain1102/aggbug/187236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-03-19 13:43 <a href="http://www.blogjava.net/rain1102/archive/2008/03/19/187236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件包 javax.xml.validation 的描述</title><link>http://www.blogjava.net/rain1102/archive/2008/03/07/184434.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Fri, 07 Mar 2008 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/03/07/184434.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/184434.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/03/07/184434.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/184434.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/184434.html</trackback:ping><description><![CDATA[<h2>软件包 javax.xml.validation </h2>
此包提供了用于 XML 文档验证的 API。
<p><strong>请参见：</strong> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/package-summary.html#package_description"><strong>描述</strong></a>
<p>
<table style="width: 716px; height: 200px" cellspacing="0" cellpadding="3" width="716" summary="" border="1">
    <tbody>
        <tr class="TableHeadingColor" bgcolor="#ccccff">
            <th align="left" colspan="2"><font size="+2"><strong>类摘要</strong></font></th>
        </tr>
        <tr class="TableRowColor" bgcolor="white">
            <td width="15%"><strong><a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/Schema.html">Schema</a></strong></td>
            <td>不可变的语法存储表示形式。</td>
        </tr>
        <tr class="TableRowColor" bgcolor="white">
            <td width="15%"><strong><a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/SchemaFactory.html">SchemaFactory</a></strong></td>
            <td>创建 <a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/Schema.html"><code>Schema</code></a> 对象的工厂。</td>
        </tr>
        <tr class="TableRowColor" bgcolor="white">
            <td width="15%"><strong><a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/SchemaFactoryLoader.html">SchemaFactoryLoader</a></strong></td>
            <td style="width: 808px; height: 26px">创建 <a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/SchemaFactory.html"><code>SchemaFactory</code></a> 的工厂。</td>
        </tr>
        <tr class="TableRowColor" bgcolor="white">
            <td width="15%"><strong><a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/TypeInfoProvider.html">TypeInfoProvider</a></strong></td>
            <td>此类提供了对 <a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/ValidatorHandler.html"><code>ValidatorHandler</code></a> 所确定的类型信息的访问。</td>
        </tr>
        <tr class="TableRowColor" bgcolor="white">
            <td width="15%"><strong><a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/Validator.html">Validator</a></strong></td>
            <td>根据 <a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/Schema.html"><code>Schema</code></a> 检查 XML 文档的处理器。</td>
        </tr>
        <tr class="TableRowColor" bgcolor="white">
            <td width="15%"><strong><a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/ValidatorHandler.html">ValidatorHandler</a></strong></td>
            <td>处理 SAX 流的流验证器。</td>
        </tr>
    </tbody>
</table>
&nbsp;
<p><a name="package_description"><!-- --></a>
<h2>软件包 javax.xml.validation 的描述 </h2>
<p>
<p>此包提供了用于 XML 文档验证的 API。<em>Validation</em> 是验证 XML 文档是否为指定 XML <em>schema</em> 的实例的过程。XML 模式定义了其实例文档将表示的内容模式（也称为 <em>grammar</em> 或 <em>vocabulary</em>）。 </p>
<p>有多种流行的技术用于创建 XML 模式。最流行的技术包括： </p>
<ul>
    <li><strong>Document Type Definition (DTD)</strong> －－ XML 的内置模式语言。
    <li><strong><a href="http://www.w3.org/XML/Schema">W3C XML Schema (WXS)</a></strong> －－ 面向对象的 XML 模式语言。WXS 还提供了用于约束 XML 文档的字符数据的类型系统。WXS 通过 <a href="http://www.w3.org/">World Wide Web Consortium (W3C)</a> 维护，它是 W3C Recommendation（即公认的 W3C 标准规范）。
    <li><strong><a href="http://www.relaxng.org/">RELAX NG (RNG)</a></strong> －－ 基于模式的、用户友好的 XML 模式语言。RNG 模式也可以使用类型来约束 XML 字符数据。RNG 通过 <a href="http://www.oasis-open.org/">Organization for the Advancement of Structured Information Standards (OASIS)</a> 维护，它既是 OASIS 标准也是 <a href="http://www.iso.org/">ISO (International Organization for Standardization)</a> 标准。
    <li><strong><a href="http://www.schematron.com/">Schematron</a></strong> －－ 基于规则的 XML 模式语言。相对于 DTD、WXS 和 RNG 是用于表示内容模式的结构而言，Schematron 的设计是为了实施难以或不能通过其他模式语言表示的个别规则。Schematron 是为了补充以结构化模式语言（例如 aforementioned）编写的模式。Schematron 正在成为一项 ISO 标准。 </li>
</ul>
<p>以前的 JAXP 版本支持作为 XML 解析器的功能的验证，要么通过 <a title="javax.xml.parsers 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/parsers/SAXParser.html"><code>SAXParser</code></a> 实例，要么通过 <a title="javax.xml.parsers 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/parsers/DocumentBuilder.html"><code>DocumentBuilder</code></a> 实例来表示。 </p>
<p>JAXP 验证 API 从 XML 文档解析中分离出实例文档的验证。这具有几种优点，一些原因包括： </p>
<ul>
    <li><strong>支持额外的模式语言。</strong> 从 JDK 1.5 开始，两种最流行的 JAXP 解析器实现（Crimson 和 Xerces）仅支持可用的 XML 模式语言的子集。Validation API 提供了标准的机制，应用程序通过此机制可利用支持额外模式语言的规范验证库。
    <li><strong>简单的 XML 实例与模式的运行时耦合。</strong> 指定要用于通过 JAXP 解析器验证的模式位置可能易于混淆。Validation API 使此过程变得简单（参见以下<a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/package-summary.html#example-1">示例</a>）。 </li>
</ul>
<p><a name="example-1"><strong>用例</strong>。</a>以下示例演示了通过 Validation API 验证 XML 文档（为了方便阅读，此例未显示某些异常处理）： </p>
<pre>
// parse an XML document into a DOM tree
DocumentBuilder parser = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = parser.parse(new File("instance.xml"));
// create a SchemaFactory capable of understanding WXS schemas
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// load a WXS schema, represented by a Schema instance
Source schemaFile = new StreamSource(new File("mySchema.xsd"));
Schema schema = factory.newSchema(schemaFile);
// create a Validator instance, which can be used to validate an instance document
Validator validator = schema.newValidator();
// validate the DOM tree
try {
validator.validate(new DOMSource(document));
} catch (SAXException e) {
// instance document is invalid!
}
</pre>
<p>JAXP 解析 API 已经与验证 API 进行了集成。应用程序可以通过验证 API 创建 <a title="javax.xml.validation 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/validation/Schema.html"><code>Schema</code></a>，并通过使用 <a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/parsers/DocumentBuilderFactory.html#setSchema(javax.xml.validation.Schema)"><code>DocumentBuilderFactory.setSchema(Schema)</code></a> 和 <a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/parsers/SAXParserFactory.html#setSchema(javax.xml.validation.Schema)"><code>SAXParserFactory.setSchema(Schema)</code></a> 方法将其与 <a title="javax.xml.parsers 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/parsers/DocumentBuilderFactory.html"><code>DocumentBuilderFactory</code></a> 或 <a title="javax.xml.parsers 中的类" href="http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/javax/xml/parsers/SAXParserFactory.html"><code>SAXParserFactory</code></a> 实例进行关联。<strong>您不能</strong>既设置模式，又调用解析器工厂上的 <code>setValidating(true)</code>。前者的技术将导致解析器使用新的验证 API，后者将导致解析器使用它们自己的内部验证工具。<strong>同时调整这两个选项将导致冗余行为或错误条件。</strong> </p><img src ="http://www.blogjava.net/rain1102/aggbug/184434.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-03-07 11:03 <a href="http://www.blogjava.net/rain1102/archive/2008/03/07/184434.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决URL传递中文参数（比如hello.action?msg=哈哈之类）出现乱码的问题 </title><link>http://www.blogjava.net/rain1102/archive/2008/03/06/184264.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 06 Mar 2008 06:56:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/03/06/184264.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/184264.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/03/06/184264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/184264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/184264.html</trackback:ping><description><![CDATA[修改&nbsp;tomcat/conf/server.xml <br />
&lt;Connector&nbsp;acceptCount='100'&nbsp;connectionTimeout='20000'&nbsp;debug='0' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disableUploadTimeout='true'&nbsp;enableLookups='false' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxSpareThreads='75'&nbsp;maxThreads='150'&nbsp;minSpareThreads='25' <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;port='8080'&nbsp;redirectPort='8443'&nbsp;URIEncoding='<span style="color: #ff0000">GBK</span>'/&gt; <br />
<br />
<br />
加上　URIEncoding='GBK'　即可。 <br /><img src ="http://www.blogjava.net/rain1102/aggbug/184264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-03-06 14:56 <a href="http://www.blogjava.net/rain1102/archive/2008/03/06/184264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用DOS命令设置ip地址及DNS</title><link>http://www.blogjava.net/rain1102/archive/2008/02/29/182906.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Fri, 29 Feb 2008 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/02/29/182906.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/182906.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/02/29/182906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/182906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/182906.html</trackback:ping><description><![CDATA[微软的Windows家族从Windows NT开始跨入了网络操作系统的市场，到现在的Windows 2000可以说网络功能在逐渐的完善，在这个成长过程中Windows融入了很多其他网络操作系统的功能，可以说是借鉴而来的，逐渐形成了一套功能完善的网络操作系统，这也是令SUN等各大公司所感觉到不服的原因，觉得不是微软完全自给研发的东西。不过Windows2000的功能确实是很强大的，它几乎可以象Unix和Linux一样在命令行下做很多的工作。
<p>&nbsp;&nbsp;&nbsp; 下面我们看一下Windows上一个可以在命令行下更改ip地址的命令，看过这个命令后大家可能会觉得这个命令很象Unix和Linux的命令，更象Cisco的路由器命令。下面是我在计算机上实际操作的回显，我会加上一些注释： </p>
<p>C:\&gt;ipconfig (首先用ipconfig这个命令看一下更改之前的ip地址) </p>
<p>Windows 2000 IP Configuration </p>
<p>Ethernet adapter 本地连接: </p>
<p>Connection-specific DNS Suffix . : <br />
IP Address. . . . . . . . . . . . : 192.168.0.250 （本地连接更改之前的ip） <br />
Subnet Mask . . . . . . . . . . . : 255.255.255.0 <br />
Default Gateway . . . . . . . . . : 192.168.0.1 </p>
<p>PPP adapter 拨号连接: </p>
<p>Connection-specific DNS Suffix . : <br />
IP Address. . . . . . . . . . . . : 211.149.128.147 <br />
Subnet Mask . . . . . . . . . . . : 255.255.255.255 <br />
Default Gateway . . . . . . . . . : 211.149.128.147 </p>
<p><br />
C:\&gt;netsh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (然后执行netsh这个命令) <br />
netsh&gt;interface&nbsp;&nbsp; (netsh命令的子命令) <br />
interface&gt;ip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (interface命令的子命令) <br />
interface ip&gt;set&nbsp; (interface ip命令的子命令) </p>
<p>下列指令有效: </p>
<p>此上下文中的命令: <br />
set address - 设置指定的接口的 IP 地址或默认网关。 <br />
set dns - 设置 DNS 服务器模式和地址。 <br />
set wins - 设置 WINS 服务器模式和地址。 <br />
interface ip&gt;set address "本地连接" static 192.168.0.2 255.255.255.0 192.168.0.11 （设置ip地址） </p>
<p>确定。 </p>
<p>（注：上面一段象不象Cisco的命令。） </p>
<p>interface ip&gt;exit </p>
<p>&nbsp;</p>
<p><br />
C:\&gt;ipconfig （更改后再用ipconfig命令看一下ip地址,确认一下是否更改成功） </p>
<p>Windows 2000 IP Configuration </p>
<p>Ethernet adapter 本地连接: </p>
<p>Connection-specific DNS Suffix . : <br />
IP Address. . . . . . . . . . . . : 192.168.0.2 （更改后的ip说明成功了） <br />
Subnet Mask . . . . . . . . . . . : 255.255.255.0 <br />
Default Gateway . . . . . . . . . : 192.168.0.1 </p>
<p>PPP adapter 拨号连接: </p>
<p>Connection-specific DNS Suffix . : <br />
IP Address. . . . . . . . . . . . : 211.149.128.147 <br />
Subnet Mask . . . . . . . . . . . : 255.255.255.255 <br />
Default Gateway . . . . . . . . . : 211.149.128.147 </p>
<p>C:\&gt; </p>
<p>netsh这个命令还有好多强大的功能 如下： </p>
<p>C:\&gt;netsh <br />
netsh&gt;? </p>
<p>下列指令有效: </p>
<p>此上下文中的命令: <br />
.. - 移到上一层上下文级。 <br />
? - 显示命令列表。 <br />
aaaa - 更改到 `aaaa' 上下文。 <br />
abort - 丢弃在脱机模式下所做的更改。 <br />
add - 将一个配置项添加到项目列表中。 <br />
alias - 添加一个别名 <br />
bye - 退出程序。 <br />
commit - 提交在脱机模式中所做的更改。 <br />
delete - 在项目列表上删除一个配置项目。 <br />
dhcp - 更改到 `dhcp' 上下文。 <br />
dump - 显示一个配置脚本。 <br />
exec - 运行一个脚本文件。 <br />
exit - 退出程序。 <br />
help - 显示命令列表。 <br />
interface - 更改到 `interface' 上下文。 <br />
offline - 将当前模式设置成脱机。 <br />
online - 将当前模式设置成联机。 <br />
popd - 从堆栈上打开一个上下文。 <br />
pushd - 将当前上下文放推入堆栈。 <br />
quit - 退出程序。 <br />
ras - 更改到 `ras' 上下文。 <br />
routing - 更改到 `routing' 上下文。 <br />
set - 更新配置设置。 <br />
show - 显示信息 <br />
unalias - 删除一个别名。 <br />
wins - 更改到 `wins' 上下文。 </p>
<p>下列的子上下文可用: <br />
routing interface ras dhcp wins aaaa</p><img src ="http://www.blogjava.net/rain1102/aggbug/182906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-02-29 14:01 <a href="http://www.blogjava.net/rain1102/archive/2008/02/29/182906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Adobe AIR正式版三月推出 要做RIA技术领导者</title><link>http://www.blogjava.net/rain1102/archive/2008/02/20/180894.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Wed, 20 Feb 2008 08:29:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/02/20/180894.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/180894.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/02/20/180894.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/180894.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/180894.html</trackback:ping><description><![CDATA[<p><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe 2</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">月</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">18</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">日表示，将在三月发布</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe AIR</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">（</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe Integrated Runtime</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">）正式版，要和微软的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">竞逐丰富网络应用程序</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">RIA</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">（</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Rich Internet Application</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">）市场。</span><span style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <span lang="EN-US"><br />
<br />
</span></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">所谓</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">RIA</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">就是以动画、影音等多样性打造网站的技术，而其底层除了微软已在去年推出的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">之外，就属</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">开发代号为</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Apollo</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">AIR</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，目前仍在</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Beta</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">版。不过</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">香港暨台湾区总经理黄耀辉今天表示，</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">AIR</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">正式版将在三月推出，希望在</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">RIA</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">技术中取得市场领导地位。</span><span style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <span lang="EN-US"><br />
<br />
RIA</span></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">可以在网站中做出交互式的应用程序，也可以说是实现</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Web 2.0</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">概念的工具。例如可以做到交互式的电子下单系统、航空公司订票系统等等。微软在去年发表</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">时就展示出宝来证券、中华航空等企业应用。而</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">希望利用</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">AIR</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">做为开发平台，再加上</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Flex</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">和</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Flash</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">两种工具，做到</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">RIA</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的应用程序。</span><span style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <span lang="EN-US"><br />
<br />
</span></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">除了</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">要以</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">AIR</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">做为</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">RIA</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">技术领导者外，微软也积极耕耘这块市场，去年才首度正式发表名为「银光」的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight 1.0</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，要抢攻</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">耕耘已久的网站开发、设计市场。随着</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">即将推出</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">AIR</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">正式版，两家厂商将展开正面对决。</span><span style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <span lang="EN-US"><br />
<br />
</span></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">对此微软则是自信满满。台湾微软开发工具暨平台推广处产品营销经理胡德民表示，微软三月时会在美国的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Mix 08</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">大会上发表</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight 2.0</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的产品蓝图，预计在今年就会正式发表。微软原本只将更新版本命名为</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight 1.1</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，不过由于功能比前一版改进太多，因此在去年</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">12</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">月</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><a href="http://www.ithome.com.tw/itadm/article.php?c=46555" target="_blank"><span lang="EN-US" style="color: #000099; font-family: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-size: 11.0pt"><span lang="EN-US">宣布</span></span></a></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">直接发表</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight 2.0</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">。</span><span style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <span lang="EN-US"><br />
<br />
</span></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">而去年</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">9</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">月首次发表的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight 1.0</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">版本，目前微软尚不愿透露在台湾地区的使用状况，表示要晚一点才会公布。胡德民认为，</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">RIA</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">技术的成功必须视企业进入这项技术的状况而定，微软今年七、八月份将在台湾举行的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Mix</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">大会，会展示更多利用</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Silverlight</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">打造的成功案例。另外胡德民也表示，</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">AIR</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的目标群众在于开发者（</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">developer</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">），而微软则是希望开发者和设计者（</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">designer</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">）都能使用微软技术。</span><span style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <span lang="EN-US"><br />
<br />
</span></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">微软自去年开始积极抢攻原是</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">天下的开发市场，推出网页设计工具平台</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Expression Studio</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，其中有网页建置工具、互动设计工具等等，都被视为和</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Flash</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">打对台。不过</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">今天公布</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">2007</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">年的台湾区营业成长为</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">30%</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">，黄耀辉说，仍持续稳定成长，并没有受到微软加入开发市场的影响。</span><span style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"> <span lang="EN-US"><br />
<br />
</span></span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">另外，</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Adobe</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">今年在台湾除了深耕</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">RIA</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">技术外，仍持续发展</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Acrobat</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">、</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Creative Suite 3</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">等产品，并在政府、金融、制造业间深耕</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Acrobat</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">。手机端的应用也会有新的进展，和中华电信在手机上的</span><span lang="EN-US" style="font-size: 11.5pt; font-family: 'Arial','sans-serif'; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Flash Cast</span><span style="font-size: 11.5pt; font-family: 宋体; mso-font-kerning: 0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial">服务今年就会推出</span></p><img src ="http://www.blogjava.net/rain1102/aggbug/180894.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-02-20 16:29 <a href="http://www.blogjava.net/rain1102/archive/2008/02/20/180894.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CIO如何防止春节后IT骨干流失(转)</title><link>http://www.blogjava.net/rain1102/archive/2008/02/01/178831.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Fri, 01 Feb 2008 06:10:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/02/01/178831.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/178831.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/02/01/178831.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/178831.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/178831.html</trackback:ping><description><![CDATA[<p>随着春节的临近，节日的气氛正慢慢浓郁,而令公司高层最苦恼的是：这时候员工流失率是最高的，而且往往流失的都是公司的核心人员。对于一个企业来说何为最大的损失?莫过于优秀员工的流失!二十一世纪什么最贵?人才呀!《天下无贼》里精点对白，调侃间却道出了企业发展的硬道理。</p>
<p>　　何勇是一家技术公司的CIO，近日他正为技术部经理和几个IT骨干员工春节后要辞职一事烦恼不已。是什么原因让公司的IT骨干员工频频向公司递交辞职申请书?薪水、福利、文化冲突、个人职业发展还是绩效目标?如何留住IT骨干人员也成了年底CIO较为关注的焦点。</p>
<p>　<strong>　过年如过关,春节后IT骨干易流失</strong></p>
<p>　　一般来说,在春节前后IT人员的流动率相对其他时间段而言要高很多。对此，何勇深有感触，如果春节前后骨干人员的严重流失,将会使公司刚刚制定的新财年策略和计划最终沦为鸡肋。对公司而言,是&#8220;出师未捷,身先死&#8221;的重大打击。因此,何勇认为对公司而言，IT骨干的集体流失所带来的影响是方方面面的,既有有形的，也有无形的。</p>
<p>　　(1)员工的流失可能使公司业务受损。良好的IT团队因某些核心员工的离职而遭到破坏，开发中的IT系统可能因此被迫中断，或公司IT项目进程效率可能会大大降低。骨干员工尤其是中高层管理人员跳槽到其他公司后，有可能带走商业秘密，这些都将带来巨大的损失。</p>
<p>　　(2)员工的流失会影响近期工作质量。一般来说，员工在决定离开而尚未离开的那一段时间里，他们对待自己手头的工作不会像以往一样认真负责，有些员工甚至由于对公司不满，出于对公司的报复心理而故意将事情做砸。若员工在这样的心态下工作，工作效率和质量显然会大打折扣。此外，在员工离去后公司需要一定的时间来寻找新的替代者，在新的替代者到位之前，其他员工不得不帮忙完成辞职者的工作而导致自身的疲惫不堪。再者，由于流出者和流入者在工作能力上总有一定的差距，流失的骨干员工对公司的影响将是长期的。</p>
<p>　　(3)员工的流失会带来一定的成本损失。公司从招聘到培训员工所付出的人力资本投资将随着员工的跳槽而流出并注入到其他公司。同时,IT骨干离职所留下的职位空缺迫使公司重新花费一大笔成本培养或是寻找接替者。</p>
<p>　　(4)骨干员工的离职还影响在职员工的情绪，极大挫伤团队的整体士气。这是因为一部分员工的流失和可能会刺激更大范围的人员流失，而且向其他员工提示还有其他的选择机会存在。特别是当人们看到流失的员工得到了更好的发展机遇或因流出而获得更多的收益时，留在岗位上的人员就会人心思动，工作积极性受到影响。也许从前从未考虑过寻找新的工作的员工也会开始或准备开始寻找新的工作。</p>
<p>　　<strong>IT人才流失的原因分析</strong></p>
<p>　　人才流失的原因非常复杂，总体上讲是人才的需求没有得到满足所致。实际上，IT人才流失的原因是多方面的。一般要综合考虑，只有当其中某一个点发生了问题，并变得无法忍受时，那么这个人才才会离去。</p>
<p>　　<strong>(1)最重要的原因——寻求更高的报酬</strong></p>
<p>　　人才被挖走最直接的原因是薪酬的诱惑难以抵挡。薪酬永远是吸引人的一个最重要指标。最有代表的观点认为：&#8220;只要对方开出两倍甚至更高的价码，你怎么强调公司文化、发展空间等都用处不大。因为薪水是一个人总收入水平的根本性指标。薪水高的人，代表公司对他的能力认可，自然其他待遇像培训、奖金、升职、股票等等都会优于薪水低的人。&#8221;</p>
<p>　　美国学者阿姆克对员工辞职率的分析发现，决定雇员自愿离开企业的所有影响中，最重要的是相对工资水平。许多员工把公司支付给自己的报酬的高低作为衡量自身价值的标尺。由此，导致一些员工在寻找到了能够提供更高报酬的企业后，就有可能选择跳槽。</p>
<p>　<strong>　(2)更好的发展机会也是跳槽的主因</strong></p>
<p>　　再一个原因是竞争对手提供了更好更多的发展机会，对于高级IT经理人来讲，这比高薪更加有诱惑力。报酬是在人们选择职业时比较注重的一个因素，但它并不是人们作出最终决策的惟一依据。事实表明，有些人为了能得到更多的发展机会，他们宁可暂时放弃较高的报酬。反之，若得不到很好的发展，即便是能在这家公司拿到比同行们更高的收入，他们也会跳槽到那些能给他更广阔的发展空间或其他企业去工作。</p>
<p>　<strong>　(3)领导是导致员工离开的原因之一</strong></p>
<p>　　在很多的离职调查中，员工并没有讲是领导的原因。实际上，很多情况下是领导导致了员工的离职。比如上司的领导方式让员工不满意，不能给员工提供真正的帮助等，都可能促成员工的离开。对于中层的经理人来说，与高层领导的观念不一致也是导致离职的一个重要原因。</p>
<p>　<strong>　(4) 分配机制不公平也是导致员工离开的原因</strong></p>
<p>　　从公司方面讲，导致IT人员离职的根本原因在于企业制度问题。诸如管理者素质不高、员工激励机制不健全、未能建立有效的评估体系、缺乏合理的薪酬结构、未能建立针对核心员工的长期职业发展规划和企业文化氛围等等。这些原因也会导致IT员工尤其是IT骨干人员频频跳槽。</p>
<p>　<strong>　如何留住IT骨干人才</strong></p>
<p>　　俗话道：天要下雨，娘要嫁人，个人顾个人。当员工的感情不在时，对企业的忠诚度也随之归零。员工忠诚度也成为CIO与高层管理者中最炙手可热的话题。如何打造员工忠诚度?工资涨了、待遇提了、培训做了，怎么人还是走了呢?</p>
<p>　　马斯洛需求明确指出人随着发展变化有着不同层次的需求。员工的最基本需要就是生存和安全的需求，这里是说薪资;更高层次则是得到认同与尊重。因此，当连最低层次的需求都无法满足员工，员工忠诚度从何而谈?照目前的社会状况，要说依靠情感来留住人，完全是一厢情愿的想法。试想想，如果每天都在为自己家里的柴油盐米发愁时，如何以情感拉拢人，其收效都不会大的。在IT人员心态浮躁、薪资行情看涨的环境下，能否留住员工、保持IT团队考验着每一个CIO的管理技巧，因为他们除了要营造企业这个小环境外，还要应对整个IT行业职场大环境的挑战。</p>
<p>　<strong>　(1)待遇留人</strong></p>
<p>　　首先，人才流失是有一定经济原因的。对于员工来讲待遇是一种很现实的东西，企业幻想既想让员工卖命干活，却又不想付出合理薪水待遇的话，恐怕是难以实现的。当在薪资、工作待遇、福利不如其它公司的时候，很难招到称心的人才。在现阶段，工作仍是大多数员工谋生的重要手段,既然是谋生，人们就不得不考虑收入问题。当员工的付出与所得到的回报严重的不相匹配时，跳槽也就是他们的必然选择了。</p>
<p>　　尽管薪资不是激励员工的唯一手段，也不是最好的办法，但却是一个非常重要的方法。达到同行平均水平的薪资是员工的保障，可起到安定人心的作用，让员工无后顾之忧。对于每一个职位，社会都有一个平均薪酬，这是人才愿意工作的底限，也是一般的薪酬水平。然而，对于核心人才而言，他们所创造的效益，远远高于企业员工平均效益，他们的价值，也应远远高于社会平均薪酬。根据80/20原则，企业里的20%的员工创造80%的财富。因此，厚待高层员工和骨干员工的是重要行动。</p>
<p><strong>　(2)事业留人</strong></p>
<p>　　对于不同的员工来讲，需求是多方面的。对于层次较高的员工来讲，能否满足他们实现自身价值的需求，对稳定他们至关重要。这里需要注意的是两种人才：一种是高级管理人才，另一种某领域的技术研发专家。要吸引这两种人，薪水已不是最重要的因素。他们离开公司一般有以下因素：①是新的职位更有成长性，对他的个人成长非常有帮助;②是对方企业非常有发展潜力。他们关心的是个人成就的实现，关注企业长期的职业增值。</p>
<p>　　越是高管，个性化需求也越强。越是高级的人才在决定离开一家企业的时候，其考虑也越是全面而慎重，这时候企业要想将他们留下来，可能性微乎其微。对企业来说，功夫要做在平时，营造最适宜他们留下的环境。对这些人才只提高他们的能力还不够，还要把握核心人才的个体需求，有针对性地、最大限度地给予他们发展的空间。</p>
<p>　<strong>　(3)帮助员工做职业生涯规划</strong></p>
<p>　　许多员工对自己的发展和前途往往感到非常迷茫，不知自己该如何去规划，方向在那里。于是就会产生其他企业的世界可能更精彩，从而萌生去意。如果企业能够帮助员工去做人生尤其职业生涯规划，指导个人该如何通过努力实现自己的人生抱负，然后结合每个人的特点通过一定的途径去培养，就能使员工找到自己的定位和明确将来努力的方向。</p>
<p>　　从目前看，企业内的IT人员有技术和管理两条不同的升迁路径和成长接替：</p>
<p>　　①技术路径：见习工程师随着资历增长和个人表现，会被提升为开发工程师、运维工程师、实施工程师，然后晋升为资深工程师。</p>
<p>　　②管理路径：技术员、项目助理、项目经理、IT主管，最后晋升为CIO，如果做得好还可以在其他高层管理岗位上驰骋。</p>
<p>　　所谓&#8220;不想当将军的士兵不是好士兵&#8221;。因此,一个有事业心的人，必定有自己的职业生涯规划，而自己的规划要靠他所在的组织来帮他实现。当组织满足了员工的这个需求，他也就有了留下来的理由。因此，CIO在为员工争取待遇的同时，也要主动为他们规划职业成长的阶梯，培养人才让人才的能力能够不断提高是一个非常有效的留人方式。</p>
<p>　　<strong>(4)用人机制变革</strong></p>
<p>　　在许多员工的离职原因往往是对公司的用人机制和环境不满，自己有能力但是得不到晋升，庸者却身居高位，帮派主义、小团队主义盛行。如果公司这种恶习不除，将很难使有能力的员工安心工作，他们的流失也就只是时间问题。所以企业如何建立公平竞争，能者上、庸者下的用人机制和环境对于稳定有能力、有抱负的员工来讲是至关重要的。诚然，用人的大环境很难改变，但CIO完全可以改变小环境，可以根据自己企业的情况，为员工创造一个相对公平的用人制度。</p>
<p>　<strong>　(5)感情留人</strong></p>
<p>　　除了待遇瓶颈，还得面对另外一个留人瓶颈：员工无法得到企业的认同，这也是员工选择离开的又一主要原因。公司应要实施以人为本的管理，最重要的是必须懂得如何尊重员工。CIO须把员工当做渴望得到关怀、理解和尊重的有血有肉的人来看待，充分尊重他们的劳动，维护他们的权益，为他们的工作创造良好的工作氛围。这样做，既能够增强他们的自信心，激发他们的工作热情，提高他们的满意度和忠诚度，从而能够大大降低员工的流动率。</p>
<p>　　如果企业文化匮乏或不健全，整个企业也就是一堆散沙，貌合神离，只要外界一有风吹草动，立即各自漫天飞扬而去。如果企业文化良好，就象一股常年不干涸的水流一样，浸透每粒沙子，使他们紧密地团结在一起，任凭外界风吹日晒，我自岿然不动。因此，如果不能给员工与竞争对手同样或者更优越的待遇，感情留人是一个好方法。CIO应加强与IT骨干员工的关系，增强员工对企业的感情和忠诚。必须了解员工到底为什么要换工作，很多人都以为是由于经济的原因，但并不总是这样。</p>
<p>　　古人说士为知己者死，人是感情动物。企业在对员工的感情投入上，创造一种让员工有家的感觉的环境往往会收到事半功倍的效果。让员工感激涕零，而企业实际上并没有多付出什么，而收获的往往是员工的心和忠诚。</p>
<p>　　总而言之，企业要想稳定员工队伍，降低人员流失，就要明白员工流失的责任并非全在员工本身，企业也要多方位反思，根据企业自身的情况采取有效措施降低员工的非正常流失。</p><img src ="http://www.blogjava.net/rain1102/aggbug/178831.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-02-01 14:10 <a href="http://www.blogjava.net/rain1102/archive/2008/02/01/178831.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>把女友升级为老婆的时候发生的BUG</title><link>http://www.blogjava.net/rain1102/archive/2008/01/30/178541.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Wed, 30 Jan 2008 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/30/178541.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/178541.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/30/178541.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/178541.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/178541.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 亲爱的技术支持： 　　 我急需您的帮助。我最近将&#8220;女朋友7.0&#8221;升级到&#8220;妻子1.0&#8221;，发现这个新程序意外地启动了孩子生产程序，而且占用了大量的空间和珍贵的资源。这在产品的使用手册中没有提到。此外&#8220;妻子1.0&#8221;自动将自己安装到其他的所有的程序中，它随系统同时启动，监控整个系统的状态。&#8220;男人夜出2.5&#8221;...&nbsp;&nbsp;<a href='http://www.blogjava.net/rain1102/archive/2008/01/30/178541.html'>阅读全文</a><img src ="http://www.blogjava.net/rain1102/aggbug/178541.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-30 15:27 <a href="http://www.blogjava.net/rain1102/archive/2008/01/30/178541.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谈80后程序员薪水为何这么低？</title><link>http://www.blogjava.net/rain1102/archive/2008/01/25/177750.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Fri, 25 Jan 2008 06:00:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/25/177750.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/177750.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/25/177750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/177750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/177750.html</trackback:ping><description><![CDATA[<strong>【IT168 专稿】</strong><br />
&nbsp;&nbsp;&nbsp;&nbsp;即使再优秀的程序员，刚毕业的时候的薪水与有多年职场经验的老手相比也会低些，这是非常正常的现象。但我们今天要讨论的是：<strong><a href="http://publish.itpub.net/m/2008-01-22/200801221509190.shtml">薪水低这种情况为什么在80后程序员群体中尤其突出？？</a></strong> <br />
<br />
&nbsp;&nbsp; 80后程序员薪水偏低指的是：在IT行业工作3-5年后，仍不能得到与工作年限相称的薪酬回报！！ <br />
<br />
<strong>程序员薪酬本质 <br />
<br />
</strong>&nbsp;&nbsp;&nbsp; 薪酬应该是社会对自己承认的一个标志。理论上，自己的价值越高，应该得到的回报也就越高。薪酬包括：薪水和福利。薪水是对我们当期劳动付出的认可，福利则保证我们无生活上的后顾之忧。 <br />
<br />
&nbsp;&nbsp; 公司基于以下两点付劳动报酬给我们，其一是能力，其二是忠诚。对职场新人而言可能第一份报酬全部是因为自己的能力得到，然而随着我们在同一家服务年限的提高，公司为忠诚付给我们的报酬会越来越高（工龄工资的另一个定义），这是对忠诚的回报。 <br />
<br />
&nbsp;&nbsp; 薪酬人人关心。在每个阶段，每个人对工资、薪酬都会有不同的思考，这些思考源自我们对外界清醒和自身的清醒认真和判断。无论是大专、本科还是研究生，每个人毕业后都有一个薪水范围，走入社会2年以后，薪水增长一般应在30%——50%之间。 <br />
<br />
&nbsp;&nbsp; 程序员的薪水以其为公司开发程序的多少和质量而定。有相当比例的80后程序员毕业时达不到能马上进入项目的水平，需要公司进行在职培训（很可能又是教育的错），所以薪水不高。在IT行业工作了几年之后，又因为总是跳来跳去的没有形成有效的积累，所以，薪水还是不高。 <br />
<br />
<strong>为什么偏是&#8220;80后&#8221;薪水低？<br />
<br />
</strong>&nbsp;&nbsp;&nbsp; 综合考查、结合与业内人士的沟通，无非因为以下几点。 <br />
<br />
&nbsp;&nbsp;&nbsp; 专业基本知识一般，提前走入社会意识差 <br />
<br />
&nbsp;&nbsp;&nbsp; 计算机相关专业毕业现在多是企业招聘应届毕业生的最基本条件之一。我在多次面试应届生问及大学四年学到了什么时，总是听到类似的话：&#8220;现在IT专业教育跟社会脱节很厉害，大学没学什么。还是要在企业里，才能接触实际项目。我现在还不能马上进入项目。&#8221; <br />
<br />
&nbsp;&nbsp;&nbsp; 面对这种论调，企业一般会这么想：公司不是培训学校，还是请你练好了再来（这也是很多公司明确不要应届生的原因）。当然，如果公司够大，候选人又足够聪明，还是有机会进入公司的，但薪水一般不会特别高。 <br />
<br />
&nbsp;&nbsp;&nbsp; 这种现象出现的原因和应对方法，在我与it168合作推出的《<a href="http://tech.it168.com/m/2007-12-13/200712131600062.shtml">程序员初涉江湖 宜步步为赢</a>》有相对深入的分析，在此不再赘述。 <br />
<br />
<strong>狂跳，从而得不到忠诚的回报 <br />
<br />
</strong>&nbsp;&nbsp;&nbsp; 为什么部分80后进入社会几年后编程经验有提高、项目经验有积累，但薪水比刚走出校园时提高不多，甚至有回落呢？ <br />
<br />
&nbsp;&nbsp;&nbsp; 有人在驳我的《&#8220;80后&#8221;程序员为什么找不到工作》里提到&#8220;君可知，外企提供的待遇通常高于员工价值，某A价值6000，那他一定能得到7000以上，这些外企都是傻子吗，不，他们知道这样能够获得员工更高的忠诚度，更高的工作热情和对工作的珍惜，从而转换成努力工作。&#8221; <br />
<br />
&nbsp;&nbsp;&nbsp; 首先，&#8220;千金买马骨&#8221;也要是千里马的骨才成。所谓外企也应该是由聪明人组成的，不会干蠢事。如果候选人只值6K，是不会有人付7K的。如果真值，我们应该在之前的学习和工作中表现出来，而非坐在家里等侍好运气到来。 <br />
<br />
&nbsp;&nbsp;&nbsp; 其实，我们要搞清楚公司的思考逻辑。有开发经验之后，员工有忠诚的行为，才会有薪水方面的提高。而非用金钱买忠诚。任何公司都应该非常清楚，很多东西是金钱买不到的，所以，总是跳来跳走的部分80后程序员始终薪酬水平无法达到质飞跃。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;我们看看劳资双方的逻辑吧。 <br />
<br />
&nbsp;&nbsp;&nbsp; 公司逻辑：公司希望看到每个员工在进入公司之后，有自己有成长的同时，为团队做出相应的贡献，简单地说就是先对得起公司给我们开出的薪水，然后自己又努力进取，表现出希望与公司一同发展的态度。如此，则提薪、升职之日不远！！！ <br />
部分80后逻辑：我从小被骗到大，现在什么也不信。公司先开出个我满意的高薪，然后我努力干。干的好了，您了还要再给我加钱我才能继续好好干。否则，我马上找下家。如果你们连我满意的薪水也开不出，我又急需工作，那俺先干着同时找新机会，准备随时闪人。 <br />
<br />
&nbsp;&nbsp; 工作中，很多时候、很多事情都让我们不爽，尤其是薪水方面。很多人为此跳啊跳地！从不考虑自己的时间成本，很多毕业后反复换工作的候选人薪水其实比始终如一在同一家公司工作的候选人薪水高不了多少，同时，前者还失去了很多走向管理岗位的机会，从一个基层开发职位跳到另一个基层开发职位，而后者多因在公司时间较长而走向管理岗位或成为公司核心开发人员。 <br />
<br />
&nbsp;&nbsp; 之前提到，公司基于以下两点付劳动报酬给我们，其一是能力，其二是忠诚。每年的固定加薪就是公司对我们忠诚的一种回报。喜欢跳来跳去的80后程序员们，很多是永远没机会拿到这部分公司因忠诚而付给我们的薪水的&#8230;&#8230; <br />
<br />
&nbsp;&nbsp; 下面分享些可以让我们拿到合理薪水、提高薪水的方法分享。 <br />
<br />
<strong>对应届80后程序员 <br />
<br />
</strong>&nbsp;&nbsp;&nbsp; 现在因为就业压力非常大，很多应届生都降低了自己对薪水的期望转而更重视公司的发展和自己在工作中可能取得的进步与收获。这说明很多应届生一方面认为薪水是社会对自己的认可，另一方面又能清醒地认识到薪水也只是工作的一部分。他们会为争取一个好机会而适当降低薪酬要求。 <br />
<br />
&nbsp;&nbsp; 在这方面有两个建议： <br />
<br />
&nbsp;&nbsp;<strong> 1&nbsp;、每个人的劳动都有价值，不要0起薪</strong> <br />
<br />
&nbsp;&nbsp; 记得前两年看到有个应届生对工作的期望薪水是0，后来这事还引起了社会大讨论。有专家甚至说，以后就业压力会越来越大，按这个趋势过不了多久就会有倒贴钱到公司找工作的学生了。每个人的劳动都有价值，我们可以适当降低对薪水的期望，但没必要作践自己。一个对自己劳动都不尊重认为自己的付出价值不高或者没有价值的人，是不会得到公司的认可和尊重的；不尊重我们劳动的公司也不值得一试。 <br />
<br />
&nbsp;&nbsp;<strong> 2、 能力说话，不要盲目要价 <br />
</strong><br />
&nbsp;&nbsp; 每个行业都有自身的特点和薪酬架构。很多应届生尤其是本硕连读后找工作的候选人，对自己第一份工作的薪水应该要多少，没有一个准确的概念和认识。要谈到对薪水的期望时，我们会经常听到诸如四千、四千之类的回答。其实，薪水期望是多少并不是最重要的，我期望能看到候选人有充分的理由说明为什么要求这个薪水或者能为公司创造何种价值。所以，我会追问：&#8220;您要求这个薪水的理由是？&#8221;得到的答案多半领我失望。诸如：我值、你们公司这么大应该付得起、我们计算机系的同学都是这个薪水之类的回答，在我看来是不能说明任何问题的。能说明问题的是：候选人开发过多少代码，参与过多少项目，自己又有何种收获，达到了什么水平。公司永远不会为我们的文凭付费。 <br />
<br />
&nbsp;&nbsp;&nbsp; <strong>3、 薪酬包括薪水和福利两部分，务必打包考虑工作机会<br />
</strong><br />
&nbsp;&nbsp;&nbsp; 确实不要在面试中主动谈及薪水，但可以主动了解一下公司的福利政策，比如：保险、公积金、加班补助、手机费、电话费等。之前听说过有这么个例子，一个应届生因为想确认一下公司是否有公积金而被淘汰了。那个HR的观点是：我这么好的公司，还能没这个，你这是对我们不信任。在我看来，就是叫招聘霸权。了解福利是我的权利，招聘方和义务说明。 <br />
<br />
&nbsp;&nbsp;&nbsp; 如果薪水确实不能满足要求，那么了解一下福利。如果福利也不健全，那我建议考虑自己在公司能得到的东西和上升的空间（包括公司里面的和行业里面的）。之后，把这些因素加权考虑，再决定是不是接受机会。<br />
<br />
<strong>对已走入社会的80后程序员</strong> <br />
<br />
<strong>&nbsp;&nbsp; 1、 请不要因为薪水&#8220;贱卖&#8221;自己<br />
<br />
</strong>&nbsp;&nbsp;&nbsp; 这里提到的&#8220;贱卖&#8221;并不是指低价出卖自己的劳动力。而是指因薪水有些提高，即使放弃自己选定的职业目标和职业理想（适合自己的个性、自己也有兴趣在此付出时间的职业方向）和公司。如果在一份&#8220;高薪&#8221;但自己不喜欢的工作与一份&#8220;低薪&#8221;但与自己职业发展很吻合的工作之间选择，后者从长远看来对自己帮助更大。 <br />
<br />
&nbsp;&nbsp;&nbsp; 我认为相对暂时的高薪是不能保证自己一生的职业发展的，不稳定的高薪永远只能是暂时的。我知道一些程序员感觉销售收入好从而转向的市场和销售的工作，最终让自己满意的人很少。<br />
<br />
&nbsp;&nbsp;&nbsp; 同样，因一点点薪水增长而背弃现在公司的做法也不可取。如果现在的公司真不适合我们，综合分析后（自己还会有哪些提高，还会收获什么），再动也不迟。卖也要卖个好价钱！！！&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<strong>2、 永远记住，什么才是最大的公平</strong> <br />
<br />
&nbsp;&nbsp; 最大的公平就是双赢。个人付出劳动，为公司创造性价值的同时得到公司的认可，在薪水方面的。永远不要期望于公司为工作贡献之外的东西买单，学历不行（有很多人学历高，但眼高手底。弯不下腰做事情）、工作经验不行（有人想躺在&#8220;前&#8221;公司的功劳簿上不起来，企图以此要求高薪。之前的成功我们只能做个参考，只在新公司中的工作成绩能说明问题。） <br />
<br />
&nbsp;&nbsp;&nbsp; 想要薪水合理，我们先付出的多些，把项目做地更出色些。多做些总是不会吃亏，即使短期内没有回报，长期而言对我们能力的提升和经验的积累也是很有好处的。 <br />
<br />
&nbsp;&nbsp; 要更看重自己进入公司或者行业未来几年的发展。请放心大趋势永远向合理的方向发展。如果我们做的工作值5000元，那么即使现在的公司不能提供相应的薪水，我们也会在市场上找到自己合理的价值和新的位置。我们做的工作值5000元，他只给我们1500元，这不是把我们往别人公司里推吗？如此低智商的老板估计早就被社会大潮淘汰了。 <br />
<br />
<strong>写在最后的话 <br />
<br />
</strong>&nbsp;&nbsp;&nbsp; 相信，本文出现在网络上之后，又会有些媒体转载，又会有些80后出来骂，还会有人写出驳文。无论是那种情况出现，只要是能促进大家的反思，对改变目前在&#8220;80后程序员&#8221;身上发生的某些现象起到一点点作用，it168的编辑和我都有足够的理由相信，此文的目的已经达到。<img src ="http://www.blogjava.net/rain1102/aggbug/177750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-25 14:00 <a href="http://www.blogjava.net/rain1102/archive/2008/01/25/177750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]黄牛党自述：火车票哪儿去了以及如何买到火车票</title><link>http://www.blogjava.net/rain1102/archive/2008/01/24/177412.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 24 Jan 2008 01:35:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/24/177412.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/177412.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/24/177412.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/177412.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/177412.html</trackback:ping><description><![CDATA[<font size="4"><span style="font-size: 8pt"><font style="font-size: 10pt" size="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体"><span style="font-size: 10pt"><span style="font-family: 宋体">首先票肯定不在售票窗口</span>,<span style="font-family: 宋体">当然也不在每个代理点</span>.<br />
</span></span><span style="font-family: 宋体">　　票都在我们这些人手里面</span>,<span style="font-family: 宋体">至于怎么拿到的</span>,<span style="font-family: 宋体">大家有兴趣听不</span>?<br />
<span style="font-family: 宋体">　　还有就是春节票价涨还是不涨对广大需要买票回家的人来说没什么实际实际的意义</span>,<span style="font-family: 宋体">因为买不上票</span>,<span style="font-family: 宋体">何来高低</span>.<span style="font-family: 宋体">说来车票不涨价最大的受益者是谁</span>?<span style="font-family: 宋体">是贩票卖票的</span>,<span style="font-family: 宋体">因为成本低了</span>,<span style="font-family: 宋体">而利润不会减少</span>,<span style="font-family: 宋体">风险也相应的下降了</span>.<br />
<span style="font-family: 宋体">　　首先来说火车票按照国家的要求只有</span>2<span style="font-family: 宋体">个地方可以买到</span>.<span style="font-family: 宋体">第一就是火车站的售票窗口</span>,<span style="font-family: 宋体">第二就是取得火车票代售资格的正规代理点</span>.<span style="font-family: 宋体">火车站窗口售票是不能加价的</span>,<span style="font-family: 宋体">只能按照票面金额收取</span>,<span style="font-family: 宋体">代售点每张只能收取</span>5<span style="font-family: 宋体">元的手续费</span>,<span style="font-family: 宋体">多收则违法</span>,<span style="font-family: 宋体">轻者取消代理资格</span>,<span style="font-family: 宋体">重的要糟行政处罚</span>.<br />
<span style="font-family: 宋体">　　然后我们来说说关于代售点的经营</span>,<span style="font-family: 宋体">其实代售点的成本不高</span>,<span style="font-family: 宋体">如果正常渠道申请</span>,2W<span style="font-family: 宋体">块钱就能够申请下来</span>,<span style="font-family: 宋体">每月费用不足</span>2000<span style="font-family: 宋体">元</span>.<span style="font-family: 宋体">所以</span>5<span style="font-family: 宋体">元的代售费用是完全能够保证其经营的</span>.<span style="font-family: 宋体">但是由于铁路是垄断行业要申请代售点</span>,<span style="font-family: 宋体">是一个非常复杂的过程</span>,<span style="font-family: 宋体">其中环节黑幕吓得惊人</span>,<span style="font-family: 宋体">用我们的话来说</span>50W<span style="font-family: 宋体">能够申请下来还是你找到了正确的路子</span>.<span style="font-family: 宋体">很多时候就是你拿钱都不能够申请到的</span>.<br />
<span style="font-family: 宋体">　　既然各个代售点</span>,<span style="font-family: 宋体">都是花了大价钱换来的代售资格</span>.<span style="font-family: 宋体">那么收回成本和创造大的利润就是他们的唯一现实的想法</span>.<span style="font-family: 宋体">在平时火车票不饱和的情况下这样的想法是很难实现的</span>,<span style="font-family: 宋体">但春节就不同了</span>,<span style="font-family: 宋体">典型的一个卖方市场</span>,<span style="font-family: 宋体">我有着时下最紧俏的商品</span>,<span style="font-family: 宋体">所以大多的代售点就打起了春节这一黄金时间的主意</span>.<span style="font-family: 宋体">但是</span>,<span style="font-family: 宋体">因为有不能加价的</span>,<span style="font-family: 宋体">所以就只能想其他办法了</span>.<span style="font-family: 宋体">比如找个熟悉而可靠的人</span>(<span style="font-family: 宋体">第一级的黄牛</span>,<span style="font-family: 宋体">当然还有比这个更大的黄牛</span>,<span style="font-family: 宋体">不幸的是我还不曾认识</span>!<span style="font-family: 宋体">那就是直接在火车站拿票的</span>.)<span style="font-family: 宋体">找到人后</span>,<span style="font-family: 宋体">就把票大量的打给他</span>,<span style="font-family: 宋体">期间每张票加价</span>10<span style="font-family: 宋体">到</span>20<span style="font-family: 宋体">不等</span>.<span style="font-family: 宋体">还有值得注意的是即使代售点打票也不能随心所欲的打</span>,<span style="font-family: 宋体">一手最多能打九张</span>(<span style="font-family: 宋体">不能打多了</span>,<span style="font-family: 宋体">因为一次打上</span>10<span style="font-family: 宋体">张票</span>,<span style="font-family: 宋体">就要向铁路局申报</span>.)<span style="font-family: 宋体">也就是说一趟车即使手脚在快也最多能够打两手</span>,18<span style="font-family: 宋体">张票</span>.<span style="font-family: 宋体">但是全部代售点都这样做的话</span>,<span style="font-family: 宋体">一趟车也就是说</span>1<span style="font-family: 宋体">分钟之内票就会被打光</span>.<span style="font-family: 宋体">这就是为什么春节大多数代售点没票卖的原因</span>.<br />
<span style="font-family: 宋体">　　现在说说大家最关心的打票时间问题</span>.<span style="font-family: 宋体">大家有个误解</span>,<span style="font-family: 宋体">打票是预售</span>10<span style="font-family: 宋体">天的</span>,<span style="font-family: 宋体">所以早上</span>8<span style="font-family: 宋体">点去火车站排票</span>.<span style="font-family: 宋体">这里有个时间差</span>,<span style="font-family: 宋体">火车站是早上</span>8<span style="font-family: 宋体">点开始上班打票</span>,<span style="font-family: 宋体">但是放票确是晚上</span>12<span style="font-family: 宋体">点已经开始放了</span>,<span style="font-family: 宋体">我上面说过了</span>1<span style="font-family: 宋体">分钟内所有的票都被代售点打光了</span>,<span style="font-family: 宋体">火车站排第一位的同志都没票买</span>,<span style="font-family: 宋体">其中原由大家应该知道了吧</span>!<span style="font-family: 宋体">火车站没说谎，确实没票可卖了</span>.<br />
<span style="font-family: 宋体">　　当一个大的黄牛手中囤积了大量票的时候</span>,<span style="font-family: 宋体">我们这些属于中间层的中黄牛</span>,<span style="font-family: 宋体">就会想苍蝇看见狗屎一样贴上他们</span>.<span style="font-family: 宋体">人趋利嘛</span>,<span style="font-family: 宋体">大家应该可以理解</span>.<span style="font-family: 宋体">我们这些人又加了</span>20-30/<span style="font-family: 宋体">张在大黄牛那里拿到票</span>,<span style="font-family: 宋体">再加</span>30-50<span style="font-family: 宋体">不等到车站</span>,<span style="font-family: 宋体">路边</span>,<span style="font-family: 宋体">旅店兜售的小黄牛</span>.<span style="font-family: 宋体">最后才到大家真正需要票的人手上</span>,<span style="font-family: 宋体">那个时候可能就会高出票面</span>100<span style="font-family: 宋体">或者更多</span>,<span style="font-family: 宋体">一句话中间经手的人越多</span>,<span style="font-family: 宋体">你买到的票就越贵</span>.<br />
<span style="font-family: 宋体">　　这就是我经历的倒票的一个基本流程</span>.<span style="font-family: 宋体">对于火车站那块的倒法还在钻研中</span>.<br />
<span style="font-family: 宋体">　　至于怎么才能买上票</span>,<span style="font-family: 宋体">用个专业的说法</span>,<span style="font-family: 宋体">如果你想在自己需要的时间买到自己需要的票</span>.<span style="font-family: 宋体">最简单直接的办法</span>,<span style="font-family: 宋体">找黄牛买高价</span>.(<span style="font-family: 宋体">没办法啊</span>,<span style="font-family: 宋体">吃这碗饭的</span>,<span style="font-family: 宋体">不能坏了规矩希望大家理解</span>!)<br />
<span style="font-family: 宋体">　　但是如果你耗得起时间的话</span>,<span style="font-family: 宋体">可以告诉你们一个很笨但是很可行的办法</span>.(<span style="font-family: 宋体">去火车站排队</span>,<span style="font-family: 宋体">是最不可行的</span>!)<br />
<span style="font-family: 宋体">　　白天的时候找上一个可以现场出票的正规的代售点</span>,<span style="font-family: 宋体">当然你那时侯去问肯定是没有票的</span>,<span style="font-family: 宋体">记好在什么地方</span>,<span style="font-family: 宋体">联系电话</span>,<span style="font-family: 宋体">营业执照等数据</span>.<span style="font-family: 宋体">千万小心</span>,<span style="font-family: 宋体">春节的时候各个代售点都会异常谨慎的</span>,<span style="font-family: 宋体">所以记的时候小心点</span>:)<br />
<span style="font-family: 宋体">　　然后你就该干什么干什么去</span>.<span style="font-family: 宋体">等</span>,<span style="font-family: 宋体">等到晚上</span>11<span style="font-family: 宋体">点</span>30<span style="font-family: 宋体">左右你就回到那里</span>,<span style="font-family: 宋体">你会发现虽然大门紧闭但是灯火闪亮</span>.<span style="font-family: 宋体">你就上去敲门</span>,<span style="font-family: 宋体">这敲门是有窍门的</span>.<span style="font-family: 宋体">不能太急促</span>,<span style="font-family: 宋体">会吓坏人家的</span>.<span style="font-family: 宋体">然后就会看见灯火熄灭鸭雀无声</span>,<span style="font-family: 宋体">不要走继续轻轻的敲</span>,<span style="font-family: 宋体">实在不行就打电话告诉里面的人你没恶意</span>.<span style="font-family: 宋体">只是想要某某天某次车的车票</span>.<span style="font-family: 宋体">一般里面的人会搭理你的</span>,<span style="font-family: 宋体">你也会得到你想要的票</span>.<span style="font-family: 宋体">因为你呆在外面</span>,<span style="font-family: 宋体">他们心理有压力</span>,<span style="font-family: 宋体">怕啊</span>!<span style="font-family: 宋体">你不走他们就不敢大张其鼓的打票</span>,<span style="font-family: 宋体">就没钱赚</span>,<span style="font-family: 宋体">对于你那张票</span>,<span style="font-family: 宋体">他们就是顺便而已</span>.<span style="font-family: 宋体">所以一般可以</span>.<span style="font-family: 宋体">听好了</span>,<span style="font-family: 宋体">我说的是一般</span>,<span style="font-family: 宋体">不是一定</span>.(<span style="font-family: 宋体">昨年</span>,<span style="font-family: 宋体">我们就欲上了这样一个神人</span>,<span style="font-family: 宋体">在我们门口站了</span>2<span style="font-family: 宋体">小时害得我们不敢出门</span>,<span style="font-family: 宋体">最后磨不过那老兄</span>,<span style="font-family: 宋体">原价卖给他三张</span>,<span style="font-family: 宋体">痛心啊</span>!)<br />
<span style="font-family: 宋体">　　也许有人会说，你们这帮黄牛党桑尽天良，就不怕遭报应嘛？再说，还有英明神武的警察叔叔等着你们呢？说实话，这个还真有考虑过，但我们也是迫于生活压力，有正当的赚钱途径谁会沾这个啊？至于警察叔叔，呵呵，票贩年年抓</span>,<span style="font-family: 宋体">黄牛还是年年有</span>,<span style="font-family: 宋体">你还会发现今年贩的和去年抓的就是一个人</span>.<span style="font-family: 宋体">我不是挑衅</span>,<span style="font-family: 宋体">我只是讲道理</span>,<span style="font-family: 宋体">你知道被抓的黄牛一般怎么处罚吗</span>?<span style="font-family: 宋体">别说判刑</span>,<span style="font-family: 宋体">就是连拘留的都是寥寥无几</span>.<span style="font-family: 宋体">而且被抓的也就是在车站</span>,<span style="font-family: 宋体">旅店等等卖的虾兵蟹将</span>,<span style="font-family: 宋体">真真大的黄牛你抓到过</span>,<span style="font-family: 宋体">你看都没看见过</span>.<span style="font-family: 宋体">我也一样没见过</span>.<span style="font-family: 宋体">呵呵</span>,<span style="font-family: 宋体">见了我一定会去拉点关系</span>.<span style="font-family: 宋体">被抓的票贩一般是罚款了事</span>,<span style="font-family: 宋体">最高罚款的票面金额的</span>3-5<span style="font-family: 宋体">倍</span>.<span style="font-family: 宋体">不会有那么傻的票贩背一口袋票在沿街叫卖吧</span>?<span style="font-family: 宋体">所以被抓收到的票也就是几张而已</span>,<span style="font-family: 宋体">票面金额最多</span>2000,<span style="font-family: 宋体">那罚款多少最多</span>10000<span style="font-family: 宋体">吧</span>!<span style="font-family: 宋体">墙外损失墙内补</span>,<span style="font-family: 宋体">你认为他们不会找损失弥补吗</span>?<br />
<span style="font-family: 宋体">　　我上面说了</span>,<span style="font-family: 宋体">票之所以贵</span>,<span style="font-family: 宋体">是大多代售点春节的时候不想放过到手的利益</span>.<span style="font-family: 宋体">为什么</span>?<span style="font-family: 宋体">因为他们付出了比常规的要高得多的金钱才得到卖票的资格</span>!<span style="font-family: 宋体">既然有了那么高的投入</span>,<span style="font-family: 宋体">人家期待高产出</span>,<span style="font-family: 宋体">是不是也能够理解</span>?<br />
<span style="font-family: 宋体">　　如果</span>,<span style="font-family: 宋体">我只是说如果</span>,<span style="font-family: 宋体">能够放开火车票的销售代理</span>,<span style="font-family: 宋体">不要申请一个要</span>50W<span style="font-family: 宋体">或者更高的天价</span>,<span style="font-family: 宋体">你说会不会有那么多人去挺而走险赚那些昧心钱？</span><br />
<span style="font-family: 宋体">　　源头堵住了</span>,<span style="font-family: 宋体">那些大大小小的黄牛黑牛是不是就没有了生存的空间？</span><br />
<span style="font-family: 宋体">　　还有就是</span>,<span style="font-family: 宋体">铁路部门的同志们</span>,<span style="font-family: 宋体">特别是铁路公安的人</span>,<span style="font-family: 宋体">不要每到过年的时候才想起打击</span>,<span style="font-family: 宋体">更不要以罚款为目的来打击</span>.<span style="font-family: 宋体">以罚代法根本解决不了实际问题</span>.<span style="font-family: 宋体">羊毛出在羊身上</span>,<span style="font-family: 宋体">这是一个颠簸不破的道理！</span><br />
<span style="font-family: 宋体">　　有朋友又说了，既然代售点把票差价卖给黄牛，火车站能不能让代售点与火车站同步开始打票，即都到早上</span>8<span style="font-family: 宋体">点，而不是半夜</span>12<span style="font-family: 宋体">点放票的时候。这在一定的程度上是可行的，但就算同步所起作用也是微乎其微的。为什么呢？比如说一个城市有</span>100<span style="font-family: 宋体">个代售点</span>,<span style="font-family: 宋体">以每分钟</span>9<span style="font-family: 宋体">张的速度打票</span>,<span style="font-family: 宋体">一趟车多少张票</span>,<span style="font-family: 宋体">多少时间打完大家会算吧</span>!<span style="font-family: 宋体">火车站一分钟能打多少票</span>?10<span style="font-family: 宋体">张</span>,<span style="font-family: 宋体">厉害吧</span>!<span style="font-family: 宋体">能干过</span>100<span style="font-family: 宋体">个</span>9<span style="font-family: 宋体">张</span>,<span style="font-family: 宋体">最后的结果还是买不上票</span>!<span style="font-family: 宋体">顶多排前</span>10<span style="font-family: 宋体">的能买上</span>.<br />
<span style="font-family: 宋体">　　还有朋友说，既然代售点和票贩子沆瀣一气，我干脆提前去找订票点的人说要加钱订票，然后付一部分订金，有可能订票点的人也愿意帮我订？只要利润等于或者多于他给票贩子就可以了？反正死也不能让你这天杀的黄牛党赚黑钱。呵呵，有这想法确实不错，但作为一个资深的票贩子，我还是要很遗憾的告诉你，这个办法行不通。你打电话给代售点，人家肯定不会相信你，怕你是探子，这年头记者什么的简直就是无孔不入了，一句话他就回你了，没票</span>!<span style="font-family: 宋体">即使你加钱他也不会卖你</span>,<span style="font-family: 宋体">他也怕啊</span>!<span style="font-family: 宋体">晚上去堵他们是个办法</span>,<span style="font-family: 宋体">因为我遇上过这样的高人</span>.<span style="font-family: 宋体">知道为什么吗</span>?<span style="font-family: 宋体">因为即使代售点被发现囤积了大量票也是要被逮的</span>,<span style="font-family: 宋体">必须见人出票</span>,<span style="font-family: 宋体">如果没有买票的人他就打票出来也是不行的</span>!<span style="font-family: 宋体">你晚上去刚好遇上他有大量的票，没办法，他只好原价给你咯</span>(<span style="font-family: 宋体">糟了</span>,<span style="font-family: 宋体">说漏嘴了</span>) !</font></span></font><img src ="http://www.blogjava.net/rain1102/aggbug/177412.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-24 09:35 <a href="http://www.blogjava.net/rain1102/archive/2008/01/24/177412.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>陈思思 潘长江 - 刘海砍樵(现场版)</title><link>http://www.blogjava.net/rain1102/archive/2008/01/23/177297.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Wed, 23 Jan 2008 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/23/177297.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/177297.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/23/177297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/177297.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/177297.html</trackback:ping><description><![CDATA[<object width="400" height="300"><param name="movie" value="http://www.tudou.com/v/wyLLCd8_FHU" /></param><param name="allowScriptAccess" value="always" /></param><param name="wmode" value="transparent" /></param><embed src="http://www.tudou.com/v/wyLLCd8_FHU" type="application/x-shockwave-flash" width="400" height="300" allowFullScreen="true" wmode="transparent" allowScriptAccess="always"></embed></object><img src ="http://www.blogjava.net/rain1102/aggbug/177297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-23 15:55 <a href="http://www.blogjava.net/rain1102/archive/2008/01/23/177297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>腾格尔-天堂</title><link>http://www.blogjava.net/rain1102/archive/2008/01/23/177294.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Wed, 23 Jan 2008 07:46:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/23/177294.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/177294.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/23/177294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/177294.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/177294.html</trackback:ping><description><![CDATA[<object width="400" height="300"><param name="movie" value="http://www.tudou.com/v/rbLKTe2_3ds" /></param><param name="allowScriptAccess" value="always" /></param><param name="wmode" value="transparent" /></param><embed src="http://www.tudou.com/v/rbLKTe2_3ds" type="application/x-shockwave-flash" width="400" height="300" allowFullScreen="true" wmode="transparent" allowScriptAccess="always"></embed></object><img src ="http://www.blogjava.net/rain1102/aggbug/177294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-23 15:46 <a href="http://www.blogjava.net/rain1102/archive/2008/01/23/177294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>腾格尔－在那遥远的地方</title><link>http://www.blogjava.net/rain1102/archive/2008/01/23/177206.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Wed, 23 Jan 2008 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/23/177206.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/177206.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/23/177206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/177206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/177206.html</trackback:ping><description><![CDATA[<object width="400" height="300"><param name="movie" value="http://www.tudou.com/v/vnmlslVLF4c" /></param><param name="allowScriptAccess" value="always" /></param><param name="wmode" value="transparent" /></param><embed src="http://www.tudou.com/v/vnmlslVLF4c" type="application/x-shockwave-flash" width="400" height="300" allowFullScreen="true" wmode="transparent" allowScriptAccess="always"></embed></object><img src ="http://www.blogjava.net/rain1102/aggbug/177206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-23 10:34 <a href="http://www.blogjava.net/rain1102/archive/2008/01/23/177206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>日本网站被黑 升中国国旗奏国歌</title><link>http://www.blogjava.net/rain1102/archive/2008/01/21/176695.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Mon, 21 Jan 2008 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/21/176695.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/176695.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/21/176695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/176695.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/176695.html</trackback:ping><description><![CDATA[<object width="400" height="300"><param name="movie" value="http://www.tudou.com/v/1hTC5BSZnA8" /></param><param name="allowScriptAccess" value="always" /></param><param name="wmode" value="transparent" /></param><embed src="http://www.tudou.com/v/1hTC5BSZnA8" type="application/x-shockwave-flash" width="400" height="300" allowFullScreen="true" wmode="transparent" allowScriptAccess="always"></embed></object><img src ="http://www.blogjava.net/rain1102/aggbug/176695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-21 10:55 <a href="http://www.blogjava.net/rain1102/archive/2008/01/21/176695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SSI指令使用详解</title><link>http://www.blogjava.net/rain1102/archive/2008/01/18/176128.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Fri, 18 Jan 2008 03:17:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/18/176128.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/176128.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/18/176128.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/176128.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/176128.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 什么是 SHTML使用SSI（Server Side Include）的html文件扩展名，SSI（Server Side Include），通常称为&#8220;服务器端嵌入&#8221;或者叫&#8220;服务器端包含&#8221;，是一种类似于ASP的基于服务器的网页制作技术。SSI工作原理：将内容发送到浏览器之前，可以使用&#8220;服务器端包含 (SSI)&#8221;指令...&nbsp;&nbsp;<a href='http://www.blogjava.net/rain1102/archive/2008/01/18/176128.html'>阅读全文</a><img src ="http://www.blogjava.net/rain1102/aggbug/176128.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-18 11:17 <a href="http://www.blogjava.net/rain1102/archive/2008/01/18/176128.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Jmesa</title><link>http://www.blogjava.net/rain1102/archive/2008/01/17/175829.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 17 Jan 2008 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/17/175829.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/175829.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/17/175829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/175829.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/175829.html</trackback:ping><description><![CDATA[<v:rect style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: -1px 0px 0px -1px; width: 100px; padding-top: 0px; position: absolute; height: 60px" coordsize="21600,21600" strokeweight="0" stroked="f" fillcolor="white" filled="t"><v:fill opacity="0"></v:fill></v:rect><v:roundrect style="padding-right: 0px; display: block; padding-left: 0px; filter: Alpha(opacity=38.4), progid:dxImageTransform.Microsoft.Blur(PixelRadius=4, MakeShadow=false); left: 4px; padding-bottom: 0px; margin: -1px 0px 0px -1px; width: 88px; padding-top: 0px; zoom: 1; position: absolute; top: 4px; height: 48px" coordsize="21600,21600" strokeweight="0" stroked="f" fillcolor="black" filled="t" arcsize="17476f"><v:fill opacity="1"></v:fill></v:roundrect><v:roundrect style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: -1px 0px 0px -1px; width: 92px; padding-top: 0px; position: absolute; height: 52px" coordsize="21600,21600" strokeweight="0" stroked="f" fillcolor="white" filled="t" arcsize="17476f"><v:fill src="http://www.open-open.com/image/open" type="frame"></v:fill></v:roundrect><v:shape style="left: -1px; margin: -1px 0px 0px -1px; width: 94px; position: absolute; top: 0px; height: 16px" coordsize="92,16" strokeweight="0" stroked="f" fillcolor="white" filled="t" path=" m16,16 l92,16 qy76,0 l16,0 x e"><v:fill opacity="0" type="gradient" method="linear " angle="0" o:opacity2="86507f" color2="white"></v:fill></v:shape><v:shape style="left: 0px; margin: -1px 0px 0px -1px; width: 16px; position: absolute; top: -1px; height: 54px" coordsize="16,52" strokeweight="0" stroked="f" fillcolor="white" filled="t" path=" m0,16 l0,36 qy16,52 l16,16 x e"><v:fill opacity="0" type="gradient" method="linear " angle="90" o:opacity2="86507f" color2="white"></v:fill></v:shape><v:shape style="left: 0px; margin: -1px 0px 0px -1px; width: 16px; position: absolute; top: 0px; height: 16px" coordsize="16,16" strokeweight="0" stroked="f" fillcolor="white" filled="t" path=" m16,16 l0,16 qy16,0 l16,16 x e"><v:fill opacity="0" type="gradientRadial" method="linear " o:opacity2="86507f" color2="white" focussize=".5,.5" focusposition="1,1" focus="100%"></v:fill></v:shape>Jmesa是ExtremeTable项目重新开发一个的Html表格组件，提供过滤、排序、分页、数据导出等功能。Jmesa非常易于使用，可按自己的需求进行扩展。JMesa需要JDK1.5以上的环境。<br />
该项目主页:<a href="http://code.google.com/p/jmesa/">http://code.google.com/p/jmesa/</a><img src ="http://www.blogjava.net/rain1102/aggbug/175829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-17 09:24 <a href="http://www.blogjava.net/rain1102/archive/2008/01/17/175829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2008年Java开发者最迫切的五个期望</title><link>http://www.blogjava.net/rain1102/archive/2008/01/09/173974.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Wed, 09 Jan 2008 05:08:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/09/173974.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/173974.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/09/173974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/173974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/173974.html</trackback:ping><description><![CDATA[【IT168 技术新闻】不少人为自己是Java开发者中的一员而感到骄傲，新年伊始，大家一定对这个与自己息息相关的语言和平台有不少的期待。以下为2008年Java开发者五个最迫切的期待，可能其中有不合你意者，但相信大多数Java开发者会对此认同： <br />
<br />
<strong>JavaFx不再只是空谈</strong> <br />
<br />
在2007年的JavaOne上，我们听到了一个救世主——JavaFx，不幸的是，当初的所有许诺却没有成为现实。希望2008它能成为一个真正的、简单的、可用选择，从而Java开发者不必在富交互技术领域无&#8220;本宗&#8221;技术可选。 <br />
<br />
<strong>Glassfish成为应用服务器的选择 <br />
</strong><br />
Glassfish是一款非常好的开源应用服务器和平台，也是第一个遵从Java EE 5标准的，它强大而有效。然而在企业端它还不被熟知，许多企业主管甚至从未听说它。即使Java开发者，很多也从未下载使用过，甚至部分人还没有用就在印象中觉得它不够正规。希望2008年开发者能够有效利用它。 <br />
<br />
<strong>重量级/轻量级(Lightweight/Heavyweight)之争当停止</strong> <br />
<br />
由于Java EE正不断吸取各种框架、工具、库等的优点，开发方法变得更加直接和简单，所以传统的所谓的重量级Java和轻量级之间的区别也越来越模糊。然而此间关于重量级和轻量级的争论仍未停止。 <br />
<br />
<strong>Google青睐Java，希望Apple也能</strong> <br />
<br />
iPhone非常风靡而且许多iPhone应用正在开发，然而迄今Java仍然是iPhone的毒药，希望08年这一局面可以改观。Google已经通过它众多的Java API和服务帮助了全世界的Java开发者，这也再一次证明，强者用之则发扬广大。所以希望包括Apple在内的更多强者可以用Java。 <br />
<br />
<strong>弃糟粕、大统一</strong> <br />
<br />
凭借Java的枝繁叶茂，再复杂的任务Java都可以提供很好的解决，然而它也因为自身分支和技术的太过丰富而使开发者迷乱。Java开发者花费了几年时间去弄清楚一大堆商业和开源框架、工具、库&#8230;&#8230;希望在2008年，其中的一些可以被废弃。虽然专政（指Java统一）是有害的，但一个统一的领土有更多的优势<img src ="http://www.blogjava.net/rain1102/aggbug/173974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-09 13:08 <a href="http://www.blogjava.net/rain1102/archive/2008/01/09/173974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>彻底卸载Windows Genuine Advantage Notification</title><link>http://www.blogjava.net/rain1102/archive/2008/01/07/173446.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Mon, 07 Jan 2008 12:46:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2008/01/07/173446.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/173446.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2008/01/07/173446.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/173446.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/173446.html</trackback:ping><description><![CDATA[近日更新windows(英文版)，不小心更新了Windows Genuine Advantage Notification (KB905474)，结果每次开机就出一个提示，启动后在托盘里还有个图标，好烦啊。在网上搜了一些相关的东西，基本都是说在控制面板的添加删除程序中卸载，其实在这里根本不能卸载，在进程中也不能中止(进程名是wgatray.exe)，在注册表中也搜不到相关wgatray.exe的项，今天早上又仔细在地搜索了注册表，终于找到了这个的可恶东西，HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Notify\WgaLogon，删除它，重新启动，wgatray.exe就不会自动启动了，再把C:\windows\system32中的wgatray.exe删除，再搜索一下，在另外的文件夹下还有，统统删除，终于OK了。下次记得不要再更新这个东东了。<img src ="http://www.blogjava.net/rain1102/aggbug/173446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2008-01-07 20:46 <a href="http://www.blogjava.net/rain1102/archive/2008/01/07/173446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>张娜拉《幸福的天堂》</title><link>http://www.blogjava.net/rain1102/archive/2007/12/20/169062.html</link><dc:creator>Eric.Zhou</dc:creator><author>Eric.Zhou</author><pubDate>Thu, 20 Dec 2007 08:20:00 GMT</pubDate><guid>http://www.blogjava.net/rain1102/archive/2007/12/20/169062.html</guid><wfw:comment>http://www.blogjava.net/rain1102/comments/169062.html</wfw:comment><comments>http://www.blogjava.net/rain1102/archive/2007/12/20/169062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/rain1102/comments/commentRss/169062.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/rain1102/services/trackbacks/169062.html</trackback:ping><description><![CDATA[<object width="400" height="300"><param name="movie" value="http://www.tudou.com/v/uRPaBRjCN0s" /></param><param name="allowScriptAccess" value="always" /></param><param name="wmode" value="transparent" /></param><embed src="http://www.tudou.com/v/uRPaBRjCN0s" type="application/x-shockwave-flash" width="400" height="300" allowFullScreen="true" wmode="transparent" allowScriptAccess="always"></embed></object><img src ="http://www.blogjava.net/rain1102/aggbug/169062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/rain1102/" target="_blank">Eric.Zhou</a> 2007-12-20 16:20 <a href="http://www.blogjava.net/rain1102/archive/2007/12/20/169062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>