﻿<?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-成都JAVA俱乐部</title><link>http://cdjavaclub.blogjava.net/</link><description>和NET俱乐部一样,进行技术交流</description><language>zh-cn</language><lastBuildDate>Thu, 28 Aug 2008 14:24:16 GMT</lastBuildDate><pubDate>Thu, 28 Aug 2008 14:24:16 GMT</pubDate><ttl>60</ttl><item><title>javasript打印word表格</title><link>http://www.blogjava.net/soddabao/archive/2008/07/08/213423.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Tue, 08 Jul 2008 12:28:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2008/07/08/213423.html</guid><description><![CDATA[题前：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前段时间由于某些原因，短暂离开这里，期间收到不好BLOG自动回复的邮件，发现仍有很多人在关注我，关注我之前写的文章，自己想想还是舍不得这里，舍不得BLOGJAVA，舍不得这里的朋友，交口.....不知道你们还好吧。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 今天我写的是这样的一篇文章，前几天打印word报表，客户要求打印报告的时候将多个表格连在一起，每个表的头要求换页依旧能显示。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 后面一个要求比较容易实现，word中自带了一个标题行重复，就可以实现&#8220;<span style="color: #0000ff">每个表的头要求换页依旧能显示</span>&#8221;，这个功能有一个前提：<span style="color: #ff0000">重复的行必须带表格的第一行</span>，这也正好是我客户的要求之一。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是多个表格连在一起的时候，打印的时候上下表格如何怎么接近，都会显示出两条非常接近的线，不满足客户的要求，而且还不美观。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 后来我就想到这样的方法，将前一个表的最后一行的下线去掉，这样上下表格之间只有一条线，虽然中间还是有一点点短的地方，客户看了非常满意。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 这样做有个BUG：如果表A正好一页，下一页是另一张表，那表A的最后一行没有，打印的时候表格少了下行，实在难看，也不是表格。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 解决的部分：先通过word的宏看了一下怎么画表格的下线，判断光标所在的页，javascript打印的时候判断一个表的最后一行和下一个表格的第一行是不是在一页上，如果不在一页上，那前一个表格就增加下线。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 判断的这个方法如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img id="Codehighlighter1_39_314_Open_Image" onclick="this.style.display='none'; Codehighlighter1_39_314_Open_Text.style.display='none'; Codehighlighter1_39_314_Closed_Image.style.display='inline'; Codehighlighter1_39_314_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_39_314_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_39_314_Closed_Text.style.display='none'; Codehighlighter1_39_314_Open_Image.style.display='inline'; Codehighlighter1_39_314_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #000000">function&nbsp;Page&nbsp;(table1,row1,table2,row2)</span><span id="Codehighlighter1_39_314_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_39_314_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDoc.Tables(table1).Rows(row1).Select();&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;page</span><span style="color: #000000">=</span><span style="color: #000000">wordApp.Selection.Information(</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDoc.Tables(table2).Rows(row2).Select();<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;page1</span><span style="color: #000000">=</span><span style="color: #000000">wordApp.Selection.Information(</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(page1</span><span style="color: #000000">&gt;</span><span style="color: #000000">page)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDoc.Tables(table1).Borders.OutsideLineStyle</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp; 非常难伺候的客户大爷，看了打印后的报表，终于笑了，不容易啊，几天的努力总算没有白费。
<img src ="http://cdjavaclub.blogjava.net/aggbug/213423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soddabao/" target="_blank">冷面阎罗</a> 2008-07-08 20:28 <a href="http://www.blogjava.net/soddabao/archive/2008/07/08/213423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目乱码问题</title><link>http://www.blogjava.net/loocky/archive/2008/07/04/212596.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Fri, 04 Jul 2008 06:21:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2008/07/04/212596.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/loocky/archive/2008/07/04/212596.html'>阅读全文</a><img src ="http://cdjavaclub.blogjava.net/aggbug/212596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2008-07-04 14:21 <a href="http://www.blogjava.net/loocky/archive/2008/07/04/212596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>天津美资外企，大型金融项目高薪招聘QA(猎头)</title><link>http://www.blogjava.net/loocky/archive/2008/06/16/208372.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Mon, 16 Jun 2008 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2008/06/16/208372.html</guid><description><![CDATA[<p>天津美资外企，大型金融项目高薪招聘QA(猎头)</p>
<p><br />
美资500强，J2ee项目测试职位</p>
<p><br />
敬请有意者尽快发简历，收到简历一周之内电话面试，外地应聘人员，一律采用电话面试。<br />
Email：javaok@126.com<br />
msn：javaok2008@hotmail.com<br />
此职位2个月内有效，希望尽快投简历。<br />
职位描述： <br />
热爱软件测试工作，有较强的独立思考和工作的能力，较强的逻辑分析能力，快速的学习能力和定位、解决问题的能力。积极主动的工作态度，良好的团队合作精神。<span style="color: red">4年以上Java软件测试或Java商业软件开发经验</span>。工作内容： <br />
1.整理，分析产品需求<br />
2.负责完成软件产品的测试，配合开发团队完成软件测试工作。 <br />
3.根据软件设计制定测试计划，搭建测试环境，编写、执行测试用例<br />
4.对测试过程中的问题点进行分析、跟踪、验证、反馈；编写测试报告 <br />
5.开发自动化测试工具并对产品实施自动化测试<br />
6.与海外客户合作完成产品的测试和发布</p>
<p>技术要求(必要)：</p>
<p>熟悉面向对象程序设计思想； <br />
熟悉测试理论、测试流程以及软件开发基础知识；<br />
熟悉自动化测试工具的使用，熟悉压力测试工具的使用<br />
熟悉数据库基本原理，熟练使用PL/SQL；<br />
熟悉Linux环境<br />
能够读懂JAVA代码，安装过JDK，能够使用ANT。<br />
技术要求(可选)：<br />
Java 应用程序开发经验，了解J2EE相关知识<br />
自动化测试工具开发经验<br />
熟练使用Apache, Tomcat<br />
熟练的英文交流能力，包括文档书写和口语交流</p>
<p>Email：javaok@126.com<br />
msn：javaok2008@hotmail.com<br />
此职位2个月内有效，希望尽快投简历。<br />
</p><img src ="http://cdjavaclub.blogjava.net/aggbug/208372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2008-06-16 17:03 <a href="http://www.blogjava.net/loocky/archive/2008/06/16/208372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>天津美资500强,大型金融项目招聘J2EE developer(猎头) </title><link>http://www.blogjava.net/loocky/archive/2008/06/16/208371.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Mon, 16 Jun 2008 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2008/06/16/208371.html</guid><description><![CDATA[<p>天津美资500强,大型金融项目招聘J2EE developer(猎头)</p>
<p><br />
敬请有意者尽快发简历，收到简历一周之内电话面试，外地应聘人员，一律采用电话面试。<br />
Email：javaok@126.com<br />
msn：javaok2008@hotmail.com<br />
此职位2个月内有效，希望尽快投简历。</p>
<p>职位描述：<br />
该职位主要工作内容：大型分布式金融类J2EE项目开发及维护，参与设计实施各类电子支付系统。书写必要的开发技术文档，按时按质完成软件Bug修改。与美国的同事共同完成项</p>
<p>目的设计、开发、发布、维护。需要在团队需要的状况下，承担必要的内部培训工作和Code Review。</p>
<p>职位要求：<br />
有较强的独立思考和工作的能力。能够适应快速开发模式，同时拥有良好的自我管理意识和快速学习能力。适时的能够对软件开发过程和团队开发理念提出个人建议。热爱生活，</p>
<p>喜好软件开发，乐于学习新技术，愿意与同事交流相互学习。为人踏实，积极，敢于承担错误并对以前工作作出总结。<span style="color: #ff0000">最少需要拥有4年以上的J2EE软件开发经验。</span>技术要求：<br />
扎实的Java基本功(熟悉java.util,thread,IO,network)<br />
深刻认识面向对象程序设计<br />
熟练使用PL/SQL及JDBC,最好使用过Oracle和MS SQL<br />
熟悉Linux环境和基本Shell命令.<br />
熟悉Servlet,JSP,拥有Struts的使用配置经验（了解Struts所有配置和各种Action及Form的使用）<br />
熟练使用Junit和Ant<br />
理解各种J2EE提及的设计模和基本技术，至少熟悉其中两种或者多种(Servlet,Jsp,EJB,JMX,JMS,Web Service,Corba)</p>
<p>如果掌握以下技术可优先考虑：<br />
良好的基于Web的软件开发风格，熟悉B/S模式，熟练使用Apache, Tomcat.<br />
熟悉对应用服务器的配置管理，JBoss，Weblogic.<br />
熟悉spring、hibernate等优秀framework的使用，并了解其中的原理.<br />
熟练的英文交流能力，包括文档书写和口语交流</p>
<p>敬请有意者尽快发简历，收到简历一周之内电话面试，外地应聘人员，一律采用电话面试。<br />
Email：javaok@126.com<br />
msn：javaok2008@hotmail.com<br />
此职位2个月内有效，希望尽快投简历。<br />
</p><img src ="http://cdjavaclub.blogjava.net/aggbug/208371.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2008-06-16 17:02 <a href="http://www.blogjava.net/loocky/archive/2008/06/16/208371.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tibco面经</title><link>http://www.blogjava.net/loocky/archive/2008/05/08/199139.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Thu, 08 May 2008 01:43:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2008/05/08/199139.html</guid><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 我面的是tibco&nbsp; global support的职位，他们HR张小姐是个不错的人，跟我详细介绍了这个职位，并约好面试时间，大概3月中旬，一面是个工程师面的，范围比较广Jms ,webservice,xpath,performance tuning,unix/linux,pl/sql,jta等等吧，之后个他们一个姓王的manager英语面试，大概有半个小时吧，我们交流的还是蛮愉快的，他告诉我有夜班的情况，工资也是double等等，也说了他们的薪水不会很高，2面试下旬开始也是一个工程师面的，这次只是范围更广，但是不深入，感觉没有太大问题，面完后还是上次那个manager，我们沟通了一下薪水问题，manager让我说一下薪资要求，他跟国外沟通一下，过了2天给我电话，说他们薪水达不到我期望的值，让我考虑一下，后来我给manager打了个电话，说很遗憾不能去那边，以后有机会合作，那个manager和nice的，也比较职业。<br />
&nbsp;&nbsp; 为什么放弃了这个机会主要是2个原因：1：tibco跟文思合作，让我对tibco的印象打了折扣 2：薪水。<br />
</p><img src ="http://cdjavaclub.blogjava.net/aggbug/199139.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2008-05-08 09:43 <a href="http://www.blogjava.net/loocky/archive/2008/05/08/199139.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>3年前的选择决定你今天的生活！</title><link>http://www.blogjava.net/loocky/archive/2008/05/02/197801.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Fri, 02 May 2008 14:49:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2008/05/02/197801.html</guid><description><![CDATA[<br />
<br />
<div class="t_msgfont" id="message10255488"><br />
<br />
有三个人要被关进监狱三年,监狱长满足了他们每一个人的要求.美国人爱抽雪茄.要了三箱雪茄;法国人浪漫要了一个美丽的女人相伴;而犹太人说,他需要一部与外界沟通的电话.三年过后.第一个出来的是美国人,他的鼻孔里嘴里塞满了雪茄,大声道:"给我火,给我火!"原来他忘了要火.接着出来的是法国人,只见他手里牵着一个小孩.怀里抱着一个小孩.而美丽女人的肚里还怀着第三个小孩,最后出来的是犹太人,他紧握着监狱长的手说:"这三年来,我每天与外界联系,我的生意不但没有停顿,反而每天在增长,为了表示感谢,我送你一辆劳斯莱斯吧!"<br />
<br />
<br />
这个故事告诉我们,什么样的选择决定什么样的生活.今天的生活是由三年前我们的选择决定的,而今天的选择将决定我们三年后的生活.很多人认为命运和机遇密切相关.但人的命运在很大程度上决定在自己手里.就上面这个故事而言,当面对一个选择的机遇时,三个人做出了不同的选择.而这个选择决定了若干年后他们不同的生活.<br />
<br />
</div><img src ="http://cdjavaclub.blogjava.net/aggbug/197801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2008-05-02 22:49 <a href="http://www.blogjava.net/loocky/archive/2008/05/02/197801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>猎头职位，天津地区java(高级)工程师</title><link>http://www.blogjava.net/loocky/archive/2008/04/29/197007.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Tue, 29 Apr 2008 00:55:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2008/04/29/197007.html</guid><description><![CDATA[美资外企，招聘高级java工程师（工作地点天津）,有国外工作或者培训的机会。<br />
<font size="6"><font color="Red">务必</font></font><font color="Red">请注明应聘职位！</font><br />
<br />
敬请有意者尽快发简历，收到简历一周之内电话面试，外地应聘人员，一律采用电话面试。<br />
Email：<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#97;&#118;&#97;&#111;&#107;&#64;&#49;&#50;&#54;&#46;&#99;&#111;&#109;">javaok@126.com</a><br />
msn：<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#106;&#97;&#118;&#97;&#111;&#107;&#50;&#48;&#48;&#56;&#64;&#104;&#111;&#116;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">javaok2008@hotmail.com</a><br />
<br />
此职位2个月内有效，希望尽快投简历。<br />
&nbsp;&nbsp;<br />
<font color="Red">职位1：软件工程师（工作地点天津）</font><br />
扎实的Java基本功(熟悉java.util,thread,IO,network)<br />
深刻认识面向对象程序设计<br />
熟练使用PL/SQL及JDBC,最好使用过Oracle和MS SQL<br />
熟悉Linux环境和基本Shell的编写<br />
熟悉Servlet,JSP,了解jstl等taglib技术，熟悉JAVASCRIPT<br />
理解各种J2EE提及的设计模和基本技术，至少熟练其中三种技术(Servlet,Jsp,EJB,JMX,JMS,Web Service,Corba)<br />
3年j2ee开发经验，技术实力强者可以为2年<br />
英语能够读写，最好能够简单交流。<br />
<br />
<font color="Red">职位2:高级软件工程师（工作地点天津）</font><br />
An senior-level position as part of the
softwaredevelopmentteamdesigning and developing
advancedlarge-scalehigh-availabilitymulti-tier transactional systems.<br />
<br />
Seeking qualified Java developer with a broad and in
depthknowledgeofsoftware engineering concepts, technologies, and
practices.Willbecomponent owner for systems with large real-world
customer base.<br />
<br />
Responsibilities include:<br />
Design, develop and modify software based on
requirements.Mustutilizegood design practices, documentation, and
security policies.<br />
Lead team of developers to develop, test, resolve
defects,anddocumentassigned application modules. Conduct design and
codereviewswith teammembers or peers.<br />
Follow the process of an iterative software
developmentlifecycle.Including proper interactions with
development,projectmanagement,quality assurance, database, and
productionsupportpersonnel.<br />
Gain clear understanding of the application architecture, database design, and business domain for the assigned products.<br />
Keeping up with new technology and extend its applicability to the product.<br />
Perform the above duties for new implementations and maintenance of existing systems in production.<br />
Required Skills<br />
<br />
3 year working experience with Java&nbsp;&nbsp;programming in enterprise-level applications<br />
Strong knowledge in object oriented design and programming<br />
Strong experience in database programming and queries with JDBC and SQL, using databases such as Oracle<br />
Experience with database driven multi-tier web application development<br />
Experience with Linux environment and shell scripting<br />
Ability to own component development from requirements through implementation<br />
Ability to interface successfully with clients and office personnel<br />
<br />
<br />
Desired Skills:<br />
Experience with web development environments such as Apache, Tomcat<br />
Experience with SOAP-based web services<br />
Experience with database reporting.<br />
Ability to work in a fast paced &amp; dynamic company environment<br />
Excellent oral and written communication skills in English<br />
Excellent time management and multi-tasking capability<img src ="http://cdjavaclub.blogjava.net/aggbug/197007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2008-04-29 08:55 <a href="http://www.blogjava.net/loocky/archive/2008/04/29/197007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java编程规则</title><link>http://www.blogjava.net/fantasy/articles/179926.html</link><dc:creator>Web 2.0 技术资源</dc:creator><author>Web 2.0 技术资源</author><pubDate>Thu, 14 Feb 2008 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/fantasy/articles/179926.html</guid><description><![CDATA[<span class="a14c">&nbsp; (1) 类名首字母应该大写。字段、方法以及对象（句柄）的首字母应小写。对于所有标识符，其中包含的所有单词都应紧靠在一起，而且大写中间单词的首字母。例如：<br />
ThisIsAClassName<br />
thisIsMethodOrFieldName<br />
若在定义中出现了常数初始化字符，则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。<br />
Java包（Package）属于一种特殊情况：它们全都是小写字母，即便中间的单词亦是如此。对于域名扩展名称，如com，org，net或者edu等，全部都应小写（这也是Java 1.1和Java 1.2的区别之一）。<br />
<p>(2) 为了常规用途而创建一个类时，请采取&#8220;经典形式&#8221;，并包含对下述元素的定义：</p>
<br />
<p>equals()<br />
hashCode()<br />
toString()<br />
clone()（implement Cloneable）<br />
implement Serializable</p>
<br />
<p>(3) 对于自己创建的每一个类，都考虑置入一个main()，其中包含了用于测试那个类的代码。为使用一个项目中的类，我们没必要删除测试代码。若进行了任何形式的改动，可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。</p>
<br />
<p>(4) 应将方法设计成简要的、功能性单元，用它描述和实现一个不连续的类接口部分。理想情况下，方法应简明扼要。若长度很大，可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用（有些时候，方法必须非常大，但它们仍应只做同样的一件事情）。</p>
<br />
<p>(5) 设计一个类时，请设身处地为客户程序员考虑一下（类的使用方法应该是非常明确的）。然后，再设身处地为管理代码的人考虑一下（预计有可能进行哪些形式的修改，想想用什么方法可把它们变得更简单）。<br />
(6) 使类尽可能短小精悍，而且只解决一个特定的问题。下面是对类设计的一些建议：<br />
■一个复杂的开关语句：考虑采用&#8220;多形&#8221;机制<br />
■数量众多的方法涉及到类型差别极大的操作：考虑用几个类来分别实现<br />
■许多成员变量在特征上有很大的差别：考虑使用几个类</p>
<br />
<p>(7) 让一切东西都尽可能地&#8220;私有&#8221;——private。可使库的某一部分&#8220;公共化&#8221;（一个方法、类或者一个字段等等），就永远不能把它拿出。若强行拿出，就可能破坏其他人现有的代码，使他们不得不重新编写和设计。若只公布自己必须公布的，就可放心大胆地改变其他任何东西。在多线程环境中，隐私是特别重要的一个因素——只有private字段才能在非同步使用的情况下受到保护。</p>
<br />
<p>(8) 谨惕&#8220;巨大对象综合症&#8221;。对一些习惯于顺序编程思维、且初涉OOP领域的新手，往往喜欢先写一个顺序执行的程序，再把它嵌入一个或两个巨大的对象里。根据编程原理，对象表达的应该是应用程序的概念，而非应用程序本身。</p>
<br />
<p>(9) 若不得已进行一些不太雅观的编程，至少应该把那些代码置于一个类的内部。</p>
<br />
<p>(10) 任何时候只要发现类与类之间结合得非常紧密，就需要考虑是否采用内部类，从而改善编码及维护工作（参见第14章14.1.2小节的&#8220;用内部类改进代码&#8221;）。</p>
<br />
<p>(11) 尽可能细致地加上注释，并用javadoc注释文档语法生成自己的程序文档。</p>
<br />
<p>(12) 避免使用&#8220;魔术数字&#8221;，这些数字很难与代码很好地配合。如以后需要修改它，无疑会成为一场噩梦，因为根本不知道&#8220;100&#8221;到底是指&#8220;数组大小&#8221;还是&#8220;其他全然不同的东西&#8221;。所以，我们应创建一个常数，并为其使用具有说服力的描述性名称，并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。</p>
<br />
<p>(13) 涉及构建器和异常的时候，通常希望重新丢弃在构建器中捕获的任何异常——如果它造成了那个对象的创建失败。这样一来，调用者就不会以为那个对象已正确地创建，从而盲目地继续。</p>
<br />
<p>(14) 当客户程序员用完对象以后，若你的类要求进行任何清除工作，可考虑将清除代码置于一个良好定义的方法里，采用类似于cleanup()这样的名字，明确表明自己的用途。除此以外，可在类内放置一个boolean（布尔）标记，指出对象是否已被清除。在类的finalize()方法里，请确定对象已被清除，并已丢弃了从RuntimeException继承的一个类（如果还没有的话），从而指出一个编程错误。在采取象这样的方案之前，请确定finalize()能够在自己的系统中工作（可能需要调用System.runFinalizersOnExit(true)，从而确保这一行为）。</p>
<br />
<p>(15) 在一个特定的作用域内，若一个对象必须清除（非由垃圾收集机制处理），请采用下述方法：初始化对象；若成功，则立即进入一个含有finally从句的try块，开始清除工作。</p>
<br />
<p>(16) 若在初始化过程中需要覆盖（取消）finalize()，请记住调用super.finalize()（若Object属于我们的直接超类，则无此必要）。在对finalize()进行覆盖的过程中，对super.finalize()的调用应属于最后一个行动，而不应是第一个行动，这样可确保在需要基础类组件的时候它们依然有效。</p>
<br />
<p>(17) 创建大小固定的对象集合时，请将它们传输至一个数组（若准备从一个方法里返回这个集合，更应如此操作）。这样一来，我们就可享受到数组在编译期进行类型检查的好处。此外，为使用它们，数组的接收者也许并不需要将对象&#8220;造型&#8221;到数组里。</p>
<br />
<p>(18) 尽量使用interfaces，不要使用abstract类。若已知某样东西准备成为一个基础类，那么第一个选择应是将其变成一个interface（接口）。只有在不得不使用方法定义或者成员变量的时候，才需要将其变成一个abstract（抽象）类。接口主要描述了客户希望做什么事情，而一个类则致力于（或允许）具体的实施细节。</p>
<br />
<p>(19) 在构建器内部，只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法，因为那些方法可能被其他人覆盖或取消，从而在构建过程中产生不可预知的结果（参见第7章的详细说明）。</p>
<br />
<p>(20) 对象不应只是简单地容纳一些数据；它们的行为也应得到良好的定义。</p>
<br />
<p>(21) 在现成类的基础上创建新类时，请首先选择&#8220;新建&#8221;或&#8220;创作&#8221;。只有自己的设计要求必须继承时，才应考虑这方面的问题。若在本来允许新建的场合使用了继承，则整个设计会变得没有必要地复杂。</p>
<br />
<p>(22) 用继承及方法覆盖来表示行为间的差异，而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色，这是绝对应该避免的：应直接使用一个&#8220;颜色&#8221;字段。</p>
<br />
<p>(23) 为避免编程时遇到麻烦，请保证在自己类路径指到的任何地方，每个名字都仅对应一个类。否则，编译器可能先找到同名的另一个类，并报告出错消息。若怀疑自己碰到了类路径问题，请试试在类路径的每一个起点，搜索一下同名的.class文件。</p>
<br />
<p>(24) 在Java 1.1 AWT中使用事件&#8220;适配器&#8221;时，特别容易碰到一个陷阱。若覆盖了某个适配器方法，同时拼写方法没有特别讲究，最后的结果就是新添加一个方法，而不是覆盖现成方法。然而，由于这样做是完全合法的，所以不会从编译器或运行期系统获得任何出错提示——只不过代码的工作就变得不正常了。</p>
<br />
<p>(25) 用合理的设计方案消除&#8220;伪功能&#8221;。也就是说，假若只需要创建类的一个对象，就不要提前限制自己使用应用程序，并加上一条&#8220;只生成其中一个&#8221;注释。请考虑将其封装成一个&#8220;独生子&#8221;的形式。若在主程序里有大量散乱的代码，用于创建自己的对象，请考虑采纳一种创造性的方案，将些代码封装起来。</p>
<br />
<p>(26) 警惕&#8220;分析瘫痪&#8221;。请记住，无论如何都要提前了解整个项目的状况，再去考察其中的细节。由于把握了全局，可快速认识自己未知的一些因素，防止在考察细节的时候陷入&#8220;死逻辑&#8221;中。</p>
<br />
<p>(27) 警惕&#8220;过早优化&#8221;。首先让它运行起来，再考虑变得更快——但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候，才应进行优化。除非用专门的工具分析瓶颈，否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的代码变得难于理解，而且难于维护。</p>
<br />
<p>(28) 请记住，阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序，但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己，还是对后来的人，它们都是相当重要的。如对此仍有怀疑，那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折，这样或许能将你说服。</p>
<br />
<p>(29) 如认为自己已进行了良好的分析、设计或者实施，那么请稍微更换一下思维角度。试试邀请一些外来人士——并不一定是专家，但可以是来自本公司其他部门的人。请他们用完全新鲜的眼光考察你的工作，看看是否能找出你一度熟视无睹的问题。采取这种方式，往往能在最适合修改的阶段找出一些关键性的问题，避免产品发行后再解决问题而造成的金钱及精力方面的损失。</p>
<br />
<p>(30) 良好的设计能带来最大的回报。简言之，对于一个特定的问题，通常会花较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法，以后的工作就轻松多了，再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报（甚至无可估量）。而且由于自己倾注了大量心血，最终获得一个出色的设计方案，成功的快感也是令人心动的。坚持抵制草草完工的诱惑——那样做往往得不偿失。</p>
</span>
<img src ="http://cdjavaclub.blogjava.net/aggbug/179926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fantasy/" target="_blank">Web 2.0 技术资源</a> 2008-02-14 15:00 <a href="http://www.blogjava.net/fantasy/articles/179926.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)什么才是软件开发的葵花宝典？</title><link>http://www.blogjava.net/soddabao/archive/2008/02/03/179152.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Sun, 03 Feb 2008 06:46:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2008/02/03/179152.html</guid><description><![CDATA[中国人大都喜欢用武侠小说来比较软件开发，但是在实战武功中，只有葵花宝典才是最厉害的，也只有掌握了葵花宝典，才能称为"不败"。 <br />
<br />
但什么才是软件开发的葵花宝典？ <br />
<br />
让我们先从一些现象出发。我们的前提是，软件开发是一项智力密集型劳动。对于智力密集型劳动，我们观察到的现象是，个体的表现差异很大，团队的表现差异很大，组织的表现差异很大，国家的表现差异很大。这不象体力占主要的劳动，象百米王跑百米的速度也仅比我快50%。但在棋类运动中，一个高手可以车轮战数位低手，而且毫无例外地将他们一一击败！ <br />
<br />
这些智力运动员表现出的特点是，计算精确而且速度快。其行为很象东方不败。虽然关于葵花宝典的传说很多，但最准确的描述只有一个字"快"。东方不败已经快到了吓人的地步。就象卡斯帕罗夫已快到了深蓝的地步。 <br />
<br />
有一则关于物理学家玻尔的轶事，有一次玻尔在普林斯顿大学听两个年青教授演讲他们的工作成果。期间玻尔突然发言说，如果照你们的研究算下去，会得到一个很有意思的推论。结果两个年青教授回去计算了两天，果然得出了同样的结论。玻尔是如何做到这样快的？ <br />
<br />
在软件开发中，我们同样注意到这样一种高手，他们可以每天写出一千行左右的高品质代码。他们可以运用已有的一些软件包，迅速完成一个新的产品。他们可以在很短的时间内，学会一项新的程序语言或是新技术。他们表现出一种神奇的速度。 <br />
<br />
在武侠小说中，所有的高手都有一些凡人不能企及的表现。象张无忌学太极，用龙爪手击败龙爪手名家；乔峰用太祖长拳击败天下英雄；姑苏慕容以其人之道还治其人之身，令狐冲一剑剌瞎十几双眼睛等等。我认为，之所以他们能做到这样，关键是在于他们快。 <br />
<br />
快并不意味着不准或品质差。快与品质并不矛盾。 <br />
<br />
高手的快，其实包含着很高的品质在其中。如果你因为高手的快，就质疑其品质，那就相当于在问：东方不败出手那么快，会不会刺不准？东方不败并不满足于刺死对手，他会在对手身上刺朵花。他把杀人变成了艺术。准确来说，他真正的兴趣不在杀人，而在于艺术。 <br />
<br />
退一步说，就算东方不败第一击有点偏差，他稍作修正后，马上跟上的第二第三击，也会击中他想击中的地方。在武功差的对手剑还没拨出来的时候，他已杀死对方并刺上了一朵花。 <br />
<br />
所以真正的软件高手，他并不满足于他的代码能有效地工作了，他认为编程是艺术，并醉心于其中。在低手能写出一个版本的时间里，他已经写出了第十版。其品质当然不可同日而语。就象一个九段棋手，在给定的时间里，他能计算十种可能，并将每种可能计算到100手之后，从中选择一种最有利的下法。低手岂有苟全的机会？ <br />
<br />
高手写软件总是不停地在重构(refactoring）。高手喜欢迭代式开发。高手说，增量就是打补丁，迭代就是推倒重来。对于软件这种东西，写一遍它可能OK（做到这一点也不容易），写十遍就是一个伟大的产品，再多写一遍它就更伟大些。 <br />
<br />
高手快的诀窍在于他很熟悉各种东西。高手看书很快，因为每一本新书里，值得他好好看的新技术只有一两章的内容。他能迅速看完，并准确领会这本书的中心思想和价值。而对于一个新手，每句话都是新的，他都需要去理解，每一段例子，他都需要去试。 <br />
<br />
很少看到一种100%全新的技术或理论。就象Java language specification里说的，Java没有使用任何新技术，用的都是业界久经考验的技术。对于高手来说，那些技术都是他所熟悉的。自然，很快他就从一个C++高手变成了Java高手。如果一个编程新手学Java，学两年也不如一个高手学两个月的。高手学新东西快。 <br />
<br />
高手写代码速度快。统计结果说，人均每人月的有效代码速度大概是300至400行。但那是业界平均生产效率。对于高手来说，这个数字太低了。每天写300至400行是完全有可能的。因为在写代码时，所有知识都已具备，已经没有任何需要他多花时间的事情了。他甚至很少需要Debug。 <br />
<br />
高手重用代码的能力很强，熟悉新的API的速度很快。这也是因为，他曾经使用过很多的API，重用过很多的代码。他知道哪些是可用的，哪些有缺陷。他既过用Qt，也用过gtk+，也用过windows API &amp; MFC，也用过AWT &amp; SWING。新的API对他来说，也是老熟人。 <br />
<br />
高手喜欢用轻量级的工具，象vi，notepad，最多到UltraEdit这样复杂的。高手用这种工具写出很多的东西。这些工具就象东方不败的针。那根针已具有神奇的魔力，有时候它可以当激光枪来用。 <br />
<br />
对于一些重量级的工具，高手虽不常用，但一经使出也威力大于常人。如果让东方不败用剑，最厉害的剑术名家也会败得很难看。高手其实用过很多的重量级工具，而且深知其优缺点。所以使出来，就会把威力发挥到最大，而把缺陷减少到最小。而低手则不然，总是把缺陷加以大大的发扬而浑不知其精髓何在。就象很多人学用UML、RUP、XP、Design pattern那样。 <br />
<br />
高手所学博杂且融会贯通。高手做什么都快，当低手还在一愁莫展的时候，高手已经圆满解决问题，去干别的事去了。 <br />
<br />
在成为高手的路上，要有热情，要循序渐进，要持之以恒。 <br />
<br />
要逼自己，书要快快地看。要试图迅速理解其主旨。其实你快快看所接受的信息量，与慢慢看接受的差不多。能明白多少很大程度上取决于你的功底。以后用到再回过头来看。一本对你来说新东西太多的书，不要指望看一次就全理解吸收。就象很多功力不够的人看design patterns那本书一样。慢慢看还不如找到多种信息来源，都快快看一遍。对于一个完全陌生的领域，只看一本书很远远不够的。 <br />
<br />
要逼自已，事要快快做。有一个朋友，几年前我介绍他去玩玩linux，他也表示想玩，但他现在还没碰过。他失去了很多机会。 <br />
<br />
平时要有意识提高自己写代码的速度，其实你一天写15行有效代码，与你写50行有效代码，其品质是差不多的。你应该把那些业界平均水平抛诸脑后，把超越自己做为唯一目标。等到你写了很多各式各样的代码，你的水平就不一般了。一个老师曾向我介绍他的学英语的决窍，他说你去啃原版小说，啃到50本，就和一般人有很大距离了。就是这个理。如果你写得太慢，怎么能写得多？水平怎么能提高？ <br />
<br />
要逼自己，学很多别人怕学的东西。低手总会说：这么多东西怎么学得过来啊。于是就少学或不学。这样就成不了高手了。高手有非常广的知识面，有很丰富的经验。知道很多低手不知道的事。玩过很多低手听都没听过的东西。 <br />
<br />
要逼自己，努力满足客户的各种需求。个人技能是在满足客户的各种需求的过程中提高的。比如你喜欢用Delphi，客户说一定要用VB，那你就答应他，然后把自己培养成为VB的高手。用户的需求看似变态，但对你是一个机会。 <br />
<br />
怎样才能做到看书快，写代码快，学新东西快，一个显而易见的途径就是将工作并行化。你在一台机器上make时，同时可以在看别的文档和聊天。对于计算机是这样，对人也是这样。如果你只能串行地处理问题，你的速度将提高有限。你的大脑有很大潜力可挖，它应该是一个多任务分时系统。努力减少它idle的时间。搞经济的Samuelson被人称为human brain main frame，可见他的大脑有多快。 <br />
<br />
让你的思维快起来，你就会区别于那些反应迟钝的人。如果你不能让人生的道路变长，就让它变宽。这世界变化快，需要你变得比它快才行。 <br />
<br />
这样加快并不会让你短命，相反，你有更多的时间来享受生活和锻炼身体。你的生活将更有品质，更丰富，更有意义。面对变化，你将立于不败之地。我们都是和自己赛跑的人，需要跑得比昨天的自己更快。 
<img src ="http://cdjavaclub.blogjava.net/aggbug/179152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soddabao/" target="_blank">冷面阎罗</a> 2008-02-03 14:46 <a href="http://www.blogjava.net/soddabao/archive/2008/02/03/179152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转findbugs的使用</title><link>http://www.blogjava.net/loocky/archive/2007/11/23/162656.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Fri, 23 Nov 2007 07:59:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2007/11/23/162656.html</guid><description><![CDATA[<p>官方网站：<a href="http://findbugs.sourceforge.net/">http://findbugs.sourceforge.net/</a><br />
Eclipse插件：<a href="http://findbugs.sourceforge.net/downloads.html">http://findbugs.sourceforge.net/downloads.html</a></p>
<p>　　<strong>插件管理技巧</strong><br />
<br />
　　提示：新下载的插件PlugIn一定不要都放在原始的Eclipse目录下去。<br />
</p>
<ol>
    <li>前提是你已经安装好了Eclipse工具了，比如安装在E:\OpenSource\Eclipse\目录下，以下这个目录以%ECLIPSE_HOME%来进行表示；
    <li>此时默认的插件是在%ECLIPSE_HOME%\plugins目录中的；
    <li>在%ECLIPSE_HOME%下建立一个PlugInsNew的目录；<br />
    比如：E:\OpenSource\Eclipse\PlugInsNew\
    <li>你下载了个新的插件，比如叫做：XYZ <br />
    　那么就在%ECLIPSE_HOME%\PlugInsNew\目录下建立XYZ目录，目录里面是eclipse目录，eclipse目录包含有features与plugins两个子目录；结构如下图所示：<br />
    <br />
    　　<img height="410" src="http://www.webdn.com/web_file/program/jsp/060208087/images/xq50b3j256x9.jpg" width="220" border="0"  alt="" /><br />
    <li>把下载的新插件的文件放在以下相应目录中 <br />
    %ECLIPSE_HOME%\PlugInsNew\XYZ\eclipse\features<br />
    %ECLIPSE_HOME%\PlugInsNew\ XYZ\eclipse\plugins<br />
    <li>建立相关的.link的文件 <br />
    然后在%ECLIPSE_HOME%\links目录里建立一个XYZ.link的文件 <br />
    内容如是：path=E:/OpenSource/Eclipse/PlugInsNew/XYZ就一行这样的路径指示而已。 <br />
    当然，采用相对路径来表示可能更直观一些，方便进行文件整体移动和小组全部成员的共享命名用，省得移动后要改动Link文件里的绝对路径而费心费力。直接拷贝过去就可以使用。 <br />
    即XYZ.link文件的内容如是：path=../PlugInsNew/XYZ <br />
    这样，如果你下载了多个插件就可以如法炮制建立多个Link文件，想加载哪个插件就把哪个插件的Link文件放到%ECLIPSE_HOME%\links的目录中即可，使用与管理都很方便，建议千万不要放在默认的安装目录中； <br />
    如果你的%ECLIPSE_HOME%与此不同，请修改XYZ.link文件里的路径<br />
    <li>删除，关闭Eclipse <br />
    删除%ECLIPSE_HOME%\links\XYZ.link文件即可 <br />
    删除%ECLIPSE_HOME%\PlugInsNew\XYZ整个目录及文件<br />
    <li>重新启动Eclipse即可 </li>
</ol>
<p>　　<strong>使用</strong><br />
<br />
　　重新启动Eclipse后，在Help =&gt; About Eclipse SDK =&gt; Plug-in Details你可以看到由&#8220;FindBugs Project&#8221;提供的&#8220;FindBugs Plug-in&#8221;版本0.0.17插件，如下图所示：<br />
<br />
　　<img height="439" src="http://www.webdn.com/web_file/program/jsp/060208087/images/ifrs62d7h0jt.jpg" width="520" border="0"  alt="" /><br />
<br />
　　<strong>FindBugs的使用方法</strong><br />
<br />
　　FindBugs是一个可以在Java程序中发现Bugs的程序。 <br />
<br />
　　它是专门用来寻找处于&#8220;Bug Patterns&#8221;列表中的代码的。 <br />
<br />
　　Bug Patterns指很有可能是错误的代码的实例。<br />
<br />
　　目前FindBugs最高版本0.9.4，不过更新速度很快的，你应当经常上去看看是否有新版本发布。Eclipse plugin for FindBugs最高版本0.0.17。<br />
<br />
　　<strong>系统要求</strong><br />
<br />
　　使用FindBugs至少需要JDK1.4.0以上版本，FindBugs是平台独立的，可以运行于GNU/Linux、Windows、MacOS X　等平台上。<br />
<br />
　　运行FindBugs至少需要有256 MB内存，如果你要分析一个很大的项目，那就需要更加多的内存了。<br />
<br />
　　FindBugs独立运行和与Ant结合的详细操作就不介绍了，可以看官方的文档<a href="http://findbugs.sourceforge.net/manual/" target="_blank"><u>http://findbugs.sourceforge.net/manual/</u></a><br />
<br />
　　独立运行的效果图如下：<br />
<br />
　　<img height="509" src="http://www.webdn.com/web_file/program/jsp/060208087/images/622m736481l0.jpg" width="554" border="0"  alt="" /><br />
</p>
<p>　　本文主要介绍在Eclipse中使用的情况<br />
<br />
　　打开Bug Details视图<br />
<br />
　　Windows =&gt; Show View =&gt; Other&#8230; =&gt; FindBugs =&gt; BugDetails<br />
<br />
　　<img height="414" src="http://www.webdn.com/web_file/program/jsp/060208087/images/41175t939i9s.jpg" width="296" border="0"  alt="" /><br />
<br />
　　在Package Explorer或Navigator视图中，选中你的Java项目，右键，可以看到&#8220;Find Bugs&#8221;菜单项，子菜单项里有&#8220;Find Bugs&#8221;和&#8220;Clear Bug Markers&#8221;两项内容，如下图所示：<br />
<br />
　　<img height="459" src="http://www.webdn.com/web_file/program/jsp/060208087/images/2ezt0h504fus.jpg" width="309" border="0"  alt="" /><br />
<br />
　　我们建立一个简单的测试文件Test.java 内容如下： <br />
<br />
</p>
<pre class="code">public class Test { private String[] name; public String[] getName() { return name; } public void setName(String[] name) { this.name = name; } } </pre>
<p><br />
　　我们点中&#8220;Find Bugs&#8221;，运行时会出现如下进度框：<br />
<br />
　　运行结束后可以在Problems中看到增加了如下的警告信息内容<br />
<br />
　　FindBugs运行后的警告信息内容不仅在Problems视图中显示，而且将标记在源代码标记框中，在源代码编辑器中我们可以看到警告标识，如下图： <br />
<br />
　　当光标指向你的警告信息的代码上面时，就会有相应的错误提示信息，与Eclipse本身的错误或警告信息提示类似。 <br />
<br />
　　选中Problems视图里出现的相应问题，就会在代码编辑器里切换到相应的代码上去，方便根据相应的提示信息进行代码的修改。 <br />
<br />
　　<img height="193" src="http://www.webdn.com/web_file/program/jsp/060208087/images/nrs082xwhx4h.jpg" width="554" border="0"  alt="" /><br />
<br />
　　在Problems视图里，选中相应的问题条目，右键，在弹出的菜单中，可以看到&#8220;Show Bug Details&#8221;，如下图所示：<br />
<br />
　　<img height="246" src="http://www.webdn.com/web_file/program/jsp/060208087/images/jn3j1644io3y.jpg" width="146" border="0"  alt="" /><br />
<br />
　　点中它，会切换到Bug Details视图上去，显示更加详细的提示信息。<br />
<br />
　　当然，在代码编辑窗口中，点击带有警告提示信息的图标时，也会自动切换到Bud Details窗口去，查看详细的警告信息，如下图所示。<br />
<br />
　　<img height="160" src="http://www.webdn.com/web_file/program/jsp/060208087/images/t4h5k4q5i5sx.jpg" width="423" border="0"  alt="" /><br />
<br />
　　根据这里详细的信息，你可以得到FindBugs为什么会对你的代码报警告信息，及相应的处理办法，根据它的提示，你可以快速方便地进行代码修改。<br />
<br />
　　<img height="193" src="http://www.webdn.com/web_file/program/jsp/060208087/images/71ll9wu3h2c6.jpg" width="554" border="0"  alt="" /><br />
<br />
　　根据提示，我们将代码修改成如下，再运行就不会报有警告信息了。<br />
</p>
<pre class="code">public class Test { private String[] name; public String[] getName() {     String[] temp = name; return temp; } public void setName(String[] name) {     String[] temp = name; this.name = temp; } } </pre>
<p>　　<strong>配置FindBugs</strong><br />
<br />
　　选择你的项目，右键 =&gt; Properties =&gt; FindBugs =&gt;<br />
<br />
　　<img height="454" src="http://www.webdn.com/web_file/program/jsp/060208087/images/w9782i23chf6.jpg" width="553" border="0"  alt="" /><br />
<br />
　　可以配置的信息包括如上图所示的四个选项的相关设置：<br />
</p>
<ol>
    <li>Run FindBugs Automatically开关 <br />
    <br />
    当此项选中后，FindBugs将会在你修改Java类时自动运行，如你设置了Eclipse自动编译开关后，当你修改完Java文件保存，FindBugs就会运行，并将相应的信息显示出来。 <br />
    <br />
    当此项没有选中，你只能每次在需要的时候自己去运行FindBugs来检查你的代码。 <br />
    <br />
    <li>Minimum priority to report选择项 <br />
    <br />
    这个选择项是让你选择哪个级别的信息进行显示，有Low、Medium、High三个选择项可以选择，很类似于Log4J的级别设置啦。 比如： <br />
    <br />
    你选择了High选择项，那么只有是High级别的提示信息才会被显示。 <br />
    <br />
    你选择了Medium选择项，那么只有是Medium和High级别的提示信息才会被显示。 <br />
    <br />
    你选择了Low选择项，那么所有级别的提示信息都会被显示。<br />
    <br />
    <li>Enable bug categories选择项 <br />
    <br />
    在这里是一些显示Bug分类的选择： <br />
    <br />
    Correctness关于代码正确性相关方面的 <br />
    <br />
    Performance关于代码性能相关方面的 <br />
    <br />
    Internationalization关于代码国际化相关方面的 <br />
    <br />
    Multithreaded correctness关于代码多线程正确性相关方面的<br />
    <br />
    Style关于代码样式相关方面的<br />
    <br />
    Malicious code vulnerability关于恶意破坏代码相关方面的 <br />
    <br />
    比如：如果你把Style的检查框去掉不选择中它，那么与Style分类相关的警告信息就不会显示了。其它的类似。<br />
    <br />
    <li>Select bug patterns to check for选择项 <br />
    <br />
    在这里你可以选择所要进行检查的相关的Bug Pattern条目 <br />
    <br />
    可以从Bug codes、Detector name、Detector description中看到相应的是要检查哪些方面的内容，你可以根据需要选择或去掉相应的 检查条件。 </li>
</ol>
<p>　　<strong>总结 </strong><br />
<br />
　　此插件的功能很不错，可以帮助我们提升Java代码的编写能力，写出更加安全可靠的代码。建议使用或加在Ant里进行持续构建。 <br />
<br />
　　现在，你可以马上拿出你已经开发的一个项目，检查一下你的代码有没有问题了</p><img src ="http://cdjavaclub.blogjava.net/aggbug/162656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2007-11-23 15:59 <a href="http://www.blogjava.net/loocky/archive/2007/11/23/162656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JACORB开发corba应用</title><link>http://www.blogjava.net/loocky/archive/2007/11/22/162301.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Thu, 22 Nov 2007 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2007/11/22/162301.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 上篇文章讲述了jacorb 的配置，本章讲叙其应用，随后的几篇文章会重点讲述corba的开发&nbsp;JACORB开发以及corba的请求方式：&nbsp;&nbsp; JacORB的应用开发一般分为以下五步：1.写IDL接口定义2.编译IDL接口定义生成Java类3.实现步骤2中生成的接口4.写服务器启动类，并注册到ORB5.写客户端去获取服务对象引用&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/loocky/archive/2007/11/22/162301.html'>阅读全文</a><img src ="http://cdjavaclub.blogjava.net/aggbug/162301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2007-11-22 10:41 <a href="http://www.blogjava.net/loocky/archive/2007/11/22/162301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用JACORB搭建一个corba的开发环境</title><link>http://www.blogjava.net/loocky/archive/2007/11/21/162026.html</link><dc:creator>loocky</dc:creator><author>loocky</author><pubDate>Wed, 21 Nov 2007 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/loocky/archive/2007/11/21/162026.html</guid><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; how to setup jacorb dev env<br />
1:download JacORB_2_2</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.jacorb.org/download.html <br />
&nbsp; download ant<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://ant.apache.org/bindownload.cgi</p>
<p>2:extact JacORB_2_2.jar to d:\JacORB_2_2 </p>
<p>3:setup sys environment</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set ANT_HOME=<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set JAVA_HOME=<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set JACORB_HOME=d:\JacORB_2_2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set PATH=%PATH%;%ANT_HOME%\bin;%JAVA_HOME%\bin;%JACORB_HOME%\bin;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set CLASSPAHT=.;%CLASSPAHT%;%ANT_HOME%\lib\ant.jar;%JACORB_HOME%\lib\jarorb.jar;%JACORB_HOME%\lib\idl.jar\;%JACORB_HOME%\lib\logkit-1.2.jar</p>
<p>4:rename %JACORB_HOME%\etc\jacorb_properties.template to %JACORB_HOME%\etc\jacorb.properties<br />
&nbsp; and modify the 50th line to 53th line to<br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #ORBInitRef.NameService=file:/y:/nsiona.ref<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
ORBInitRef.NameService=file://d://test//NS_Ref<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
#ORBInitRef.NameService=http://www.x.y.z/~user/NS_Ref<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
#ORBInitRef.TradingService=http://www.x.y.z/~user/TraderRef<br />
&nbsp; <br />
&nbsp; modify 618th line to<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jacorb.naming.ior_filename=d://test//NS_Ref</p>
<p>5:rename&nbsp; %JACORB_HOME%\jacotemplate.bat to %JACORB_HOME%\jaco.bat<br />
&nbsp; <br />
&nbsp; and modify related env variable<br />
&nbsp; <br />
&nbsp; rename&nbsp;&nbsp; %JACORB_HOME%\idltemplate.bat to %JACORB_HOME%\idl.bat<br />
&nbsp;&nbsp; <br />
&nbsp; and modify related env variable</p>
<p>&nbsp;</p>
<p>6:&nbsp; use ant compile and build idl and java</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp; cd&nbsp; %JACORB_HOME%\demo\grid&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; run ant<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; the generate class file in %JACORB_HOME%\classes&nbsp; and generated java file in %JACORB_HOME%\demo\grid</p>
<p><br />
7: open a new cmd window:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd %JACORB_HOME%&nbsp;&nbsp; ns <br />
&nbsp; <br />
&nbsp;&nbsp; you can see the following result:&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]</p>
<p>&nbsp;&nbsp; open a new cmd window:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd %JACORB_HOME%&nbsp;&nbsp; jaco demo.grid.Server<br />
&nbsp; you can see the following result:&nbsp;&nbsp;&nbsp; <br />
&nbsp; [ configuration jacorb loaded from file %JAORB_HOME%\etc\jacorb.properties]<br />
&nbsp;&nbsp; <br />
&nbsp; open a new cmd window:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cd %JACORB_HOME%&nbsp;&nbsp; jaco demo.grid.client<br />
&nbsp;&nbsp;&nbsp; you can see the following result:&nbsp;&nbsp;&nbsp; <br />
&nbsp; <br />
&nbsp; [ configuration jacorb loaded from file D:\work\nj\JACORB\etc\jacorb.properties]<br />
&nbsp;&nbsp; Height = 31<br />
&nbsp;&nbsp; Width = 14<br />
&nbsp;&nbsp; Old value at (30,13): 0.21<br />
&nbsp;&nbsp; Setting (30,13) to 470.11<br />
&nbsp;&nbsp; New value at (30,13): 470.11<br />
&nbsp;&nbsp; MyException, reason: This is only a test exception, no harm done :-)<br />
&nbsp;&nbsp; done.</p><img src ="http://cdjavaclub.blogjava.net/aggbug/162026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/loocky/" target="_blank">loocky</a> 2007-11-21 10:36 <a href="http://www.blogjava.net/loocky/archive/2007/11/21/162026.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cell报表学习(二)</title><link>http://www.blogjava.net/soddabao/archive/2007/10/29/156571.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Mon, 29 Oct 2007 00:36:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2007/10/29/156571.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 专职研究cell已经有10天左右了，现场需求，我这边给都实现了，自己感觉不错，看来自己搞什么都还可以^_^怪不得领导非要点名我来弄这个。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实新学习一门新技术或语言吧，我觉得下面几点还是比较重要：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、论坛： 有事没事多去论坛看看，对自己能有一些帮助，之前我也去过很多论坛，学数模的时候去数模论坛、考程序员的时候去程序员论坛、java的时候去matrix论坛等等，感觉自己能在论坛找到不少东西；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、帮助文档： cell有个专门的帮助chm，现在实现功能都要去看那个，那里的帮助还是不错，就像java的jdk，vc的msdn一样；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、网上或是实现中和一些有经验的朋友或是同事聊聊，或许他们不弄这个，但是有时他们一句话能让你受益匪浅，要相信姜还是老的辣，别忘了他们吃过的盐比我们走过的路还要多；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、随时总结：没有总结就没有进步，也就没有提高，相信这点有经验的朋友都已经很清楚了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 下面的是我这段时间总结以及在网上找的，不敢独自享用，分享一下，希望能对做cell的朋友有一点帮助吧。<br />
&nbsp;
<p><span style="font-size: 14pt; color: black">orkbookReadonly</span><span style="font-size: 14pt; color: black; font-family: 宋体">的困惑</span><span style="font-size: 14pt; color: black">?</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p><span style="font-size: 9pt; color: black">CELL</span><span style="font-size: 9pt; color: black; font-family: 宋体">插件，设置了</span><span style="font-size: 9pt; color: black">WorkbookReadonly =true,</span><span style="font-size: 9pt; color: black; font-family: 宋体">为什么还能修改页签？</span></p>
            <p style="word-break: break-all; line-height: 12pt"><span style="font-size: 9pt; color: black">设置了WorkbookReadonly =true表页内容只读了，还是可以改页签的</span></p>
            <p style="word-break: break-all; line-height: 12pt">不想改的话，在这个<strong>AllowEditSheetLabel</strong>事件里设置approve为0&nbsp;</p>
            </td>
        </tr>
    </tbody>
