??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲AV无码娇色,久久亚洲熟女cc98cm,亚洲AV日韩AV永久无码绿巨人http://www.tkk7.com/aw815/category/4718.html让我们把JAVAq行到底!zh-cnWed, 28 Feb 2007 04:21:36 GMTWed, 28 Feb 2007 04:21:36 GMT60在开发中使用anthttp://www.tkk7.com/aw815/articles/61908.html水秀清灵水秀清灵Sat, 05 Aug 2006 02:18:00 GMThttp://www.tkk7.com/aw815/articles/61908.htmlhttp://www.tkk7.com/aw815/comments/61908.htmlhttp://www.tkk7.com/aw815/articles/61908.html#Feedback1http://www.tkk7.com/aw815/comments/commentRss/61908.htmlhttp://www.tkk7.com/aw815/services/trackbacks/61908.html说明Q?br />        下面是我在开发中使用的build.xml文g以及光属文ӞZ层次清晰我将公用d攑օcommon.xml中,另外q有一些配|文Ӟq个build.xml会在今后开发中不断完善?br />
        1、build.xml文g
<?xml version="1.0" encoding="gb2312"?>
<project name="message" basedir="." default="help">
  <property name="webapp.name" value="message"/>
  <import file="../message/common.xml"/>

  <!-- "test" d用于执行junit的单元测?-->
  <target name="test" description="Run junit test.">
    <mkdir dir="${build.dir}/test"/>
    <mkdir dir="${build.dir}/report"/>
  
    <junit printsummary="yes">
      <formatter type="xml"/>
   <test name="cn.hxex.message.test.AllTests"/>
   <classpath refid="classpath"/>
    </junit>
   
    <junitreport todir="${build.dir}/test">
      <fileset dir=".">
     <include name="TEST-*.xml"/>
   </fileset>
   <report format="noframes" todir="${build.dir}/report"/>
    </junitreport>
  </target>
 
  <!-- "run"d用于q行指定E序 --> 
  <target name="run">
    <java classname="cn.hxex.basic.exercise.LifeCycle">
      <classpath refid="classpath"/>
    </java>
  </target>
</project>

        2、common.xml文g
<?xml version="1.0" encoding="gb2312"?>
<project>
  <!-- 直接讄目文g夹变量,也可以写一个配|文Ӟ用file属性引?-->
  <!--
  <property file="webapp.properties"/>
   -->
  <property name="src.dir" value="src"/>
  <property name="build.dir" value="WebRoot"/>
  <property name="webpage.dir" value="${build.dir}/webpage"/>
  <property name="webinf.dir" value="${build.dir}/webinf"/>
  <property name="lib.dir" value="${webinf.dir}/lib"/>
  <property name="classes.dir" value="${webinf.dir}/classes"/>
 
  <!-- 取得环境变量TOMCAT_HOME的?-->
  <property environment="env"/>
  <property name="tomcat.home" value="${env.TOMCAT_HOME}"/>
  <property name="ant.home" value="${env.ANT_HOME}"/>
 
  <!-- 引入有关tomcat的变量配|文Ӟ也可以象上面一P直接在这里设|?-->
  <property file="tomcat.properties"/>
  <!--
  <property name="tomcat.server" value="localhost"/>
  <property name="tomcat.manager.url" value="http://${tomcat.server}/manager"/>
  <property name="tomcat.username" value="admin"/>
  <property name="tomcat.password" value=""/>
   -->
 
  <!-- 讄d要执行的cL?-->
  <!-- 可引入设|tomcatd的配|文?-->
  <taskdef file="tomcatTasks.properties">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <!-- 也可逐一讄d
  <taskdef name="deployc" classname="org.apache.catalina.ant.DeployTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="list" classname="org.apache.catalina.ant.ListTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="remove" classname="org.apache.catalina.ant.RemoveTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="roles" classname="org.apache.catalina.ant.RolesTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="start" classname="org.apache.catalina.ant.StartTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
 
  <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask">
    <classpath>
      <pathelement path="${tomcat.home}/server/lib/catalina-ant.jar"/>
    </classpath>
  </taskdef>
  -->
  <!--
  <taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
    <classpath>
      <pathelement path="${ant.home}/lib/ant-junit.jar"/>
    </classpath>
  </taskdef>-->
     
  <!-- 讄c\?-->
  <path id="classpath">
    <fileset dir="${lib.dir}">
      <include name="*.jar"/>
    </fileset>
 
    <fileset dir="${tomcat.home}/common/lib">
      <include name="*.jar"/>
    </fileset>
   
    <fileset dir="${ant.home}/lib">
      <include name="*.jar"/>
    </fileset>
   
    <pathelement path="${classes.dir}"/>
  </path>

  <!-- "help"d用于昄帮助信息 -->
  <target name="help">
    <echo message=""/>
    <echo message="${webapp.name} build file"/>
    <echo message="----------------------------------------------------------"/>
    <echo message=""/>
    <echo message="Available targets are:"/>
    <echo message=""/>
    <echo message="help    --> Print this screen."/>
    <echo message="start   --> Start Tomcat application."/>
    <echo message="stop    --> Stop Tomcat application."/>
    <echo message="list    --> List Tomcat applications."/>
    <echo message="compile --> Compile all Java files."/>
    <echo message="deploy  --> Deploy the project to the tomcat."/>
    <echo message="clean   --> Clean output directories."/>
    <echo message="new     --> Creates a new project with the specified name."/>
    <echo message="test    --> Run junit test."/>
  </target>

  <!-- "start"d用于启动Tomcat -->
  <target name="start" description="Start Tomcat application">
    <start url="${tomcat.manager.url}"
           username="${tomcat.username}"
           password="${tomcat.password}"
           path="/${webapp.name}"/>
  </target>

  <!-- "stop"d用于停止Tomcat -->
  <target name="stop" description="Stop Tomcat application">
    <stop url="${tomcat.manager.url}"
          username="${tomcat.username}"
          password="${tomcat.password}"
          path="/${webapp.name}"/>
  </target>

  <!-- "list"d用于昄Tomcat中应用名 -->
  <target name="list" description="List Tomcat applications">
    <list url="${tomcat.manager.url}"
          username="${tomcat.username}"
          password="${tomcat.password}"/>
  </target> 
 
  <!-- "clean"d用于清除所有文件及文g?-->
  <target name="clean" description="Clean output directories">
    <delete dir="${classes.dir}"/>
    <delete dir="${tomcat.home}/webapps/${webapp.name}"/>
  </target>

  <!-- "compile"d用于~译源代码和复制Hibernate配置文g到指定类文g?-->
  <target name="compile" description="compile the java source and copy the configuration file">
    <mkdir dir="${classes.dir}"/>
    <javac destdir="${classes.dir}"
           target="1.5" source="1.5" debug="true"
           deprecation="true" optimize="false" failonerror="true">
      <src path="${src.dir}"/>
      <classpath refid="classpath"/>
    </javac>
 
    <!-- 复制hibernate映射文g到项目下的classes文g?-->
    <copy todir="${classes.dir}">
      <fileset dir="${src.dir}" includes="**/*.xml"/>
      <fileset dir="${src.dir}" includes="**/*.properties"/>
    </copy>
 
    <!-- 复制配置文g到项目下的classes文g?-->
    <copy todir="${tomcat.home}/webapps/${webapp.name}/WEB-INF/classes">
      <fileset dir="${classes.dir}" includes="**/*.xml"/>
      <fileset dir="${classes.dir}" includes="**/*.properties">
        <exclude name="**/*_zh.properties"/>
      </fileset> 
    </copy>
 
    <!-- 对中文配|文件进行编码编?-->
    <native2ascii dest="${tomcat.home}/webapps/${webapp.name}/WEB-INF/classes"
                  encoding="UTF-8"
                  src="${classes.dir}" includes="**/*_zh.properties"/>
  </target>

  <!-- "deploy"d用于部v目和复刉|文件到tomcat容器 -->
  <target name="deploy" depends="compile" description="deploy the project to the tomcat!">
    <!-- 复制web|页文g -->
    <copy todir="${tomcat.home}/webapps/${webapp.name}" preservelastmodified="true">
      <fileset dir="${webpage.dir}">
        <include name="**/*.*"/>
        <exclude name="**/readme.txt"/>
      </fileset>
    </copy>
 
    <!-- 复制cL?-->
    <copy todir="${tomcat.home}/webapps/${webapp.name}/WEB-INF/classes"
          preservelastmodified="true">
      <fileset dir="${classes.dir}"/>
    </copy>
   
    <!-- 复制库文?-->
    <copy todir="${tomcat.home}/webapps/${webapp.name}/WEB-INF/lib"
          preservelastmodified="true">
      <fileset dir="${lib.dir}">
        <exclude name="**/readme.txt"/>
      </fileset>
    </copy>
 
    <!-- 复制配置文g -->
    <copy todir="${tomcat.home}/webapps/${webapp.name}/WEB-INF"
          preservelastmodified="true">
      <fileset dir="${webinf.dir}">
        <exclude name="**/readme.txt"/>
      </fileset>
      <fileset dir="${build.dir}">
        <include name="*.xml"/>
        <include name="*..properties"/>
      </fileset>
    </copy>
  </target>

  <!-- "new"d用于创徏一个新的项目,复制原项目,q改为新目?-->
  <target name="new" description="creates a new project with the specified name">
    <echo level="info">
      +----------------------------------------------------------+
      |    -- Welcome to the AppDemo New Application Wizard! --  |
      |                                                          |
      | To create a new application, please answer the following |
      | questions.                                               |
      +----------------------------------------------------------+
    </echo>
    <echo/>
 
    <!-- 提示用户输入新徏的项目名 -->
    <input message="What would you like to name your application [myapp]?"
           addproperty="app.name" defaultvalue="myapp"/>
 
    <echo level="info">
      Creating new application named '${app.name}'...
    </echo>
    <copy todir="../${app.name}">
      <fileset dir="${basedir}">
        <exclude name="${lib.dir}/*.txt"/>
      </fileset>
    </copy>
 
    <!-- 替换应用?-->
    <replaceregexp flags="g">
      <regexp pattern="message"/>
      <substitution expression="${app.name}"/>
      <fileset dir="../${app.name}">
        <include name="**"/>
        <exclude name="**/*.jar"/>
      </fileset>
    </replaceregexp>
  </target>
