`
文章列表
       以前都没有注意到Java中的泛型有那么复杂!功能还比C++中的模板差那么多。这绝对是Java中最失败的一个地方。改天要专门写一写这方面的东西,现在先挖个坑。           C++中的混型允许直接继承类型而不是具体的类,这是Java做不到的。   template <typename T> class A : public T {};   这样A类就具备了随时可以插入进去的T类型的所有public成员!即是我可以随时杂交出各种各样我想要的子类,而不必要一一在继承树上静态地声明、静态地编译。         Java必须借助实现接口来实现混型效果 ...

Groovy语言

        1 它源于Java,可以说是一种JVM实现         2 它拥有了很多例如Ruby一样的动态语言上的特性。           Java可以几乎无缝地域Groovy融合,Groovy也几乎可以无缝地与Java融合。到底哪个在上哪个在下我已经分不清楚了。
前不久,InfoQ向大家推荐了几本有关软件架构的新书 ,引起了国内读者的广泛兴趣。​其中一本是《开源应用架构(The Architecture of Open Source Applications) 》,来自知名开源项目的各位作者对软件的设计进行了说 明。通过对这些成功的系统架构进行概览,让软件工程师可以彻底了解最佳实践和陷阱。InfoQ中文站响应读者的需求,整理了该书有关知名开源软件架构的精 彩内容,供国内开发社区借鉴。本期介绍的是著名浏览器自动化工具Selenium WebDriver的软件架构,第一部分主要分享了Selenium WebDriver的演变历史和架构观点。 ...
      Ant是一个赫赫有名的工具,但我从没有专门用过。因为现成的IDE似乎都集成了Ant的功能,可以自动地把Java项目打包起来生成一个项目。       从Ant的历史来看,Ant源于Unix的make工具是没有错的。但是make工具有很多缺陷,而且又与Unix耦合起来。对于跨平台的Java项目,要如何组织呢?Ant诞生了。      Ane本身就是这样一个流程脚本引擎 ,用于自动化调用程序完成项目的编译,打包,测试等。除了基于JAVA是平台无关的外,脚本的格式是基于XML的,比make脚本来说还要好维护一些。      Maven则是在Ant的基础上更进一步,适应不同的多版 ...
  jUnit4 概述     jUnit4 是 JUnit 框架有史以来的最大改进,其主要目标便是利用 Java5 的 Annotation 特性简化测试用例的编写。 先简单解释一下什么是 Annotation ,这个单词一般是翻译成元数据。元数据是什么?元数据就是描述数据的数据。也就是说,这个东西在 Java 里面可以用来和 public 、 static 等关键字一样来修饰类名、方法名、变量名。修饰的作用描述这个数据是做什么用的,差不多和 public 描述这个数据是公有的一样。想具体了解可以看 Core    ...

学习Selenium

我从IBM社区中转载来一篇文章,有意思的地方我专门标记出来了。   原文地址为:http://www.ibm.com/developerworks/cn/java/wa-selenium-ajax/#resources   Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作。但是手工执行的任务容易出现操作人员人为的错误,也比 较费时间。因此,尽可能将这些任务自动化,以消除人为因素,这是一种很好的做法。于是 Selenium 之类的测试工具就有了用武之地。Selenium 帮助您自动化验收测试,从而可以构建经过更严格测试、因而更为 ...
国内一个很著名的企业老板曾经说过:在IT行业超过35岁的技术人员将被淘汰,所以不要35岁以后的技术人员。导致整个业界尤其是在软件开发行业都在排斥年龄超过35岁的人员,也导致很多工程师为自己35岁以后的前途发愁而转 ...
      在一个算法中,使用递归还是迭代是一件很头痛的事情。总的来说,递归的优点很多,适合一些分治算法的实现,而缺点也很多,比如消耗很多的临时空间,有时候还会因为重叠子问题的存在而降低算法的性能。迭代拥有记忆的功能,不仅能够节省一部分临时空间,而且还可以省去很多子问题求解的麻烦。           值得注意的地方有:       1 一般在树形结构中往下走的话,最好使用迭代,比如堆中的向下调整操作。
       1 C++为了兼容C的语法,保留了很多破坏面向对象特性的关键字。简而言之,C++在OO上不够纯正。        2 C++里随时都存在一个sliced object的陷阱,我个人还没有找到一个明确的编码原则来避免这些错误。        3 Java能够在一片连续的内存中安置各式各样的对象,而C++总是力图做到精简的布局,抹杀了多样性--比如C++ 不支持不规则的多维数组、不规则的向量vector。        4  Java本身已经超越了一门语言,成为一个平台,有足够的兼容性够好的各方面的library。而C++各自为战太多年,现在还没有一个一统天下的趋势。按照斯特朗普 ...
  理论: 表达式的表示形式有中缀、前缀和后缀3中形式。中缀表达式按操作符的优先级进行计算(后面代码实现只包括+、-、*、\,小括号),即数学运算。后缀表达式中只有操作数和操作符。操作符在两个操作数之后。它的计算规则非常简单,严格按照从左到右的次序依次执行每一个操作。每遇到一个操作符,就将前面的两个数执行相应的操作。   由后缀表达式计算中缀表达式原理:计算机处理后缀表达式求值问题是比较方便的,即将遇到的操作数暂存于一个操作数栈中,凡是遇到操作数,便从栈中pop出两个操作数,并将结果存于操作数栈中,直到对后缀表达式中最后一个操作数处理完,最后压入栈中的数就是后最表达式的计算结果。 ...
      挖个坑,明天写。
       超级编辑器自带一个超级比较器功能,我目前还不会用。        SVN的different还算不错。        但是Linux下的diff命令真是吓我一跳的强大。
      严格来说,正则表达式不是一种语言,它是一种很多语言都已经实现了的一种特化的功能。它是对于某些字符串进行模式匹配的依据。实际上每一种语言中正则表达式的实现都有细节上的差异,足以令人发狂。Java上的正则表达式与Perl上相同。         Linux中的正则表达式似乎也是Perl实现的,待查。      
    1 最初的OS不能满足足够多的终端同时使用,于是贝尔实验室、通用和MIT发起了一个Multics计划。希望能够制造一个足够强大的多任务、多用户系统。 2 Multics项目搁浅,贝尔实验室退出。但是贝尔实验室的工程师汤普森得 ...
一 获取类引用的方法      (1) getClass() 获取已经初始化的对象的一个Class引用。    (2) Class.forName() 告诉编译器,如果类没有加载,就加载它。     (3) .class 字面常量 这个性能会更好,第一它增加了编译时的类型强制检查,第二它没有做对forName()方法的调用。   二 巧妙地利用编译器为我们做一些Class引用的类型检查。        我们如果使用平凡的Class对象,实际上它可以被一切Class对象引用赋值。    为了增加类型检查,我们可以把Class对象当作一个泛型模板。强制使用Class<?&g ...
Global site tag (gtag.js) - Google Analytics