</table>
<p><span style="font-size: 14pt; color: black">AddImage</span><span style="font-size: 14pt; color: black; font-family: 宋体">一个单元格是不是只能插入一个图片？</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p><span style="font-size: 9pt; color: black; font-family: 宋体">就可以设置一幅图片</span><span style="font-size: 9pt; color: black; font-family: 宋体">不能手动调整大小的</span><span style="font-size: 9pt; color: black">&nbsp;&nbsp;</span><span style="font-size: 9pt; color: black; font-family: 宋体">你用浮动图片可以手动调整的</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><strong>&nbsp;</strong></p>
<p><span style="font-size: 14pt; color: black; font-family: 宋体">获得当前的行列号</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p><strong><span style="font-size: 9pt; color: black">GetCurrentCol</span></strong><strong><span style="font-size: 9pt; color: black; font-family: 宋体">和</span></strong><strong><span style="font-size: 9pt; color: black">GetCurrentRow</span></strong><span style="font-size: 9pt; color: black; font-family: 宋体">可以获得当前的行列号</span></p>
            <p><span style="font-size: 9pt; color: black">editfinish</span><span style="font-size: 9pt; color: black; font-family: 宋体">里调用</span><span style="font-size: 9pt; color: black">GetCurrentCol</span><span style="font-size: 9pt; color: black; font-family: 宋体">和</span><span style="font-size: 9pt; color: black">GetCurrentRow</span><span style="font-size: 9pt; color: black; font-family: 宋体">和</span><span style="font-size: 9pt; color: black">changcell</span><span style="font-size: 9pt; color: black; font-family: 宋体">返回的行列号是一样的，你点其他的单元格还是返回你原来修改的单元格的行列号的。</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><strong>&nbsp;</strong></p>