</project>

        3、webapp.properties文g
src.dir=src
build.dir=WebRoot
webpage.dir=${build.dir}/webpage
webinf.dir=${build.dir}/webinf
lib.dir=${webinf.dir}/lib
classes.dir=${webinf.dir}/classes

        4、tomcatTasks.properties文g
deploy=org.apache.catalina.ant.DeployTask
install=org.apache.catalina.ant.InstallTask
list=org.apache.catalina.ant.ListTask
reload=org.apache.catalina.ant.ReloadTask
remove=org.apache.catalina.ant.RemoveTask
resources=org.apache.catalina.ant.ResourcesTask
roles=org.apache.catalina.ant.RolesTask
start=org.apache.catalina.ant.StartTask
stop=org.apache.catalina.ant.StopTask
undeploy=org.apache.catalina.ant.UndeployTask

        5、tomcat.properties文g
tomcat.server=localhost
tomcat.manager.url=http://${tomcat.server}/manager
tomcat.username=admin
tomcat.password=



水秀清灵 2006-08-05 10:18 发表评论
]]>
eclipse在oracle安装后启动不了的解决办法http://www.tkk7.com/aw815/articles/60816.html水秀清灵水秀清灵Sun, 30 Jul 2006 01:37:00 GMThttp://www.tkk7.com/aw815/articles/60816.htmlhttp://www.tkk7.com/aw815/comments/60816.htmlhttp://www.tkk7.com/aw815/articles/60816.html#Feedback0http://www.tkk7.com/aw815/comments/commentRss/60816.htmlhttp://www.tkk7.com/aw815/services/trackbacks/60816.html"属?->"目标"Q改为: jdkD:\eclipse-SDK-3.1.1-win32\eclipse\eclipse.exe -vm "%JAVA_HOME%\bin\javaw.exe 3、修改系l的环境变量Q把原来的jdk的bin路径加到path的最前面Q去掉oracle的jre路径Q? C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;

