﻿<?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-辰o(^o^)o的专栏[除非注释原创，其它文章基本来源于网络]-文章分类-Other</title><link>http://www.blogjava.net/jackybu/category/450.html</link><description>&lt;a href="http://www.fastonlineusers.com"&gt;&lt;b&gt;&lt;font color=red&gt;共有&lt;script src=http://fastonlineusers.com/online.php?d=jackybu.blogjava.net&gt;&lt;/script&gt;人在同时阅读此Blog&lt;/font&gt;&lt;/b&gt;&lt;/a&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:05:36 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:05:36 GMT</pubDate><ttl>60</ttl><item><title>Windows中安装Apache2和PHP4权威指南</title><link>http://www.blogjava.net/jackybu/articles/10906.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Wed, 24 Aug 2005 05:02:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/10906.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/10906.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/10906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/10906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/10906.html</trackback:ping><description><![CDATA[Apache 2和PHP是创建交互式网站的流行方案，而且成本很低。在Windows中安装Apache 2是一件轻而易举的事情，但要使PHP 4与Apache 2配合无间地运行，就需要一定的技巧。 <BR><BR>　　在PHP 4.3手册的Windows安装小节，没有解释如何让PHP与Apache 2配合使用，而有关Apache 2安装的小节缺失了你需要的大量信息。在网上公布的其他安装指南中，也包含了不少错误，使一些安装人员只好不断试验和犯错。例如，有些人甚至将PHP的DLL替换成其他PHP版本的DLL。OK，为了节省你的宝贵时间，我们准备了这篇最权威的指南文章，帮你扫除一切烦恼。 <BR><BR>　　<B>使用正确版本的Windows </B><BR><BR>　　首先要说一说兼容性：Apache 2不能在Windows 95上运行；在Windows 98上勉强能够运行，但不能作为服务使用。从4.3版本开始，PHP也不再支持Windows 95。所以，你的Windows操作系统必须是Windows NT、2000或者XP。 <BR><BR>　　Apache 2：源码还是二进制? <BR><BR>　　如果你有Visual C++ 5.0或更高的版本，或者安装了Microsoft Visual Studio，那么虽然可以根据源码来生成Apache，但请绝对不要这样做。在Visual Studio IDE中，Windows下的生成过程非常复杂。即使从命令行编译，也绝对不是一件易事。所以，除非你喜欢创建makefile，否则最好获得一份Windows Installer二进制发行包，也就是一个.msi文件。等你对Apache有了足够多的认识，知道自己要进行哪些定制操作时，才可考虑亲手生成（编译）Apache。 <BR><BR>　　如果已经安装好并正在运行老版本的Apache，首先要停止它，卸载它，然后才能开始安装新服务器。多个版本的Apache 2不能共存。 <BR><BR>　　双击Apache 2 .msi文件。同意许可协议后，正确设置Network Domain和Server Name（如果不打算将Apache安装到远程计算机，那么设置localhost就可以了），在Administrator’s Email Address区域输入你的电子邮件地址，保持端口80/服务选项单选钮的选中状态。在下一个对话框中如果选择Typical安装，可以快速地获得一个能实际工作的服务器环境。 <BR><BR>　　安装提示 <BR><BR>　　建议将默认安装目录从C:\Program Files\Apache Group变成C:\Apache或者符合8.3文件名格式的其他名称。这样一来，以后每次输入Apache安装路径时，都不必为其添加引号。 <BR><BR>　　稍候片刻，安装向导会告诉你Apache 2安装成功。接下来惟一要做的事情就是进行测试，请打开浏览器并访问localhost，这样应该看到默认的Apache 2主页。 <BR><BR>　　然后可以删除主Web服务器目录中的所有示例文件，它们默认位于C:\InstallDirectory\Apache\Apache2\htdocs中。如果有一个现成的主页Index.html，请把它拷贝到这里；另外，也可以马上创建一个空白主页。对于未初始化的HTML，以下代码就可以了： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>＜html＞ <BR>＜head＞title=default server page＜/head＞ <BR>＜body＞Default server page＜/body＞ <BR>＜/html＞ </TD></TR></TBODY></TABLE><BR>　　让Apache 2为PHP做好准备 <BR><BR>　　从现在开始，你需要较多地以人工方式进行安装，不能简单地点击和选择几个选项了事。尽快习惯它吧，这才是Apache的方式。你需要编辑文件来设置不同的配置选项；如果操作不当，你所做的修改就会妨碍Apache的正确加载。如果设置引发错误，那么错误可能被记录到Apache 2错误日志中（默认为C:\InstallDir\Apache2\Logs\Error.log）。但能够像这样进行记录的毕竟是少数，大多数错误只会记录到Windows事件日志中（开始| 设置| 控制面板| 管理工具| 事件查看器）。 <BR><BR>　　令人遗憾的是，在你对安装设置进行调试时，Windows事件日志并不是一个方便的工具。更好的做法是在命令行窗口中测试Apache服务器的加载，这样能立即看到错误报告。所以，在完成了我即将讨论的配置修改后，请打开一个命令行窗口，切换到Apache的binary目录（C:\InstallDir\Apache2\bin），在那里启动Apache。 <BR><BR>　　Apache配置文件是C:\Apache\Apache2\Conf\Httpd.conf，可用任何文本编辑器来编辑。查找DirectoryIndex，定位到下面这一行： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>DirectoryIndex index.html index.html.var # index.php </TD></TR></TBODY></TABLE><BR>　　为了允许Apache处理PHP页，要删除注释字符（#），变成： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>DirectoryIndex index.html index.html.var index.php </TD></TR></TBODY></TABLE><BR>　　还要允许在任何目录中使用.htaccess文件，所以请在配置文件中查找AllowOverride，把这个设置从None改成All。保存了所做的改动后，可继续在文本编辑器中打开该文件，因为等会儿安装PHP时，要再次编辑这个文件。 <BR><BR>　　<B>安装PHP </B><BR><BR>　　虽然可以下载PHP的源码，但和Apache 2一样，最好直接使用二进制发行包。Apache 2可采取2种方式来运行PHP程序：通过一个CGI接口来运行（外部调用Php.exe），或者使用PHP的DLL文件在Apache的内部运行。后一种方式的速度较快。所以，针对每个版本的PHP，都会提供2个Windows二进制发行包。较小的是.msi包，它会安装CGI可执行程序Php.exe，但其中拿掉了通过Apache DLL来运行PHP脚本所需的模块。较大的.zip包则包含了所有这些东西，你可以从snaps.php.net网站的Win32区域下载它们。文件下载完毕后，把它解压到C:\Php（保留文件夹名称）。除非你有绝对的把握，请同时下载PHP手册，它有多种语言的版本可供选择。 <BR><BR>　　<B>配置Apache 2来运行PHP4 </B><BR><BR>　　现在来到了最有趣的部分：将Apache和PHP完美地配合起来。首先，请将C:\Php\Dlls目录中的所有DLL文件拷贝到Windows的System目录（%windir%\System）。接着，在Apache的配置文件（Httpd.conf）中查找包含了大量AddType命令那个小节，自己添加下面这一行： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>AddType application/x-httpd-php .php</TD></TR></TBODY></TABLE><BR>　　将C:\Php\Php.ini-recommended拷贝到Windows目录（%windir%），把它重命名为Php.ini，并用文本编辑器打开它。编辑其中对doc_root、extension_dir和session.save_path进行设置的3行，使其和下面展示的一致，注意要把InstallDir替换成你的Apache 2的安装目录的名称。 <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>doc_root = c:\apache\apache2\htdocs <BR>extension_dir = c:\php\extensions <BR>session.save_path = c:/temp </TD></TR></TBODY></TABLE><BR>　　在session.save_path中使用正斜杠和反斜杠都是允许的。PHP手册声称这些路径参数需要在最后添加一个反斜杠，但这个说法是不正确的。在PHP 4.3中不需要这样做。另外，如果C:\Temp不存在，请自己创建它。 <BR><BR>　　下一步是允许Apache将PHP程序作为模块来运行，这要求你采取2个步骤。首先，将C:\Php\Php4ts.dll拷贝到Windows的系统文件夹（%windir%\System）。在Httpd.conf中找到LoadModule小节，自己添加下面这一行： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>LoadModule php4_module “c:/php/php4apache2.dll” </TD></TR></TBODY></TABLE><BR>　　如果你出于某种原因而需要在CGI模式中运行PHP程序（使用Php.exe），请将上面这一行变成注释，并在Httpd.conf中添加下面这些行： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>ScriptAlias /php/ "c:/php/" <BR>Action application/x-httpd-php "/php/php.exe" </TD></TR></TBODY></TABLE><BR>　　一切都搞定了吗? <BR><BR>　　保存所做的更改后，你需要亲自去证明两点，才能确保Apache 2/PHP 4成为一对完美的搭档：Apache能正常加载吗，它能正确处理PHP页吗？ <BR><BR>　　要知道Apache是否能够正常加载，在你已经打开的命令行窗口中输入以下命令： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>apache –k start </TD></TR></TBODY></TABLE><BR>　　另外，如果Apache正在运行，可用以下命令重新启动它： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>apache –k restart </TD></TR></TBODY></TABLE><BR>　　从命令行启动Apache的好处在于，如果出现一个错误，Apache会立即报告它。你可能遇到的最常见的问题在于，Apache可能由于某种原因而无法加载Php4apache2.dll。如果Apache报告了这个错误，请按前面所述的步骤重新操作一遍，确保一切都没有错误。 <BR><BR>　　要知道Apache是否能正确地处理PHP页，请用你的文本编辑器创建一个简单的PHP页，命名为Phptest.php，其中只包含下面这一行： <BR><BR>
<TABLE borderColor=#ffcc66 width="90%" align=center bgColor=#dadacf border=1>
<TBODY>
<TR>
<TD>＜? phpinfo(); ?＞ </TD></TR></TBODY></TABLE><BR>　　将文件保存到主Web服务器目录（C:\InstallDirectory\Apache\Apache2\Htdocs），用浏览器访问http://localhost/phptest.php。如果一切正常，应该看到一个含有PHP徽标的网页，其中包含大量设置和其他信息。要知道PHP当前是通过CGI来运行，还是在Apache内部运行，可以检查一下环境变量orig_script_name。如果PHP通过CGI来运行，这个变量的值就是/Php/Php.exe。如果Apache将PHP脚本作为模块来运行，该变量的值应该是/Phptest.php。 <BR><img src ="http://www.blogjava.net/jackybu/aggbug/10906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-08-24 13:02 <a href="http://www.blogjava.net/jackybu/articles/10906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss的简单配置</title><link>http://www.blogjava.net/jackybu/articles/9718.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Wed, 10 Aug 2005 06:35:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/9718.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/9718.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/9718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/9718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/9718.html</trackback:ping><description><![CDATA[<FONT size=2>在使用JBoss首先要确保你的机子成功配置JDK和JAVA_HOME<BR><BR>然后启动D:\jboss-4.0.0RC1\bin下的run.bat<BR><BR>等Jboss启动起来以后在浏览器地址栏里输入</FONT><A href="http://localhost:8080/" target=_blank><FONT size=2>http://localhost:8080</FONT></A><BR><FONT size=2>就可以进入Jboss的控制台。<BR><BR>你的web应用放在D:\jboss-4.0.0RC1\server下的任意一个目录下minimal,all或者default下都可以<BR><BR>JBoss 解压后，在 jboss路径\docs\examples\jca 目录下有各种数据库配置文件的样本。<BR>选择一个你合适的，copy 到 server\all\deploy 或 server\default\deploy 下,然后修改其中的如下内容：<BR>将 数据源的 jndi-name 修改为你在应用程序中需引用的“数据源名称”<BR>填写 合适的驱动程序类名<BR>填写 正确的连接 url (connection-url)<BR>填写 正确的 连接帐号/密码<BR>在样本配置文件中，上述内容都有缺省值，找到对应的位置，修改即可。<BR>另外请注意：该配置文件可"随意"命名为 XXXX-ds.xml,该命名的后辍请"确保"为"-ds.xml"<BR><BR>假如你的web应用部署在default下，你的8080端口也被占用了，你可以修改掉<BR>D:\jboss-4.0.0RC1\server\default\deploy\jbossweb-tomcat50.sar<BR>目录下的server.xml文件里的8080端口改掉就可以了<BR></FONT><img src ="http://www.blogjava.net/jackybu/aggbug/9718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-08-10 14:35 <a href="http://www.blogjava.net/jackybu/articles/9718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IT从业人员必看的10个论坛</title><link>http://www.blogjava.net/jackybu/articles/3796.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Mon, 25 Apr 2005 14:27:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/3796.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/3796.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/3796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/3796.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/3796.html</trackback:ping><description><![CDATA[IT方面的论坛太多了，有综合，有专业，有行业，在各个论坛里混了几年，体会颇深，以前是论坛哪里人多，往哪里去，新浪论坛，网易是经常去的，人多啊，好几十万，去了以后才发现没有意思，没有共同的语言，于是逛专业论坛，行业论坛，终于找到了共同语言，总结一下论坛的经验：人不在多，有仙则灵，贴不在多，有精则行，逛了大半辈子，一个IT人发展方向一定要除了技术外，业务，理论，思想一个都不能少，于是我推荐如下这些论坛，或许真能帮助您，做论坛，都是赔本的买卖，不收费还帮助你学习，得向斑竹们致敬啊。 <BR>　　<BR>　　　　以下论坛排名不分先后，还有许多业界知名的论坛，主要有点偏门，这个不做概述，呵呵。 
<P><BR>　　　　IT营销管理类 <BR>　　<BR>　　　　<A href="http://www.topren.net/">http://www.topren.net/</A></P>
<P>　　<BR>　　　　适合人员：企业策划，CIO <BR>　　<BR>　　　　业界知名的知识站点“唐人社区”，信息化管理顾问可以去看看，人也很多，下载资料也不少，实质性内容需要进一步加强，我记得是非常专业的网站。 <BR>　　<BR>　　　　评价：不错，速度也还可以。 </P>
<P>　　<BR>　　　　IT技术开发综合类 <BR>　　<BR>　　　　<A href="http://community.csdn.net/">http://community.csdn.net/</A> <BR>　　<BR>　　　　适合人群：只适合软件开发者 <BR>　　<BR>　　　　技术开发最全面的论坛，里面可以遇到很多牛人，版面也很全，什么J2EE，.NET啊，该有的全上，在这里基本上可以提出任何问题，人气也是最旺的，不过一般提出的意见都有正方两面的，所以最终解决问题，还是靠自己。 <BR>　　<BR>　　　　评价：专业，很牛逼，就是速度慢。 <BR>　　<BR>　　　　<A href="http://www.itpub.net/">www.itpub.net</A> <BR>　　<BR>　　　　适合人群：数据库开发人员 <BR>　　<BR>　　　　数据库方面是非常著名的，牛人不少，不过，现在比较杂，什么都做，网络，操作系统，行业应用，到体育贴图，当然有些也不错，人气非常高，特别是灌水方面，^_*. <BR>　　<BR>　　　　评价：强，速度一般； <BR>　　<BR>　　　　<A href="http://bbs.chinaunix.net/forum/">http://bbs.chinaunix.net/forum/</A> <BR>　　<BR>　　　　适合人员：系统工程师 <BR>　　<BR>　　　　这里的特色就是操作系统方面在业界是最著名的，牛人不少，目前，在数据库，网络方面也颇有建树，当然灌水方面也不赖，呵呵，属于温柔性 <BR>　　<BR>　　　　评价：强，速度还可以 <BR>　　<BR>　　　　bbs.chinajavaworld.com/ <BR>　　<BR>　　　　适合人员：JAVA开发 <BR>　　<BR>　　　　JAVA方面非常综合的论坛了，牛人也很多，是一个难得的JAVA论坛，涉及你想象的关于JAVA目前任何技术。 <BR>　　<BR>　　　　评论：强，速度还可以。 <BR>　　<BR>　　　　<A href="http://www.huihoo.com/forum/">http://www.huihoo.com/forum/</A> <BR>　　<BR>　　　　适合人员：中间件开发者 <BR>　　<BR>　　　　人气不错，版面风格独特，在开源，中间件，工作流方面非常不错，问题讨论都非常深刻、也很专业。 <BR>　　<BR>　　　　评价：很好，速度一般； <BR>　　<BR>　　　　IT售前技术顾问综合类 <BR>　　<BR>　　　　<A href="http://www.sysvs.com/bbs">http://www.sysvs.com/bbs</A> <BR>　　<BR>　　　　适合人员：IT售前及技术顾问 <BR>　　<BR>　　　　业界知名的售前技术顾问论坛，比较新异的知识点，各个IT行业版快划分也比较好，也非常专业，绝对是我稀饭（喜欢）的风格，网站风格业内罕见，也有很多专业文章，没有地方灌水，厉害。 <BR>　　<BR>　　　　评价：很好，速度比较快 <BR>　　<BR>　　　　网络工程类 <BR>　　<BR>　　　　<A href="http://www.1000bbs.com/">www.1000bbs.com</A> <BR>　　<BR>　　　　适合人员：布线/网络工程师 <BR>　　<BR>　　　　人气很旺，特色是版面比较紧凑，综合布线这一块很权威，很窄很专，时间非常久了，颜色比较明快，就是太低端了， <BR>　　<BR>　　　　评价：不错，速度一般 <BR>　　<BR>　　　　<A href="http://www.sharecenter.net/">http://www.sharecenter.net/</A> <BR>　　<BR>　　　　适合人员：网络工程师 <BR>　　<BR>　　　　之所以我喜欢是这个网站很多做CISCO工程都知道，也是别人介绍我去的，时间非常久了，颜色比较暗谈，属于忧郁型。 <BR>　　<BR>　　　　评价：不错，速度也还可以 <BR>　　<BR>　　<BR>　　　　IT管理综合类 <BR>　　<BR>　　　　<A href="http://club.amteam.org/">http://club.amteam.org/</A> <BR>　　<BR>　　　　适合人群：大多数， <BR>　　<BR>　　　　评论类比较多，基本上在其他媒体上看到的评论，这里都会有，要想了解IT发展的情况，就来这里看看。 <BR>　　<BR>　　　　评价：很好，休闲工作都可以看。 </P><img src ="http://www.blogjava.net/jackybu/aggbug/3796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-04-25 22:27 <a href="http://www.blogjava.net/jackybu/articles/3796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通向高级程序员之路：论程序设计方法</title><link>http://www.blogjava.net/jackybu/articles/1789.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Mon, 07 Mar 2005 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1789.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1789.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1789.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1789.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1789.html</trackback:ping><description><![CDATA[<A href="http://tech.sina.com.cn/s/s/2005-01-13/1140503203.shtml">http://tech.sina.com.cn/s/s/2005-01-13/1140503203.shtml</A><img src ="http://www.blogjava.net/jackybu/aggbug/1789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-03-07 11:06 <a href="http://www.blogjava.net/jackybu/articles/1789.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个优秀IT专家的成长历程（转） </title><link>http://www.blogjava.net/jackybu/articles/1771.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Sun, 06 Mar 2005 10:31:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1771.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1771.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1771.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1771.html</trackback:ping><description><![CDATA[<FONT size=4>一个优秀it专家的成长历程 <BR>　　－献给所有的颓废或即将颓废的人们 <BR>　　（本文摘自网上） <BR><BR>　　成功的背后，有着许多不为人知的故事，而正是这些夹杂着泪水和汗水的过去，才成就了一个个走向成功的普通人——凌晨两点半，早已习惯了一个人坐在电脑前的我，望着屏幕，任思绪在暗夜的包容下静静流淌，时光仿佛又定格在三年多前的那一刻：“283分”。那是被中国万千学子称为“黑色七月”中的一天，下班回家的母亲从家门打开后说出的一个数字，虽然早知道自己不会考上大学，但如此的成绩也多少出乎自己的意料。母亲是在单位用电话查询得知高考分数的，面对众多的同事，她几乎不敢相信自己的耳朵。而同在一张办公桌的同事：她的女儿—也是市委书记的独生女，分数是610分。 <BR><BR>　　或许八十年代出生的我们身上肩负着太多的东西，父母将绝大多数的希望寄托在了这一代的身上，以至于忘记了他们所能承受的负荷，于是便有了代沟，有了反叛。而短短二十年间，神州大地又发生了太多翻天覆地的变化和对传统文化的冲击，这些前人所未能经历过的巨变真真切切的摆在了我们这一代的面前，没有休止，没有方向。我们摸索着、试探着、寻找着属于自己的道路，这期间的痛苦、欢乐、迷惘也只能由自己去体会，我们在一次次的变化中感受着，经历着，也成长着…… <BR><BR>　　从何谈起呢，过去十数年的经历像一幕电影，一幕尚在上映，没有结局的悲喜剧，时间将自己由一个懵憧无知的小男孩幻化为历经沧桑世事的时代青年，它的魔力仍未消退，蹲伏在某个角落，伺机改变着你的一切…… <BR><BR>　　七八岁时的我很好的继承了父亲的“愚孝”传统，在这个家族中，不善言谈，木讷呆板的我一直是亲戚们取笑的对象，奶奶也多少次对只会做事，不会说话的母亲说：你的儿子将来只能是讨饭的命，不会有任何出息。每一次，母亲都希望我能争口气，做出个样子给他们看看。可说归说，每年夏天，放学后的我都要遵从父亲的命令拎着两个大铁壶行走将近一里的路程给奶奶家打开水，冬天，每隔几天去背蜂窝煤，倒煤渣，这样的日子一直持续到高中毕业… <BR><BR>　　89年的中国正是各种“气功”风靡万千人群的时代，无数个所谓的“大师”打着“神功”，“特异功能”的幌子晃悠在各个“神坛”上，贪婪地接受着被他们蛊惑得神魂颠倒的人们送来的礼品，钱币以及所能送上的一切…… <BR><BR>　　家族自然也不能免俗，亲戚们虔诚的学着各种离奇的功法，期待着特异功能的出现。堂哥收藏了一米多厚的市场上有关各气功师和特异功能的书籍，被我照单全收。对知名气功师“了如指掌”，世界各地的神秘现象诸如“金字塔”，“百慕大”，“ufo”也是自己痴迷和研究的对象。并跟着家乡的一个赶气功潮的老中医像模像样的偷偷学起了他自称家传的“太极一元功”。 <BR>　　一练就是3年，其间也经历了气功潮的幻灭以及各地假气功师露出庐山真面目，被拘捕的消息，那时年少的我还很为他们鸣不平，这期间。仍然没有放弃对发明的热望，不过特异功能加上奇思妙想，可想而知当时我的脑子里尽是些什么东西。但是六年级时还是着实想出了一些有市场价值的发明，并告诉了当时还在成都科技大学读电子的表哥，记得其中一项是微型洗衣机，将洗衣机按比例缩小，专门用来洗小件衣服，最好用单片机控制各种功能（那时单片机还是高新科技，自己只是从一些专业期刊上看到过，似懂非懂的感觉能够用到洗衣机上），夏天时会很方便。遗憾的是他们对我的想法不屑一顾，自己有一种“心死”的感觉，对于发明的兴趣也由此压抑了两年。两年后，海尔出了“小神童”洗衣机，功能还是形态上与自己设想的洗衣机均毫无二致。 <BR><BR>　　迷迷糊糊的上了初一，却对做一名与世无争的隐士产生了极大的兴趣，梦想通过潜心的修炼来改变或者脱离这个世界，连日记中也尽是自创的厌世诗歌和散文，有一段时间还潜心钻研如何自杀，并设计了多种无痛死去的方式，（现在想来，还真要感谢当时没有走上这条路，否则就不会有现在的我了）连日常上课时的表现都显得很神秘。语文老师将我的日记交给班主任—虽然她很欣赏我的文章，班主任把我的母亲召到学校，很紧张的问她我的精神是不是有问题（这是母亲后来告诉我的j），而直到有一天在屋内的水泥地板躺着练功时，睡着了被母亲发现，不得不中止练了三年的伪气功。后来看了司马南所著的那本“神功内幕”后，才对所谓的特异功能彻底没了兴趣。 <BR><BR>　　初一下学期无意中发现一本母亲单位发的“创造学”，系统的阐述了各种创造发明的理论和实例，这本书对我的影响不亚于基督教徒手不释卷的“圣经”，曾被浇灭的热情再次死灰复燃，于是乎开始照猫画虎，在课堂上放任自己的思绪天马行空般驰聘在幻想乐园… <BR><BR>　　初中时便开始厌恶那些枯燥无味，陈旧落后的课程，面对着不断重复的考试，其中却没有一丝知识是自己感兴趣，愿意学习的。也想不出这些知识即使灌输到自己的脑子里对今后的发展会有何用？想想中国的英语教育，真正做到了从娃娃抓起，学了十几年下来，语法规章词汇倒是掌握了不少，可又有多少人能够运用英语同老外交流呢？哑巴英语、应试英语害了中国整整一代人！虽然自己现在没能体会到正在实施的素质教育，可看着依然层出不穷的少年犯罪，以及学生所背的不见减轻的书包，真的想不出也看不出素质教育的优点来—也许还要有一个接受过程吧。也或许是中国特有的教育环境，众多学生只能通过近乎惨烈的角逐，踏着大批被考试淘汰的落榜生的肩膀才能跨入理想的学校—这一切或许阻碍着中国素质教育的实施。 <BR><BR>　　学习成绩差，再加上行为古怪，性格懦弱，我在班中“理所当然”的享受着来自各方面的歧视，还记得在初三临中考时，学校为了提高中考升学率，准备将所谓的好学生和差学生隔离开来，并劝说一些中考渺茫的学生放弃考试权，只是后来，由于一些“原因”没有实施。现在想来，最遗憾的莫过于当时为何不更大胆一些，多逃些课去做更喜欢的事情。 <BR><BR>　　就这样混过了三年的初中生涯，临中考前为了不致使父母太过伤心，用了半个月的功，仅差三分够上市一中的分数线——这样的分数已能进入班中的前20名。家中交了3000元赞助费让我进入了这所中学—虽然当时已经不再想上学，可不好驳回父母的意愿，只好以插班生的身份混了进去。 <BR><BR>　　应该说那时依然不善言辞，木纳呆板，性格懦弱，再加上学习很差。当时的高中要求住校，同宿舍的同学没有一个人将自己当人看待，我承接了宿舍中为其他人倒洗脚水，洗袜子等诸如此类的事情，默默忍受着他们的奚落，甚至以阿q精神安慰着自己… <BR><BR>　　96年三月十四日，无法忍受这一切的我，带着节省下来的四十元钱和自己的一些想法，以及对梦想的憧憬，希望能到国家专利局谋到一份工作，哪怕只是做杂务，只要能接触到各种专利文件和资料就行。在家中留了一封信，偷偷的坐火车来到北京，现在想来，当时也未免太过单纯，但这何尝不是一段人生体验，短短数日，真切体会到这个社会的残酷冷漠和世态炎凉：记得到北京后已经是午夜12点钟了，在候车室的大理石地板上一夜未眠，三月份的北京依然很冷。第二天一早买了份北京地图，按图索骥找到了国家专利局。并骗过门卫进入楼中，一层层的询问，终于找到了专利局局长的办公室，局长没在，当时室中有一男一女，他们随意翻了翻我的资料，给了本《专利法》就将我打发走了。心灰意冷的想既然出来，就不要再回去，可吃饭问题如何解决？ <BR>　　逐个询问了无数家饭店是否招勤杂工，但没有一家敢容纳——因为我没有身份证。就这样在北京流浪了四天四夜：期间被卖血者（所谓的血头）引诱过、被警察驱逐过、被街头地痞殴打过—只因为看我不顺眼、也同乞丐们睡过地下管道。那几天看透世态炎凉，心也冷了，想着一辈子也许就这样下去。 <BR><BR>　　或许是冥冥中的安排，第四天时在一个公园的长椅上休息时，遇到一位50多岁的老年人，身上的衣服已经很破，推着一辆同样破旧的自行车，见人就说“见过我儿子吗，他说来北京，我找他好几年了”，看样子已经精神失常。他看到自己时，对我说“我儿子也跟你这么大，三年前偷偷从家里跑出来，只留信说要去出去看看，我找他三年了。”就这样一遍遍重复着…… <BR><BR>　　一阵心酸，也想起了自己的父母，他们是否也会这样—那样对他们而言太过残酷……我用仅剩的5元钱给家中打了个电话，是父亲接的：他问我在哪，并说：母亲已经三天没有吃饭，休息，整日以泪洗面，如果再没有消息，她会疯掉的。 <BR><BR>　　那天晚上，父亲和将近70岁的舅舅连夜来到北京，他们一个候车室一个候车室的找，可因为候车室没有位子，自己是在一个饭店的柱子后面半蹲半靠的涯过夜晚—单薄的衣物抵挡不住北京深夜的严寒。 <BR><BR>　　回到家中，我对父母说不想再上学，但他们还是希望能把高中读完——那一次，真的伤透他们的心，终于还是回到了学校。 <BR><BR>　　最初返校的一段时间，突然对制作炸弹产生了兴趣，于是连续多半个月从市图书馆收集各种关于炸药和相关炸弹制作的资料，结合头脑中的想象和所掌握的一些化学配方以及电子知识，开始在头脑中设计各种特殊“炸弹”。或许处女座的人追求完美，哪怕是“犯罪”也不例外，那段日子头脑中的灵感层出不穷，众多独一无二的“炸弹”构思相继出笼… <BR><BR>　　也许连自己都感觉心理上有些出格，于是将市图书馆能够找到的心理学相关书籍翻了个遍，配合其中所介绍的一些方法试着去调整心态，就这样过了些日子，慢慢的恢复了正常。 <BR><BR>　　很感激当时的市图书馆就在学校附近，使我总能趁课间休息溜去借书，无论是物理，化学，还是医学，文艺之类的书籍，只要觉得有用的书我都没有错过，两年多来利用上课时间翻阅了将近一千五百多册的各类藏书，而老师们多次在课上“抓住”自己，却从未没收过所读的书—没有办法，谁让自己对武侠、言情之类的小说不感兴趣呢，久之，班主任也拿我没了办法为了锻炼意志力，也为了换一个形象—同时不想再受他人的欺侮，我独自搬到一间曾经发生过火灾而无人愿住的宿舍中，面对四面漆黑的墙壁，实施着形象再造计划… <BR><BR>　　首先要克服胆小懦弱的性格，好走极端并患有轻微恐高症的我在一个夜晚溜进电视台院内，开始向上攀爬80多米高的电视塔铁架，壮着胆子爬到一半时，不自然的向下方望了一眼——四面悬空的在40米的高空，全身立刻发软，手脚也开始无意识地抖动，但仍还清醒：生或是死——此刻已经没有退路！这样约莫过了10多分钟后，终于控制住自己的身体，接着爬到了塔顶，站在顶端向下望时，再也没有先前那种眩晕感，充斥的却是前所未有的自信，那一刻，我战胜了自己！ <BR>　　在宿舍内自制了一些粗陋的健身器材，并结合买回的关于散打和截拳道的书籍，开始习武，并坚持着每日冲冷水澡，以至于后来全校都知道有个下雪天还在洗冷水澡的怪人，为了下课后能够抢先打饭，时常从二楼阳台纵身跃下……日子就这样一天天过去，身体日益健壮，渐渐地也并不在乎旁人的评论和蔑视，我试着超越自己… <BR><BR>　　高中的日子也有不少小插曲，曾经在看过一本美国人写的孤身大海飘游的小说后，对挑战人体极限发生了兴趣，于是找来不少医学资料，做了一番准备后，决定一个星期内不进食，同时也不饮水—资料表明：在较寒冷的环境中，如果不喝水人可以活六天。我选定了在96年11月份的一个星期一开始（当然是要瞒着家人了），并且照常上学—初衷是为了让自己在将来出现此类特殊情况时心中有数，不至于因为绝望而死，试验的前三天，我详细记下了每天的活动量和排泄情况，并大致计算着由此损耗的热量，第三天中午时，几乎坚持不住的想饮水，而胃也在不停的抽搐，走路时如同脚踩棉花一般，我咬牙坚持了下来。第四天时，不仅大小便已经停止排泄（这对肾的损害相当大，后来由此剩下的饭钱全部换成了药品，所幸的是自己的诊断还算对路，试验并未对身体造成太大伤害），而且不再感到渴，也没有了饥饿的感觉，头脑中一片宁静安详的感觉，到了第六日，走路时全然没有了感觉，旁人的对话仿佛来自很遥远的地方，我知道已经接近生死边缘，晚上终于中止了这场实验，那几天瘦了七斤。试验的六日内总共吃了大半块馒头，350ml的水（用量杯精确测定），并得到一个较为满意的结果。 <BR><BR>　　btw：从前的我易走极端，请各位千万不要重复这场试验，只是希望这个数据能令您在危难状况时增加存活下去的信心。为了能够拥有自己的实验室，并且找到需要的化学药品，我千方百计的四处寻找，可惜，一个小城市中，又怎会有齐全的化学品商店呢？一个偶然的机会，在**局内部闲逛时，无意中发现一座不太起眼的二层小楼，而里面竟然有一个化学实验室，还有几个存放电子仪器的储藏室，平常没有人进出。想进入这些房间对我而言并非难事，略施小计便可以轻松出入—还要归功于门锁的原始：），每次并不多拿，只是带走少量的化学药品。或许是一些药品的奇怪缺失引起了他们的注意，一次想取些药品时，感觉有些不太对劲，仔细观察才发觉安装了红外报警器。于是回去花了一个星期研究防盗设备，并购买了类似的报警器材做试验，找到了破解方法，也得到了需要的化学药品——这段经历或许奠定了自己后来的黑客基础j.事先声明：我并未对实验室造成任何损害，所窃得的化学药品总值也未超过50元—只不过市场很难买到才出此下策。 <BR><BR>　　高中时留下较深印象的当属做不完的作业以及答不完的试卷，看不完的课外辅导书。一上课，试卷便铺天盖地而来，自习课时更是如此，各科老师走马灯般发着试卷，每一个都声称很重要。虽然自己可以享受不交作业的“特权”——老师们完全放弃了对我的管束—他们已无能为力，看着周围的同学起劲儿作着毫无用处的作业，心里不由得想笑，也只是苦笑——这一切并非自愿，而仅仅是为了能够将来混入一所大学。至今仍感到纳闷的是：如果需要，当时的我可以弄懂最专业的科技论文，却对课本上的内容始终无法记住。现在想来，这或许是“兴趣是最好的导师”的最佳例证j，其中也有逆反心理在做崇。 　 　　<BR><BR>　　高中三年，同学之间没有友情，有的也只是相互竞争和压轧，每个人都知道，名额有限，如果希望升入大学，你不得不尽力去超过你周围的同学。这些本不该是我们这个年龄段所应该承受的，可现实就是如此残酷，对于众多农村学子而言——如果希望过得更好，考大学只能是唯一的出路（但事实果真如此吗？大学毕业后仍将要面对这个社会惨烈的竞争，我们这代人始终无法轻松）。这是身处大城市的考生所无法体会的（不平等的分数线能令他们较轻松进入大学校园，如果说这也是一种不平等的话，那也只能说是见怪不怪了）。于是每年临近高考，便不时会听到因不堪承受过重心理压力的高考应届生自杀或进入精神病院的消息。更可悲的是这类消息并不会在考生中引起反响—他们早已麻木。置身事外的我（本就不想考学，也就没有那样的压力）平静的看着这一切，也试图找出一个答案—你能告诉我吗？ <BR><BR>　　很快三年过去，也迎来了不得不参加的高考…… <BR><BR>　　我永远忘记不了母亲回家后的面孔。她的脸上是一种自尊被击溃后的绝望，也隐含着对自己儿子今后命运的深深担忧—十多年辛勤付出所培养出的儿子，在一个足以决定一生命运的考试中交给她的答案。在以子女高考成绩衡量成功的小城市，这是一个难以容忍的数字，意味着这个高考弃儿今后的道路将充满坎坷曲折… <BR><BR>　　本已厌倦了陈旧落后的课本知识，下决心不再上学的我，此时不敢也不能再面对母亲的眼睛。已给她太多的失望……。后来，按照父母的意愿，来到了石家庄一所计算机自学考试学校。却遇上了足以改变一生的转变……。 <BR><BR>　　98年11月，17岁的我第一次在学校机房内接触了电脑，虽然仅是dos界面，虽然还对电脑一窍不通，但却不由得被这个笼罩着神秘气息的家伙征服了，也是那一刻，在内心暗暗立下了一个目标：三年内，不仅要征服电脑，还要成为这个行业最顶级的专家！ <BR><BR>　　为了找寻接触电脑的机会，记得曾经在一个星期内，连续奔波在5个地方，趁着他们或者公司不用电脑的时候，想方设法去蹭机，并随身携带着一张光盘—我买的第一张光盘—一张关于网络入侵和软件破解的盗版光盘，面对着那里面犹如天书的教学文章，以及神秘莫测的入侵和破解软件，忘记了吃饭和睡觉，绞尽脑汁的想要去了解它们。那个星期，总共睡了不到六个小时。 <BR><BR>　　那次之后，大病了一场。这场病也成了自己得以赖在病床上不受干扰看书的最好借口。为了学习软件破解—基本前提是要了解汇编语言—用了一个星期啃完并了解了ibm的那本汇编教材，又为了能够使用那些黑客程序，两个星期之内，掌握了c语言的基本编程和调试—这是在没有电脑可供使用的基础上，为了了解网络，一本本最新的网络书籍被我“蹂躏”了一遍又一遍，没有人指导，仅仅凭着兴趣，凭着想成为一名黑客的渴望，终于读懂了那些晦涩艰深的文字（这也许是早期中国电脑书籍的一个通病）。 <BR><BR>　　经不住我的软磨硬泡，答应在两年后买电脑的父母挤出钱来提前买了台兼容机，并放在表哥在市农行的单身宿舍中——他并不常来，某种程度上，成了自己的个人乐园。 <BR><BR>　　三个月，整整三个月，一个人同电脑交流着，时间已经失去了概念，昼夜星辰的交替似乎也没有意义，饿了，去食堂吃些东西，困了，倒在电脑旁的床上打个盹，醒来后接着“交战”。至于学校，想起来的时候便回去一次，也仅仅是让班主任还记得有这个学生。结合电脑，学习了所购买的上千元的书籍和光盘。掌握了1000多种各类软件的应用，软件破解，编程等能力也有了飞跃性的提高。现在想来，那或许是自己一生中最快乐的一段时光，没有压力，没有歧视，只有兴趣和动力，疯狂地吸收着这个行业所能了解的一切。 <BR><BR>　　99年三月份，河北微软培训中心在计算机世界打出了招收第一批学员的广告，那时还根本不知道认证的概念，仅仅凭借着能够接触到真实的网络环境，以及如果通过认证后能够得到年薪10万的承诺——当然，这也仅仅是广告宣传而已。便又劝说家中出钱报名参加了第一届学习班。 <BR><BR>　　事隔许久，很多往事已成了过眼烟云，但一件小事却始终难忘：报名时，自己问负责人英语不太好是否也能学习，他回了一句：没关系。但好像又想起了什么，紧接着又问：你过四级了吗？那一刻，仿佛猜到了所面临的将是什么。 　　 　　　　　　　　　　　　　　　　　 <BR><BR>　　一个高考落榜的学生想去考什么世界认证的系统工程师，这在家乡迅速传为了笑谈，回家后每个知道这个笑柄的人看待自己的眼神中都带着蔑视和不屑，我知道，已经没有了退路。 <BR><BR>　　那届培训班共有58名学员，除我之外都是有着相关工作经验的本科和硕士。捧着6本砖头般的英文教材。反复闪现在脑海中的也只剩下了“拼命”这个单词。白天，对着金山词霸翻译着书中每个不懂的单词—试图读通书中的含义，那时总结了一个包含1000多个专业术语的单词表，硬记了下来。晚上，上课时结合未在看书时搞懂的知识点，并用录音机将授课录下，回去后反复去听，去理解。两个月的培训，弄懂了每一堂课，并结识了业内的很多朋友。身上由此少了10几斤肉——或许是一个减肥的好方法。 <BR><BR>　　99年五月，我成为培训班中第二个通过mcp认证的学员—虽然仅需一门课，但也是一个好的起点，毕竟当时的石家庄没有几个人拥有该认证。兴奋地去久已未至的学校炫耀时，却被新换的班主任小心翼翼地问道：你是李明吗？待得到肯定答复后，毋庸置疑地说：你已经被学校开除了……。 <BR><BR>　　刚离开学校时的我本想籍着自己的电脑能力寻找一份合适的工作，孰料在其后的多半个月中，频繁更换了3家公司，都是一些电脑代理公司，几个人便是一个组合，甚至有一家代理工控机的公司，同时竟还做着食品烹制的生意！但牛皮却还吹得很大。我知道再呆下去只会空耗时间，迅速逃离，连工资都没有去要。 　　 　<BR><BR>　　还好籍着同一培训班朋友的推荐，我来到石家庄万利福超市作了一名网管，每天的工作就是维护公司办公网络，pos机的正常运营，以及unix服务器的数据备份，并利用vb和sql程序编写一些应用和数据库查询软件，工作很是清闲，这段时间，在公司搭起了一个网络环境，闲暇时便做着教材后面的实验和网络安全的研究。当时的薪水是每月900元。 <BR><BR>　　几个月很快过去，为了能够给自己一些压力，谢绝了主管的挽留，回家后准备剩余科目的考试。 <BR><BR>　　现在想来，在家中的那段时间，也是人生中一个很大的转折点，性格乖枭的奶奶突发脑血栓，在医院住了一个多月，爷爷也在此时凑热闹，心脏病接着发作，而父亲由于照顾他们，糖尿病上升到6个加号——这是非常危险的信号，母亲也被累得诊断出心脏间歇（我奶奶体重有180多斤，为其每翻次身都是一个艰巨的工作），没有工作的自己却又不能帮上太多忙，准备去石家庄考试——却在公交车上将父母给的600多元考试费被小偷扒走。而借钱考试时，仅剩的一门课连考两次，竟都是仅差一分而没有通过。真切体会到了什么叫欲哭无泪！ <BR><BR>　　回来后为了排解心情，总结自己接触电脑及网络一年多来的网络安全和破解经验，写了一遍两万余字的文章，被《软件》杂志发表—发表之前在杂志社引起了很大争议——先前从未刊登过类似的文章。发表后出乎所有编辑的意料，这篇文章被评为该杂志创刊以来最受读者欢迎的文章，由此也带动了后来媒体对于黑客群体的关注—而此时，体会过人生起落的我也已经准备淡出这个圈子了。 <BR><BR>　　也是这个月，再次接触到了上海博达网络设备公司的河北办事处经理，现已是博达公司的市场总监。第一次是数月前朋友引荐，当时他对我的表现并不太满意，而这次，听朋友说我已经将认证课程全部考完，他很欣赏我的毅力，于是，顺利进入了这家公司，并成为路由器行业内年龄最小也是学历最低的工程师。负责河北和内蒙古两省内公司所售路由器的安装维护和调试。由于学历的缘故，薪水被定为1500元，这几乎是公司薪资标准的最底线。 <BR><BR>　　2000年三月的一个深夜，经理打电话说邢台电信局所用的一台我们的路由器出了些问题，要求立刻过去，连夜用了100多元打车去了邢台，到电信局时已经是12点多了，故障是cisco的7507和我们的路由器无法互通，那是自己第一次独自出差，也是第一次见到cisco的路由器，此前在公司培训时仅仅知道cisco是我们的竞争对手，面对着几乎完全陌生的命令行和设备，有些束手无策。无奈之下长途唤醒了上海总部的技术主管，在他一步步的提示和帮助下，第二天早上7点钟前终于排除了故障。而如果故障在7点后仍无法排除的话，那客户的损失就将以6位数来计算了，什么是压力？这就是压力！ <BR><BR>　　以后的日子便是在频繁的出差中度过，除了排除故障，还要承担给客户培训和方案编写方面的任务，以及跟随主管陪同一些主要客户（这段日子为后来的工作奠定了良好的基础，也很大程度上锻炼了各方面的素质），没有任务时便在国贸中心的办事处准备着mcsd和mcdba的考试，由于曾经的黑客经历，vb语言以及sql数据库的编程并不是太大的难题—这总要比汇编容易得多。一门心思的准备着考试—至于娱乐和休闲，就让它们见鬼去吧，那时根本没有时间去想这些东西。 <BR><BR>　　5月份的时候才了解到cisco的认证体系，不知天高地厚的我对这套认证又发生了兴趣，不仅仅在于它同自己的工作息息相关（同是相关行业，工作中也要时常接触），也在于它的通过难度。2000年的石家庄书店中很难见到有关cisco方面的书籍，为了ccna的考试，将书店中能见到的所有有关cisco的书籍都买了回来，甚至包括了ccie的英文教材。 <BR><BR>　　近三个月不分昼夜的学习——利用一切可能的时间，出差时在火车和汽车上看，在办公室中晚上困了就在公司地板上打个盹，醒了再接着学，并结合公司的路由器做着实验。7月底的时候终于拿下了ccna的认证（对比现在某些号称一个星期拿下ccna的培训机构来讲，专门从事路由器调试工作的我用两个多月好象太慢了些，不过打下的基础却很牢固，），那时ccna在业内的影响力很大——包括后来到上海接受为期一个月的新产品培训时，公司各地的技术支持都很钦佩。后来约略统计了一下，那段日子的平均睡眠为每天三个小时左右。 <BR><BR>　　2000年8月份cisco将全部认证体系来了个彻底更新，内容和考题均发生了很大变化，在相关教材都没有推出的情况下，便又开始了准备ccnp2.0（cisco认证网络专家）和ccdp2.0（cisco认证售前网络设计专家）考试的相关资料，并借了几台旧的cisco路由器，向cisco更高端的认证发起冲刺。 <BR><BR>　　当然，冲刺之余，也没有忘记我曾经的“老本行”，只不过这时更多的倾向于对因特网上的网络设备的破解与控制，记得最疯狂的一次是个周末，连续60个小时坐在电脑旁，不停的尝试着进入各种最先进的网络设备，那一次，控制了200多台各国的路由器、100多台其他类型的网络设备、美国一所大学的12016核心路由器（这是当时cisco最高端的路由器）、国内两个省（请原谅，由于业内原则，我不会透露它们的名字）的数台12000系列的路由器（本可以控制更多，不过拨号上网的网速实在太慢，限制了侵入）。这意味着如果愿意的话，仅需在世界上转几个弯，键入几道命令，那所大学以及这两个省至少二分之一的电信通讯网络将至少瘫痪两个小时——但我永远也不会这样去做。而令人遗憾的是，自己仅仅是利用了它们配置上的缺陷以及网上早已公布的漏洞，中国乃至世界的网络安全状况真的令人堪忧…… <BR><BR>　　为了贴补认证考试所带来的花销，也在河北的微软培训中心兼职教授cisco的ccna培训课程以及mcse的部分认证课程。同时就可以免费利用培训中心的网络资源和听取mcsd，mcdba的课程培训。并结交一些各界的朋友，一箭双雕的方法曾经让自己暗自得意了很长一段时间，如果按照年龄来看的话，好像19岁的我应该是中国最年轻的ccna讲师了吧，到2000年12月时，经过多次重考—仍然都只是一两分的差距，在软件设计（mcsd，mcdba）、网络设备维护（ccnp2.0）、以及系统集成的网络设计(ccdp2.0）的交叉学习和考试中，庆幸的是竟然没有因此而搞昏头脑，12月一个月的时间都是在考试中度过的，也是这个月，一万多元的积蓄消耗一空，多日加班积攒的休息日也得到了充分利用，交错考试也（这个月经历了20多次不同的认证考试—包括一些重考，也经历了出生以来对自己意志力的最大考验）锻炼了今后面对压力的韧性和忍耐。举个例子：如果希望拿到ccdp的认证，首先需要通过ccda的考试，而da的考试对英语阅读的要求极高，它是通过一个个的案例分析来判断你在网络设计方面的能力的，每个case如果单独打印出来，将占用至少4，5页打印纸。一般而言，你会碰到3—4个case，而在自己第三次冲刺da的考试时，竟然碰到了5个case（这些认证考试每次重考难度都将加大），并且仅有短短的两个小时，只有在了解这些案例的基础上，才能去做50多道题目。精神几近崩溃！两个小时过去了，打印机将成绩打印了出来，一条绿线：pass！自己的欢呼声随即响彻了整个楼道。 <BR><BR>　　事后在网上搜索了一番，并查询了相应的一些培训机构，不经意间发现自己已成为世界上最年轻的同时拥有“微软认证系统工程师（mcse）”、“微软认证数据库专家（mcdba）”、“微软认证软件设计专家（mcsd）”、“思科认证网络专家（ccnp2.0）”、“思科认证网络设计专家（ccdp2.0）”认证，且均在相关领域工作过的工程师。 <BR><BR>　　虽然还小，但那时的自己在河北的系统集成行业已经有了相当的知名度，工作也已驾轻就熟，而我也希望着更多的挑战—当然，由于均为自费考试，略显微薄的薪资已经无力再承担认证费用。于是下决心准备去北京看一看，得知要离开的消息后，经理诚恳挽留，并许诺提高薪资，石家庄另外一家颇具规模的系统集成公司也希望我能过去工作，开出的月薪是4000元——这在消费水平不高的石家庄已经属于高薪。 <BR><BR>　　去意已决，辞去工作只身来到了北京，颇具意味的是，虽然当时互联网行业已经跌至到了冰点，但招聘会上却充斥着系统集成行业的公司，各公司纷纷打出“ccna优先”的标题，这在一定程度上也验证了自己的判断：在99年网页设计最繁盛的时候，为了选一个方向，经过很长时间的考虑，才坚定了在系统集成行业工作的决心—如果选择网页设计，有一定基础的我可以拿到4000或者更多，但内心却在问—这始终是一个假象，你真的具备拿如此高薪水的能力？仅仅一个网页设计没有技术含量，你认为它能繁荣多久？不停地思索这些问题，最终选择了留在博达，并决定待能力提高时再作考虑。 <BR><BR>　　招聘会上，所拥有的那些认证，再加上参与的众多省级网络的建设经验，几乎每一家在收到我的简历后都立刻要求我去面试，并纷纷表示希望能够留在他们公司，而学历—却反而成了最无关紧要的因素，原本做好了来北京做搬运工的最坏准备——此时真的有些受宠若惊（对照一年前的那段日子，心中亦是感慨万千）。面试对我而言根本不是问题，自然薪资也戏剧性地水涨船高，在所谈的众多公司中—包括上市公司，外企，以及业内翘楚：曾有一家新加坡的服务器公司开出了税后9000元的高薪，他们的总经理直言不讳地说他看中的是我的学习能力以及拼搏精神，如此的年纪能够拿到如此多的认证和工作经验不是每个人都能达到的。但最后由于一心希望向集成行业发展，最终谢绝了邀请。 <BR><BR>　　在公司的选择中，一家名不见经传的小公司吸引了自己的注意力，记得那时系统集成部的主管，一名清华自动化系的硕士，并曾在hp工作多年—也是自己后来的上司，曾经在面试时很诚挚地说：依你现在的能力，去一家大公司完全没有任何问题，不过大公司并不需要你能够独当一面，很大程度上仅是制度下的一颗螺丝钉，但最大的特点就是稳定。而选择新成立的小公司的话，自身能力会得到迅速提高，如果公司发展起来，升迁的机会也很多，收益自然颇丰。不过最大的特点就是风险很高，小公司随时有可能会被市场所淘汰，你的职业生涯也将会有所改变。他希望能考虑清楚后再给予答复。 <BR><BR>　　喜欢冒险的我做出了抉择，来到了这家公司，在系统集成部门就职，职位是售前支持经理，负责电信行业相关的方案设计。部门的员工均有在业内各知名公司工作过的经验，堪称业内精英。由于职责划分明确，相互之间没有太多的利益冲突，大家合作得很融洽，上班是同事，下班是朋友。为了完成从厂商售后工程师到集成行业售前设计专家的转变，那段时间接受了众多来自各种不同厂商的各类产品培训，也参加了相当多设备厂商的正规培训，再加上同事们的真诚帮助，使自己顺利地完成了过渡。并对于系统集成行业的发展运作有了进一步的了解。 <BR><BR>　　或许是一切来得太过顺利，年少轻狂的我有些满足，自认为在同龄人中已经算是佼佼者了，也想今后就这样过下去了--年纪轻轻便有着一份令人羡慕的职业，稳稳当当地做个工程师。没有了往昔为学习而悬梁刺骨的毅力，言谈中也多了几分狂傲。回家时母亲看出了我的自满，她没有说什么，只是闲谈中看似无意的问了一句：最近看过什么书没有。她知道她的儿子会读懂她的弦外之音。心头一凛：两个月来已经没有再完整看过一本书籍了，这还是从前的我吗？心浮气躁曾经是自己一度用来评价IT行业的，如今却照搬到了自己的头上。 <BR><BR>　　于是开始准备CCIE的考试--这个在网络行业公认难度最大的认证，而且也是花费最大的一项认证--没有10万元是拿不下来的，当然，这仅仅只是必备条件之一，它还需要你必须具有丰富的设备调试经验，以及面对压力和挫折时泰然自若的心态。两天的LAB考试时其中的难度远非一般人所能想象，仅以第二天下午的troubleshooting为例，考官人为的在一个用各种CISCO设备搭建的网络环境中设置上百个故障点--包括硬件和软件配置上的，甚至你所使用的调试线缆都有可能发生问题。短短的数小时内，你要做的就是要让这个网络环境恢复正常，绝大多数人都在这一关被刷下阵来。记得自己一位CCIE朋友在讲到他曾经的认证经历时，为准备LAB的考试，曾经整整两个月没有跨出实验室一步，出来时所有的同事都没有认出眼前这个瘦骨嶙峋，胡须满布的人，那段时间，他瘦了20斤！--现在想来，真有些古代武林高人闭关修行的味道。巨大的付出也意味着丰厚的回报，当时中国仅有不到100名CCIE，一位CCIE的薪水是上不封顶的，从年薪20万到上百万均有，这也是后来人们趋之若鹜的去争考CCIE的原因-间接导致了中国CCIE的良莠不齐--当然，这是后话。 <BR><BR>　　那段时间，花费上万元购买5台2手路由器搭建成一个最基本的lab环境，放在了自己的办公桌上，空余时便以做实验为乐。七月初，两次报名参加了CCIE的笔试，历史在重演，每次考试均以一分之差未通过。而这个时候，发生了一件事，也由此改变了自己今后的人生道路。 <BR><BR>　　如果没有记错的话，2001年的7月份，中国股市经历了最为动荡的一次调整，3000亿市值从股市中蒸发了，但却未想与自身有什么关联-并不喜欢炒股。有联系的便是公司的董事长曾经是做证券并在短时间积累大量财富的，7月份的一个上午，我们部门正在联想总部接受AVAYA的售前工程师培训-它是我们的合作伙伴，联想的一位经理在休息时还在连夸我们所做的设计方案。中午时，经理的电话将大家全部召回，宣布由于董事长为了应付股市疲软，抽调资金，公司解散。而在这之前，公司却正处于扩张阶段，众多项目已经签约和正在签约，虽然或许不会达到预定的目标，但实现盈利也是指日可待。从未想过公司会在这个时间关闭。很多人都不能接受这个事实，包括自己。并不是担心找不到工作，而是这种落差让人无法承受。正欲大展身手时却……，晚上吃离别饭的时候每个人都很激动，任情感在歌声和酒席上宣泄着，很多人落了泪。那一晚，我们都醉了…… <BR><BR>　　两次冲刺失利再加上这起突如其来的事件，身心俱疲的我突然很想去放松一下，也希望在旅途中能够再次思索自己今后的方向，因此谢绝了大唐电信系统集成部经理的加盟邀请-既有旅行的原因，另一方面原部门主管正在寻找风险投资，筹备着将公司买下的事情，他希望大家还能一同合作-不想因为这件事情而导致如果去大唐工作一段时间后，仍要再次离开-这将影响自己在业内的个人信用。而信誉，也间接决定着你在这个行业能否立足，立稳！ <BR><BR>　　背上睡袋和帐篷，独自去野外旅行了一个多月，在罕无人迹的深山和森林中，望着满天繁星，心灵得到了前所未有的平静。曾迷失在茫茫林海，也曾经在攀岩时滚下陡坡，曾经与毒蛇共眠，同孤狼为伴，多少次在生与死之间徘徊，却从未感到过害怕。我在寻找着自己今后的人生方向，也寻回了昔日的自我-不再担心什么，本就一无所有，何惧暴雨狂澜？ <BR><BR>　　回来后不久，9-11事件发生了，世界真是小，地球另一端的事情很快就影响到了北京，本已衰落的IT行业再次雪上加霜，北京的投资公司撤回了大部分准备针对IT行业的投资，并暂不考虑有关IT业公司的商务计划书。立竿见影的结果便是：经过无数次谈判、即将融资成功的原部门主管这次也难逃厄运-融资化为了泡影。 <BR><BR>　　只不过，这次我已经平和了许多，躲在住处读着先前购买却没有时间翻阅的各类书籍，边想着今后的道路。一天无意中找到了从家乡带来的很不起眼的塑料袋，里面满是零碎的小纸片，那是自己初中和高中时所有的灵感汇集--曾经酷爱搞发明的我所想出的上百种思想结晶。其中很多灵感现在看来，都还有着不少的闪光点。翻看着，惊讶于当初备受歧视的我竟会有着如此多的发明构思，想起了六年前的我为了让自己的发明得到认同而离家出走，来到北京后的那段非人经历。而从毕业时起，三年了，三年内为了订下的一个目标而努力，内心中再没有了那份激情，而三年前所订下的目标已经基本实现，是否找到了下一个目标？对，做一个成功的发明家--这也是我十年前的梦想，为理想而奋斗的人是最快乐的。 <BR><BR>　　遗憾的是也要为生存操劳，在积蓄所剩无几的时候，便又开始了找工作，虽然2001年11月份的系统集成行业已经呈现颓势，“奶酪”风行整个中关村，裁员的风浪此起彼伏，有点像2000年底时的网页公司，不过无论在何种行业，中高级人才也总是供不应求，这一点倒是不会改变。没费什么周折来到了一家业内新崛起的网络设备公司的增值业务部门，仍然从事先前的老本行--售前方案设计，不过服务对象由原来所从事过的电信、城域网以及银行网络换成了国家政府、部委的网络建设。 <BR><BR>　　在这家颇具规模的公司里，一边工作，一边试图重新去寻回曾经搞发明的头脑-所幸这三年留在脑中的条条框框并不很多，很快，头脑中的灵感日益增多了起来。 <BR><BR>　　部门的工作氛围也很愉快，上司是一位很能干的女孩-却没有半点上司的影子。如同在先前的公司时一样，彼此信任，互相帮助（这也是自己选择IT行业作技术的一个原因，同事间少有勾心斗角，相互间都是朋友），完成着公司分派的一个个任务。闲暇时一块讨论着自己新构想的一些发明的可行性和实施问题。巧的是，进入公司的那段时间里，正赶上公司正在兼并属于同一集团之下的另一家网络公司，公司内人心浮动，而工作，也开始日益繁忙了起来，各种方案设计应接不暇-时常需要加班-众所周知，IT行业内的加班是不给加班费的。没有太多的时间再去考虑自己的一些发明。是否辞掉工作去做真正想做的事？但这就意味着再次失去稳定的收入，面对多数人的不理解，以及一个不可知的未来？还是留下来稳稳当当地做个白领，工作一段时间后转为项目经理或者去做销售，一生就这样平平常常地过下去？那是一个可以预知的未来。我的内心再一次开始犹豫不决…… <BR><BR>　　一次加班时同公司的一位销售闲聊，她看出我的徘徊，直截了当地说：如果你选择工作，就要认真去做，如果想去做你喜欢的事情，就干脆辞去工作去干，不要指望两件事你都兼顾。与其这样摇摆倒不如踏实地去做一件事情，否则什么都做不好！一言惊醒梦中人，是呵，鱼与熊掌不可兼得，怎么连这么简单的道理都忘掉了，想想在丛林中时的感悟，那次，终于下定了决心…… <BR>　　2002年3月，在公司要求转正的那天，我平静的对部门主管提出了辞职申请，离开公司时，已经完全实现了三年半前的那个承诺，并开始向新的目标迈进…… <BR><BR>　　应该说，在刚辞职的那段时间里，依然迷惘。虽然模糊知道希望通过个人创业，寻找风险投资商，从而将自己的发明转化为产品。但该怎么去做，如何实施，心中却没有多少头绪。手中有数个所想出的项目，其中涉及到“能与电脑沟通并实现互动的电脑椅”，“汽车GSM+无线定向综合防盗控制系统”，“笔记本全方位防盗及控制系统”等，第一步自然是要申请专利了，而专利的申请需要提交具体的电路设计图，为了能够作出设计图，对电子行业并不熟悉的我从书店再次买来上千元的相关书籍、在网络上搜集到数以GB计的信息、研究单片机，无线通讯以及国际最先进的电子器件的应用等，并从中筛选出最需要的资料，一个多星期昏天黑地的学习后，已能够用行业术语同业内专家交流了，电路图也画得颇具专业水准-各个行业均有相通之处，我想这也是曾经做售前时所赋予我的一项能力。但随着研究的不断深入，也越来越感到迷茫：这些项目均需要对现有设备进行较大的改造，而且对于投资商而言：太前沿的东西需要极高的科技含量，也就意味着巨大的投资，未知的市场前景，很长的投资回收期--甚至可能血本无归，风险太大。摆在眼前的一个现实是：投资商凭什么要将巨额资金投到这么一个充满未知和悬念的项目上，还是在IT业最不景气的时候？--这也是为什么众多投资商都希望将钱投到处于发展和成熟期的企业，他们需要的是短期内看得见的利润回报。尤其是经过了NASDQ的狂潮之后，现在已经是盈利为王，而不再是概念致胜的时代！ <BR><BR>　　冷静下来的我面对着再一次的抉择，是舍弃现有项目而再寻找并开发更有市场前景，风险更小的项目，还是一条路走到黑？-人生其实不也是由大大小小的选择构成的吗？犹如赌博（自己从不参与赌博，只是世间万物皆有相通之处，所选赌博一例虽不算太恰当，却也贴切），权衡利弊后的每次下注便要承当起猜错的风险，而赌王同赌徒的区别就在于他不仅能赢得起，输的时候也同样放得下。荣辱不惊、敢于放弃便标志着他下一次的成功！ <BR><BR>　　幸运的是在研究“笔记本综合防盗系统”的电源管理模块时，灵感在脑中闪现：随着数码设备的增多，人们外出旅游的热情日益高涨，为什么不做个通用型的充电器，给各种数码设备充电呢？问题确定了下来，剩下的便是搜索市场及网络中关于充电器方面的各种资料，去各国的专利数据库中寻找是否有相关发明。经过一段时间研究，在通过分析对比并终于找到各种充电器的共性之后，我自行设计了一种能够充绝大多数电子设备，并可在各种环境下利用多种供电方式为不同的设备充电，还可让消费者可以根据自己现有设备以及使用环境自己定制所需要的充电和供电方式的充电器。该充电器整合了我在做系统集成的方案设计时所采用的模块化设计思想，并突破了传统充电器的设计模式，各个附件之间都是相互联系，紧密结合的。紧接着便开始复习专利法，设计电路图并学着写专利申请的各种文件。通过专利代理为此项目申请了数项国家专利-自然，这个时候，我也能够同电源专家自如交流了J接下来的事情应该是书写商务计划书，吸引投资商了。为了令计划书言之有据，又买来大量有关管理，市场营销，策划以及财务，人力资源，风险投资等方面的书籍学习参考，并听取了各行业朋友们的建议-他们都在很认真的帮助我，用了半个多月的时间写成了一份初稿，或许是上天的有意安排，也或许是潜意识希望将这个并不甚满意的文稿毁掉，总之，一天下午，两夜未眠的我竟稀里糊涂的用一个从网上down下的加密软件将文稿以及备份加了密，在忘掉密码的基础上竟又加密了一次，文档再也无法恢复，半个月的心血化为灰烬，而那时其它一些事情也同时烦扰着我，看不到前面的路，也不知道能走向何方？就在想要放弃的一刹那，内心却抵抗着。它反复地说：坚持下去，再坚持一会儿，你会成功的。烦忧的我便开始按照《世界上最伟大的推销员》一书所规定的，逼着自己每天大声朗读成功誓言，自己鼓励着自己。又一 <BR><BR>　　次读懂了“忍耐”这个词所表征的含义…… <BR><BR>　　转机发生在五月份，“中国科技投资网”打来电话，希望能够了解一下这个项目-并给他们一份产品介绍的文档-数天前曾经在这个网站上注册过一次。那天晚上连同第二天的上午，没有离开电脑椅的我写出了一份上万字全新的计划书初稿，并发送给了他们，第二天，便与他们签订了合作协议，谈话过程中，了解到，这个有着政府背景，并作为企业融资平台的公司在此之前从未同个人融资项目进行过接触，针对的仅为公司融资项目，而这次，是一个特例，并准备将自己的项目作为重点推荐项目向投资商推荐，五月底，我的项目放在了公司的网站上，并处于“重点推荐项目”中最显要的位置。大大激励了我的信心。 <BR><BR>　　同期，朋友们也在帮着联系投资商，科博会上也遇到了一些对此项目感兴趣的投资商和企业，注册的科技开发公司即将获得批准。我冷静的注视着所发生的一切。这并不算成功，恰恰相反，这仅仅是一个开始，一个通向更加曲折的道路的开端。我知道，现在正是最困难的时候：由于申办专利，公司注册以及其他的花销，积蓄已经捉襟见肘，而此时却并未跟投资商有过实质性的接触，样品由于一些原因不能去试做。同一位清华MBA的朋友交谈时对我说：你现在所能做的，就是等待，千万不要放弃。但我不知道还要等待多久，还能忍耐多久，我等待着，忍耐着…… <BR><BR>　　从网络行业的兴起，繁盛，疯狂，跌入谷底，慢慢复苏，三年的时间目睹过、思考过，也亲身加入、感受过，三年的经历好像过了几十年，在其中成长了许多，也逼着去思考一些问题。但不后悔，所学到和经历的一切，是传统行业数十年乃至上百年都不能遇到的。虽然现在已经跳出了这个行业，可某些行业内的行事准则仍在影响着自己的判断和行为。 <BR><BR>　　在对成功的追逐中，我也在不断的寻找成功的定义：成功是什么？或许多数人会认为有名有钱便是成功，但自己却认为：成功更是一种精神状态，能够下决心去做别人不敢想的事，在挑战自我时得到锻炼，体验过了，也试过了，人生没有虚度。最后的所谓成功只是这个过程中的副产品，真正的成功是你勇于超越自己，作你真正想做的事，活出你自己！ <BR><BR>　　故事到这里似乎也应该结束了，不过多年的经历也让自己总结了一些经验，不吐不快。 <BR><BR>　　首先想谈一谈自己工作时的几点感触： <BR><BR>　　1）认真规划自己的职业方向，选择一个行业时，是否真正对其有兴趣，与你的理想是否合拍？请慎重安排自己的职业道路，而选中了一条路，就要认真做下去，只有对一个行业有了深入地了解，你才有资格得到你希望的薪水。 <BR><BR>　　2）求职时的简历以简单明晰为好，招聘官其实最不喜欢看到的就是厚厚一摞，夹着大堆证书和像片的简历了，能简单明了的用一至两页纸表明你自己就可以了，还有，简历可以适当夸张，但最好实事求是，比如简历中说自己对某项技术如何精通-但你事实上却并不了解，三言两语就能令你露出马脚，或者说自己曾在某某公司做过某某职位-但或许你可能仅仅听说过该公司的名字。这样的话一调查你就已经毁掉了自己的信誉。刚出来时最好能够在第一个公司做上一段时间，不仅有助于你对业务的了解，还能在再次更换工作时给下一个公司一个诚信度。 <BR><BR>　　3）求职时不要过分看重薪水和职位以及办公环境，知识和经验的积累以及人际关系的建立最为重要，过于计较眼前的得失会使你失掉很多机会。 <BR><BR>　　4）做一名合格的系统集成行业的售前工程师，前提便是要有良好的文档编写能力-无论你是否承认，这也是为什么很多人不愿做售前的原因，一个方案有两三百页，虽有许多模版供参考，但许多东西还是要你自己写就的。<BR>&nbsp;<BR>　　5）良好的沟通能力也是售前专家的基本素质之一，面对行业各异的客户，要能在尽可能短的时间内了解到客户需求，现状以及制定出一套适合该行业客户的方案，没有好的沟通能力是很难办到的。 <BR><BR>　　6）演讲能力也不可或缺，作为一名售前，很多时候都要去向客户介绍公司的产品，解决方案以及短期的产品培训，不敢讲话，怯懦，将是你的致命伤。 <BR><BR>　　7）团队协作能力，一个方案不是一个人所能独立完成的，现在公司更讲你能否融入能这个团队，作为一分子发挥能力。很喜欢这种团队精神，记得感触最深的是在先前公司的一个方案投标，由于项目来的匆忙，，我和自己的上司、另一名售前和一位销售连着加了几天的班，每次都是凌晨三四点才回去，而其中一天由于自己这方面的原因，她们已经本可以直接走的，但三个女孩一直陪我到凌晨四点才各自回家休息，她们担心我一个人加班太寂寞，而且如果有能够帮忙的地方大家可以一块做。同事与朋友间似乎没有了太多的界限。 <BR><BR>　　8）好的身体。在IT业，加班、出差早已是司空见惯的事情，如果没有一个健康的体魄，很快你就将被淘汰-这决不是危言耸听。举个例子，如果不是因为先前习练散打，那么几年下来的拼命学习，我的身体早就垮了。 <BR><BR>　　9）极强且不间断的学习能力，如果想做好一个网络方案的话，不仅平时要对各种网络设备和最先进技术了解，还要能在很短的时间内熟悉和了解客户的行业和业务背景，并在方案中为客户着想，阐明网络的建设和更新对客户业务方面的改善，这就需要极强和不间断的学习能力。能够在最短的时间内搜集到自己所需要的信息，并很快的将这些信息分析，吸收，利用。每一个行业方案都相当于你要在最短的时间内了解并分析该行业，每个方案都是独一无二的，没有很好的学习意识和学习能力很难做到这些。 <BR><BR>　　综上所述，这就是为什么好的售前工程师奇缺的原因，如果你能做到以上几点，还担心薪水吗？呵呵，谈了这么多，还想谈谈自己对于个人创业的一些感触，不知道诸位看官是否有兴趣坚持到最后。创业前请先冷静思考，是否做好了吃苦忍耐的准备，是否拥有了较为完善的人脉，知识储备是否到位，自身素质（身体，心理）是否达到。而且，一个好的想法并不会成为一个好的融资项目，更主要的是在市场，团队管理以及其他方面，即所谓的功夫在诗外。 <BR><BR>　　善于跟各类圈中的人士交往，而不仅仅局限于业内朋友。--了解他们的人生经历，思维习惯，爱好，学习他们处理问题的模式方法，探察社会各个角落的现象和问题，这也是你以后发展的巨大本钱。 <BR><BR>　　没有这些将会遇到很多难以想象的困难，成功的概率也将大大降低。记得一次在火车上，我甚至跟一位曾去过29个国家的高级工程师，一位“黑社会”的小头目（当然，他是不会说自己是黑社会的），茅台酒厂的一位销售代表相处甚欢，从他们身上，也学到了很多东西。 <BR><BR>　　主动帮助他人，真心对待你身边的每一个人，才能建立起良好的人际关系-而不要奢求回报。自己曾在北京公交车上主动为一位女士指路并陪同她到了她要去的地方，路上交谈中才得知她是国内某知名媒体的总监理，后来我们成了朋友，她也帮了自己不少忙。 <BR><BR>　　广博的知识积累，如果选择了个人创业，就意味着你即将单独面对和考虑各种突如其来的繁杂问题，对于市场、财务、管理、营销、税务等各方面都要去通盘筹划，而不仅仅是凭借你的技术就能搞定这些，知识的积累并不是一朝一夕所能完成的，平时多看些各方面的书籍，对今后的用处会很大。自己仅去年一年买书的花费就在6500元左右，但这些书帮助我少走了许多弯路。 <BR><BR>　　提高你的心理素质，克服内心的弱点和性格缺陷。如果存在着多疑，敏感，天真，犹豫不决，胆怯，多虑等这些性格弱点的话，那么，逐一克服它们！在此之前，不要考虑创业，这些弱点将成为阻碍你走向成功的绊脚石：而且，学会忍耐-很多时候，成功往往取决于你是否能够坚持下来，且坚持到最后：能够冷静面对社会所带给你的各种偏见和歧视-有时这些反而是促使你成功的动力。 <BR><BR>　　想好了就大胆去做，既然认准了一个自己希望的方向（这个方向一定要是你所感兴趣的-或者是你的理想--否则很难坚持下去），就尽全力去闯。如果一件事情在实施之前仅有10%的把握，但只要去努力，去坚持，成功率会越来越高的，但不去做的话，连1%的成功机会都不会有。而且如果第一次进入一个行业，指望一次成功犹如天方夜谭，失败在所难免，但在过程中会积累很多经验教训，接着做下一个项目的话，这些教训会帮助你走向成功的。 <BR><BR>　　个人素质以及优秀的团队才是投资商所看重的，如果仅仅希望凭借自己的一个发明就奢望投资商投资的话，那是痴人说梦。好的发明多的是，但99%的专利发明都被束之高阁，有没有想过为什么？发明向产品转化的过程中，存在着很多不可预测的环节-产品市场前景如何？生产环节和成本如何调控？市场推广期有多长？何时能够实现盈利等等，如果发明人没有克服这些困难的勇气和毅力，以及良好的心理素质，随时都可能败下阵来。何况在中国，知识产权从未真正受到过重视，仅靠专利法是无法应付众多仿冒厂商的。而一个有着优良素质的领导者（比如优秀的管理才能，敏锐的市场分析能力等）和目标一致的团队的话，一个项目失败，他们完全可以再次寻找更好的项目去做。根本不必担心公司的盈利能力。 <BR><BR>　　又一段故事将要展开，事隔多年，所发生的这些真实片断一片片从脑海深处浮现，如今却要将这些痛苦甚至有些残酷的回忆诉诸键盘，如果能给朋友们一些启示的话，我也就心满意足。 </FONT><BR><img src ="http://www.blogjava.net/jackybu/aggbug/1771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-03-06 18:31 <a href="http://www.blogjava.net/jackybu/articles/1771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>公司项目中常用的J2EE相关技术</title><link>http://www.blogjava.net/jackybu/articles/1737.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Sat, 05 Mar 2005 10:34:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1737.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1737.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1737.html</trackback:ping><description><![CDATA[排名次序不分先后。<BR><BR>1. Struts<BR><BR>评价：成熟的展现层MVC框架。容易上手。但也有严重的缺点：<BR>* ActionForm和Domain Model的重叠为人诟病，以至于Struts现在都要强调<BR>它是Controller组件了。应该说ActionForm是一个试图将视图中的表单元素和<BR>Domain Model绑定的不成功的尝试。错就错在他不应该整体绑定，而应该像Tapestry<BR>那样将单个元素绑定到单个Field。<BR>* ActionForm中的int字段会自动初始化成0，换成Integer还是一样，真是faint to deat<BR>h。你就不能用null么？就算用-1也比0要好得多啊。<BR>* 虽然提供了validation机制，但不符合实际需要。一旦validation失败，想做点后处理<BR>都不行。只好在Action里手动调用myValidate方法。<BR>* redirect方法根本没考虑过cluster或者前端proxy的需要。默认实现在使用相对路径时<BR>会自动填上本机的机器名和默认端口。<BR><BR>可选替代：Tapestry<BR><BR>2. Hibernate<BR>评价：功能强大而灵活的O/R mapping框架。不过因为都是local的，估计大型分布式系统<BR>还是要用EJB。另外在cluster下配JVM级cache时要小心。<BR><BR>3. Jakarta下的commons-*系列类库<BR>评价：最常用的是StringUtils.isBlank()方法。commons-collection也提供了很多实用的<BR>数据结构。不过最近commons-collection出现了2.1和3.0版二进制不兼容的问题，可能会<BR>给其他类库带来一点版本兼容性问题。<BR><BR>4. Log4j1.2.8<BR>评价：多少年了版本一点也没变。不知道该恭维他寿比南山还是骂他不思进取。现在虽然<BR>整合到了apache-logging，但什么时候出下一版还是没准。现在似乎流行通过commons-lo<BR>gging去调用它。<BR><BR>可选替代：commons-logging<BR><BR>5. Ant<BR>评价：有了Ant，谁还会用其他make工具。编译，打包，部署，测试一气呵成，而且内建支<BR>持CVS和JUnit。<BR><BR>6. JUnit/Cactus<BR>评价：不写单元测试的程序员不算是程序员，而不用JUnit写单元测试的程序员肯定不是J<BR>ava程序员。JUnit影响所及，诞生了一系列其他语言的xxxUnit家族。Cactus是Junit在J2<BR>EE下的服务器端扩展。<BR><BR>7. POI/iText<BR>评价：如果不幸要动态产生Excel或者PDF，关键时刻还是可以救你一命。<BR><BR>8. JSTL<BR>评价：写JSP的压箱宝贝。而且直接集成到JSP2.0中。<BR><BR>可选替代：Tapestry。<BR><BR>9. commons-digester<BR>评价：解析XML配置文件的利器。很多人偏爱JDOM。其实比起DOM方式的空间节点树来，SA<BR>X方式的时间事件流效率更高。特别在简单的配置文件下，实无必要去用JDOM这种庞然大物<BR>。<BR><BR>10. HiveMind<BR>评价：除Spring之外的另一个IoC内核。可以将业务逻辑彻底分解为一个个简单的service<BR>。从而最大限度的提高代码的可复用性。不过在aspect方面可能要弱于Spring。<BR>因为还没release，所以人气也不如Spring。<BR>需要更多研究到底谁能更多减少代码量。<BR><img src ="http://www.blogjava.net/jackybu/aggbug/1737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-03-05 18:34 <a href="http://www.blogjava.net/jackybu/articles/1737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA程序员面试32问 </title><link>http://www.blogjava.net/jackybu/articles/1540.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Sun, 27 Feb 2005 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1540.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1540.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1540.html</trackback:ping><description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent><FONT face="Courier New" size=2>第一，谈谈final, finally, finalize的区别。</FONT> 
<P><FONT face="Courier New" size=2>第二，Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?</FONT></P>
<P><FONT face="Courier New" size=2>第三，Static Nested Class 和 Inner Class的不同，说得越多越好(面试题有的很笼统)。</FONT></P>
<P><FONT face="Courier New" size=2>第四，&amp;和&amp;&amp;的区别。</FONT></P>
<P><FONT face="Courier New" size=2>第五，HashMap和Hashtable的区别。</FONT></P>
<P><FONT face="Courier New" size=2>第六，Collection 和 Collections的区别。</FONT></P>
<P><FONT face="Courier New" size=2>第七，什么时候用assert。</FONT></P>
<P><FONT face="Courier New" size=2>第八，GC是什么? 为什么要有GC? </FONT></P>
<P><FONT face="Courier New" size=2>第九，String s = new String("xyz");创建了几个String Object?</FONT></P>
<P><FONT face="Courier New" size=2>第十，Math.round(11.5)等於多少? Math.round(-11.5)等於多少?</FONT></P>
<P><FONT face="Courier New" size=2>第十一，short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?</FONT></P>
<P><FONT face="Courier New" size=2>第十二，sleep() 和 wait() 有什么区别?</FONT></P>
<P><FONT face="Courier New" size=2>第十三，Java有没有goto?</FONT></P>
<P><FONT face="Courier New" size=2>第十四，数组有没有length()这个方法? String有没有length()这个方法?</FONT></P>
<P><FONT face="Courier New" size=2>第十五，Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?</FONT></P>
<P><FONT face="Courier New" size=2>第十六，Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?</FONT></P>
<P><FONT face="Courier New" size=2>第十七，给我一个你最常见到的runtime exception。</FONT></P>
<P><FONT face="Courier New" size=2>第十八，error和exception有什么区别?</FONT></P>
<P><FONT face="Courier New" size=2>第十九，List, Set, Map是否继承自Collection接口?</FONT></P>
<P><FONT face="Courier New" size=2>第二十，abstract class和interface有什么区别?</FONT></P>
<P><FONT face="Courier New" size=2>第二十一，abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized?</FONT></P>
<P><FONT face="Courier New" size=2>第二十二，接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?</FONT></P>
<P><FONT face="Courier New" size=2>第二十三，启动一个线程是用run()还是start()?</FONT></P>
<P><FONT face="Courier New" size=2>第二十四，构造器Constructor是否可被override?</FONT></P>
<P><FONT face="Courier New" size=2>第二十五，是否可以继承String类?</FONT></P>
<P><FONT face="Courier New" size=2>第二十六，当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?</FONT></P>
<P><FONT face="Courier New" size=2>第二十七，try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后?</FONT></P>
<P><FONT face="Courier New" size=2>第二十八，编程题: 用最有效率的方法算出2乘以8等於几?</FONT></P>
<P><FONT face="Courier New" size=2>第二十九，两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?</FONT></P>
<P><FONT face="Courier New" size=2>第三十，当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递?</FONT></P>
<P><FONT face="Courier New" size=2>第三十一，swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?</FONT></P>
<P><FONT face="Courier New" size=2>第三十二，编程题: 写一个Singleton出来。<BR><BR></FONT><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0000ff size=2><STRONG>以下是答案<BR><BR></STRONG></FONT><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第一</FONT>，谈谈final, finally, finalize的区别。<BR>final—修饰符（关键字）如果一个类被声明为final，意味着它不能再派生出新的子类，不能作为父类被继承。因此一个类不能既被声明为 abstract的，又被声明为final的。将变量或方法声明为final，可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值，而在以后的引用中只能读取，不可修改。被声明为final的方法也同样只能使用，不能重载<BR>finally—再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常，那么相匹配的 catch 子句就会执行，然后控制就会进入 finally 块（如果有的话）。<BR>finalize—方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的，因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二</FONT>，Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?<BR>匿名的内部类是没有名字的内部类。不能extends(继承) 其它类，但一个内部类可以作为一个接口，由另一个内部类实现。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第三</FONT>，Static Nested Class 和 Inner Class的不同，说得越多越好(面试题有的很笼统)。<BR>Nested Class （一般是C++的说法），Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。具体可见http: //www.frontfree.net/articles/services/view.asp?id=704&amp;page=1<BR>注： 静态内部类（Inner Class）意味着1创建一个static内部类的对象，不需要一个外部类对象，2不能从一个static内部类的一个对象访问一个外部类对象</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2>第四，&amp;和&amp;&amp;的区别。<BR>&amp;是位运算符。&amp;&amp;是布尔逻辑运算符。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第五</FONT>，HashMap和Hashtable的区别。<BR>都属于Map接口的类，实现了将惟一键映射到特定的值上。<BR>HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。 <BR>Hashtable 类似于 HashMap，但是不允许 null 键和 null 值。它也比 HashMap 慢，因为它是同步的。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第六</FONT>，Collection 和 Collections的区别。<BR>Collections是个java.util下的类，它包含有各种有关集合操作的静态方法。<BR>Collection是个java.util下的接口，它是各种集合结构的父接口。</FONT></P>
<P><BR><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第七</FONT>，什么时候用assert。<BR>断言是一个包含布尔表达式的语句，在执行这个语句时假定该表达式为 true。如果表达式计算为 false，那么系统会报告一个 AssertionError。它用于调试目的： <BR>&nbsp; assert(a &gt; 0); // throws an AssertionError if a &lt;= 0 <BR>断言可以有两种形式：&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp; assert Expression1 ; <BR>&nbsp; assert Expression1 : Expression2 ; <BR>Expression1 应该总是产生一个布尔值。 <BR>Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。<BR>断言在默认情况下是禁用的。要在编译时启用断言，需要使用 source 1.4 标记：&nbsp; <BR>&nbsp; javac -source 1.4 Test.java<BR>要在运行时启用断言，可使用 -enableassertions 或者 -ea 标记。 <BR>要在运行时选择禁用断言，可使用 -da 或者 -disableassertions 标记。 <BR>要系统类中启用断言，可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。 <BR>可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过，断言不应该用于验证传递给公有方法的参数，因为不管是否启用了断言，公有方法都必须检查其参数。不过，既可以在公有方法中，也可以在非公有方法中利用断言测试后置条件。另外，断言不应该以任何方式改变程序的状态。 </FONT></P>
<P><BR><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第八</FONT>，GC是什么? 为什么要有GC? (基础)。<BR>GC是垃圾收集器。Java 程序员不用担心内存管理，因为垃圾收集器会自动进行管理。要请求垃圾收集，可以调用下面的方法之一： <BR>&nbsp; System.gc()<BR>&nbsp; Runtime.getRuntime().gc()</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第九</FONT>，String s = new String("xyz");创建了几个String Object?<BR>两个对象，一个是“xyx”,一个是指向“xyx”的引用对象s。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十</FONT>，Math.round(11.5)等於多少? Math.round(-11.5)等於多少?<BR>Math.round(11.5)返回（long）12，Math.round(-11.5)返回（long）-11;</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十一</FONT>，short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?<BR>short s1 = 1; s1 = s1 + 1;有错，s1是short型，s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十二</FONT>，sleep() 和 wait() 有什么区别? 搞线程的最爱<BR>sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后，线程不一定立即恢复执行。这是因为在那个时刻，其它线程可能正在运行而且没有被调度为放弃执行，除非(a)“醒来”的线程具有更高的优先级<BR>(b)正在运行的线程因为其它原因而阻塞。<BR>wait()是线程交互时，如果线程对一个同步对象x 发出一个wait()调用，该线程会暂停执行，被调对象进入等待状态，直到被唤醒或等待时间到。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2></FONT>&nbsp;</P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十三</FONT>，Java有没有goto?<BR>Goto—java中的保留字，现在没有在java中使用。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十四</FONT>，数组有没有length()这个方法? String有没有length()这个方法？<BR>数组没有length()这个方法，有length的属性。<BR>String有有length()这个方法。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十五</FONT>，Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?<BR>方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现，重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数，我们说该方法被重写 (Overriding)。子类的对象使用这个方法时，将调用子类中的定义，对它而言，父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法，它们或有不同的参数个数或有不同的参数类型，则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十六</FONT>，Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?<BR>Set里的元素是不能重复的，那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。<BR>equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖，为的是当两个分离的对象的内容和类型相配的话，返回真值。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十七</FONT>，给我一个你最常见到的runtime exception。<BR>ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException, <BR>ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十八</FONT>，error和exception有什么区别?<BR>error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。<BR>exception 表示一种设计或实现问题。也就是说，它表示如果程序运行正常，从不会发生的情况。</FONT></P>
<P><BR><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第十九</FONT>，List, Set, Map是否继承自Collection接口?<BR>List，Set是</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2>Map不是</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0033ff size=2><FONT style="BACKGROUND-COLOR: #ffcccc"><FONT style="BACKGROUND-COLOR: #ffffcc">第二十</FONT>，abstract class和interface有什么区别?<BR>声明方法的存在而不去实现它的类被叫做抽象类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现，否则它们也是抽象类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。<BR>接口（interface）是抽象类的变体。在接口中，所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的，没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。然后，它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。</FONT><BR></FONT><FONT style="BACKGROUND-COLOR: #ffcccc" color=#0000ff><BR><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十一</FONT>，abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized?<BR>都不能</FONT></FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0000ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十二</FONT>，接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?<BR>接口可以继承接口。抽象类可以实现(implements)接口，抽象类是否可继承实体类，但前提是实体类必须有明确的构造函数。</FONT></P>
<P><FONT style="BACKGROUND-COLOR: #ffcccc" face="Courier New" color=#0000ff size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十三</FONT>，启动一个线程是用run()还是start()?<BR>启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。</FONT></P><FONT style="BACKGROUND-COLOR: #ffcccc" color=#0000ff>
<P><FONT face="Courier New" size=2></FONT>&nbsp;</P>
<P><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十四</FONT>，构造器Constructor是否可被override?<BR>构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。</FONT></P>
<P><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十五</FONT>，是否可以继承String类?<BR>String类是final类故不可以继承。</FONT></P>
<P><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十六</FONT>，当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?<BR>不能，一个对象的一个synchronized方法只能由一个线程访问。</FONT></P>
<P><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十七</FONT>，try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后?<BR>会执行，在return前执行。</FONT></P>
<P><BR><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十八</FONT>，编程题: 用最有效率的方法算出2乘以8等於几?<BR>有C背景的程序员特别喜欢问这种问题。</FONT></P>
<P><FONT face="Courier New" size=2>2 &lt;&lt; 3</FONT></P>
<P><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第二十九</FONT>，两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?<BR>不对，有相同的hash code。</FONT></P>
<P><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第三十</FONT>，当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递? <BR>是值传递。Java 编程语言只由值传递参数。当一个对象实例作为一个参数被传递到方法中时，参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变，但对象的引用是永远不会改变的。</FONT></P>
<P><BR><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第三十一</FONT>，swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?<BR>switch（expr1）中，expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。</FONT></P>
<P><FONT face="Courier New" size=2><FONT style="BACKGROUND-COLOR: #ffffcc">第三十二</FONT>，编程题: 写一个Singleton出来。<BR>&nbsp;&nbsp;&nbsp;&nbsp; Singleton模式主要作用是保证在Java应用程序中，一个类Class只有一个实例存在。<BR>一般Singleton模式通常有几种种形式:<BR>第一种形式: 定义一个类，它的构造函数为private的，它有一个static的private的该类变量，在类初始化时实例话，通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。<BR>public class Singleton {<BR>　　private Singleton(){}<BR>　　//在自己内部定义自己一个实例，是不是很奇怪？<BR>　　//注意这是private 只供内部调用<BR>　　private static Singleton instance = new Singleton();<BR>　　//这里提供了一个供外部访问本class的静态方法，可以直接访问　　<BR>　　public static Singleton getInstance() {<BR>　　　　return instance; 　　<BR>　　 } <BR>} <BR>第二种形式: <BR>public class Singleton { <BR>　　private static Singleton instance = null;<BR>　　public static synchronized Singleton getInstance() {<BR>　　//这个方法比上面有所改进，不用每次都进行生成对象，只是第一次　　　 　<BR>　　//使用时生成实例，提高了效率！<BR>　　if (instance==null)<BR>　　　　instance＝new Singleton();<BR>return instance; 　　} <BR>} <BR>其他形式:<BR>定义一个类，它的构造函数为private的，所有方法为static的。<BR>一般认为第一种形式要更加安全些 <BR>第三十三 Hashtable和HashMap <BR>Hashtable继承自Dictionary类，而HashMap是Java1.2引进的Map interface的一个实现 </FONT></P>
<P><FONT face="Courier New" size=2>HashMap允许将null作为一个entry的key或者value，而Hashtable不允许 </FONT></P>
<P><FONT face="Courier New" size=2>还有就是，HashMap把Hashtable的contains方法去掉了，改成containsvalue和containsKey。因为contains方法容易让人引起误解。 </FONT></P>
<P><FONT face="Courier New" size=2>最大的不同是，Hashtable的方法是Synchronize的，而HashMap不是，在 <BR>多个线程访问Hashtable时，不需要自己为它的方法实现同步，而HashMap <BR>就必须为之提供外同步。 </FONT></P>
<P><FONT size=2><FONT face="Courier New">Hashtable和HashMap采用的hash/rehash算法都大概一样，所以性能不会有很大的差异。</FONT><BR></FONT></P></FONT></SPAN><img src ="http://www.blogjava.net/jackybu/aggbug/1540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-02-27 17:38 <a href="http://www.blogjava.net/jackybu/articles/1540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>达内学习日记</title><link>http://www.blogjava.net/jackybu/articles/1514.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Fri, 25 Feb 2005 12:12:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1514.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1514.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1514.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1514.html</trackback:ping><description><![CDATA[<A href="http://www.donews.net/dyh/category/12706.aspx">http://www.donews.net/dyh/category/12706.aspx</A><img src ="http://www.blogjava.net/jackybu/aggbug/1514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-02-25 20:12 <a href="http://www.blogjava.net/jackybu/articles/1514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>有关RDF、RSS、XML区别和联系 </title><link>http://www.blogjava.net/jackybu/articles/1279.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Thu, 17 Feb 2005 08:09:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1279.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1279.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1279.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1279.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1279.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; mso-fareast-language: ZH-CN">1</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式是不同的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN"><BR>XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据模式是一个文本可扩展语言，相比之下，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有一个非常简单的模式，即二元关系模式。当然，任何的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">声明形式都可以用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来表示，但</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是被设定为固定的、树状的文本，在描述数据元上缺乏一定的灵活性。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式却是有足够的灵活来描述这种主观的、分布式的、用不同形式来表达的元数据。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN"><BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; mso-fareast-language: ZH-CN">2</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所使用的资源不同</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN"><BR>XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中所谈到的节点，是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文档中的节点，尤其是在文档结构中特定之处。在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中，节点不在是节点本身了，而是任何其他可用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">URIS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标识的资源，因此</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是一种元数据语言。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN"><BR></SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: red">3</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">XML Schema</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">RDF</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的语意不同</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff"><BR>XML Schema</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">最初的语意解释是限制在</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">XML</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文档中的，它是隐含的。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">原本就是语意解释，用于对那些不能够用树形结构来很好建模的知识进行建模。总之，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML/XML?Schema</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是数据建模语言，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是元数据建模语言，当元数据需要编码成数据时，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语法就非常的有用，如果纯用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语言来进行元数据建模那么在灵活性就会受到阻碍</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN; mso-fareast-font-family: SimSun"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; mso-fareast-language: ZH-CN">4</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">. </SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">XML</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">XML?Schema</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">约束它的语法结构，而</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">RDF</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的语法虽然是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">XML</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">格式，但并没有</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">XML?Schema</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来约束它的结构，而</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">RDF?Schema</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是解释性的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">?</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，即解释</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff">RDF?</SPAN><SPAN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的词汇的意义。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN; mso-fareast-font-family: SimSun"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; mso-fareast-language: ZH-CN">5</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">. RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可以看成一种</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">Web</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">知识表示语言，或者说一个逻辑语言，有形式化的语法，模型论语义，证明论，还有完全性，可靠性定理，总之，是个完备的形式化系统。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">?</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">而</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只是一种用于描述语法的语言，即其他语言的语法都可以是基于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN; mso-fareast-font-family: SimSun"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; mso-fareast-language: ZH-CN">6</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-fareast-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun">文件可以被合并，聚集，而</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-fareast-font-family: 新細明體">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun">文件的合并和聚集，有命名空间的限制</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-fareast-font-family: 新細明體">.</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; mso-fareast-language: ZH-CN">7</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">. RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的数据模型是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">?</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">无序的边带有标识的有向图，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的数据模型是有序的节点带有标识的树型结构图</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">.8. RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">相对于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来说语法自由</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">,</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">具有良好的互操作性，而</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; mso-fareast-language: ZH-CN">S</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-fareast-font-family: 新細明體">chema</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun">的约束。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: #3366ff; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 11.25pt; mso-pagination: widow-orphan"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 11.25pt; mso-pagination: widow-orphan"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"></SPAN>&nbsp;</P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 11.25pt; mso-pagination: widow-orphan"><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">是一种数据交换格式</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"><BR>RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">是一种知识表达语言。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">有多种语法，如</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">图，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">N3(</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">三元組</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">),?RDF/XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">等（</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">XML</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">只是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">的一种可选书写方式）。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"><BR>RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">是一种描述站点信息的格式。有多种相互竞争的版本，他们的主要差别是支持的术语表不同（但大同小异）以及书写格式不同。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">W<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="3" UnitName="C">3C</st1:chmetcnv></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">的</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">标准是采用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">作为其格式的。 </SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-font-family: 新細明體; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 11.25pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">说</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">的子集，是强调</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">可用于描述很多知识，而</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">是其中一种；</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"><BR></SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">说</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">是</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">的子集，是强调</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">可以用多种格式来写，而</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體">只是其中一个可选的格式。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-font-kerning: 0pt; mso-bidi-font-family: 新細明體"><o:p></o:p></SPAN></P>
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 11.25pt; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">由此</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun">也</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">可以这么说</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">:RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">是一种知识表达语言，也可以描述站点信息格式。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">是一种描述站点信息的格式，也可以用</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">来描述。另外，</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">有这么两种叫法：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">Resource Description Framework </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">和 </SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">Resource Description Format<BR>RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">也有</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun">三</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">种叫法：</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">Really Simple Syndication </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">和 </SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">RDF Site Summary </SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun">及</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-fareast-font-family: 新細明體">Rich Site Summary</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">，对于</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">RDF</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">和</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">RSS</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN">的不同叫法是描述不同侧重点</SPAN><SPAN lang=ZH-CN style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: 新細明體; mso-fareast-language: ZH-CN; mso-ascii-font-family: SimSun; mso-hansi-font-family: SimSun">的說法。</SPAN><SPAN lang=EN-US style="FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: SimSun; mso-fareast-language: ZH-CN; mso-fareast-font-family: 新細明體"><o:p></o:p></SPAN></P><img src ="http://www.blogjava.net/jackybu/aggbug/1279.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-02-17 16:09 <a href="http://www.blogjava.net/jackybu/articles/1279.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>rss简介 </title><link>http://www.blogjava.net/jackybu/articles/1276.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Thu, 17 Feb 2005 08:03:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1276.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1276.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1276.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1276.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1276.html</trackback:ping><description><![CDATA[<P><FONT color=#0000ff>讨论与Blog相关的技术，不可不谈的就是RSS，这个缩写在英文中可以有几个源头，并被不同的技术团体做不同的解释。既可以是“Rich Site Summary”，或“RDF Site Summary”，也可以是“Really Simple Syndication”。为什么有这么多含义呢？这还要从RSS的一段今天也没有理清的关系说起。</FONT></P>
<P><FONT color=#0000ff>今天肯定有人还记得IE 4刚刚推出来的时候有一个有趣的功能，那就是新闻频道。这个新闻频道的功能与Netscape推出的新闻频道是很相似的（当时Netscape还是市场上领先的浏览器）。为此Netscape 定义了一套描述新闻频道的语言，这就是RSS，只不过Netscape自当时起每况愈下，所以最终也没有发布一个正式的RSS规范（只发布了一个0.9版本）。而微软也在当时推出了支持自己IE的CDF（Channel Definition Format）数据规格，与RSS非常接近。微软试图用新闻频道的功能把“推”(Push)技术变成一个应用主流，并与Netscape抗衡。不过出乎预测的是，“推”技术自始至终没有找到合适的商业模型，而且伴随着其他各类网络特性的出现，也日益无法显现自身的优势。新闻频道在浏览器中的地位最终日暮西山，最后也在IE的后续版本中消失了。</FONT></P>
<P><FONT color=#0000ff>新闻频道的确进入了低谷，但是RSS并没有被业界人士所抛弃。过去两年，Blog从一个专业群体开始，逐步成为了网络上最热门的新话题。而RSS成为了描述Blog主题和更新信息的最基本方法。于是RSS这项技术被著名Blogger/Geek戴夫·温那（Dave Winner）的公司UserLand所接手，继续开发新的版本，以适应新的网络应用需要。新的网络应用就是Blog，因为戴夫·温那的努力，RSS升级到了0.91版，然后达到了0.92版，随后在各种Blog工具中得到了应用，并被众多的专业新闻站点所支持。在广泛的应用过程中，众多的专业人士认识到需要组织起来，把RSS发展成为一个通用的规范，并进一步标准化。一个联合小组根据W3C新一代的语义网技术RDF对RSS进行了重新定义，发布了RSS 1.0，并把RSS定义为“RDF Site Summary”。这项工作并没有与戴夫·温那进行有效的沟通，而戴夫则坚持在自己设想的方向上进一步开发RSS的后续版本，也并不承认RSS 1.0的有效性。RSS由此开始分化形成了RSS 0.9x/2.0和RSS 1.0两个阵营，也由此引起了在专业人群中的广泛争论。</FONT></P>
<P><FONT color=#0000ff>因为争论的存在，一直到今天，RSS 1.0还没有成为标准化组织的真正标准。而戴夫·温那却在2002年9月独自把RSS升级到了2.0版本，其中的定义完全是全新的模式，并没有任何RSS 1.0的影子。这引发了网络上进一步争议，究竟让一个越来越普及的数据格式成为一个开放的标准，还是被一家公司所定义和控制，成为了争议的焦点。戴夫·温那并没有为自己辩解，他的观点是RSS还需要进一步发展，需要专业人士更明确的定义，不过恐怕这种轻描淡写不能消除人们对RSS“被一家商业公司独占”的担心。</FONT></P>
<P><FONT color=#0000ff>前面的铺垫对用户来说也许没有什么太大的意义，可能更多人关心如何在自己的Blog增加RSS输出，这样可以让很多新闻聚合工具（例如CNBlog刚刚推荐的</FONT><A href="http://www.cnblog.org/blog/archives/2002_10_13_cnblog_archive.html#83206511"><FONT color=#0000ff>NewzCrawler</FONT></A><FONT color=#0000ff>）很容易找到你并自动获得你在Blog中的更新内容。</FONT></P>
<P><FONT color=#0000ff>所以我们会在后面的系列文章中逐步增加对RSS工具的介绍，以及如何在你的Blog中添加RSS输出格式和相关的标志链接。等不及的用户，可以先到我的个人站点上的一个临时链接地方尝试起来了，我提供了一个</FONT><A href="http://www.isaacmao.com/rss/rssblogger.asp"><FONT color=#0000ff>简单的RSS生成工具</FONT></A><FONT color=#0000ff>和相关的介绍（对Blogger.com工具最佳，其他工具还没有做测试）。</FONT></P>
<HR>
<FONT color=#0000ff>
<P>RSS 可以扩展到很多应用领域，或可能成为一种“提示性”信息的事实标准格式。</P>
<P>很多更新频繁的<A href="http://www.cnblog.org/wiki/?%u5FAE%u5185%u5BB9"><FONT color=#28557e>微内容</FONT></A>都可以透过RSS 被使用者所订阅，这样可以达到最低成本的情况下帮助使用者获得有价值的信息。</P>
<P>下面是一些有趣的RSS数据源：</P>
<P>新闻站点捕获的信息转化为RSS：</P>
<P>- 新浪新闻 <A href="http://www.isaacmao.com/rss/distill.asp"><IMG src="http://www.cnblog.org/images/xml.gif" border=0></A><BR>- 凤凰网新闻<A href="http://www.isaacmao.com/rss/distillptv.asp"><IMG src="http://www.cnblog.org/images/xml.gif" border=0></A><BR>- 华尔街日报<A href="http://www.isaacmao.com/rss/distillwsj.asp"><IMG src="http://www.cnblog.org/images/xml.gif" border=0></A></P>
<P>很多提供API的网站都愿意把自己的信息给第三方做进一步的处理和提供服务。例如Amazon.com 和Google，以及eBay都有这样的服务。所以很多爱好者便把这些服务变成了RSS源。例如，<A title="onfocus.com : Amazon RSS Feed Builder" href="http://www.onfocus.com/bookwatch/AmazonRSS.asp"><FONT color=#28557e>Amazon RSS Feed Builder</FONT></A>?可以帮助你选择自己喜欢的图书类别转化为RSS，获得不断更新信息。此外，如果你申请了<A href="http://www.googlealert.com/"><FONT color=#28557e>GoogleAlert</FONT></A>的账号，还可以把特定关键词的搜索变成RSS，不但自己可以享用，还可以分享给别人，例如：</P>
<P>- Amazon : "Technical" Books <A href="http://xml.amazon.com/onca/xml3?t=onfocus&amp;dev-t=amznRss&amp;BrowseNodeSearch=173507&amp;mode=books&amp;bcm=&amp;type=lite&amp;page=1&amp;ct=text/xml&amp;sort=+salesrank&amp;f=http://xml.amazon.com/xsl/xml-rss091.xsl"><IMG height=15 alt="click for RSS" src="http://www.onfocus.com/rss091.png" width=80 border=0></A>?(这个标志和XML一样，有些人喜欢)<BR>- GoogleAlert: "Learning Object"<A href="http://www.googlealert.com/feed/0888/isaac.3.xml"><IMG src="http://www.cnblog.org/images/xml.gif" border=0></A><BR>- GoogleAlert: "教育 Blog"<A href="http://www.googlealert.com/feed/0888/isaac.1.xml"><IMG src="http://www.cnblog.org/images/xml.gif" border=0></A><BR>- GoogleAlert: "互联教育体系" <A href="http://www.googlealert.com/feed/0888/isaac.4.xml"><IMG src="http://www.cnblog.org/images/xml.gif" border=0></A><BR>- <A onclick="OpenComments(this.href); return false" href="http://www.googlealert.com/feed/0698/alanl.1.html"><FONT color=#28557e>"electronic portfolio"</FONT></A> <A href="http://www.googlealert.com/feed/0698/alanl.1.xml"><IMG height=14 alt=XML src="http://jade.mcli.dist.maricopa.edu/images/xml.gif" width=36 border=0></A>?（cogdogblog）</P>
<P><BR>你愿意把自己的GoogleAlert RSS分享出来吗？，只要在这些列表后面自己编辑填写就可以了。<BR></P></FONT>
<HR>

<P><FONT color=#0000ff>最近有一种把任何东西都转换成RSS的趋势，不经意地又发现了几个RSS资源：<BR>1）将</FONT><A href="http://www.wired.com/"><FONT color=#0000ff>wired</FONT></A><FONT color=#0000ff>的搜索内容变成rss<BR>在</FONT><A href="http://www.sharpreader.net/"><FONT color=#0000ff>sharpreader</FONT></A><FONT color=#0000ff>中输入</FONT><A href="http://search.wired.com/wnews/default.asp?query=weblog&amp;format=rss"><FONT color=#0000ff>搜索地址</FONT></A><FONT color=#0000ff>，即可完成在</FONT><A href="http://www.wired.com/"><FONT color=#0000ff>wired</FONT></A><FONT color=#0000ff>中搜索关键词的订阅。如果要搜索其他内容，将搜索地址中“weblog”换作你想查询的关键词即可。<BR><BR>2）将</FONT><A href="http://news.google.com/"><FONT color=#0000ff>google news</FONT></A><FONT color=#0000ff>的搜索内容变成rss<BR>在</FONT><A href="http://www.sharpreader.net/"><FONT color=#0000ff>sharpreader</FONT></A><FONT color=#0000ff>中输入</FONT><A href="http://myxo.css.msu.edu/danimal/portal/gnews2rss.pl?q=blog&amp;num=10&amp;.submit=Submit"><FONT color=#0000ff>搜索地址，</FONT></A><FONT color=#0000ff>即可完成在</FONT><A href="http://news.google.com/"><FONT color=#0000ff>google news</FONT></A><FONT color=#0000ff>中搜索关键词的订阅。如果要搜索其他内容，将上述地址中“blog”换作你想查询的关键词即可。<BR><BR>3）将求职信息变成rss<BR>在</FONT><A href="http://rssjobs.com/rssjobs/index.jsp"><FONT color=#0000ff>rssjobs</FONT></A><FONT color=#0000ff>上注册后，可以搜索你需要的求职信息，转换成rss后，在</FONT><A href="http://www.sharpreader.net/"><FONT color=#0000ff>sharpreader</FONT></A><FONT color=#0000ff>中进行订阅。这个是非常实用的功能，再无须奔波于多个求职站点之间了。只可惜国内还没有此种应用。</FONT>?</P>
<HR>

<P>RSS阅读工具列表 </P>
<P></P>
<UL>
<LI><A href="http://www.lights.com/weblogs/rss.html"><FONT color=#7c040d>http://www.lights.com/weblogs/rss.html</FONT></A></LI></UL></FONT><img src ="http://www.blogjava.net/jackybu/aggbug/1276.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-02-17 16:03 <a href="http://www.blogjava.net/jackybu/articles/1276.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>人民币大写转换,身份证识别等 </title><link>http://www.blogjava.net/jackybu/articles/1100.html</link><dc:creator>辰</dc:creator><author>辰</author><pubDate>Sat, 12 Feb 2005 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/jackybu/articles/1100.html</guid><wfw:comment>http://www.blogjava.net/jackybu/comments/1100.html</wfw:comment><comments>http://www.blogjava.net/jackybu/articles/1100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jackybu/comments/commentRss/1100.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jackybu/services/trackbacks/1100.html</trackback:ping><description><![CDATA[<P><STRONG>问题:</STRONG>&nbsp;&nbsp;&nbsp;&nbsp;商业领域,开发票,支票等金钱相关项目通常要求转换成大写,诸如“壹拾圆陆角玖分”.编程过程中,一般的钱币都是double型.<BR><BR><STRONG>当前看到的方法:</STRONG>之所以写这个方法,因为看到的方法设计的不是很好,通常的做法就是逐个字符处理,通过冗长的switch...case结构判断,来决定当前是否应该输出某某汉字,总体来说,完成这件任务是简单的,但是代码和设计质量却不令人满意.<BR><BR><BR><STRONG>设计方法如下:<BR></STRONG>需要注意的问题:<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.各个阿拉伯数字可以通过一个数组'壹','贰','叁'....表示.<BR>&nbsp;&nbsp;&nbsp;&nbsp;2.对于大于10000和大于100000000的数字,可能出现'万','亿'字样<BR>&nbsp;&nbsp;&nbsp;&nbsp;3.对于中间连续为0的数字,正确出现'零'的字样,但是有几种不同的情况需要处理<BR>&nbsp;&nbsp;&nbsp;&nbsp;4.对于某个段的数字全零的情况,例如,整个万段都是0的情况-100000101,中间的0如何出现<BR>&nbsp;&nbsp;&nbsp;&nbsp;5.角分的处理,如果不存在角分的话,应该出现'圆整'的字样<BR>&nbsp;&nbsp;&nbsp;&nbsp;6.整数部分不存在的情况,即只有角分,应该没有'圆'的字样<BR>设计框架:<BR>&nbsp;&nbsp;&nbsp;&nbsp;1.把数字转化成字符串处理,使用Java的时候,把一个double类型转化成一个字符串类型很简单,<BR>&nbsp;&nbsp;&nbsp;&nbsp;调用&nbsp;&nbsp;&nbsp;&nbsp;String.valueOf(double_var)即可得到,但是有一个问题,当你的数字大于10个位的时候,<BR>&nbsp;&nbsp;&nbsp;&nbsp;也就是达亿的时候,他会转换成科学计数法的字串,解决方法就是把他转化成整形long.<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;2.把数字分割成整数部分和小数部分分别处理,根据上面的方法,我们索性把double乘上100,<BR>&nbsp;&nbsp;&nbsp;&nbsp;取后两位为小数部分,前面的为整数部分,得到<BR>&nbsp;&nbsp;&nbsp;&nbsp;long l = (long)(d*100);<BR>&nbsp;&nbsp;&nbsp;&nbsp;String strVal = String.valueOf(l);<BR>&nbsp;&nbsp;&nbsp;&nbsp;String head = strVal.substring(0,strVal.length()-2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //整数部分<BR>&nbsp;&nbsp;&nbsp;&nbsp;String end = strVal.substring(strVal.length()-2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //小数部分<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;3.我们应该把钱数分成段,每四个一段,实际上得到的是一个二维数组,如下:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;仟&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;佰&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;拾&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;'<BR>&nbsp;&nbsp;&nbsp;&nbsp;' '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$1<BR>&nbsp;&nbsp;&nbsp;&nbsp;万&nbsp;&nbsp;&nbsp;&nbsp; $8&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$7&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$5<BR>&nbsp;&nbsp;&nbsp;&nbsp;亿&nbsp;&nbsp;&nbsp;&nbsp; $12&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$11 &nbsp;&nbsp;&nbsp;&nbsp;$10&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$9<BR>&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;其中$i表示这个数字的第i个位置的数字,我们并不实际设定二维数组,我们得到的是数字的位置,<BR>&nbsp;&nbsp;&nbsp;&nbsp;要处理的该产生什么样的表示法,很简单这种处理方式往往就是:设pos表示数字位置,pos/4 在那一个段<BR>&nbsp;&nbsp;&nbsp;&nbsp;万以下段,万段,亿段.pos%4表示某一个段的段内位置,仟,佰,拾,由于叠加的缘故,即会有千万,百万,千亿等<BR>&nbsp;&nbsp;&nbsp;&nbsp;出现,因此这种设计是成立的.这里面隐含了一个问题就是,我们当前的处理的最大数字达千亿位,<BR>&nbsp;&nbsp;&nbsp;&nbsp;更大的数字用这种结构是不妥的,因为可能会有万亿,这时候推荐的想法是把这些设计成单维的数组结构,<BR>&nbsp;&nbsp;&nbsp;&nbsp;从而取得叠加的表示.<BR>&nbsp;&nbsp;&nbsp;&nbsp;4.循环处理各个位的过程中,我们可以预想到,零的问题是最难解决的.<BR>&nbsp;&nbsp;&nbsp;&nbsp;因为我们多个连续的零你只能出现一个表示,更有甚者,当某段全为0时,'零'还不能出现.<BR>&nbsp;&nbsp;&nbsp;&nbsp;因此这些问题综合考虑得到以下代码.<BR><BR><BR><STRONG>代码:(JAVA描述)<BR></STRONG><FONT color=#000080>public static String changeToBig(double value){<BR>&nbsp;&nbsp;&nbsp; char[] hunit={'拾','佰','仟'};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //段内位置表示<BR>&nbsp;&nbsp;&nbsp; char[] vunit={'万','亿'};&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //段名表示<BR>&nbsp;&nbsp;&nbsp; char[] digit={'零','壹','贰','叁','肆','伍','陆','柒','捌','玖'};&nbsp; //数字表示<BR>&nbsp;&nbsp;&nbsp; long midVal = (long)(value*100);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //转化成整形<BR>&nbsp;&nbsp;&nbsp; String valStr=String.valueOf(midVal);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //转化成字符串<BR>&nbsp;&nbsp;&nbsp; String head=valStr.substring(0,valStr.length()-2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取整数部分<BR>&nbsp;&nbsp;&nbsp; String rail=valStr.substring(valStr.length()-2);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取小数部分</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp; String prefix="";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //整数部分转化的结果<BR>&nbsp;&nbsp;&nbsp; String suffix="";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //小数部分转化的结果<BR>&nbsp;&nbsp;&nbsp; //处理小数点后面的数<BR>&nbsp;&nbsp;&nbsp; if(rail.equals("00")){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果小数部分为0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; suffix="整";<BR>&nbsp;&nbsp;&nbsp; } else{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; suffix=digit[rail.charAt(0)-'0']+"角"+digit[rail.charAt(1)-'0']+"分";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //否则把角分转化出来<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; //处理小数点前面的数<BR>&nbsp;&nbsp;&nbsp; char[] chDig=head.toCharArray();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //把整数部分转化成字符数组<BR>&nbsp;&nbsp;&nbsp; char zero='0';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //标志'0'表示出现过0<BR>&nbsp;&nbsp;&nbsp; byte zeroSerNum = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //连续出现0的次数<BR>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;chDig.length;i++){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //循环处理每个数字<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int idx=(chDig.length-i-1)%4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//取段内位置<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int vidx=(chDig.length-i-1)/4;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //取段位置<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(chDig[i]=='0'){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果当前字符是0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zeroSerNum++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //连续0次数递增<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(zero == '0'){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //标志<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zero=digit[0];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if(idx==0 &amp;&amp; vidx &gt;0 &amp;&amp;zeroSerNum &lt; 4){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefix += vunit[vidx-1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zero='0';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zeroSerNum = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //连续0次数清零<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(zero != '0') {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果标志不为0,则加上,例如万,亿什么的<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefix+=zero;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; zero='0';<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefix+=digit[chDig[i]-'0'];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //转化该数字表示<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(idx &gt; 0) prefix += hunit[idx-1];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(idx==0 &amp;&amp; vidx&gt;0){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prefix+=vunit[vidx-1];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //段结束位置应该加上段名如万,亿<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</FONT></P>
<P><FONT color=#000080>&nbsp;&nbsp;&nbsp; if(prefix.length() &gt; 0) prefix += '圆';&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果整数部分存在,则有圆的字样<BR>&nbsp;&nbsp;&nbsp; return prefix+suffix;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //返回正确表示<BR>&nbsp; }<BR></FONT></P><B><BR></B><img src ="http://www.blogjava.net/jackybu/aggbug/1100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jackybu/" target="_blank">辰</a> 2005-02-12 23:25 <a href="http://www.blogjava.net/jackybu/articles/1100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>