<p><span style="font-size: 14pt; color: black">Web</span><span style="font-size: 14pt; color: black; font-family: 宋体">开发</span><span style="font-size: 14pt; color: black">cell</span><span style="font-size: 14pt; color: black; font-family: 宋体">报表</span></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 426.1pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="568">
            <p><span style="font-family: 宋体">将</span>CELL<span style="font-family: 宋体">报表的</span>eSReport<span style="font-family: 宋体">目录下的所有文件拷贝到新建的组件的</span>js/jsp<span style="font-family: 宋体">文件所在的文件夹。</span></p>
            <p><span style="font-family: 宋体">修改</span>jsp<span style="font-family: 宋体">页面，内容以</span>erreport.html<span style="font-family: 宋体">文件基准扩展和</span>web<span style="font-family: 宋体">有关的代码。</span></p>
            <p><span style="font-family: 宋体">在</span>jsp<span style="font-family: 宋体">中，会调用</span>CELL<span style="font-family: 宋体">插件，并提供终端用户和</span>CELL<span style="font-family: 宋体">报表的交互功能处理。</span></p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://cdjavaclub.blogjava.net/aggbug/156571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soddabao/" target="_blank">冷面阎罗</a> 2007-10-29 08:36 <a href="http://www.blogjava.net/soddabao/archive/2007/10/29/156571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cell报表学习(一)</title><link>http://www.blogjava.net/soddabao/archive/2007/10/25/155878.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Thu, 25 Oct 2007 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2007/10/25/155878.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 之前工作就是和大家一起的做一些web开发，需求设计、编码、测试以及实施维护，没有什么特别的地方，其他的就是在项目组做了n个接口，其他没什么。一个偶然的机会接触做一个叫cell报表的东西，起初只是觉得这个东西不错，那个时候正好出差回来没什么事可做，就帮忙做了点开发。后来被领导发现原来我做这个比做其他的强，倒不是我做web的能力差，让他感觉到我自学能力还是比较强以及其他方面均比较均衡，设计的面也比较广，于是把调出原先的项目组来专门做这个cell报表。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这几天的主要工作就是保存报表、打开报表和插入图片，保存cell报表差点犯下一个特大错误，因为是web项目，所以要把文件保存在服务器，我查cell帮助文档找到filesaveas方法，二话没说那来就用，呼呼程序做出来，自己开发服务器和客户端都是一台机器没什么，后来同事一说我才发现出问题了，我调用的方法是保存在客户端，这个可行，来找到fileupload方法，实现的过程也是一波三折，对这边的程序还是不熟，好多东西都不了解，我接手这个没有人给我讲系统，也没有给设计文档以及数据字典，真是苦啊！用的什么都要取问别人，或许现在中国的it开发管理都这样，太缺少文档。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这里有必要介绍一下cell报表，如果也有做这个cell报表的，我们可以一起研究。&nbsp;