水秀清灵 2006-07-30 09:37 发表评论
]]>
JAVA面试题(一Q?/title><link>http://www.tkk7.com/aw815/articles/37939.html</link><dc:creator>水秀清灵</dc:creator><author>水秀清灵</author><pubDate>Tue, 28 Mar 2006 15:58:00 GMT</pubDate><guid>http://www.tkk7.com/aw815/articles/37939.html</guid><wfw:comment>http://www.tkk7.com/aw815/comments/37939.html</wfw:comment><comments>http://www.tkk7.com/aw815/articles/37939.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.tkk7.com/aw815/comments/commentRss/37939.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/aw815/services/trackbacks/37939.html</trackback:ping><description><![CDATA[ <p>1?font size="2"><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">heap</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">stack</span></font><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"><font size="3"><font size="2">有什么区别?<br />    栈(stack)Q是限定仅在表尾q行插入或删除操作的U性表Q栈的修Ҏ(gu)按照后进先出QLIFOQ原则进行的Q因此栈又称为后q先出线性表。在java中栈ȝ于常规RAMQ随问存储器Q区域,可通过“栈指针”获得处理的直接支持。栈指针若向下移Q会创徏新的内存Q若向上U,则会释放那些内存。这是一U特别快、特别有效的数据保存方式Q仅ơ于寄存器。创建程序时QJava~译器必d地知道栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灉|性,所以尽有些Java数据要保存在堆栈里,如对象的引用Q句柄)、局部变量、Ş式参数等Q但java对象q不攑֜其中。?br />    堆(heapQ,是一U常规用途的内存池(也在RAM区域Q,其中保存了Java对象。和栈不同之处在于,堆的存储I间是在E序执行q程中动态分配的Q编译器不必知道要从堆里分配多少存储I间Q也不必知道存储的数据要在堆里停留多长的旉。因此,用堆保存数据时会得到更大的灵zL。要求创Z个对象时Q只需用new命o~制相关的代码即可。执行这些代码时Q会在堆里自动进行数据的保存。当Ӟ到这U灵zL,必然会付Z定的代h(hun)Q在堆里分配存储I间时会花掉更长的时_<br /><br />2、error和exception的区别?<br />    error是指与系l有关的错误Q这U错误一般是不可恢复Q或恢复h很困隄Q如内存溢出错误Q是不可能由E序来处理的?br />    exception是指在程序执行过E中发生的,需要程序捕获和处理的运行时错误Q在E序q行正常的情况下Q是不会发生的?span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">JAVA</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">E序q反?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">JAVA</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">的语义规则时Q?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">JAVA</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">虚拟机就会将发生的错误表CZؓ一个异常。违反语义规则包?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">2</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">U情c一U是</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">JAVA</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">cd内置的语义检查。如数组下标界</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">,</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">会引?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">IndexOutOfBoundsException;</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">讉K</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">null</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">的对象时会引?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">NullPointerException</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">。另一U情况就?/span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">JAVA</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">允许E序员扩展这U语义检查,E序员可以创q异常Qƈ自由选择在何时用</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">throw</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">关键字引发异常。所有的异常都是</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">java.lang.Thowable</span></font><font size="2"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">的子cR?br /></span><br />3?/font><font size="3"><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">如果pȝ要用超大整敎ͼ过</span><span lang="EN-US" style="FONT-FAMILY: 'Times New Roman'; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">long</span></font><span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"><font size="2">长度范围Q,请你设计一个数据结构来存储q种大型数字以及设计一U算法来实现大整数加法q算Q?br /></font>public class BigInt {<br /> <br />    /** 用于保存大整数 */<br />    private int[] intArr = null;<br />    <br />    /** 无参构造方法构造一个初始化?的大?*/<br />    public BigInt() {<br />        this("0");<br />    }<br />    <br />    /** 构造一个带参大?*/<br />    public BigInt(String s) {<br />        if(intArr != null) {<br />            intArr = null;<br />        }<br />        setArr(s);<br />    }<br />      <br />    /** 讄大数 */<br />    public void setArr(String s) {<br />        intArr = new int[s.length()];<br />        for(int i=0;i<s.length();i++){<br />            int intTemp = s.charAt(i) - '0';<br />            if(intTemp <= 9) {<br />                intArr[i] = intTemp;<br />            }<br />        }<br />    }<br /> <br />    /** 取得数的字符串类型的表示 */<br />    public String getArr() {<br />        StringBuffer strBuf = new StringBuffer();<br />        for(int i=0; i<intArr.length; i++) {<br />            strBuf.append(intArr[i]);<br />        }<br />        return strBuf.toString();<br />    }<br /> <br />    /** q回数的大小 */<br />    private int length() {<br />        int len = 0;<br />        if(intArr != null) {<br />            len = intArr.length;<br />        } <br />        return len;<br />    }</span></font></span></p> <p> <span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"> <font size="3"> <span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">    private static BigInt fillZero(BigInt arr, int int0){<br />        BigInt temp = arr;<br />        for(int i=0; i<int0; i++){<br />            temp = new BigInt("0" + temp.getArr());<br />        }        <br />        return temp;<br />    }<br /> <br />    /** 对两个BigInt型对象做加法q算Q返回结果ؓBigInt?*/<br />    public static BigInt add(BigInt one, BigInt two) {<br />        BigInt arrSum = null; <br />        BigInt arr = null;<br />   <br />        if(one.intArr.length > two.intArr.length) {<br />            arrSum = one;<br />            arr = fillZero(two, one.intArr.length - two.intArr.length);<br />        } else if(one.intArr.length == two.intArr.length) {<br />            arrSum = two;<br />            arr = one;<br />        } else {<br />            arr = two;<br />            arrSum = fillZero(one, two.intArr.length - one.intArr.length);<br />        }</span> </font> </span> </p> <p> <span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"> <font size="3"> <span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">        int i=arr.intArr.length-1;<br />        for(; i>=1; i--){<br />            int intTemp = arrSum.intArr[i] + arr.intArr[i];<br />            arrSum.intArr[i] = intTemp%10;<br />            if(intTemp>9){<br />                arrSum.intArr[i-1] = arrSum.intArr[i-1] + intTemp/10;<br />            }<br />        }  </span> </font> </span> </p> <p> <span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"> <font size="3"> <span style="FONT-FAMILY: 宋体; FONT-SIZE: 10.5pt; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'">        int intTemp = arrSum.intArr[0] + arr.intArr[0];<br />        arrSum.intArr[i] = intTemp%10;<br />        if(intTemp>9){<br />            return new BigInt("1" + arrSum.getArr());<br />        } else {<br />            return arrSum;<br />        }    <br />     }<br /> <br />     /** E序入口Q格式化输出 */<br />     public static void main(String[] args) {<br />         try {<br />             BigInt one = new BigInt(args[0]);<br />             System.out.println("  " + one.getArr());<br />             BigInt two = new BigInt(args[1]);<br />             System.out.println("+ " + two.getArr()); <br />             System.out.println("----------------------------");   <br />             BigInt sum = BigInt.add(one, two);<br />             System.out.println(" " + sum.getArr());<br />         } catch(java.lang.ArrayIndexOutOfBoundsException e) {<br />             System.out.println("数组下标界");<br />      }<br />   }<br />}<br /></span> </font> </span> </p> <img src ="http://www.tkk7.com/aw815/aggbug/37939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/aw815/" target="_blank">水秀清灵</a> 2006-03-28 23:58 <a href="http://www.tkk7.com/aw815/articles/37939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java的内?/title><link>http://www.tkk7.com/aw815/articles/28838.html</link><dc:creator>水秀清灵</dc:creator><author>水秀清灵</author><pubDate>Fri, 20 Jan 2006 15:04:00 GMT</pubDate><guid>http://www.tkk7.com/aw815/articles/28838.html</guid><wfw:comment>http://www.tkk7.com/aw815/comments/28838.html</wfw:comment><comments>http://www.tkk7.com/aw815/articles/28838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/aw815/comments/commentRss/28838.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/aw815/services/trackbacks/28838.html</trackback:ping><description><![CDATA[Java吸引了越来越多的商业机构和Y件开发商Q但在赢得最l胜利之前Javaq需要克服一些主要障?<BR><BR>最q的研究表明 微Y 公司开发的~程技术仍然是软g开发商采用的最重要语言。但Java正在逐步地拉q同微Y~程语言的距R根?000q度IDC研究报告Q当时有300万h在用C 和C++ 作ؓ自己的主要编E语aQVisual Basic开发h员有230万,Java开发h员则只有120万。市场研I公司Evans Data则报告说Q用Java的h来多Q?C和C++开发h员的数量则在显著减少?<BR><BR>q一势在学术界也得C反映。在ȝ理工学院Q计机U学pL?997q就用Java 取代了微软的C++作ؓ学生必须掌握的主要Y件语a。今q春季,加州大学伯克利分校就开设了25门Java评Q而针对微软编E语a的课E只?门。麻省理工学院的副教授Daniel Jackson_“照我看QJava很快取代其他所有的~程语言Q尤其是C++。”这位学者提醒注意,大学生甚臛_上Java评之前在逐渐地自学Java了。在2q的旉里,学院把针对高中生开讄大学U学分课E的高񔋹验由C++转到Java?<BR><BR>但是Q甚臛_面如此令h鼓舞的迹象同Ӟ分析家和软g公司官员仍然认ؓ若干因素会阻Java的成ѝ第一个可惌知Q这是同微软公怹间展开的、不可避免的竞争Q微软已l发布了UCؓC#的编E语aQC#非常cMJavaQ而且它还推出了一个部分模拟Java的Internet软g{略?<BR><BR>W?个障来自Java阵营的内部,很多软g公司所发布的品ƈ不遵守业内达成的一致标准。尽大大小的软g不兼Ҏ(gu)后都会得C定的处理Q但是,Java的支持者们x这U不受约束的软g开发可能会引发混ؕ和潜在的冲突Q结果oq项技术的开发者们无所适从?<BR><BR>最后,Java自n的复杂性也一直是一个问题。分析家_ZH破掌握高开发技能的E序员的狭窄范围而oL开发者接受JavaQY件制造商不得不在易用~程工具领域被微软牵着d赎ͼ允许E序员只需要点按鼠标之cȝ操作卛_开发JavaE序。特别地Q他们对UCؓ企业Enterprise Java Bean标准大加批评Q该标准实际上是通过重用部分Y件来节约开发时间。更Ҏ(gu)使用的Java工具有助于增加使用q一语言的Y件开发者数量,从而生越来越大而且来健LJava市场?Giga信息集团的分析员Mike Gilpin声称Q“要博得开发者和独立软g供应商的青睐必考虑以上的问题。?<BR><BR>自从Sun Microsystems公司?q前发明Java技术至今,软g开发程序员普遍接受了JavaQ首先是应用于网站徏设,其后又进入了企业因特|和?sh)子商务领域。今天,Java又在诸如蜂窝?sh)话、在U游戏、股信息等、餐馆定位乃臛_时信息处理等新兴市场中大展n手?<BR><BR>管Java最初目标是取代PC上占怸C的WindowsQ而且q一目标完全p|了,但是Q拥Java的阵营已l能让Java技术得到尽可能地普及。Java今天的成功部分地归于开发者和客户Q其实,他们仅仅希望世界上除了微软还应该有其他选择Q微软巴不得从手持设备到企业服务器,在Q何设备上都最好运行着Windows?<BR><BR>作ؓ反对Windows霸权阵营的一员,Sun发誓要让Javaq行在Q何设备上Q而且所有的E序都不必重写,q就是赫赫有名的“只写一ơ,处处可行”原则,昄该原则同微Y坚持世界上只有它的操作系l这一战略是完全对立的。Java很快p得了其他微Y之敌的支持,比如IBM、Oracle和BEA Systems{?<BR><BR>然而,q种~程语言实际上ƈ没在完全实现多重讑֤上运行同一代码的承诺。结果,商业机构q才觉察刎ͼ相比它们在选择Java时所做的估计Q现在花得的旉和金钱比预想的多得多?<BR><BR>Meta集团分析员Zachmann评h(hun)_“‘只写一ơ,处处可行’这条原则在服务器端压根没有vq作用。?<BR><BR>许多个问题源自Java标准的通过被拖延得太久Q这个标准花?2?8个月的时间才完成。Y件开发商又面临着争取新客L竞争压力所以无法等待那么长的时间。因此它们只能定期地改进和发布基于非标准技术的Java软g?<BR><BR>大多数的Java软g开发商把它们的端技术提交给Java Community ProcessQ这是一个由Sun和其它Java公司参与发v的组l,负责研究和制定未来的Java技术标准。如果提交的技术得C标准认可Q其他的软g开发商可以采用这一技术了。但是当新标准真被制定出来的时候,Java公司却又发明Z虽然不是标准但却l它们带来竞争力的新技术?<BR><BR>Z在有利可囄?sh)子商务软g市场获取有利CQBEA、IBM和其它Java软g开发商都摆弄出了如此之多的非标准技术ƈ应用在们的应用服务器和其他品之中,使之q行更快而且更可靠。这样一来,客户不得不关心兼Ҏ(gu)的问题Q能在某Java开发商的应用服务器上运行的软g却不?00%在其他开发商的品上q行?<BR><BR>Iona公司产品MQSimon Pepper认ؓQ“我们不得不xq一不兼容事实,我相信,正是q一原因使Java陷入分裂状态而且令Java开发者感到无所适从Q所谓的‘编写一ơ,处处可行’的目标q没有实现。结果oJava在兼Ҏ(gu)能上的良好形象大大受损。同时却为微软打开了攻城夺地的方便之门。如果技术是分裂的,而且开发商也是分裂的,q肯定会令开发者怀疑Java是否真是一U优U的技术。?<BR><BR>摘自<A target=_blank><FONT color=#002c99>Qhttp://www.zdnet.com.cn</FONT></A> <img src ="http://www.tkk7.com/aw815/aggbug/28838.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/aw815/" target="_blank">水秀清灵</a> 2006-01-20 23:04 <a href="http://www.tkk7.com/aw815/articles/28838.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java ~码规范(? 文g格式http://www.tkk7.com/aw815/articles/23375.html水秀清灵水秀清灵Sun, 11 Dec 2005 10:50:00 GMThttp://www.tkk7.com/aw815/articles/23375.htmlhttp://www.tkk7.com/aw815/comments/23375.htmlhttp://www.tkk7.com/aw815/articles/23375.html#Feedback0http://www.tkk7.com/aw815/comments/commentRss/23375.htmlhttp://www.tkk7.com/aw815/services/trackbacks/23375.html

         1、版权信息,必须?java 文g的开_比如Q?

     /*
      * Copyright ? 2000 Shanghai XXX Co. Ltd.
      * All right reserved.
      */

         其他不需要出现在 javadoc 的信息也可以包含在这里?BR>

         2、Package/Imports 
         package 行要?import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母序排列。如?import 行中包含了同一个包中的不同子目录,则应该用 * 来处理?

         package hotlava.net.stats;

         import java.io.*;
         import java.util.Observable;
         import hotlava.util.Application

         q里 java.io.* 使用来代替InputStream and OutputStream 的?BR>         Q关于这点,有点疑问Q我知道详细的写出引用类的\径及cdQ可以较快的搜烦到要引用的类Q可是一个包中要引用的类q多的话Q是不是?来处理,比全部写出来好哩Q全部写出来会很长,不方侉K读,不过现在的IDE大都有收~功能,问题也不大吧Q)

         3、对cȝ注释Q解释类的功能)Q采用文档注释,写在cd明之前。例如: 

          /**
           * A class representing a set of packet and byte counters
           * It is observable to allow it to be watched, but only
           * reports changes when the current set is complete
           */
         
         接下来是cd义的格式Q包含了在不同的行的 extends ?implements

      public class CounterSet
		         extends Observable
		         implements Cloneable


     Q这样写呀Q第一ơ看刎ͼ我想我不太喜Ƣ这U写法,q也是规范吗Q)

         4、类的成员变量,在声明之前也要用文档注释说明其意义。例如:

         /**
          * Packet counters
          */
         protected int[] packets;

         public 的成员变量必ȝ成文档(JavaDocQ。proceted、private?package 定义的成员变量如果名字含义明的话,可以没有注释?BR>         Q因为public的成员变量是cȝ接口Q是供用L序员使用的,所以必ȝ成文档,所以必ȝ文档注释标注Q?BR>         5、类变量的存取的Ҏ(gu)Q在其声明之前也要用文档注释说明其意义?BR>         若它只是单的用来类的变量赋D取值的话,可以单的写在一行上?例如Q?/P>

     /**
      * Get the counters
      * @return an array containing the statistical data.  This array has been
      * freshly allocated and can be modified by the caller.
      */
      public int[] getPackets() { return copyArray(packets, offset); }
      public int[] getBytes() { return copyArray(bytes, offset); }

      public int[] getPackets() { return packets; }
      public void setPackets(int[] packets) { this.packets = packets; }

   
             其它的方法不要写在一行上?BR>
         6、构造函敎ͼ应该用递增的方式写Q比如:参数多的写在后面Q?BR>         讉Kcd ("public", "private" {?) ?M "static", "final" ?"synchronized" 应该在一行中Qƈ
且方法和参数另写一行,q样可以使方法和参数更易诅R?BR>




         public          CounterSet(int size){              this.size = size;          }
         Q这么写Q不习惯Q保留意见)          
7?FONT size=3>克隆Ҏ(gu)Q如果一个类是可以被克隆的,那么在定义类时应该重写其l承?clone Ҏ(gu)Q?BR>
     public
     Object clone() {
       try {
          CounterSet obj = (CounterSet)super.clone();
          obj.packets = (int[])packets.clone();
          obj.size = size;
          return obj;
       }catch(CloneNotSupportedException e) {
          throw new InternalError("Unexpected CloneNotSUpportedException: " 
                                 + e.getMessage());      }      }

         8、类Ҏ(gu)Q定义ؓfinal或static的,c而非其实例对象所拥有的方法)Q例如:

     /**
      * Set the packet counters
      * (such as when restoring from a database)
      */
      protected final
      void setArray(int[] r1, int[] r2, int[] r3, int[] r4)
                    throws IllegalArgumentException
      {
        //
        // Ensure the arrays are of equal size
        //
        if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)
	   throw new IllegalArgumentException("Arrays must be of the same size");
        System.arraycopy(r1, 0, r3, 0, r1.length);
        System.arraycopy(r2, 0, r4, 0, r1.length);
      }





    9?FONT size=3>toString Ҏ(gu)Q每一个类都应该对l承自Objectcȝ toString Ҏ(gu)q行重写Q?BR>     
      public
      String toString() {
        String retval = "CounterSet: ";
        for (int i = 0; i < data.length(); i++) {
            retval += data.bytes.toString();
            retval += data.packets.toString();
        }
        return retval;
      }
 
    10、main Ҏ(gu)
      如果main(String[]) Ҏ(gu)已经定义? 那么它应该写在类的底?
      Q这样子的?Z么把mainQ)Ҏ(gu)写在cȝ一开始不好哩Q)


