Monthly Archives: February 2009

life—-最实在的十句经典人生感悟

一、成功都是逼出来的;  二、如果你简单,这个世界就对你简单;  三、怀才就像怀孕,时间久了会让人看出来;  四、过去酒逢知己千杯少,现在酒逢千杯知己少;  五、参加一次21天训练营,行动力强弱决定成功快慢;  六、人生如果错了方向,停止就是进步;  七、要成功,需要朋友;要取得巨大成功,需要敌人;  八、人生两大悲剧:一是万念俱灰,一是踌躇满志(却只想不做);  九、人和爱情一样,错过了爱情就错过了人生;  十、天下有钱人终成眷属!    2009-02-09 ajean_G

Posted in Uncategorized | 1 Comment

java-jsp—c++——-IT高手是这样练成的

  要成为武林高手,需要长时间的勤学苦练。要成为软件开发高手,又需要多长时间呢?《Modern C++ Design》的作者 Andrei Alexandrescu认为:一个人有可能在20几岁就成为编程高手,但要成为设计高手却需要熬到35岁左右。以23岁大学毕业计算,要经过漫长的12年时间。    以我个人为例(我尚不敢自认是设计高手),22岁大学毕业后,在某研究所用8086汇编语言写一些小规模的程序,颇觉得心应手。凡是能用流程图表示的问题,都似乎不在话下。工作中,与同事共同切磋结构化程序设计,并能有意识地用于实践中。    三年后,承接一个纵向课题:在Windows上开发一个交互式排版系统。用Windows SDK开发。兴奋之余,自然想起用结构化方法进行设计:把整个系统当成一个黑盒子(black box),输出当然是排版。结果,不管是什么格式,输入是???。我卡住了。难道用户操作是输入吗?但用户操作有那么多,怎么表示呢?系统的数据流图该怎么画?数据字典该怎么写?和同事讨论n次后,仍不得其解。懊丧之余,先模仿Quark Express搭个界面吧。然后研究排版算法。程序结构经过至少三次大规模修改,终于能排出一些版式,并在两年后通过了鉴定(鉴定后当然是将其束之高阁)。我从中体会到结构化开发方法不适合开发交互式系统。在开发初期,你不太可能正确地画出数据流图,而结构化设计方法完全依赖数据流图。数据流图发生改变,整个程序结构就要随之改变。    后来,加入一家合资公司,担任开发组长,有五、六个组员。这时我已读过了邵维忠等译的《面向对象的分析》、杨芙清等编译的《面向对象的设计》和《Code Complete》中译本。对面向对象的程序设计虽有所了解但仍是一知半解。    首先,我们用MSVC 1.5开发一个图形编辑软件。我用纸画了20几张对象图,与同事讨论通过后,开始编程。有人负责数据模型,有人负责用户界面,有人负责图形显示。几个月后,老板已可向潜在用户进行展示,反应良好。老板和开发人员都被一种兴奋的心情笼罩着。我们不断地加新功能,老板不时地到展览会上做演示。功能加齐了,开始让潜在用户试用。老板和我们都松了一口气:就剩下改错了,咱们是兵来将挡、水来土屯,没什么可怕的。错误报告来了。我们信心满满地开始查错改错。有些错误很快地被改掉了。但最后我们发现错误源源不断。改了一个错误有可能引起别的错误。软件永远达不到能用的地步。最后,时机被错过。该软件不得不被砍掉。懊丧之余,我们做了反省。大家都认为应尽早改错。同时模模糊糊地觉得数据模型和用户界面的程序一定要严格分开,否则程序极难修改。    回想十几年蹒跚走过的路,好像也略有所悟。试总结出以供参考:  1) 要熟练掌握至少一种编程语言。我觉得最好是C++。掌握了C++,学习其它语言如Java或C#等并非难事,因为各种面向对象的程序语言尽管在语法上可能有很大区别,在语义上却大同小异。  2) 不要寄希望于一次就把软件设计好。在开发初期,要尽量用最简单的设计实现最基本的功能,以使你的软件尽早地能实际运行,不要过于拘泥于细节。这样你才能尽早得到反馈,才能更直观更全面地理解你所面对的问题。你所关注的重点应依次是 Make it work, make it right, make it fast。  3) 软件结构要分块分层。低层模块不要依赖于上层模块。一个类、一个接口或一个函数都应只做一件事。没有本质联系的类或接口就不应有耦合关系。举例而言,要用MVC(Model View Controller)Design Pattern切断用户界面与数据模型之间的直接关联。  4) 软件设计的主要工作是给类分配责任(responsibilities)。尽量不要把类设计成控制者(controller),而要设计成协调者(coordinator)。控制者凡事自己做,协调者让别人做。控制者的逻辑往往很复杂,难于维护;协调者逻辑简单,易于维护。要站在类的使用者角度设计类的外部行为。要讲究一点软件美学,即简单、清晰、一致、平衡等。  5) 了解并运用UML、Design Patterns、Unit Test、Design by Contract等。  6) 使用代码管理系统和质量跟踪系统。  7) 了解各种软件开发过程控制方法,并找出适合你的方法。  8) 阅读经典书籍,研读经典代码,订阅杂志,与同行切磋。    在这行越久越觉得软件开发难。软件开发历史还很短,才50年,还不是一门系统化的学科。有些人甚至认为软件设计与编程是一门艺术。但软件艺术大师还太少,而且我们很难直接欣赏到他们的杰作,除非所有的设计文档和代码都公开。软件更容易藏污纳垢。一个用户界面很漂亮的软件,内部设计和代码却很可能臭不可闻。一个地板倾斜、墙壁裂缝、屋顶漏水的房子没有人会买。一个设计很烂的软件却可能卖得不错。但这样的软件能撑多久呢?    软件设计与编程已经很难,而这仅仅是软件开发的一个方面,软件开发过程控制也很难,也许更难。成为软件开发高手要走一条漫长的路,何日才能仗剑走天涯?    后来,我们又开发一个类似Adobe Acrobat Exchange的PDF文件浏览器兼编辑器(当时Acrobat Exchange 还不能显示中、日、韩文)。这时,老板带来一些过期的《C/C++ Users’ Journal》《Dr. Dobbs’ Journal》杂志。从书评中,我被几本书吸引住了。一本是James Rumbough等著的《Object-Oriented Modeling andDesign》,一本是现在大名鼎鼎的《Design Patterns》,还有就是Scott Meyers著的《Effective C++》和《More Effective C++》。我劝说老板买了这几本书,并撺掇他买了一个CASE(计算机辅助软件工程)工具:Select OMT。    仔细研读这几本书后,颇有顿开茅塞之感。最大的收获在于了解到降低类之间耦合度的重要性。一个类的实现细节发生变化,不应该影响使用该类的其它类的内部实现。更妙的是有不少Design Pattern能马上用到我们的软件中。    我用Select OMT软件画了一些高层的类图、状态图和数据流图等,并让同事们审查。同事们都觉得通过这些图对软件的总体设计有了更好的把握。在写程序的过程中,我们不断调整程序结构以尽可能减小类之间的耦合度。老板很早就安排了专职测试人员。发现问题,马上修改。一年后,我们的软件终于通过了用户的试用,卖出去了。当时,我可说是信心满满。    此后,我做了一年半多媒体编程。发现还是对系统开发更感兴趣。于是加入了Quark软件公司,开发一个基于CORBA的文件管理系统。这是我第一次参与异地开发,也是第一次大规模使用STL。我惊叹于STL设计之妙,同时也对自己的信心打了折扣。此后,我阅读了Martin Fowler著的《UML Distilled》、Bertrand Meyer著的《Object Oriented Software Construction》等书籍。并开始使用Rational Rose。Quark公司的技术文档管理、设计复查、代码复查、质量管理以及德国人(Quark公司德国分公司)严谨的工作态度都给我留下了深刻印象。    项目组下分开发组和测试组。开发组中有一个4到5人组成的设计小组负责软件总体设计,其中一个人负责技术文档,确保文档反映最新的设计。定期进行设计复查。复查时,项目组成员全部参加,并可提出问题或建议。得出结论后,马上付诸实施。    开发组下又设若干小组。小组内定期进行代码复查。由组长选出每个组员的源文件,交其他组员复查,尽量挑出所有的毛病。如果代码太次,要打回从新写过。代码复查既能保证软件质量,又是大家学习的一个机会。    一年半后,我离开Quark,加盟Sybase,参与Power Builder的维护和新版本的开发。这是我第一次参与软件维护,令我认识到软件维护的重要性,认识到编写可维护的代码是软件开发的一个重要课题。    Sybase系统化的质量跟踪系统和用户支援系统让我获益匪浅。在此期间,我阅读了《Large- scale Software Development in C++》、Martin Fowler著的《Refactoring》、 Andrei Alexandrescu著的《Modern C++ Design》,Herb Sutter著的《Exceptional C++》和《More exceptional C++》,以及Kent Beck著的《Extreme Programming Explained》等书籍。对软件开发与维护有了进一步了解,但同时也更认识到软件开发之难。    最后,还要唐僧一下:要成为一个武林高手,虽然需要长期的锻练,但其更重要的是其的领悟能力。同样要成为编程高手,最重要的是领悟能力的训练。有志不在年高,无志空活百岁。要有明确的目标,有针对的对象才能有的放矢。计算机知识更新换代很快,这要求我们要放出眼光,知道哪些该学,哪些学了也是浪费时间。(完)         2009-02-09 ajean_G