<p style="text-indent: 21pt"><span style="font-family: 宋体">&nbsp;Cell </span><span style="font-family: 宋体">产品分Cell 组件和Cell 插件两个姐妹产品。</span><span style="font-family: 宋体">Cell </span><span style="font-family: 宋体">组件、插件(ActiveX控件)是北京用友华表公司在长期开发实践的基础上推出的功能强大、技术成熟的报表二次开发工具，是国内技术领先拥有广泛客户群的商业报表组件，有600多个编程接口，实现报表自定义，报表显示、打印预览、打印，图表，公式，自定义函数、资源本地化等强大功能，能够完全读写Excel文件。是软件开发人员开发优秀报表软件的最佳解决方案。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/IBMUSE~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 宋体">Cell </span></strong><strong><span style="font-family: 宋体">组件适用于开发Windows报表应用程序</span></strong></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">1、&nbsp;</span><span style="font-family: 宋体">强大的制表能力，特别适合制作中国式的复杂报表，解决您所有的制表难题；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">2、&nbsp;</span><span style="font-family: 宋体">丰富的单元格类型，支持数值、货币、日期、文本等类型。Cell的单元格囊括了几乎所有的Windows标准控制；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">3、&nbsp;</span><span style="font-family: 宋体">丰富的打印设置，美仑美奂的打印预览和打印效果，轻松输出各种报表；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">4、&nbsp;</span><span style="font-family: 宋体">无须系统安装Excel，就可以和Excel文件完全转换，转换效率更高，效果更完美；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">5、&nbsp;</span><span style="font-family: 宋体">强大的自定义函数功能，用户可根据自己的业务逻辑添加自己的函数；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">6、&nbsp;</span><span style="font-family: 宋体">极大地提升了图表功能，图表种类和效果比肩Excel；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">7、&nbsp;</span><span style="font-family: 宋体">资源本地化功能，根据需要可将Cell设成不同的语言版本；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">8、&nbsp;</span><span style="font-family: 宋体">适用于VB、VC、VF、.NET、Delphi、C++ Builder、PowerBuilder等开发工具。</span></p>
<p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Symbol"><img height="11" alt="*" src="file:///C:/DOCUME~1/IBMUSE~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-family: 宋体">Cell </span></strong><strong><span style="font-family: 宋体">插件适用于开发B/S结构的网络报表程序</span></strong></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">1、&nbsp;</span><span style="font-family: 宋体">具备Cell组件的所有特色功能，在浏览器中提供报表的显示和打印(非IE的打印)；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">2、&nbsp;</span><span style="font-family: 宋体">网络报表界面美观，大大改善了浏览器中报表的输出效果；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">3、&nbsp;</span><span style="font-family: 宋体">带有国际化数字签名，让用户使用的更安全、更放心；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">4、&nbsp;</span><span style="font-family: 宋体">可将报表文件另存为华表文件或者Excel文件，从而可以进行进一步加工；</span></p>
<p style="margin-left: 18pt; text-indent: -18pt; tab-stops: list 18.0pt"><span style="font-family: 宋体">5、&nbsp;</span><span style="font-family: 宋体">支持ASP、ASP.Net、JSP、VBScript、JavaScript等语言开发。</span></p>
&nbsp;
<div align="center"><br />
<table style="border-right: medium none; border-top: medium none; margin-left: -13.5pt; border-left: medium none; width: 431.2pt; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="575" border="1">
    <thead>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><strong><span style="font-size: 12pt; font-family: 宋体">特征</span></strong></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" width="461">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><strong><span style="font-size: 12pt; font-family: 宋体">功能明细</span></strong></p>
            </td>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">总体印象</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="461">
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">1</span><span style="font-size: 10pt; font-family: 宋体">、表尺寸&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8、拖放</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、与Excel拖放兼容性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9、输入控制</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、单元内编辑&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10、多选/整行选择</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">4</span><span style="font-size: 10pt; font-family: 宋体">、集成图表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11、单元公式</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">5</span><span style="font-size: 10pt; font-family: 宋体">、中文环境&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12、单元内容字符数限制</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">6</span><span style="font-size: 10pt; font-family: 宋体">、已有对话框数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 13、自动拖拽填充</span></p>
            <p style="tab-stops: list 39.0pt left 147.6pt"><span style="font-size: 10pt; color: black; font-family: 宋体">7</span><span style="font-size: 10pt; color: black; font-family: 宋体">、Java</span><span style="font-size: 10pt; color: black; font-family: 宋体">Script</span><span style="font-size: 10pt; color: black; font-family: 宋体">，VBScript全兼容接口</span></p>
            </td>
        </tr>
        <tr style="height: 53.25pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 53.25pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">单元风格</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 53.25pt" valign="top" width="461">
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">1</span><span style="font-size: 10pt; font-family: 宋体">、数值格式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、表格线</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、字体/颜色/风格&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、自动折行显示</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、日期、时间&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7、3D风格</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">4</span><span style="font-size: 10pt; font-family: 宋体">、货币，百分比&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8、内容超长时省略号提示</span></p>
            </td>
        </tr>
        <tr style="height: 160.8pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 160.8pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">单元格类型</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 160.8pt" valign="top" width="461">
            <p style="tab-stops: 147.6pt"><a name="return4_htm"><span style="font-size: 10pt; font-family: 宋体">1</span></a><span style="font-size: 10pt; font-family: 宋体">、下拉框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7、步长式滚卷钮</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、核选框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8、图表</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、按钮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9、条形码</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">4</span><span style="font-size: 10pt; font-family: 宋体">、图形&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10、单选钮</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">5</span><span style="font-size: 10pt; font-family: 宋体">、滚卷钮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11、下拉表格（*****）</span></p>
            <p style="tab-stops: 147.6pt"><span style="font-size: 10pt; font-family: 宋体">6</span><span style="font-size: 10pt; font-family: 宋体">、可隐藏式下拉钮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12、超级链接</span></p>
            <p style="tab-stops: 147.6pt"><strong><span style="font-weight: normal; font-size: 10pt; font-family: 宋体">注：</span></strong><span style="font-size: 10pt; font-family: 宋体">下拉表格</span></p>
            <p style="tab-stops: 147.6pt"><strong><span style="font-weight: normal; font-size: 10pt; font-family: 宋体">这是CELL中特有</span></strong><span style="font-size: 10pt; font-family: 宋体">的一种控制，来源于PowerBuilder中的DataWindow,但功能更加优秀。下拉表格打开以后，将出现另一张表，而此表的内容来源于母表的数据(可以取自任意区域，或取自不同的表页)。使用户选择数据更加方便</span></p>
            </td>
        </tr>
        <tr style="height: 18pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 18pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">图表</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 18pt" valign="top" width="461">
            <p><span style="font-size: 10pt; font-family: 宋体">1</span><span style="font-size: 10pt; font-family: 宋体">、根据表数据自动产生</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、单元数据改变时自动刷新图表</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、根据图表大小自动设置图表字体</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">4</span><span style="font-size: 10pt; font-family: 宋体">、相对引用单元格数据(与相对单元公式类似)</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">5</span><span style="font-size: 10pt; font-family: 宋体">、图表向导对话框</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">6</span><span style="font-size: 10pt; font-family: 宋体">、特有的X轴属性设定</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">7</span><span style="font-size: 10pt; font-family: 宋体">、根据数据智能设定数据轴</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">8</span><span style="font-size: 10pt; font-family: 宋体">、鼠标拖放及resize图表大小</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">9</span><span style="font-size: 10pt; font-family: 宋体">、多种图表类型</span></p>
            <p><span style="font-size: 10pt; color: black; font-family: 宋体">10</span><span style="font-size: 10pt; color: black; font-family: 宋体">、图表浮在窗体上</span></p>
            </td>
        </tr>
        <tr style="height: 186pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 186pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">公式及函数</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 186pt" valign="top" width="461">
            <p><span style="font-size: 10pt; font-family: 宋体">1</span><span style="font-size: 10pt; font-family: 宋体">、相对公式</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、求任意表达式值</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、编辑公式时立即求值</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">4</span><span style="font-size: 10pt; font-family: 宋体">、产生循环引用时给出产生循环引用公式的列表</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">5</span><span style="font-size: 10pt; font-family: 宋体">、有语法错误时光标停留在错误位置上</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">6</span><span style="font-size: 10pt; font-family: 宋体">、系统函数数量</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">7</span><span style="font-size: 10pt; font-family: 宋体">、自定义函数</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">8</span><span style="font-size: 10pt; font-family: 宋体">、加入自定义函数帮助</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">9</span><span style="font-size: 10pt; font-family: 宋体">、单元格数据类型</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">13</span><span style="font-size: 10pt; font-family: 宋体">、区域数据类型</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">14</span><span style="font-size: 10pt; font-family: 宋体">、支持逻辑表达式</span></p>
            <p><span style="font-size: 10pt; font-family: 宋体">15</span><span style="font-size: 10pt; font-family: 宋体">、公式单元彩色显示(打印时自动转为黑色)</span></p>
            </td>
        </tr>
        <tr style="height: 122.25pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 122.25pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">打印及预览</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 122.25pt" valign="top" width="461">
            <p style="tab-stops: 138.6pt"><span style="font-size: 10pt; font-family: 宋体">1</span><span style="font-size: 10pt; font-family: 宋体">、打印&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7、页眉页脚字体颜色字号</span></p>
            <p style="tab-stops: 138.6pt"><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、打印预览&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8、页边距</span></p>
            <p style="tab-stops: 138.6pt"><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、页眉页脚&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9、预览多页显示</span></p>
            <p style="tab-stops: 138.6pt"><span style="font-size: 10pt; font-family: 宋体">4</span><span style="font-size: 10pt; font-family: 宋体">、纸的方向&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10、双滚卷条及键盘控制预览页移动</span></p>
            <p style="tab-stops: 138.6pt"><span style="font-size: 10pt; font-family: 宋体">5</span><span style="font-size: 10pt; font-family: 宋体">、打印设置对话框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11、均可在浏览器中使用以上方法</span></p>
            <p style="tab-stops: 138.6pt"><span style="font-size: 10pt; font-family: 宋体">6</span><span style="font-size: 10pt; font-family: 宋体">、部分打印</span></p>
            <p style="tab-stops: 138.6pt"><span style="font-size: 10pt; font-family: 宋体">打印是商业软件不可缺少的一环，也是程序员感到很头疼的地方。Cell组件尤其重视打印，从上表看，Cell 提供的打印功能完全可与办公软件相媲美。</span></p>
            </td>
        </tr>
        <tr style="height: 51.75pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 51.75pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">输出文件格式</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 51.75pt" valign="top" width="461">
            <p style="tab-stops: 138.6pt 174.6pt"><span style="font-size: 10pt; font-family: 宋体">1</span><span style="font-size: 10pt; font-family: 宋体">、Excel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、HTML</span></p>
            <p style="tab-stops: 138.6pt 174.6pt"><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、PDF&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、CSV</span></p>
            <p style="tab-stops: 138.6pt 174.6pt"><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、TXT</span></p>
            </td>
        </tr>
        <tr style="height: 58.5pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 58.5pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">报表类型</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 58.5pt" valign="top" width="461">
            <p style="tab-stops: 138.6pt 174.6pt"><span style="font-size: 10pt; font-family: 宋体">1</span><span style="font-size: 10pt; font-family: 宋体">、子报表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5、多层表头</span></p>
            <p style="tab-stops: 138.6pt 174.6pt"><span style="font-size: 10pt; font-family: 宋体">2</span><span style="font-size: 10pt; font-family: 宋体">、多重嵌套报表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6、条件分组</span></p>
            <p style="tab-stops: 138.6pt 174.6pt"><span style="font-size: 10pt; font-family: 宋体">3</span><span style="font-size: 10pt; font-family: 宋体">、交叉报表&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7、Summary</span></p>
            <p style="tab-stops: 138.6pt 174.6pt"><span style="font-size: 10pt; font-family: 宋体">4</span><span style="font-size: 10pt; font-family: 宋体">、主从表</span></p>
            </td>
        </tr>
        <tr style="height: 18.75pt">
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; background: #e5e5e5; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 85.5pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 18.75pt" width="114">
            <p style="text-align: center; tab-stops: 36.0pt" align="center"><span style="font-family: 宋体">其他</span></p>
            </td>
            <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 345.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 18.75pt" valign="top" width="461">
            <p>1<span style="font-family: 宋体">、资源本地化</span></p>
            <p>2<span style="font-family: 宋体">、可在多语言环境下使用</span></p>
            <p>3<span style="font-family: 宋体">、中国式复杂报表制作</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://cdjavaclub.blogjava.net/aggbug/155878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soddabao/" target="_blank">冷面阎罗</a> 2007-10-25 15:27 <a href="http://www.blogjava.net/soddabao/archive/2007/10/25/155878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】【大家注意拉】上班族饮食十大“夺命”恶习</title><link>http://www.blogjava.net/soddabao/archive/2007/10/08/151069.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Mon, 08 Oct 2007 07:05:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2007/10/08/151069.html</guid><description><![CDATA[&nbsp;经常听周围的人说起：&#8220;怎么办呀，又查出来血脂异常了&#8221;，&#8220;某某血压偏高呀&#8221;，&#8220;最近又胖了怎么办，上次体检已经有脂肪肝了！&#8221;这些问题也许在你身上也发生过。其实这些问题的一个根源就是&#8220;吃&#8221;——<br />