水秀清灵 2005-12-11 18:50 发表评论
]]>
Java ~码规范(? 排版规范http://www.tkk7.com/aw815/articles/23364.html水秀清灵水秀清灵Sun, 11 Dec 2005 09:10:00 GMThttp://www.tkk7.com/aw815/articles/23364.htmlhttp://www.tkk7.com/aw815/comments/23364.htmlhttp://www.tkk7.com/aw815/articles/23364.html#Feedback0http://www.tkk7.com/aw815/comments/commentRss/23364.htmlhttp://www.tkk7.com/aw815/services/trackbacks/23364.html上次记录了一些编写上的规范,q回看看排版有些什么规矩:     

         1、关键词和操作符之间加适当的空根{(q个我知道,比如“i+j=x;”应该写成“i + j = x;”,q样看v来是不是漂亮多了Q?   

         2、相对独立的E序块与块之间加I。(嗯,q样便于阅读Q方法与Ҏ(gu)之间IQ方法内部也应该Ҏ(gu)语句内容自然IQ?nbsp;  

         3、较长的语句、表辑ּ{要分成多行书写Q对呀Q屏q显C有限)。划分出的新行要q行适应的羃q,使排版整齐,语句可读?nbsp;

         4、长表达式要?FONT color=#ff0000>低优先操作W处划分新行Q操作符攑֜新行之首。(有道理,在低优先U操作符处断行,不会q于影响代码的阅ȝ解,操作符攑֜新行之首也是q个道理Q?nbsp;

         5、@环、判断等语句中若有较长的表达式或语句Q则要进行适应的划分。(q个Q?FONT color=#ff0000>怎么划分哩?Q?nbsp;

         6、若函数或过E中的参数较长,则要q行适当的分行。(是的Q分行时应该参数的cd攑֜新行之首Q且要有适当的羃q,比如可以与上一行的参数寚wQ这样阅L晰、方便) 
   
         7、不允许把多个短语句写在一行中Q即一行只写一条语句。(嗯,对于“int  iQjQxQ”这L语句是不是分成三行,一行一句更好些Q尤其在它做为类的成员变量时Q?nbsp;

         8、函数或q程的开始、结构的定义及@环、判断等语句中的代码都要采用~进风格?nbsp;  

         9、C/C++语言是用大括号‘{’和‘}’界定一D늨序块的,~写E序块时‘{’和 ‘}’应各独占一行ƈ且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚丄定义以及if、for、do、while、switch、case语句中的E序都要采用如上的羃q方式?BR>         Q呵呵,q里怎么说的是C和C++语言Q不是在讲java 的编码规范吗Q不q,q个问题一直困扰着我,C和C++语言中这U打括号的Ş式,我觉得很好,W合Z的阅M惯,哪个“{”和哪个“}”是一对儿的,一目了Ӟ使代码的层次非常清晰。然而我在绝大多数的java 语言代码Q包括sun公司所l的JFC源代码中看到的都是下列格式:
         public  void  myMethodQ){
               int  i  =  2;
               ......
         }
         q是Z么哩Qjava的“始作蛹者”(好象的贬义词Q开个玩W)当初是出于什么考虑哩?甚至有的老师把它做ؓ“地道的java”程序的标志。虽然我不喜Ƣ这U书写Ş式,可是既然大家都这么写Q?FONT color=#ff0000>是不是我也应该遵循这U“约定俗成”的格式?/FONT>Q?/P>

水秀清灵 2005-12-11 17:10 发表评论
]]>
Java ~码规范(一) E序~写规范http://www.tkk7.com/aw815/articles/23349.html水秀清灵水秀清灵Sun, 11 Dec 2005 07:58:00 GMThttp://www.tkk7.com/aw815/articles/23349.htmlhttp://www.tkk7.com/aw815/comments/23349.htmlhttp://www.tkk7.com/aw815/articles/23349.html#Feedback0http://www.tkk7.com/aw815/comments/commentRss/23349.htmlhttp://www.tkk7.com/aw815/services/trackbacks/23349.html         那么什么是~码规范呢?
         ~码规范?yu)是使用一U语a~写代码Ӟ要遵守的一些约定俗成,或是长期l验ȝ而成的规矩,q些规矩q不是一定要执行的,也就是说Q不执行它,E序照样能编译通过Q照栯q行hQ那么我们ؓ什么要去遵守它呢?q是因ؓ我们~写的程序ƈ不仅仅是只给自己一个h看的Q在C软g开发中Q往往是由多个人共同完成Y件的开发工作,׃个h独立完成大型软g的开发工作,几乎是不可能的。而且在Y件开发完成,q入到Y件维护阶D后Q对软g的维护工作也很可能是由其他h员来q行。那么,~写出的代码需要多个h去阅诅R如果每个h都按照自q习惯d代码Q就会给其他M码的人造成很大的困扎ͼ从而媄响他对程序的理解、判断,影响他对E序的所q行的维护和改进工作。那么有了编码规范,大家都遵循统一的规范去做,׃大大提高代码的可L,使开发h员能够迅速而彻底的理解代码Q从而提高工作效率。另外,遵守~码规范对于我们~写代码的h来说Q也是有利的Q随着E序的复杂程度的加深Q我们所~写的代码行逐步增多Q如果没有在一开始严格遵守规范,而是随性编写,那么在后期也会对我们自己阅读代码造成影响Q而且更ؓ严重的是Q降低了代码的健壮性,使代码变得容易出错,而不易维护了?BR>         Z上述原因Q做Z个合格程序员Q严格遵守编码规范是基本条g?BR>         先来说说“程序编写规范”,实际上这个标题是“java~码规范”的W一章节的标题,看了内容Q感觉不太恰当,可是一时又不知道改什么名好,q着他的来吧?BR>         1、exit() 除了?main() 中可以被调用外,其他的地方不应该被调用?BR>         q样做是因ؓ不给M代码截获退出的Z。比如,一个类似后台服务的E序不应该因为某一个库模块军_了要退出就退出?BR>         2、声明的错误应该抛出一个RuntimeException或者其z的异常。顶层的main()函数应该截获所有的异常Qƈ且打华ͼ或者记录在日志中)在屏q上?nbsp;
         3、java使用成熟的后台垃圾收集技术来代替引用计数。但是,误住,java的垃圾收集技术只会对内存中的“垃䏀进行清理,而不会对其他资源Q诸如:数据库、磁盘、打印机{进行清理工作。因此你必须在用完q些对象的实例以后进行清场工作。比如:
         FileOutputStream fos = new FileOutputStream(projectFile);
         project.save(fos, "IDE Project File"); 
         fos.close();      //Ҏ(gu)件输出流对象q行关闭Q清场工作)
         4?FONT style="BACKGROUND-COLOR: #ffffff">CloneQ?/FONT>下面是一U有用的Ҏ(gu)Q?BR>        implements Cloneable
        public  Object clone()
        {
            try 
            {
                 ThisClass obj = (ThisClass)super.clone();
                 obj.field1 = (int[])field1.clone();
                 obj.field2 = field2;
                 return obj;
            } 
            catch(CloneNotSupportedException e) 
            {
                 throw new InternalError("Unexpected CloneNotSUpportedException: " + e.getMessage());
            }
         }
         q里……我不太看得明白他所写的意思,对于clone()Ҏ(gu)我大概知道它是java的根cObject中的一个方法,其作用是创徏q返回一个当前对象的拯Q即是“克隆”一个和当前对象一模一L另一个对象。那么Cloneable是什么?查了API帮助Q知道了QCloneable是一个接口,只有实现了这个Cloneable接口的类的实例才可以用承自Objectcȝclone()Ҏ(gu)q行“克隆”,没有实现q个接口的类的实例若调用clone()Ҏ(gu)Q则会抛出“CloneNotSupportedException”异常。不q,好奇怪,查看了它的源代码Q仅仅有一个接口名字,没有声明M的方法或是常量,基本cd中ؓ什么会有这样一个接口哩Q既然所有的c都直接或间接承自Objectc,那ؓ什么还要用一个Cloneable接口来限制其子类能否q行“克隆”操作哩Q?FONT color=#ff0000>现在q弄不明白?BR>         3、final c,l对不要因ؓ性能的原因将cd义ؓ final 的(除非E序的框架要求)?BR>         最好在cL档中注明一个类目前不能被承,而不要将它定义ؓ final 的。因为没有h可以保证会不会由于什么原因需要承它。(那么Q尽量少用finalc,呵呵Q到目前为止我还没用到过finalc,真想知道什么时候一定会用到finalc,好象没有地方需要呀Q?BR>          4、访问类的成员变量,大部分的cL员变量应该定义ؓ protected 的来防止l承cM用他们?BR>          q里…?FONT color=#ff0000>我又不明白了Q?/FONT>记得学java的访问权限修饰符Ӟprotected修饰的类成员Q仅在类内和cȝzcM可见Q把cL员定义ؓprotectedQ怎么能够防止l承c(zc)使用哩?如果定义为privateQ才可能不被l承cM用吧Q?IMG height=19 src="http://www.tkk7.com/Emoticons/QQ/22.gif" width=19 border=0>我错了吗Q?BR>         5、对于数l的声明Q要用“int[] packets”,而不是“int packets[]”,后一U永q也不要用?BR>         q个……,对于后一U,java中好象没有硬性规定不可以?/FONT>QC#中倒是只承认前一U声明数l的形式Q,但写成前一UŞ式,更具意义一些?/FONT>

水秀清灵 2005-12-11 15:58 发表评论
]]>
实现工具栏滚动显C的Ҏ(gu)http://www.tkk7.com/aw815/articles/21881.html水秀清灵水秀清灵Tue, 29 Nov 2005 15:18:00 GMThttp://www.tkk7.com/aw815/articles/21881.htmlhttp://www.tkk7.com/aw815/comments/21881.htmlhttp://www.tkk7.com/aw815/articles/21881.html#Feedback0http://www.tkk7.com/aw815/comments/commentRss/21881.htmlhttp://www.tkk7.com/aw815/services/trackbacks/21881.html        工具栏ToolBar中可加入如JLabel、JPanel、JButton或JComboBox{很多可视化lg的对象,且默认ؓFlowLayout布局理器,有时候因为编E的需要,我们要往里面插入很多个组Ӟ如何昄出完整的lg列表成了一个问题,而ToolBar的对象放在JScrollPane对象中是昄不出来的Q原因是它和JPanel一h没有Ҏ(gu)的,我的解决办法是,要插入到工h的对象先攑օ集合中(如果全是相同cd的对象,攑֜数组中保存更好)Q再通过for循环依次加入到ToolBar对象中,在ToolBar外面讄一个按钮,~写响应该按钮的点击事gQ当该按钮被点击一ơ时Q通过数组下标Q或集合索引Q从ToolBar中removeQ)L一个组Ӟq调用revalidateQ)Ҏ(gu)Q让紧跟其后的组件移上去Q添补删除后留下的空白,q把删除的那个组仉新用addQ)Ҏ(gu)q加到工hNQ这样@环删除和dQ就实现了工h的滚动效果,׃工具栏的FlowLayout布局Q它在未设|时只能向一个方向添加组Ӟ故我的这个工h的滚动效果是单向的?BR>        对于两向滚动Q我考虑在反向滚动前重新讄工具栏的布局理器,以改变其dlg的方向,从而达到双向滚动的效果。具体能否实玎ͼ有待q一步编码检?BR>        在这里我把单向滚动的源代码记录如下:

