`
SSailYang
  • 浏览: 307913 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
使用 Java SE 7 Fork/Join 的关键是要是 fork 出来的任务数与处理器的数量和谐统一,否则就会适得其反。
Maven Assembly Plugin 和 Shade Plugin 都可以用来在构建单一 Jar 包时,将所有 Dependency 打入这个最终生成的 Jar 中去。但是两者在具体的行为上有所不同:Assembly 插件不仅会将 Dependency 中的 Class 文件打入最终的 Jar 包,还会将 Dependency 中的资源文件,诸如 properties 文件打入最终的 Jar 包。当项目和其 Dependency 中有同名的资源文件是,就会发生冲突,项目中的同名文件便不会加入到最终的 Jar 包中。如果这个文件是一个关键的配置文件,便会导致问题。而 Shade Plugin ...
用 Tcl 脚本语言实现自动化测试工具有一个潜在的严重风险,就是它不像其它语言那样有完善的单元测试工具。其实自动化测试工具本身就是一个产品,且这个产品的主要目的是保障其它产品的质量。所以,它本身的质量至关重要。如果实现它的语言没有一套完备的单元测试机制作保证,这便是一个致命缺陷。
单元测试并不是一门很复杂的技术,我相信很多程序员在刚开始工作的时候也都对单元测试有了基本的掌握。但是,最近我在实际工作中发现,很多时候单元测试并没有发挥其应有的作用,更多的时候成了一种提高代码测试覆盖率的手段。下面我就谈谈我对单元测试的看法以及我的一些经验。 单元测试的意义 这是一个很多人都知道答案的问题,但我还是要多唠叨几句。单元测试不仅仅是一种测试的手段,它更是一种设计方式,是一种保障。在 TDD 中,单元测试可以避免过度设计。而在代码重构中,单元测试同其它自动化测试一道,保障的重构可以顺利进行。 单元测试测什么 简单来说,单元测试测试的是被测试单元(通常是一个方法)所承诺的功能。单元测 ...
结对编程不是两个人简单地坐在一起,一个人写代码,另一个人看就这么简单。它还需要一些技巧和最佳实践去指导编程工作。下面就是我在结对编程实践中总结出来的一些建议,供大家参考: 两位相互结对编程的程序员需要了解彼此当天的工作安排在每日站会结束后,结对编程的双方参与者需要告知对方今天都有哪些事情是需要各自单独完成的,然后双方尽量协调,将各自单独做的事安排在相同的时间段。对于这一点,可以采用共享日历的方式,使彼此更加准确地了解对方的安排,使得结对编程的时间最大化。 统一软件环境 结对编程时,必然会有一个人使用别人的计算机,这时便容易因对对方计算机环境不熟悉而导致效率有所下降。所以统 ...
Store Engine In a database, different tables can use different store engines. MyISAM Not Support: Transaction, Row level locking Support: Full-text index So MyISAM is good at big amount data query. InnoDB (Default store engine from MySQL 5.5) Not Support: Full-text index Support: Transaction, Row ...
前段时间在看了文章[5个让人激动的Java项目]之后,决定实践一下 Gradle。 我对 Gradle 的理解是其是结合了 Maven 和 Ant 双方优点的一种基于 Groovy DSL 的新式项目构建工具。而且由于是基于 Groovy 语言,所以语法上要比基于 XML 的 Maven 和 Ant 简洁许多,并且功能更加强大。 现在 Gradle 的最新版本是 1.0 rc1,IDE 方面我用的是 IntelliJ IDEA 11.1。需要说明的是,IDEA 11.1 以前的版本并不能和 1.0 rc1 配合使用,这也是因为 Gradle 是个新工具,变化比较快导致的。 下面通过一个例子 ...
Tcl Expect 模块中的 expect_out(1..9,string) 用于读取 expect 正则表达式匹配出来的子字符串。例如: # 使用以下代码匹配 abc10eeeekkkaaa 时 expect { -re "abc(\d{2}).*(k+)aaa" { # 输出 10 puts "$expect_out(1,string)" # 输出 kkk puts "$expect_out(2,string)" } }
方括号:Tcl 方括号中的代码会被当做表达式(变量,或函数)执行。 大括号:Tcl 中的大括号除了用作分割代码片段外(如 if while 这样的语句需要用大括号),还被用来做字符串表达。与双引号不同的是其中的方括号中的表达式不会被执行。例如: puts "hello world" # 报错,因为 hello 将被当做变量名 (如果有 hello 这个变量当然 ok) puts "[hello] world" # 正确,方括号会被当做正常字符打印 puts {[hello] world} # 等同上面,\转义 puts &qu ...
Tcl 脚本可以通过内置的 argv 变量读取运行的参数。argv 是 List 类型,所以如果读取单个参数的话需要用到 Tcl 的 lindex 函数。示例如下: lindex $argv 0 # 如果要被其它函数使用,如输出函数 puts [lindex $argv 0] $ ./config.tcl "hello world" "haha" hello world
转自:http://www.blogjava.net/moxie/archive/2006/09/14/69714.html   我们Pair 做任何一件事情。                                               ——ThoughtWorks 西安Office
转自 InfoQ: http://www.infoq.com/cn/news/2009/02/agile-documents   软件项目中有很多种文档,包括需求文档、设计文档、API文档、缺陷报告、进度报告、移交文档、验收文档等等。 在传统的软件项目开发中,每个团队成员都要花费很多 ...
写此小文总结一下平时工作的收获。 入正题,工作涉及到了对 LDAP 的 CRUD 操作,不忍同事用 JLDAP 写的冗长代码(主要并不是 JLDAP 的错。冗长代码问题可以通过代码重构和 Java 反射去解决)。后发现 Spring LDAP 是用来写 LDAP 相关程序的一个不错的选择之一(并没有深入了解别的框架)。直接上代码,希望能给同样需要操作 LDAP 的朋友一些帮助: LdapTemplate ldapTemplate = buildLdapTemplate(); AndFilter filter = new AndFilter(); filter.and(new Eq ...
IntelliJ IDEA 是一个很棒的 IDE,它有很多 Eclipse 所没有的特性,但是其有一个缺点,就是在运行单元测试时,编译速度很慢。(我的系统是 Windows,我见别人在 Mac 下没有这个问题。。。)有时几秒钟就能搞定的事,IDEA 要花上几分钟。 解决方法是使用 Maven 的编译取代 IDEA 本身的编译。 在 "Run/Debug Configuration" ->"JUnit" 的配置页面中的一段。默认 "Make" 是选中的。去掉 "Make" ,选择 Maven Goal ...
之前一篇关于 SLF4J 和 Log4J 的文章有不当之处,SLF4J 虽然避免了 Log4J 的字符串拼接问题,但是除非复杂的字符串拼接,否则使用 SLF4J 不会给你带来任何性能上的好处(我写了个小程序,有数据才有说服力)。当然 SLF4J + Logback 另当别论。使用 SLF4J 的主要目的是替代 Apache Common Logging,后者在 OSGi 环境中会有问题(从另一篇博文中看到的,仅供参考)。使用 SLF4J 能使代码和具体的 Log 实现框架分离,这点是与 Apache Common Logging 的功能相同的。   对于何时使用 Log4J 的 isDebu ...
Global site tag (gtag.js) - Google Analytics