　　<br />
　　下面小编给您罗列一下有关&#8220;吃&#8221;的十大健康杀手：<br />
　　<br />
　　<span style="font-weight: bold">夺命恶习1：进食速度过快</span><br />
　　<br />
　　夺命理由：加重肠胃负担，导致肥胖。很多办公室一族的午餐，都是在非常匆忙的状态下吃完的。进食速度过快，食物未得到充分咀嚼，不利于口中食物和唾液淀粉酶的初步消化，加重肠胃负担；咀嚼时间过短，迷走神经仍在过度兴奋之中，长此以往，容易因食欲亢进而肥胖。<br />
　　<br />
　　见招拆招：尽可能让牙齿和舌头动得慢一点，如果真的时间很紧张，那就牺牲一点打牌或者打瞌睡的工夫。<br />
　　<br />
　　大家都知道饮食不健康可能会引发可怕的病症，但往往忽略饭后的一些小习惯，殊不知，这些不起眼的生活陋习，很有可能成为你健康的致命&#8220;杀手&#8221;&#8230;&#8230;<br />
<br />
　　　<span style="font-weight: bold">夺命恶习2：不吃早餐</span><br />
　　<br />
　　夺命理由：严重伤胃，使你无法精力充沛地工作，而且还容易&#8220;显老&#8221;。<br />
　　<br />
　　德国埃朗根大学研究人员在对7000个男女对象的长期跟踪后发现，习惯不吃早餐的人占到了40%，而他们的寿命比其余60％的人平均缩短了2.5岁。而另一所大学在一次对80－90岁老年人的研究中发现，他们长寿的共同点之一是：每天吃一顿丰盛的早餐。<br />
　　<br />
　　见招拆招：早餐食物尽量做到可口、开胃；有足够的数量和较好的质量；体积小，热能高；制备省时省力。<br />
　　<br />
　　我们知道，不同食物在胃中停留时间的长短是不一样的，所引起的血糖反应也不相同。在正常情况下干稀混合食物可以在胃中停留4－5个小时，而流质食物由于体积大，刚吃完感觉很饱，但在胃中停留时间很短，其中营养成分来不及充分消化即被排出，上升的血糖水平也很快就低落下来，不能持久。因此，在食物的选择上一定要注意干稀搭配，荤素兼备。　　<br />
<br />
　　<span style="font-weight: bold">夺命恶习3：晚餐太丰盛</span><br />
　　<br />
　　夺命理由：傍晚时血液中胰岛素含量为一天中的高峰，胰岛素可使血糖转化成脂肪被凝结在血管壁上和腹壁上，晚餐吃得太丰盛，久而久之，人便肥胖起来。同时，持续时间通常较长的丰盛晚餐，还会破坏人体正常的生物钟，容易使人患上失眠。<br />
　　<br />
　　对于上班族来说，晚餐几乎成了一天的正餐。早餐要看&#8220;表&#8221;，午餐要看&#8220;活&#8221;，只有到了晚上才能真正放松下来稳坐在餐桌前，美美地大吃一顿。<br />
　　<br />
　　见招拆招：第一，晚餐要早吃。晚餐早吃可大大降低尿路结石病的发病率。第二，晚餐要素吃。晚餐一定要偏素，以富含碳水化合物的食物为主，尤其应多摄入一些新鲜蔬菜，尽量减少过多的蛋白质、脂肪类食物的摄入。第三，晚餐要少吃。一般要求晚餐所供给的热量以不超过全日膳食总热量的30％。<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="font-weight: bold">夺命恶习4：嗜饮咖啡</span><br />
　　<br />
　　夺命理由：<br />
　　<br />
　　1.降低受孕率。每天每人喝一杯咖啡，受孕率就有可能下降50%；<br />
　　<br />
　　2.容易患心脏病。咖啡中含有高浓度的咖啡因，可使心脏功能发生改变并可使血管中的胆固醇增高；<br />
　　<br />
　　3.降低工作效率。<br />
　　<br />
　　美国医学家研究发现，一个人每天喝5杯或更多咖啡，其患心脏病的几率比不喝者高两倍，且嗜咖啡年限越长，饮量越多，患心脏病的可能性越大。通过对 858位45－69岁首次患心肌梗死的人和同样人数从未患过心肌梗死的人的调查证明，每天喝5杯以上咖啡者患病的危险增加了70％。<br />
　　<br />
　　见招拆招：少喝。 　　<span style="font-weight: bold"><br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 夺命恶习5：食用酒精过量摄入</span><br />
　　<br />
　　夺命理由：大量或经常饮酒，会使肝脏发生酒精中毒而致发炎、肿大，影响生殖、泌尿系统。<br />
　　<br />
　　见招拆招：要喝就得先学会怎么喝———<br />
　　<br />
　　最佳品种酒有白酒、啤酒、果酒之分，从健康角度看，当以果酒之一的红葡萄酒为优。法国人少患心脏病即得益于此。据研究人员介绍，常饮红葡萄酒患心脏病的几率会降低一半。<br />
　　<br />
　　最佳时间每天下午两点以后饮酒较安全。因为上午几个小时，胃中分解酒精的酶-酒精脱氢酶浓度低，饮用等量的酒，较下午更易吸收，使血液中的酒精浓度升高。<br />
　　<br />
　　对肝、脑等器官造成较大伤害。此外，空腹、睡前、感冒或情绪激动时也不宜饮酒，尤其是白酒，以免心血管受害。<br />
　　<br />
　　最佳饮量一个体重60公斤的人每天允许摄入的酒精量应限制在60克以下。低于60公斤体重者应相应减少，最好掌握在45克左右。换算成各种成品酒应为：60度白酒50克、啤酒1公斤、威士忌250毫升。红葡萄酒虽有益健康，但也不可饮用过量，以每天2至3杯为佳。<br />
　　<br />
　　最佳佐菜从酒精的代谢规律看，当推高蛋白和含维生素多的食物。如新鲜蔬菜、鲜鱼、瘦肉、豆类、蛋类等。注意，切忌用咸鱼、香肠、腊肉下酒，因为此类熏腊食品含有大量色素与亚硝胺，与酒精发生反应，不仅伤肝，而且损害口腔与食道黏膜，甚至诱发癌症。<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="font-weight: bold">夺命恶习6：餐后吸烟</span><br />
　　<br />
　　夺命理由：使烟中的有害物质更易进入人体。<br />
　　<br />
　　饭后吸一支烟，中毒量大于平时吸十支烟的总和。因为人在吃饭以后，胃肠蠕动加强，血液循环加快，这时人体吸收烟雾的能力进入&#8220;最佳状态&#8221;，烟中的有毒物质比平时更容易进入人体，从而更加重了对人体健康的损害程度。<br />
　　<br />
　　见招拆招：全面禁烟。<br />
<br />
　　<span style="font-weight: bold">夺命恶习7：保温杯泡茶</span><br />
　　<br />
　　夺命理由：破坏维生素，大量渗出鞣酸和茶碱。<br />
　　<br />
　　茶叶中含有大量的鞣酸、茶碱、茶香油和多种维生素，用80℃左右的水冲泡比较适宜，如果用保温杯长时间把茶叶浸泡在高温的水中，就如同用微水煎煮一样，会使茶叶中的维生素全遭破坏，茶香油大量挥发，鞣酸、茶碱大量渗出。这样不仅降低了茶叶的营养价值，减少了茶香，还使有害物质增多。<br />
　　<br />
　　见招拆招：换杯子。<br />
<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="font-weight: bold">夺命恶习8：宴席不离生食</span><br />
　　<br />
　　夺命理由：导致各种寄生虫病。<br />
　　<br />
　　三文鱼、象拔蚌、鲈鱼、乌鱼、生鱼片、蛇、龟、蟹等办公室一族商务宴请时的首选食物中，存在寄生虫和致病菌的几率很高，再加上厨师们为了追求味道的鲜美，烹调往往不够充分，很容易让你在大快朵颐之时，病从口入。<br />
　　<br />
　　见招拆招：生菜、生汁中的活性物质与人体接近，可使白血球处于正常状态，还能使因吃熟食而损伤的免疫机能得以恢复。考虑到这些好处，先练好你的肠胃吧。毕竟，吃生食也有吃生食的讲究——<br />
　　<br />
　　1.每天饮用新鲜蔬菜汁和果汁。2.将新鲜蔬菜凉拌，可酌量加醋，少放盐。<br />
　　<br />
　　3.人是依靠吃熟食生活而维持生命活动的，先吃水果等生食，然后再吃熟食，不会出现白血球增高的现象。<br />
　　<br />
　　4.不吃加工食品，如罐头以及添加了防腐剂、色素、化工原料等加工剂的食品。<br />
<br />
　　<span style="font-weight: bold">夺命恶习9：水果当主食</span><br />
　　<br />
　　夺命理由：造成人体缺乏蛋白质等物质，营养失衡，甚至引发疾病。<br />
　　<br />
　　很多办公室一族由于长期静坐的工作方式而造成的消化不畅、血脂增高、血管硬化等疾病，确实需要水果中的营养物质来化解。但是，水果不能当主食。因为水果中虽然含多种维生素和糖分，却缺少人体需要的蛋白质和某些微量元素。<br />
　　<br />
　　见招拆招：先上网看看你的体质适合吃什么不能吃什么。<br />
　　<br />
　　<span style="font-weight: bold">夺命恶习10：饮水不足</span><br />
　　<br />
　　夺命理由：导致脑老化；诱发脑血管及心血管疾病；影响肾脏代谢功能。<br />
　　<br />
　　办公室一族在工作中，由于工作时精神高度集中，很容易忘记喝水，造成体内水分补给不足。体内水分减少，血液浓缩及黏稠度增大，容易导致血栓形成，诱发脑血管及心血管疾病，还会影响肾脏代谢的功能。<br />
　　<br />
　　见招拆招：多喝水，勤上洗手间；但要注意，对于部分大肠代谢功能差的朋友，最好在感到口渴的时候再去喝水，以免造成体内水代谢进一步紊乱。<br />
<img src ="http://cdjavaclub.blogjava.net/aggbug/151069.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soddabao/" target="_blank">冷面阎罗</a> 2007-10-08 15:05 <a href="http://www.blogjava.net/soddabao/archive/2007/10/08/151069.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Weblogic-Eclipse Plugin启动weblogic出现的错误</title><link>http://www.blogjava.net/soddabao/archive/2007/09/27/148668.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Thu, 27 Sep 2007 05:28:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2007/09/27/148668.html</guid><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置Weblogic-Eclipse Plugin插件后，启动weblogic，出现如下错误<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">***************************************************************************</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />The&nbsp;WebLogic&nbsp;Server&nbsp;did&nbsp;not&nbsp;start&nbsp;up&nbsp;properly.<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />weblogic.common.internal.VersioningError:&nbsp;Incompatible&nbsp;service&nbsp;packs&nbsp;in&nbsp;CLASSPATH:&nbsp;(BEA&nbsp;Systems,&nbsp;WebLogic&nbsp;Server&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">&nbsp;SP3&nbsp;&nbsp;Tue&nbsp;Jun&nbsp;</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">23</span><span style="color: #000000">:</span><span style="color: #000000">11</span><span style="color: #000000">:</span><span style="color: #000000">19</span><span style="color: #000000">&nbsp;PDT&nbsp;</span><span style="color: #000000">2004</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">404973</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">.</span><span style="color: #000000">3.0</span><span style="color: #000000">)&nbsp;not&nbsp;compatible&nbsp;with&nbsp;(BEA&nbsp;Systems,&nbsp;WebLogic&nbsp;Server&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">&nbsp;SP4&nbsp;&nbsp;Mon&nbsp;Nov&nbsp;</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">:</span><span style="color: #000000">21</span><span style="color: #000000">:</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;PST&nbsp;</span><span style="color: #000000">2004</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">471647</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">.</span><span style="color: #000000">4.0</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.common.internal.VersionInfo.verifyPackages(VersionInfo.java:</span><span style="color: #000000">183</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.common.internal.VersionInfo.</span><span style="color: #000000">&lt;</span><span style="color: #000000">init</span><span style="color: #000000">&gt;</span><span style="color: #000000">(VersionInfo.java:</span><span style="color: #000000">65</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.common.internal.VersionInfo.initialize(VersionInfo.java:</span><span style="color: #000000">127</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.common.internal.VersionInfo.theOne(VersionInfo.java:</span><span style="color: #000000">98</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.version.getPLInfo(version.java:</span><span style="color: #000000">57</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.t3.srvr.T3Srvr.checkAccess(T3Srvr.java:</span><span style="color: #000000">523</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.t3.srvr.T3Srvr.initializeHere(T3Srvr.java:</span><span style="color: #000000">716</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.t3.srvr.T3Srvr.initialize(T3Srvr.java:</span><span style="color: #000000">670</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:</span><span style="color: #000000">344</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;weblogic.Server.main(Server.java:</span><span style="color: #000000">32</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />Reason:&nbsp;Incompatible&nbsp;service&nbsp;packs&nbsp;in&nbsp;CLASSPATH:&nbsp;(BEA&nbsp;Systems,&nbsp;WebLogic&nbsp;Server&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">&nbsp;SP3&nbsp;&nbsp;Tue&nbsp;Jun&nbsp;</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">23</span><span style="color: #000000">:</span><span style="color: #000000">11</span><span style="color: #000000">:</span><span style="color: #000000">19</span><span style="color: #000000">&nbsp;PDT&nbsp;</span><span style="color: #000000">2004</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">404973</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">.</span><span style="color: #000000">3.0</span><span style="color: #000000">)&nbsp;not&nbsp;compatible&nbsp;with&nbsp;(BEA&nbsp;Systems,&nbsp;WebLogic&nbsp;Server&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">&nbsp;SP4&nbsp;&nbsp;Mon&nbsp;Nov&nbsp;</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">16</span><span style="color: #000000">:</span><span style="color: #000000">21</span><span style="color: #000000">:</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;PST&nbsp;</span><span style="color: #000000">2004</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">471647</span><span style="color: #000000">&nbsp;,&nbsp;</span><span style="color: #000000">8.1</span><span style="color: #000000">.</span><span style="color: #000000">4.0</span><span style="color: #000000">)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">***************************************************************************</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 出现错误的原因是还是jar冲突，这点我觉得weblogic很不地道，我之前就出现n此了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a id="viewpost1_TitleUrl" href="http://www.blogjava.net/soddabao/archive/2007/09/13/144749.html">webservice8.1中部署axis webservice</a>&nbsp;： http://www.blogjava.net/soddabao/archive/2007/09/13/144749.html<br />
&nbsp;&nbsp;&nbsp; <a id="viewpost1_TitleUrl" href="http://www.blogjava.net/soddabao/archive/2006/11/24/83134.html">weblogic与axis之间向冲突</a> ：<br />
http://www.blogjava.net/soddabao/archive/2006/11/24/83134.html<br />
&nbsp;&nbsp;&nbsp;&nbsp; 这种问题的解决方法：window-preferences-weblogic-project把你的工程删掉，重启服务就ok。
<img src ="http://cdjavaclub.blogjava.net/aggbug/148668.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soddabao/" target="_blank">冷面阎罗</a> 2007-09-27 13:28 <a href="http://www.blogjava.net/soddabao/archive/2007/09/27/148668.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>反编译工具jad简单用法</title><link>http://www.blogjava.net/soddabao/archive/2007/09/26/148305.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Wed, 26 Sep 2007 05:32:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2007/09/26/148305.html</guid><description><![CDATA[<font color="#333333">反编译工具jad简单用法 <br />
以下假设jad.exe在c:\java目录下 <br />
一、基本用法 <br />
Usage:&nbsp;&nbsp;&nbsp;&nbsp;jad&nbsp;[option(s)]&nbsp;&lt;filename(s)&gt; <br />
直接输入类文件名，且支持通配符，如下所示。 <br />
c:\java\&gt;jad&nbsp;example1.class <br />
c:\java\&gt;jad&nbsp;*.class <br />
结果是将example1.class反编译为example1.jad。将example1.jad改为example1.java即得源文件。 <br />
<br />
</font>
<table width="676" border="0">
    <tbody>
        <tr>
            <td width="307"><font color="#333333">二、Option&nbsp;-o <br />
            不提示，覆盖源文件 <br />
            三、Option&nbsp;-s <br />
            c:\java\&gt;jad&nbsp;-sjava&nbsp;example1.class <br />
            反编译结果以.java为扩展名。 <br />
            <br />
            四、Option&nbsp;-p <br />
            将反编译结果输出到屏幕 <br />
            c:\java\&gt;jad&nbsp;-p&nbsp;example1.class <br />
            将反编译结果重定向到文件 <br />
            c:\java\&gt;jad&nbsp;-p&nbsp;example1.class&gt;example1.java <br />
            <br />
            五、Option&nbsp;-d <br />
            指定反编译的输出文件目录 <br />
            c:\java\&gt;jad&nbsp;-o&nbsp;-dtest&nbsp;-sjava&nbsp;*.class</font></td>
        </tr>
    </tbody>
</table>
<br />
<strong>命令行选择的列表</strong><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 用JVM字节格式来注解输出<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -af&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 同 -a,但是注解的时候用全名称<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -clear&nbsp;&nbsp;&nbsp; - 清除所有的前缀<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 输出多于的括号 (e.g., if(a) { b(); }, default: no)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -d &lt;dir&gt; - 指定输出文件的文件目录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -dead&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -试图反编译代码的dead 部分(default: no)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -disass&nbsp;&nbsp; - 不用用字节码的方式反编译 (no JAVA source generated)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 输出整个的名字,无论是类还是方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -ff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -输出类的成员在方法之前 (default: after methods)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 输出所有的变量的缺省的最初值<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -l&lt;num&gt;&nbsp;&nbsp;&nbsp; - 将strings分割成指定数目的块的字符 (default: no)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -lnc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 将输出文件用行号来注解 (default: no)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 分割strings用新行字符 newline character (default: no)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -nodos&nbsp;&nbsp;&nbsp; -不要去检查class文件是否以dos方式写 (CR before NL, default: check)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -nocast&nbsp;&nbsp; - 不要生成辅助文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -nocode&nbsp;&nbsp;&nbsp; -不要生成方法的源代码 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -noconv&nbsp;&nbsp;&nbsp; - 不要转换java的定义符 (default: do)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -noctor&nbsp;&nbsp; - 不允许空的构造器存在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -noinner&nbsp;&nbsp; -关掉对内部类的支持 (default: turn on)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -nolvt&nbsp;&nbsp;&nbsp; - 忽略局部变量的表信息<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -nonlb&nbsp;&nbsp;&nbsp;&nbsp; - 不要输出一个新行在打开一个括号之前 (default: do)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -o&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 无需确认直接覆盖输出 (default: no)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - 发送反编译代码到标准输出 STDOUT (e.g., for piping) 
<img src ="http://cdjavaclub.blogjava.net/aggbug/148305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/soddabao/" target="_blank">冷面阎罗</a> 2007-09-26 13:32 <a href="http://www.blogjava.net/soddabao/archive/2007/09/26/148305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象分析与设计面向对象分析与设计OOAD</title><link>http://www.blogjava.net/soddabao/archive/2007/09/25/148056.html</link><dc:creator>冷面阎罗</dc:creator><author>冷面阎罗</author><pubDate>Tue, 25 Sep 2007 06:40:00 GMT</pubDate><guid>http://www.blogjava.net/soddabao/archive/2007/09/25/148056.html</guid><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OOAD（Object Orient Analysis &amp; Design，面向对象的分析和设计，面向对象分析与设计）是现代软件企业广为采用的一项有效技术。OOAD方法要求在设计中要映射现实世界中指定问题域中的对象和实体，例如：顾客、汽车和销售人员等。这就需要设计要尽可能地接近现实世界，即以最自然的方式表述实体。所以面向对象技术的优点即为能够构建与现实世界相对应的问题模型，并保持他们的结构、关系和行为为模式。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大师说："没有不变的需求，世上的软件都改动过3次以上，唯一一个只改动过两次的软件的拥有者已经死了，死在去修改需求的路上。" <br />
　　目前众多的软件项目有什么样的问题呢？早些时候上ERP的企业在企业发展的时候发现原有的ERP系统需要改进，可是要改进或者是更改现有的ERP系统，唯一的方法就是重新开发一个ERP系统。这对于企业来说是笔不小的支出。此时，落后的信息系统就成为制约企业发展的重要因素。是什么原因造成了这种情况呢？主要的因素是传统的系统分析是在假定需求不变的情况下进行的，这样可以把企业的资源配置到最优的程度。可是在现代瞬息万变的社会，一个企业固守旧有模式，势必会在竞争中处于劣势（因此现在也出现了"组件化"的ERP，这是题外话）。既然企业的需求是变化的、不稳定的，那么以变化的需求为基础建立起来的企业信息系统当然也就不稳定了。这时候，有个问题就产生了，前面我们已经说过，需求是项目的根本，既然需求都是不稳定的，那么何以建立起稳定的企业信息系统呢？ </p>
<p>　　要回答这个问题，首先要比较面向过程和面向对象的开发方法的差别，传统的面向过程的开发方法在前20年大行其道，为中国企业的信息化建设立下了汗马功劳。之所以称为面向过程，是因为开发的焦点集中于过程，开发者集中于以函数为核心的过程，例如前些年很多人试图编写一些通用转账函数来满足银行的需求。面向过程的开发语言包括：Cobol、Pascal、C及C的变形语言。面向对象的概念是在近10年才进入中国的，而它的思想至今也没有真正意义上得到普及。简单的说，面向对象就是面向世界，世界上的任何事物都是对象，因此面向对象是很自然的思想，是符合我们的思维习惯的。面向对象的语言包括了Smalltalk、C++、Java，还有Object <br />
Pascal，以及刚刚诞生的C#。 <br />
　　需求是不稳定的，那么需求之中是不是没有稳定的东西呢？有的，就是对象。世界都是由对象组成的，而对象都是持久的，例如动物、植物已经有相当长的时间。虽然对象也在变化，动物，植物也在不断的进化。但对象在一个相当长的时期内都存在，动植物的存在时间肯定比任何一家企业长久。面向对象的开发方法的精髓就是从企业的不稳定需求中分析出企业的稳定对象，以企业对象为基础来组织需求、构架系统。这样得出的系统就会比传统的系统要稳定得多，因为企业的模式一旦变化，只需要将稳定的企业对象重新组织就行了。这种开发的方法就被称为OOAD（Object <br />
Orient Analysis &amp; Design 面向对象的分析和设计），而分析出的企业对象就被称为Common Business Object。<br />
围棋与OOAD的几个相似点：<br />
活棋与对象<br />
　　一块活棋至少有两个眼位，一个对象或类（有用的）至少要有一个属性和一个方法。眼位表明了这块棋存在的理由，属性和职责同样表明了一个对象存在的理由。<br />
简单与复杂<br />
　　围棋构成简单，一黑一白，以简单构建复杂，与对象方法的理念相同。<br />
棋盘与边界<br />
　　围棋的棋盘有边界，系统有系统边界。<br />
定式与模式<br />
　　下围棋有定式，面向对象方法有分析模式和设计模式。都是个中高手们长期实践的经验结果。<br />
　　当然更主要的相似之处，应该在方法和过程上。围棋谁都会下，不就是在棋盘上圈地，看谁圈的多吗。但是高手与低手的水平却有天壤之别。例如：<br />
1、 围棋忌讳把棋下成"愚形"，就是一大块棋坨在一起，行棋效率不高，对于对象就是紧耦合，一个复杂的对象负担太重，同样效率不高；<br />
2、 <br />
一个围棋高手能够灵活运用各种定式和"手筋"，看到两颗子，就能推测以后的种种演化，一个面向对象的设计高手可以灵活地运用各种设计模式，画几张图就能描绘未来的宏伟系统；<br />
3、 围棋有"金角银边草肚皮"的说法，在系统分析中首先根据系统边界来确定系统的主要功能和外部接口也是最有效的做法，俗称"用例驱动"。<br />
4、 围棋有"大场"，强调大局观，系统分析也要求分析人员把握全局，从错综复杂的业务逻辑当中洞察最主要的矛盾。<br />
　　整个行棋的过程都是演进的、逐步精化的，每一阶段没有明显的区分。针对主要需求的设计可以首先完成，阶段性设计成果一旦确定，就可以转移到下一个"大场"。符合面向对象方法的"统一过程"理论。<br />
开局与需求分析<br />
　　下棋的两个人好比一个是分析师，一个是用户，开始谁也不知道谁想干什么，通过一问一答的方式明确需求。高手的对话只需要寥寥几子就知道对方的路数，有经验的分析师几个回合就对系统了然在胸。<br />
布局与架构设计<br />
　　至于布局选择"中国流"还是"韩国流"，就相当于系统架构是DotNET还是J2EE，都是根据用户具体的需求和设计师的临场判断做出的。<br />
中盘与详细设计<br />
　　根据架构展开对象和类的设计，棋盘上渐渐浮现一块块活棋的模样。经过几轮不断的"精化"和"转换"，大局已定。至于关子，就是编码阶段，交给程序员去做吧。<br />
　　最后，如果你能够从棋盘上看出一幅对象交