Posted in Uncategorized | Leave a comment

JAVA开发者应该去的20个英文网站

http://www.javaalmanac.com – Java开发者年鉴一书的在线版本. 要想快速查到某种Java技巧的用法及示例代码, 这是一个不错的去处.  http://www.onjava.com – O”Reilly的Java网站. 每周都有新文章.  http://java.sun.com – 官方的Java开发者网站 – 每周都有新文章发表.  http://www.developer.com/java – 由Gamelan.com 维护的Java技术文章网站.  http://www.java.net – Sun公司维护的一个Java社区网站.  http://www.builder.com – Cnet的Builder.com网站 – 所有的技术文章, 以Java为主.  http://www.ibm.com/developerworks/java – IBM的Developerworks技术网站; 这是其中的Java技术主页.  http://www.javaworld.com – 最早的一个Java站点. 每周更新Java技术文章.  http://www.devx.com/java – DevX维护的一个Java技术文章网站.  http://www.fawcette.com/javapro – JavaPro在线杂志网站.  http://www.sys-con.com/java – Java Developers Journal的在线杂志网站.  http://www.javadesktop.org – 位于Java.net的一个Java桌面技术社区网站.  http://www.theserverside.com – 这是一个讨论所有Java服务器端技术的网站.  http://www.jars.com – 提供Java评论服务. 包括各种framework和应用程序.  http://www.jguru.com – 一个非常棒的采用Q&A形式的Java技术资源社区.  http://www.javaranch.com – 一个论坛,得到Java问题答案的地方,初学者的好去处。  http://www.ibiblio.org/javafaq/javafaq.html – comp.lang.java的FAQ站点 – 收集了来自comp.lang.java新闻组的问题和答案的分类目录.  http://java.sun.com/docs/books/tutorial/ – 来自SUN公司的官方Java指南 – 对于了解几乎所有的java技术特性非常有帮助.  http://www.javablogs.com – 互联网上最活跃的一个Java Blog网站.  http://java.about.com/ – 来自About.com的Java新闻和技术文章网站.   2009-02-09 ajean_G