/**DiaryEditToolBarPanecLZ个包含一个工h和一个控制滚动的按钮 */

public class DiaryEditToolBarPane extends JPanel implements ActionListener
{
 JTextPane jTextPane;
 DiaryEditToolBar diaryEditToolBar;
 JPanel jPanelSouth = new JPanel();
 JButton jButtonUp = new JButton(ConstValue.IMG_UP);
 //JButton jButtonDn = new JButton(ConstValue.IMG_DN);
 
 public DiaryEditToolBarPane(JTextPane jTextPane)
 {
  this.jTextPane = jTextPane;
  diaryEditToolBar = new DiaryEditToolBar(this.jTextPane);
  
  jButtonUp.setMargin(new Insets(0,0,0,0));
  //jButtonDn.setMargin(new Insets(0,0,0,0));
  jButtonUp.setActionCommand("up");
  //jButtonDn.setActionCommand("down");
  //jPanelSouth.setLayout(new GridLayout(2,1));
  jPanelSouth.add(jButtonUp);
  //jPanelSouth.add(jButtonDn);
  
  this.setLayout(new BorderLayout());
  this.add(diaryEditToolBar,BorderLayout.CENTER);
  this.add(jPanelSouth, BorderLayout.SOUTH);
  
  jButtonUp.addActionListener(this);
  //jButtonDn.addActionListener(this);
 }
  
