- 代码复查是一个普遍遵循的程序设计实践,对任何项目都很有价值。在代码复查过程中一组程序员一行一行地检查一段代码。通常代码的作者也参加复查,帮助解释代码做了些什么。
代码复查可以只在两三个程序员的范围内进行,也可以在整个小组范围内进行。小的、非正式的代码复查可以在开发过程的任何时候进行,而更正式一些复查被称为代码验收,是最终质量接收过程的一个重要部分。在开发过程中经常进行代码复查是很有用的,因为人们常常不会注意到自己的代码中的错误,他们与自己写的代码太接近了。 Read More - 1. Chinese Word Splitter(中文分词) (*)
2. 猎兔--中文分词技术文档 (*)
3. Lucene中文分词组件 JE-Analysis 1.3.1 (*)
4. 几个免费的中文分词模块
5. 计算所汉语词法分析系统 ICTCLAS (*)
6. fenci,Java 的 ICTCLAS
7. AutoSplit,另一个 Java 的 ICTCLAS
8. 小叮咚中文分词 介绍页面 Read More - JavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, is one of the world's most popular programming languages. Virtually every personal computer in the world has at least one JavaScript interpreter installed on it and in active use. JavaScript's popularity is due entirely to its role as the scripting language of the WWW.
JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的编程语言之一。事实上世界上的每一台个人电脑都安装并在频繁使用至少一个JavaScript解释器。JavaScript的流行完全是由于他在WWW脚本语言领域中的地位决定的。 Read More - 这是网上流传的"变态级JAVA程序员面试32问"的其中一题(二十八题),然后下面给出来的答案是
第二十八,编程题: 用最有效率的方法算出2乘以8等於几?
有C背景的程序员特别喜欢问这种问题。
2 << 3
粗看似乎很在理,大致想来2<<3会是移位操作,在Java的字节码中移位指令是ishl(右移),而在CPU上的硬件指令可能就会是shl(算术右移指令)。其实不然,如果熟悉汇编语言,还考虑过编译优化,2<<3根本不会使用移位操作,而是在编译时就优化计算出16来了。
但如果是写成这样的方式(int i = 2; int j = i<<2;),又是不一样的,大家可以从代码不同写法生成的Java操作指令或汇编指令看出个端倪。 Read More
1.C#是一种从C++和Java继承而来的,简单的,现代的,面向对象的语言.
2.它的目标是综合Visual Basic高产和C++底层高效的特性.
3.它是Microsoft Visual Studio7.0 的一部分.
4.Visual studio支持Vb,VC++,C++,Vbscript,Jscript.所有这些语言提供对Microsft .NET平台的访问.
5..NET包括一个Common Execution引擎和一个丰富的类库.
6.Microsofts JVM eqiv就是Common language(通用语言)运行库(CLR).
7.CLR支持不止一种语言,诸如 C#,VB.NET,Jscript,ASP.NET,C++.
8.源代码--->中间语言代码(IL)--->(JIT 编译器)机器码. Read More
C#如何调用一个非托管动态库中的函数呢,比如用VC6写的动态库,总之C#调用动态库的过程是比Java调用DLL动态库方便快捷多了,下面举例说明这个过程。
1。创建一个非托管动态库
代码如下:1 //这一句是声明动态库输出一个可供外不调用的函数原型. 2 extern "C" __declspec(dllexport) int add( int , int ); 3 4 int add( int a, int b) 5 { 6 //实现这个函数returna+b; 7 }
注意上面代码,一定要加上 extern"C" ,不能生成的动态库中的导出函数名就不会是add,而是像 ?add@@YAHHH@Z 样子,后面只是通过函数名 add 来定位函数入口就会出问题。
Read More
网上找了好些个关于CheckStyle的文章都是抄抄抄一大通,却没有一个build.xml着实可运行,
在这里我也是参考着一编,改改成能成功运行并能生成正确报告,发送 Email 的build.xml文件1<?xml version="1.0" encoding="gb2312"?> 2 3<!-- ANT make file checkstype --> 4 5<!-- See <a href="http://jakarta.apache.org/ant" data-mce-href="http://jakarta.apache.org/ant">http://jakarta.apache.org/ant</a> for info about ANT --> 6<!-- 网上下来的CheckStyle解压在d:/javalib/CheckStyle/checkstyle-4.1中 --> 7<project name="checkstyle" default="checkstyle" basedir="d:/javalib/CheckStyle/checkstyle-4.1"> 8 9 <!-- CheckStyle配置,这里你替换成你实际的环境 --> 10 <property name="project.docs.dir" value="${basedir}/contrib"/> 11 12 <!-- 源代码的目录是e:/eclipseworkspace/talupdate/src --> 13 <property name="project.src.dir" value="e:/eclipseworkspace/talupdate/src"/> 14 15 <!-- 建立了build目录在其中生成报告 --> 16 <property name="project.checkstyleReport.dir" value="${basedir}/build"/> 17 <property name="checkstyle.jar" value="${basedir}/checkstyle-all-4.1.jar"/> 18 19 <!-- 使用SUN的代码规范,可替换成公司自己的规范 --> 20 <property name="checkstyle.config" value="${basedir}/sun_checks.xml"/> 21 <property name="checkstyle.report.style" value="${project.docs.dir}/checkstyle-noframes.xsl"/> 22 <property name="checkstyle.result" value="${project.checkstyleReport.dir}/checkstyle_result.xml"/> 23 <property name="checkstyle.report" value="${project.checkstyleReport.dir}/checkstyle_report.html"/> 24 25 <!-- 定义发送邮件列表 --> 26 <property name="mail.list" value="(User1)user1@xxx.com,(User2)user2@xxx.com"/> 27 28 <target name="init"> 29 <tstamp/> 30 </target> 31 32 <!--CheckStyle脚步--> 33 <taskdef resource="checkstyletask.properties" classpath="${checkstyle.jar}"/> 34 35 <target name="checkstyle" depends="init" description="对java源代码进行检查并产生检查报告. "> 36 <checkstyle config="${checkstyle.config}" failOnViolation="false" failureProperty="checkstyle.failure"> 37 <formatter type="xml" tofile="${checkstyle.result}"/> 38 <fileset dir="${project.src.dir}" includes="**/*.java"/> 39 </checkstyle> 40 41 <!-- 生成报告,其格式取决于${checkstyle.report.style} --> 42 <style in="${checkstyle.result}" out="${checkstyle.report}" style="${checkstyle.report.style}"/> 43 </target> 44 45 <!-- 当有不规范的情况发生时将检查结果发送到 --> 46 <target name="checkstyle-nightly" depends="checkstyle" if="checkstyle.failure" 47 description="Sends email if checkstyle detected code conventions violations."> 48 49 <!-- 如果邮件服务器需要验证,则加上 user 和 password 属性 --> 50 <mail from="(Admin)admin@xxx.com" tolist="${mail.list}" mailhost="mail.xxx.com" 51 subject=" checkstyle result from project reports" files="${checkstyle.report}"/> 52 </target> 53</project>
<继续补充内容>
Java测试代码覆盖率工具有Clover, Jcoverage和Emma等,其中只有Emma才算是彻底免费开源的,用起来也比较方便。
而Jcoverage使用起来就有些繁琐,必须一步步按照规定的方式走,步骤为 debug方式compile->instrument->test->coverage。
下面将简单介绍emma的使用,以下方法告诉你如以以命令的方式来生成代码测试覆盖率,当然你也可以写成 Ant 任务的方式,这就要求自己写几个 Ant 用的Task类,其实也不难。
emma的下载地址是:http://emma.sourceforge.net/downloads.html Read More- 关键Ant的build文件如下(已加上比较详细的说明)下面以后也会加上测试报告的贴图的。
1<?xml version="1.0" encoding="UTF-8"?> 2<project basedir="." default="main" name="excute TestCase and build test report"> 3 <!-- 测试报告存放目录 --> 4 <property name="build.reports.dir" value="${basedir}/report" /> 5 <target name="main"> 6 <!-- 删除测试报告数据,重新生成 --> 7 <delete> 8 <fileset dir="${basedir}/report"> 9 <include name="*.*" /> 10 </fileset> 11 </delete> 12 <junit fork="yes" printsummary="true"> 13 <!-- 生成的class目录以及执行TestCase所依赖的库 14 无论是用<test>还是<batchtest>都要这个配置 --> 15 <classpath location="${basedir}/bin" /> 16 <!-- 生成报告数据的格式,可能多个,支持xml/brief/plain --> 17 <formatter type="xml" /> 18 <formatter type="brief" usefile="false" /> 19 <!-- 可以用<test>也可以用<batchtest>,但两种的设置有一些区别 20 以下<test>和<batchtest>三种形式用某一种就可以的 --> 21 <!-- name指定Class的名称,如CatTest或com.unmi.CatTest --> 22 <test name="CatTest" todir="${build.reports.dir}" /> 23 <!-- 注意其中<fileset>的dir属性及<include>的name属性指代的意义 --> 24 <batchtest todir="${build.reports.dir}"> 25 <!-- dir属性指定TestCase类的源代码的路径 --> 26 <fileset dir="${basedir}/src"> 27 <!-- name属性指定TestCase源文件规则 --> 28 <include name="**/*Test.java" /> 29 </fileset> 30 </batchtest> 31 <!-- 上面的<batchtest>还可以写成如下形式,<fileset>按指定为class 32 注意其中<fileset>的dir属性及<include>的name属性指代的意义 --> 33 <batchtest todir="${build.reports.dir}"> 34 <!-- dir属性指定TestCase类的路径 --> 35 <fileset dir="${basedir}/bin"> 36 <!-- name属性指定TestCase类文件规则 --> 37 <include name="**/*Test.class" /> 38 </fileset> 39 </batchtest> 40 </junit> 41 <!-- 用执行以上TestCase生成的报告数据生成测试报告 --> 42 <junitreport todir="${build.reports.dir}"> 43 <fileset dir="${build.reports.dir}"> 44 <include name="TEST-*.xml" /> 45 </fileset> 46 <!-- 指定生成测试报告的格式frames/noframes,和报告存放目录 --> 47 <report format="frames" todir="${build.reports.dir}" /> 48 </junitreport> 49 </target> 50</project>
现在我们安装Linux的时候通常考虑到安全因素(默认情况下)是不打开telnet服务的,而ssh服务是有的,ant很早就支持telnet,但要求我们在Linux下要安装telnet-server,并要启用该服务。
还好自Ant1.60开始支持了SSH 及SCP 操作了,早在Ant之前若要支持SSH、SCP、SFTP等任务就必须下载j2ssh的j2ssh-ant.jar和j2ssh-core.jar(在http://www.sourceforge.net的j2ssh下有下载)。现在可以使用Ant提供的Sshexec和scp任务,由$ANT_HOME/lib/ant-jsch.jar提供支持,但是同样你也要在http://www.jcraft.com/jsch/index.html下载一个依赖包jsch-0.1.24.jar(文件名因版本而不同),jsch同样也是http://www.sourceforge.net下的一个项目。
你需要把下载的jsch-0.1.24拷贝到$ANT_HOME/lib下,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.24。 Read More