Posted in Uncategorized | Leave a comment

java-jsp———ASP、JSP与PHP的比较

     目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(Java Server Pages),PHP (Hypertext Preprocessor)。      简 介     ASP全名Active Server Pages,是一个WEB服务器端的开发环境, 利用它可以产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VB Script(Java script)作为自己的开发语言。    PHP是一种跨平台的服务器端的嵌入式脚本语言. 它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面.它支持目前绝大多数数据库。还有一点,PHP是完全免费的,不用花钱,你可以从PHP官方站点 (http://www.php.net)自由下载。而且你可以不受限制地获得源码,甚至可以从中加进你自己需要的特色。   JSP 是Sun公司推出的新一代站点开发语言,他完全解决了目前ASP,PHP的一个通病脚本级执行(据说PHP4 也已经在 Zend 的支持下,实现编译运行).Sun 公司借助自己在Java 上的不凡造诣,将Java 从Java 应用程序 和 Java Applet 之外,又有新的硕果,就是Jsp--Java Server Page。Jsp 可以在Serverlet和 JavaBean的支持下,完成功能强大的站点程序。    三者都提供在 HTML 代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成 Servlet 并由 Java 虚拟机解释执行,这种编译操作仅在对 JSP 页面的第一次请求时发生。在 ASP 、PHP、JSP 环境下, HTML 代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML 页面只依赖于 Web 服务器,而 ASP 、PHP、JSP 页面需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML 代码中,然后一起发送给浏览器。 ASP 、PHP、 JSP三者都是面向 Web 服务器的技术 ,客户端浏览器不需要任何附加的软件支持。  技术特点  ASP:  1. 使用 VBScript 、 JScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成网站的应用程序。  2. 无须 compile 编译,容易编写,可在服务器端直接执行。  3. 使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。  4. 与浏览器无关 (Browser Independence), 用户端只要使用可执行 HTML 码的浏览器,即可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语言 (VBScript 、 Jscript) 均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。  5.Active Server Pages 能与任何 ActiveX scripting 语言相容。除了可使用VBScript 或 JScript 语言来设计外,还通过 plug-in 的方式,使用由第三方所提供的其他脚本语言,譬如 REXX 、 Perl 、 Tcl 等。脚本引擎是处理脚本程序的 COM(Component Object Model) 物件。  6. 可使用服务器端的脚本来产生客户端的脚本。  7.ActiveX Server Components(ActiveX 服务器元件 ) 具有无限可扩充性。可以使用 Visual Basic 、 Java 、 Visual C++ 、 COBOL 等编程语言来编写你所需要的 ActiveX Server Component 。  PHP:  1.数据库连接    PHP可以编译成具有与许多数据库相连接的函数。PHP与MySQL是现在绝佳的组合。你还可以自己编写外围的函数取间接存取数据库。通过这样的途径当你更换使用的数据库时,可以轻松地更改编码以适应这样的变。PHPLIB就是最常用的可以提供一般事务需要的一系列基库。但PHP提供的数据库接口支持彼此不统一,比如对Oracle,  MySQL, Sybase的接口,彼此都不一样。这也是PHP的一个弱点。  2.面向对象编程    PHP提供了类和对象。基于web的编程工作非常需要面向对象编程能力。PHP支持构造器、提取类等。  JSP:  1.将内容的生成和显示进行分离    使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。如果核心逻辑被封装在标识和Beans中,那么其他人,如Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。    在服务器端,JSP引擎解释JSP标识和小脚本,生成所请求的内容(例如,通过访问Java Beans组件,使用JDBCTM技术访问数据库,或者包含文件),并且将结果以HTML(或者XML)页面的形式发送回浏览器。这有助于作者保护自己的代码,而又保证任何基于HTML的Web浏览器的完全可用性。  2.强调可重用的组件    绝大多数JSP页面依赖于可重用的,跨平台的组件(JavaBeans或者Enterprise JavaBea nsTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡  3.采用标识简化页面开发    Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServer Page技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。    通过开发定制化标识库,JSP技术是可以扩展的。今后,第三方开发人员和其他人员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工具和如同标识一样的执行特定功能的构件来工作。    JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧,并且扩展到能够支持企业级的分布式应用。作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。    由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译成为Java Servlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理和安全性。  … Continue reading

Posted in Uncategorized | Leave a comment

java -jsp—-tomcat5.0 目录结构

    tomcat下有9个目录,分别是bin,common,conf,logs,server,shared,temp,webapps,work 目录,现在对每一目录做介绍.     tomcat根目录在tomcat中叫<CATALINA_HOME>,文章中把tomcat解压后在c:/下.     1.<CATALINA_HOME>/bin: 存放各种平台下启动和关闭Tomcat的脚本文件.其中有个档是 catalina.bat,打开这个windos配置文件,在非注释行加入JDK路径,例如 : SET  JAVA_HOME=C:j2sdk1.4.2_06 保存后,就配置好tomcat环境了. startup.bat是 windows下启动tomcat的文件,shutdown.bat是关闭tomcat的文件.     2.<CATALINA_HOME>/common: 在common目录下的lib目录,存放Tomcat服务器和所有web应用都能访问的JAR?.     3.<CATALINA_HOME>/shared: 在shared目录下的lib目录,存放所有web应用能访问的,但Tomcat不能访问的JAR?.     4.<CATALINA_HOME>/server: 在server/webapps目录中,存放Tomcat自带的两个 APP-admin和manager应用,使用来管理Tomcat-web服务用的.在server/lib目录中,存放tomcat服务器所需要的各,web应用不能访问种jar?.     5.<CATALINA_HOME>/work : Tomcat把各种由jsp生成的servlet文件放在这个目录下.     6.<CATALINA_HOME>/temp : 临时活页夹,Tomcat运行时候存放临时文件用的.     7.<CATALINA_HOME>/logs : 存放Tomcat的日志文件     8.<CATALINA_HOME>/conf : Tomcat的各种配置文件,最重要的是 server.xml;配置tomcat组件的XML文件server.XML其中包括 I.顶层类元素[Top Level Elements]: 位于整个配置文件的顶层, 包括<Server>和<Service>; II.连接器类元素[Connectors ]: 客户和服务(容器类元素)间的通讯接口.接受客户请求,返回响应结果;<Connector>  II.容器类元素[Containers]: 处理客户请求并且生成响应结果,包含3个:<Engine> <Host> <Context> IV.嵌套类元素[Nested Components]: 可以加入到容器中的元素,包括:<logger> <Valve><Realm>等 一个<Server>包含一个或多个<Service>,一个<Service>包含唯一一个<Engine>和一个或多个<Connector>,多个 <Connector>共享一个<Engine>;一个<Engine>包含多个<Host>,每个<Host>定义一个虚拟主机, 包含一个或多个web应用<Context>; <Context>元素是代表一个在虚拟主机上运行的Web应用.<Context>标签的描述 Please note that for tomcat 5.x, unlike tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. Instead, put them in the META-INF/context.xml directory of your WAR file or the conf directory as described above.      9.<CATALINA_HOME>/webapps: web应用的发布目录,把 java开发的web站点或war文件放入这个目录下就可以通过tomcat服务器访问了.       2009-02-09 ajean_G

Posted in Uncategorized | Leave a comment

java—-详细介绍什么是Java虚拟机

一、什么是Java虚拟机      当你谈到Java虚拟机时,你可能是指:      1、抽象的Java虚拟机规范      2、一个具体的Java虚拟机实现      3、一个运行的Java虚拟机实例 二、Java虚拟机的生命周期      一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。你在同一台机器上运行三个程序,就会有三个运行中的Java虚拟机。      Java虚拟机总是开始于一个main()方法,这个方法必须是公有、返回void、直接受一个字符串数组。在程序执行时,你必须给Java虚拟机指明这个包换main()方法的类名。      Main()方法是程序的起点,他被执行的线程初始化为程序的初始线程。程序中其他的线程都由他来启动。Java中的线程分为两种:守护线程 (daemon)和普通线程(non-daemon)。守护线程是Java虚拟机自己使用的线程,比如负责垃圾收集的线程就是一个守护线程。当然,你也可 以把自己的程序设置为守护线程。包含Main()方法的初始线程不是守护线程。      只要Java虚拟机中还有普通的线程在执行,Java虚拟机就不会停止。如果有足够的权限,你可以调用exit()方法终止程序。 三、Java虚拟机的体系结构      在Java虚拟机的规范中定义了一系列的子系统、内存区域、数据类型和使用指南。这些组件构成了Java虚拟机的内部结构,他们不仅仅为Java虚拟机的实现提供了清晰的内部结构,更是严格规定了Java虚拟机实现的外部行为。       每一个Java虚拟机都由一个类加载器子系统(class loader subsystem),负责加载程序中的类型(类和接口),并赋予唯一的名字。每一个Java虚拟机都有一个执行引擎(execution engine)负责执行被加载类中包含的指令。      程序的执行需要一定的内存空间,如字节码、被加载类的其他额外信息、程序中的对象、方法的参数、返回值、本地变量、处理的中间变量等等。Java虚拟机将 这些信息统统保存在数据区(data areas)中。虽然每个Java虚拟机的实现中都包含数据区,但是Java虚拟机规范对数据区的规定却非常的抽象。许多结构上的细节部分都留给了 Java虚拟机实现者自己发挥。不同Java虚拟机实现上的内存结构千差万别。一部分实现可能占用很多内存,而其他以下可能只占用很少的内存;一些实现可 能会使用虚拟内存,而其他的则不使用。这种比较精炼的Java虚拟机内存规约,可以使得 Java虚拟机可以在广泛的平台上被实现。      数据区中的一部分是整个程序共有,其他部分被单独的线程控制。每一个Java虚拟机都包含方法区(method area)和堆(heap),他们都被整个程序共享。Java虚拟机加载并解析一个类以后,将从类文件中解析出来的信息保存与方法区中。程序执行时创建的 对象都保存在堆中。       当一个线程被创建时,会被分配只属于他自己的PC寄存器“pc register”(程序计数器)和Java堆栈(Java stack)。当线程不掉用本地方法时,PC寄存器中保存线程执行的下一条指令。Java堆栈保存了一个线程调用方法时的状态,包括本地变量、调用方法的 参数、返回值、处理的中间变量。调用本地方法时的状态保存在本地方法堆栈中(native method stacks),可能再寄存器或者其他非平台独立的内存中。      Java堆栈有堆栈块(stack frames (or frames))组成。堆栈块包含Java方法调用的状态。当一个线程调用一个方法时,Java虚拟机会将一个新的块压到Java堆栈中,当这个方法运行结束时,Java虚拟机会将对应的块弹出并抛弃。      Java虚拟机不使用寄存器保存计算的中间结果,而是用Java堆栈在存放中间结果。这是的Java虚拟机的指令更紧凑,也更容易在一个没有寄存器的设备上实现Java虚拟机。       图中的Java堆栈中向下增长的,PC寄存器中线程三为灰色,是因为它正在执行本地方法,他的下一条执行指令不保存在PC寄存器中。 四、数据类型(Data Types)      所有Java虚拟机中使用的数据都有确定的数据类型,数据类型和操作都在Java虚拟机规范中严格定义。Java中的数据类型分为原始数据类型 (primitive types)和引用数据类型(reference type)。引用类型依赖于实际的对象,但不是对象本身。原始数据类型不依赖于任何东西,他们就是本身表示的数据。 所有Java程序语言中的原始 数据类型,都是Java虚拟机的原始数据类型,除了布尔型(boolean)。当编译器将Java源代码编译为自己码时,使用整型(int)或者字节型 (byte)去表示布尔型。在Java虚拟机中使用整数0表示布尔型的false,使用非零整数表示布尔型的 true,布尔数组被表示为字节数组,虽然他 们可能会以字节数组或者字节块(bit fields)保存在堆中。      除了布尔型,其他Java语言中的原始类型都是Java虚拟机中的数据类型。在Java中数据类型被分为:整形的byte,short,int,long;char和浮点型的float,double。Java语言中的数据类型在任何主机上都有同样的范围。       在Java虚拟机中还存在一个Java语言中不能使用的原始数据类型返回值类型(returnValue)。这种类型被用来实现Java程序中的“finally clauses”,具体的参见18章的“Finally Clauses”。      引用类型可能被创建为:类类型(class type),接口类型(interface type),数组类型(array type)。他们都引用被动态创建的对象。当引用类型引用null时,说明没有引用任何对象。      Java虚拟机规范只定义了每一种数据类型表示的范围,没有定义在存储时每种类型占用的空间。他们如何存储由Java虚拟机的实现者自己决定。关于浮点型更多信息参见14章“Floating Point Arithmetic”。  TypeRange byte8-bit signed two”s complement integer (-27 to 27 – 1, inclusive) short16-bit signed two”s complement integer (-215 to 215 – 1, inclusive) int32-bit signed two”s complement integer (-231 to 231 – 1, inclusive) long64-bit signed two”s complement integer (-263 to 263 – 1, inclusive) char16-bit unsigned Unicode character (0 to 216 – 1, inclusive) float32-bit IEEE 754 single-precision float double64-bit IEEE 754 double-precision float returnValueaddress of an opcode within the same method referencereference to an object on the heap, or null 五、字节长度      Java虚拟机中最小的数据单元式字(word),其大小由Java虚拟机的实现者定义。但是一个字的大小必须足够容纳 … Continue reading

Posted in Uncategorized | Leave a comment

唐僧究竟最喜欢哪个徒弟?

      唐僧西天取得真经100年之后的一天,唐僧到如来家里做客。如来为了检验他这100年来修炼程度,席间谈话如下:        众所周知,你当年的成功,离不开你的三个得力徒弟,悟空,八戒,沙僧。那么你本人最喜欢哪个徒弟呢?唐僧给的答案多少有些出乎如来的意料,那就是:八戒。        “八戒最大的优点就是可爱。”唐僧满面笑容的说道,“有他就少不了笑声。有很多人误以为他懒惰,其实他并不懒惰。每次他打扫马厩或者收拾包裹,都是一丝不苟,挑不出什么错儿来。但是他很小气,总是要暗地比较,自己比别人多干了多少,他吃不得一点亏。而且他又喜欢睡懒觉,所以大家才会以为他很懒。”        “作为一个领导者,必须要知人善用。手下队伍要精简,属下个人能力要强。”唐僧如是说。        “那么八戒的个人能力是你三个徒弟里面最差的,又有不负责任等对工作不利的缺点。你为什么不换一个精明能干的人选呢?”如来佛不解的问。“        “的确,八戒在队伍里面确实是个人素质最差的一个。但是,并不是由最好的人员组合起来的队伍就可以最大限度的发挥队伍的整体功效。一个强大的完整的队伍,成员必须要有不同的特点和分工。你仔细观察一下就会发现,通风报信的往往是八戒。而打不过就跑这个特点也只有八戒有。我记得以前有个将军,他就是要用怕死的兵放峭。别人不解。他说假如用勇猛的士兵放悄站岗,遇到敌人一定会战死,而胆怯的士兵则会跑回营中报信。这就是说明人员搭配问题的很好的一个例子。”唐僧神采奕奕的说。        “而且,八戒这个人脸皮很厚,不怕指责。一件事情作不好,大家都可以把责任推到他头上。这样就节省了内部处理问题的时间。而由于他的存在,其余的人员自然而然就会对自己有一种信心,因为他的能力一定是比八戒强的。”        “对于我个人来讲,”唐僧点起一支烟,兴致勃勃的说,“我之所以喜欢他,是因为他比较喜欢溜须拍马。一个领导者,不可避免的就会对一个总是夸赞他的手下产生好感甚至依赖感。你看几乎每个领导者身边都会有八戒这样的人物存在。因为你不能要求领导者在一个至高无上的地位上,还要放低身份和自尊,去听取下属的批评和接受下属的顶撞。你必须要有一个会说好话的人在身边,否则你早就被气死了。”        唐僧的话把如来逗笑了。        如来问到:你觉的悟空这个徒弟怎么样?一路上他多次救你性命!        “是呀,上次我西天取经还有一个主角人物,他就是齐天大圣孙悟空。而他由于紧箍咒问题的存在,和我的关系非常微妙,就如同台湾问题对中美关系的影响一样。其实我们之间最终是敌人的关系。”唐僧缓缓的说。        “每次危难时刻,他都能出来救我,很多次我都非常感动。但是只要一风平浪静,我就会恢复对他的敌视态度。”唐僧说,“因为我是一个忌妒心很强的人。每个希望自己建功立业的男人都有忌妒心。”        如来站起来给唐僧沏了杯茶,唐僧呷了一口继续说到:西游记不是无间道,“唐僧说,”我必须作男一号。别人不可能和我抢戏分,比风头。因为我是整个组织的领导者,也是这次西天取经的唯一执行者,他们都是我的助手,助手的功劳怎么能大过执行者的功劳呢?可是悟空没有重视自己的身份,总是擅自行事,关键的时候英雄当头。我知道他的人气和知名度高过我,实际上这是不正常的现象。毕竟经是我拿回来的。“        “那么你们在个性上和感情上有什么冲突呢?”如来问。        “首先我先说我们的共同点,其一,我们都是很执着的人,其二,我们都是禁欲者。在这两点上我们可以相互激励对方。但是,孙悟空其实是一个无知的农村土猴。他的文化素质是很差的,而且脾气太倔强,因为没有受过良好家庭教育的关系。作为一个被领导者,过于倔强的性格一定会跟领导者有矛盾。一山不容二虎,当一件事情,我们有了分歧,那么到底该听谁的呢?当然是听领导者的。因为领导者是一个指挥者,他负的是全局成败的责任。不管是他指挥失当,还是用人失当,只要最后结果是失败的,他就要全部负责。象中国足球队的教练输球了怪队员就是一种低素质指挥者的表现,因为队员是他选拔和训练的。坦白的讲,我是一个完美的指挥者,最后取经成功的结果说明了一切。而如果指挥者下了命令手下不听从,那么最后就是要手下负责。作为一个真正意义上的属下,即使领导者让他跳崖他也一定要执行,只要彻底执行了他就没有责任。而悟空就不懂这个常识,所以我说他是乡村土猴子。说实话他的处事方法真的让人讨厌,很多次我都想让他卷铺盖回家。”        唐僧自信深沉的谈吐让如来欣慰的笑了笑。“你们矛盾爆发程度最激烈的一次是不是白骨精事件的那次?”如来继续问道。        唐僧咳嗽了几声,“唉。那是我最丢脸的事情了。”唐僧吐了个烟圈,“那次我是直接的输给了他。至今我都耿耿于怀。人都是有感情的,虽然是敌对情况严重了点,毕竟我们还是同志,是战友,是上下级。相处久了一定是有感情的。那次我让他走,实在是因为他让我太生气了。看他一次次给我下跪认错,我忍不住心软。但是我告诉自己,这是赶走他最好的时机,如果这次他走了,他永远都是个农村土猴。而我自己会独享取经归来的光环。所以我咬牙赶他走了。后来发现不能没有他。你看哪一个君王不是等稳定之后才除掉自己眼中钉的。所以我想请他回来,等取经成功以后向如来揭发他的一些丑行斗倒他也不迟。请他回来的时候我有多丢面子,好在大家都是自己人,家丑不可怕。”        “那个紧箍咒问题你怎么看?”如来问。“这个问题是我们师徒关系中的核心问题。我总是会在恰当的时机让他见识我的厉害。看他痛苦的样子其实我很有满足感,但是我还装出很心痛的样子。而且一一一,正是因为有紧箍咒的存在,我认为他一定把我当仇人看。等到了取经成功以后会找我报复,遗憾的是他没有抓住那个机会,因为他的谋略比我差很远。反而是我向你推荐他作佛。作佛了就不能好打不平了。他的性格我清楚,他忍不住火气的。所以他常常被你教训。这你也清楚的”。        最后,唐僧说了这样的话:“英雄从来都是被利用的。他是个英雄,可是我却是个赢家。”      … Continue reading

Posted in Uncategorized | Leave a comment

java—eclipse无法build project 编译项目或者类的解决方法—-Eclipse无法编译java文件

  1. 点击菜单上的project,先clean 2. 删除build path里所有引用的lib,然后重新导入。3. 右键点击项目,build project 我的问题就是这样解决。 传说的其它方法,我没试验成功,如下: 解决Eclipse无法编译JAVA文件的方法是变换jre路径。(http://whlpeng.spaces.live.com/blog/cns!54A281FAE839FF53!133.entry)       Eclipse无法编译java文件 无意中发现将Web项目中的WEB-INF目录下的classes文件夹删除后 无法继续编译这个项目了   在同事的帮助下发现了原因是jre的设置问题 在安装JDK的时候会在系统中安装2个jre e.g.  C:jdk1.5jre  ;  C:Program FilesJavajre1.5.0_05 原来设置的是后者 然后改成前者就可以编译了   后来我又把classes目录删掉 发现又出现了这个问题 于是我把jre的路径又设为原来那个就可以编译了   反复试了几次 都是通过换jre路径才能解决问题   结论:解决Eclipse无法编译JAVA文件的方法是变换jre路径           2009-02-03 … Continue reading

Posted in Uncategorized | Leave a comment