 public void setTextPane(JTextPane jTextPane)
 {
  this.jTextPane = jTextPane;
  diaryEditToolBar.setTextPane(this.jTextPane);
 }

 public void actionPerformed(ActionEvent e)
 {
  if(e.getActionCommand().equals("up"))
  {
   diaryEditToolBar.moveUp();
  }
  /*
  else if(e.getActionCommand().equals("down"))
  {
   diaryEditToolBar.moveDown(); 
  }*/
 }
}

/**定义一个具体实现工hlg布局与滚动的cDiaryEditToolBar  */

public class DiaryEditToolBar extends JToolBar
{
 /**用于保存工具按钮的对象数l?/
 private BrimlessButton[] toolBarButton;
 /**工具按钮增、删索引?/
 private static int index = 0;
 
  
 private void init()
 {
  this.setFloatable(false);
  BrimlessButton[] temp =
  {
   toolBarButtonSave,toolBarButtonSave,toolBarButtonCut,
   toolBarButtonCopy,toolBarButtonPaste,toolBarButtonFontStyle,
   toolBarButtonFontSize,toolBarButtonFontForeground,toolBarButtonBackground,
   toolBarButtonBold,toolBarButtonItalic,toolBarButtonUnderline,
   toolBarButtonFlusLeft,toolBarButtonCenter,toolBarButtonFlushRight,
   toolBarButtonUndo,toolBarButtonRedo,toolBarButtonIndentLeft,
   toolBarButtonIndentRight,toolBarButtonURL,toolBarButtonImage,
   toolBarButtonDateTime
  };
  toolBarButton = temp;
  
  for(int i=0; i<22; i++)
  {
   this.addElement(toolBarButton[i]);
  }

 }

 private void addElement(JButton jButton)
 {
  this.add(jButton);
 }
 
 private void delElement(JButton jButton)
 { 
  this.remove(jButton);
 }
 
 /**删除工具栏开头的工具按钮Qƈ其d到工h末尾Q以实现工具栏向上滚动的效果*/
 public void moveUp()
 {
  delElement(toolBarButton[index]);
  this.revalidate();
  addElement(toolBarButton[index]);
  index = (++index)%22;
 }
 
 /**增加工具栏开头的工具按钮Q以实现工具栏向下滚动的效果*/
 public void moveDown()
 {
  //addElement(toolBarButton[index]);
  //this.revalidate();
  //repaint();
 } 
}



水秀清灵 2005-11-29 23:18 发表评论
]]>
如何完全保存JTextPane中编辑的文本和图片的Ҏ(gu) http://www.tkk7.com/aw815/articles/21875.html水秀清灵水秀清灵Tue, 29 Nov 2005 14:51:00 GMThttp://www.tkk7.com/aw815/articles/21875.htmlhttp://www.tkk7.com/aw815/comments/21875.htmlhttp://www.tkk7.com/aw815/articles/21875.html#Feedback2http://www.tkk7.com/aw815/comments/commentRss/21875.htmlhttp://www.tkk7.com/aw815/services/trackbacks/21875.html        JTextPanecȝ对象可以昄文本、图片和链接等Q在创徏了一个JTextPanecȝU文本格式对象后Q可以向里面填写入文字(英文或汉字等Q、插入超链接或图片,但无法通过getText()Ҏ(gu)获得其中除文字以外的内容Q也x法保存包含文字、图片和链接的完全对象内容Q而如果一开始创建的是JTextPanecȝHTML格式对象Q则虽然可以保存文字的样式(颜色和字体、字LQ但无法再通过insertIconQ)Ҏ(gu)插入、显C图片,更不能直接保存了Q考虑到的解决思\Q①通过手工在HTML文g中插?lt;img src="02.gif">语句来实现对囄的保存,可是q样比较不容易实玎ͼ需要将囄保存在特定位|,才可以在下次打开JTextPanecd象是昄出图片;②创建JTextPanecȝU文本对象,在插入图片、超链接、设|字体样式或其它M对JTextPanecȝ对象q行的格式设|时均记录下讄的位|和内容Qƈ和文本内容一起保存到盘文g中,下次dӞ按照记录重新恢复原内容,实现的过E更复杂Q③JTextPane对象通过对象序列化的方式在硬盘中保存Z个文Ӟ下次d时再反序列化为完整对象?BR>        最后,选择了最好实现的W三U方法,序列化了JTextPane对象Q表现出来的效果不错。不q,在实现过E中未考虑E序的运行效率,现在也不太清楚,q样的处理方式是不是比较没有效率哩?

水秀清灵 2005-11-29 22:51 发表评论
]]>
վ֩ģ壺 ޵ӰĻ| ͵͵߳վý| ձƵ߹ۿ| ޾Ʒ| ձҹѸƵ| ĻֻѿӰ | ˳ɫ77777߹ۿ| aƵ߹ۿ| ߹ۿ| 69˾ƷƵ| ߲ŹƵ| ۺϾþþþþĻ| þþþѹۿ| òѸƵ| ޵һڶĵ| ޾Ʒ| ҹլѹۿ| ҹƵ| 㽶߹ۿ| ޹Ʒ˾Ʒ | һѹۿ | MM1313޹Ʒ| þþƷƷ| վѹۿ| Ļavѷdvd| ޵һڶĵ| ޾ƷƵ| ĻһëƬ| Կ60Ƶ| һaëƬƵ| Ƶһ| þþþþav| va߹ۿ| AƬһ| 99þƷƵ77| Ƶѹۿ| һ߲Ʒ߲Ʒ| ޺һ| ޾Ʒþǧն| avƷɫ߿| Ʒþһ |