自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 收藏
  • 关注

原创 一个 Java SE 7 Fork/Join 的小例子

使用 Java SE 7 Fork/Join 的关键是要是 fork 出来的任务数与处理器的数量和谐统一 :D,否则就会适得其反。

2012-12-30 17:48:03 151

原创 在构建单一 Jar 包时,Maven Assembly 和 Shade 插件的不同之处

Maven Assembly Plugin 和 Shade Plugin 都可以用来在构建单一 Jar 包时,将所有 Dependency 打入这个最终生成的 Jar 中去。但是两者在具体的行为上有所不同:Assembly 插件不仅会将 Dependency 中的 Class 文件打入最终的 Jar 包,还会将 Dependency 中的资源文件,诸如 properties 文件打入最终的 Jar...

2012-12-11 10:17:01 398

用 Tcl 做测试所存在的一个严重问题

用 Tcl 脚本语言实现自动化测试工具有一个潜在的严重风险,就是它不像其它语言那样有完善的单元测试工具。其实自动化测试工具本身就是一个产品,且这个产品的主要目的是保障其它产品的质量。所以,它本身的质量至关重要。如果实现它的语言没有一套完备的单元测试机制作保证,这便是一个致命缺陷。...

2012-12-03 10:12:26 263

原创 单元测试那些事儿

单元测试并不是一门很复杂的技术,我相信很多程序员在刚开始工作的时候也都对单元测试有了基本的掌握。但是,最近我在实际工作中发现,很多时候单元测试并没有发挥其应有的作用,更多的时候成了一种提高代码测试覆盖率的手段。下面我就谈谈我对单元测试的看法以及我的一些经验。[b][size=medium]单元测试的意义[/size][/b]这是一个很多人都知道答案的问题,但我还是要多唠叨几句。单元测试...

2012-12-01 17:26:46 166

关于结对编程的几条建议

结对编程不是两个人简单地坐在一起,一个人写代码,另一个人看就这么简单。它还需要一些技巧和最佳实践去指导编程工作。下面就是我在结对编程实践中总结出来的一些建议,供大家参考:两位相互结对编程的程序员需要了解彼此当天的工作安排在每日站会结束后,结对编程的双方参与者需要告知对方今天都有哪些事情是需要各自单独完成的,然后双方尽量协调,将各自单独做的事安排在相同的时间段。对于这一点,可以采用...

2012-11-11 19:30:43 173

原创 MySQL Training Summary

[size=large][b]Store Engine[/b][/size]In a database, different tables can use different store engines.[list=1][*] MyISAMNot Support: Transaction, Row level lockingSupport: Full-text indexS...

2012-09-04 16:40:57 87

Gradle 实践

前段时间在看了文章[[url=http://blog.jobbole.com/16078/]5个让人激动的Java项目[/url]]之后,决定实践一下 Gradle。我对 Gradle 的理解是其是结合了 Maven 和 Ant 双方优点的一种基于 Groovy DSL 的新式项目构建工具。而且由于是基于 Groovy 语言,所以语法上要比基于 XML 的 Maven 和 Ant 简洁许多...

2012-04-15 19:08:47 99

原创 Tcl expect_out(1..9,string)

Tcl Expect 模块中的 expect_out(1..9,string) 用于读取 expect 正则表达式匹配出来的子字符串。例如:[code="Tcl"]# 使用以下代码匹配 abc10eeeekkkaaa 时expect { -re "abc(\d{2}).*(k+)aaa" { # 输出 10 puts "$expect_...

2012-04-02 12:15:26 719 1

原创 Tcl 中的方括号和大括号

方括号:Tcl 方括号中的代码会被当做表达式(变量,或函数)执行。大括号:Tcl 中的大括号除了用作分割代码片段外(如 if while 这样的语句需要用大括号),还被用来做字符串表达。与双引号不同的是其中的方括号中的表达式不会被执行。例如:[code="Tcl"]puts "hello world"# 报错,因为 hello 将被当做变量名 (如果有 hello 这个变量...

2012-03-31 14:24:51 4162 1

原创 Tcl 脚本读取 argv 参数

Tcl 脚本可以通过内置的 argv 变量读取运行的参数。argv 是 List 类型,所以如果读取单个参数的话需要用到 Tcl 的 lindex 函数。示例如下:[code="Tcl"]lindex $argv 0# 如果要被其它函数使用,如输出函数puts [lindex $argv 0]$ ./config.tcl "hello world" "haha"...

2012-03-31 11:28:05 8838 1

原创 【转】Pair Programming (结对编程)

转自:http://www.blogjava.net/moxie/archive/2006/09/14/69714.html 我们Pair 做任何一件事情。                                              ——ThoughtWorks 西安Office我的第一次Pair(Pair Programming的简称,即结对编程。后面都是...

2012-03-19 22:36:37 185

原创 【转】敏捷的文档

转自 InfoQ: http://www.infoq.com/cn/news/2009/02/agile-documents 软件项目中有很多种文档,包括需求文档、设计文档、API文档、缺陷报告、进度报告、移交文档、验收文档等等。在传统的软件项目开发中,每个团队成员都要花费很多时间和精力去维护文档及填写各种表格和报告。第二条敏捷宣言是"可工作的软件胜于详尽的文档",据此很多人想当...

2012-03-19 22:31:38 72

使用 Spring LDAP 读取数据并映射到 Java Bean 中

[i]写此小文总结一下平时工作的收获。[/i]入正题,工作涉及到了对 LDAP 的 CRUD 操作,不忍同事用 JLDAP 写的冗长代码(主要并不是 JLDAP 的错。冗长代码问题可以通过代码重构和 Java 反射去解决)。后发现 Spring LDAP 是用来写 LDAP 相关程序的一个不错的选择之一(并没有深入了解别的框架)。直接上代码,希望能给同样需要操作 LDAP 的朋友一些帮助:...

2011-11-09 22:51:06 450

在 IntelliJ IDEA 中加快 Maven 项目的单元测试编译速度

IntelliJ IDEA 是一个很棒的 IDE,它有很多 Eclipse 所没有的特性,但是其有一个缺点,就是在运行单元测试时,编译速度很慢。(我的系统是 Windows,我见别人在 Mac 下没有这个问题。。。)有时几秒钟就能搞定的事,IDEA 要花上几分钟。解决方法是使用 Maven 的编译取代 IDEA 本身的编译。在 "Run/Debug Configuration" -...

2011-10-31 10:03:49 855

SLF4J 与 Log4J,以及何时使用 isDebugEnabled 判断

之前一篇关于 SLF4J 和 Log4J 的文章有不当之处,SLF4J 虽然避免了 Log4J 的字符串拼接问题,但是除非复杂的字符串拼接,否则使用 SLF4J 不会给你带来任何性能上的好处(我写了个小程序,有数据才有说服力)。当然 SLF4J + Logback 另当别论。使用 SLF4J 的主要目的是替代 Apache Common Logging,后者在 OSGi 环境中会有问题(从另一篇博...

2011-10-28 09:25:28 646

使用 SLF4J 代替 Log4J

Log4J 一直是我们首选的日志框架,但其一直有个不便之处。当记录 DEBUG 日志时,我们常用以下语句: if (LOG.isDebugEnabled()) { LOG.debug("...");}在这里,if 是个很恼人的判断语句。如果我们去掉 if,那便会导致不必要的日志消息渲染。这所导致的性能损耗并不是可以完全忽略不计的,某些情况下还有可能导致严重的性能问题。但如果我...

2011-10-21 16:34:08 480

我理解的代码重构

 参加了两天的代码重构培训,虽时间有限,但收获颇丰。下面是我参加这门培训之后的总结,以及一些思考和感想。重构的重要性简单来说,要重构代码的原因就是代码变坏了。代码变得越来越长、越来愈复杂,同时又没有适时地优化代码、重组代码。这样,渐渐地,代码的可读性、可维护性便变得越来越差了。其实,软件产品的开发成本只是其中一小部分,而占得更多的则是维护成本和部署成本。而一个没有经过代码重构的软件...

2011-10-21 14:24:06 107

工作经验总结1

 在 MySQL 中,只有 Timestamp 类型带有时区信息,所以在分布式系统中要尽量使用 Timestamp 类型,否则会造成因时区不同导致的时间不一致。OSGi Service (OSGi Service,也成为 Blueprint,源自 Spring OSGi Service 技术)。在使用中主要涉及这两个配置项 <osgi:service /> 服务提供者和 ...

2011-09-08 14:43:52 101

The reason of ServiceMix cannot start up after install CollabNet Subversion Edge

What's the problem?Today I found ServiceMix on 74 cannot start up. Before this, I also found ServiceMix on 108 also cannot start up. Finally, I found the reason is from install CollabNet Subvers...

2011-09-08 14:40:49 112

新技术介绍:Hades and Spring Data

RecentlyI read some articles about Hades and Spring Data. I think it is worth to share.The link of articles are following:Hades——JPA的开源实现: http://www.infoq.com/cn/articles/hades_jpa_repositor...

2011-02-16 09:43:11 151

原创 XML Schema 中元素的顺序

在 complexType 定义中,sequence 要放在 attribute 的前面:<xs:complexType name="exceptionType"> <xs:sequence> <xs:element name="defaultMessage" type="xs:string" /> </

2011-02-09 16:16:00 715 1

JAXB unmarshall

在使用 JAXB 将 XML umarshall 为 JavaBean 的时候,XML 文件的 root 节点将 xmlns 定为和对应 XML Schema 中 namespace 相同的值。

2011-02-09 15:31:21 96

原创 Groovy Grape 的速度问题

Groovy Grape 几乎是复杂 Groovy 脚本的必备,否则依赖管理会很麻烦。不过 Grape 的速度貌似很长问题,加上 @Grabe 之后脚本执行起来就慢了。而且还不想 Maven 那样执行的时候会有输出,让你知道程序在干啥。 不知有人知道怎么让 Grape 提速吗。...

2011-01-09 21:27:45 163

MySQL update 中 select clause 的一个问题

 今天遇到的问题,随口说一句。 MySQL中,如果update 语句中含有 select 子句,那么update的表和 select 子句中的表不能是一个。否则会得到“Youcan't specify target table ‘<Table Name>’ for update in FROM clause” 的错误消息。解决方法是在select 子句的...

2011-01-06 17:19:43 319

配置 iBatis TypeHandler 时遇到的一个问题

需要使用 iBatis 将对象序列化到一个表的 BLOB 字段中,当然还有反序列化。这就需要用到 iBatis 的 TypeHandler 功能。具体实现并不麻烦,我就不多说了。我实现的是 TypeHandlerCallback 接口,因为相对来说简单点。 在配置的时候,我先尝试了全局配置 TypeHandler。 <typeHandler javaType="xxx" jd...

2010-09-30 14:49:34 955

原创 Search OSGi Bundle

找 OSGi Bundle,到 http://repo2.maven.org/maven2/org/apache/servicemix/bundles/ 你懂的

2010-09-20 11:13:08 100

iBatis 返回自动生成的主键的问题

想让 iBatis insert 返回生成的主键的话还要在 sql map 里面加上 <selectKey> 然后自己写上一段 sql。这个也低级了点了吧。JDBC 3 已经支持自动返回生成的主键了,iBatis 却还要这样搞,低级了了点了吧。当然不是所有的 DB Driver 都支持 JDBC3,不过支持的就自动返回生成主键就好了,不支持的再自己搞。不知 iBatis 怎么想的。...

2010-09-20 11:07:20 111

Spring DM 与 OSGi Blueprint

OSGi Blueprint 是最新的关于 OSGi Service 的规范,未来构建面向服务的 OSGi 应用的基础。Spring DM 2.0 是其参考实现。简单看了看两者的规范,形式都是一致的。不过我倾向于使用 Spring DM 形式的配置,因为这便于和其它 Spring 应用集成(可能今后也会有 Blueprint 配置和 Spring 配置整合的方式),而且三大 OSGi 的实现 Eq...

2010-07-06 21:53:45 159

使用 Felix Maven Bundle 插件将 Jar 包打入到 OSGi bundle 中

在开发 OSGi bundle 时,如果你的 Bundle 所依赖的某个 Jar 并不是一个 OSGi bundle(可以通过 MANIFEST.MF)文件看出来)。有一些解决方法: 将这个 Jar 包的 MANIFEST.MF 文件修改为符合 OSGi 规范的格式。这个工作可以手工做。(网上的使用 Eclipse 完成这个工作的方法我没有成功。成功者可告诉我方法)将 Jar 包打入...

2010-06-28 14:34:34 526

总结使用 SericeMix 遇到的问题

现在的项目使用 ServiceMix 作为运行环境,由于之前没有 OSGi 的经验,所以在使用过程中碰到了很多钉子,在这里总结一下:在 start 一个 bundle 时报出这样的错:XXX bundle could not be resolved. Reason: Missing constraint: Import-package: XXX。直接的原因当然是你要 impo...

2010-06-27 16:37:26 119

外派朗讯

拿到了外派朗讯的offer,是做电信 IMS 开发的。和面试的人谈了一下,做的项目类似苹果的 App Store,但是应用范围要更广,也用到了 OSGi。不知有没有人对外派朗讯的工作有什么了解的。 BTW,最近还接到了外派搜狐和 Google 的机会,不过 Google 那就没机会直接去 Google 了。还有一个 IBM 的。茫茫多的外派的机会。倒也是有几个非外派的,不过由于种种原因就拒...

2010-05-28 23:18:45 128

朗讯面试

今天下午去朗讯面试。面试需要用 PPT 做项目演示。演示的同时,面试人员也会提问。所以建议大家将平时做的项目做成 PPT 以备面试之用。记得截几张图片,做一些架构图什么的以丰富项目演示的内容。截图这事要在工作的时候做,当然不能违反保密协议,如果有的话。如果离职之后再做就不那么容易了。我之前的项目的一个子项目,实际是没有最终结束,但我也写到简历上去了,结果被问了起来。这是我唯一答得比较吃力的...

2010-05-19 23:11:52 95

我为什么想离开现在的公司

我刚跳槽,但很快发现刚进去的这家公司也有很多不如我意的地方。虽然事事如意的地方也许只能是天堂了,但是有些事情在我看来是很难接受的。我们项目组所在的办公室是不能上网的,这是出于客户的保密要求的缘故。但我很不适应。我觉得及时快捷的信息来源对于做 IT 的人来说很重要。IT 中的 I 就代表了信息,没有了它我觉得是很可怕的。工作的时候遇到难题,网络是最好的解决问题的工具。即便是一个能够解决的问...

2010-05-15 10:33:49 131

Groovy XmlSlurper 的线程安全问题

项目里用 Groovy 做 XML 解析。在做并发测试的时候发现 Groovy XmlSlurper 存在一个线程安全的问题。(一段时间前解决的问题,日志被删,不能贴出具体异常了)。 存在问题的写法是XmlSlurper xmlSlurper = new XmlSlurper() 很简单,就是 new 一个就行了。但是在并发环境下会存在问题,原因是 XmlSlurpe...

2010-05-03 14:31:55 293

[转] 高扩展WEB应用HTTP SESSION共享方案

www.yeeach.com/2010/03/27/高扩展web应用http-session共享方案/

2010-04-21 21:09:01 70

思考一下自己的行业选择

工作快3年了。工作的头两年是在积累技术和工作经验,现在是时候积累行业知识和经验了。但我感觉现在做的项目也涉及不到什么行业知识,而且技术上可学习的也不多。当初我是冲着项目的规模以及行业背景去的。不过现在我发现现实和我当初的预想可能不太一致,果真如此的话我又要跳了。虽然频繁跳槽不好,但是现在对自己来说是个重要的时间点,今后发展的好坏就看现在的选择是否正确了。不过现在说这话还有点早,我进去才刚一周,...

2010-04-18 18:06:06 99

简单用了一下 VisualVM

原来分析程序性能用的是 YourKit(其实是别人用,自己看分析结果)。主要原因是由于 YourKit 是收费的,不是想用就能用的。后来看到网上介绍 VisualVM 的文章,自己就来试试。发现还不错。VisualVM 是 Sun JDK 自带的,6.0 版本的会有。不过最低可支持 J2SE 1.4 应用的性能分析。执行 JDK bin 目录下的 jvisualvm.exe 就能运行。BTW. W...

2010-04-17 13:21:06 107

新公司日记,2010.4.13

进了 Objectiva 工作。 我参与的项目保密很严,电脑不能上网,USB 存储设备和带摄像头的统统不可以。HR 制度也严了不少。和原来的工作环境反差较大。希望公司文化不是这么严格。 通过和同事的聊天得知,我要参与的项目规模很大。和很多其它的大项目一样,由于开始的时间比较早,所以用到的都是一些老技术:EJB 是 2.0 的,很多逻辑是写在存储过程里的,还有很多用 ...

2010-04-13 22:24:28 57

Java Classloader

看了 IBM developerWorks 上的“深入探讨 Java 类加载器”后小结下:系统提供的 Classloader 主要有三种:Bootstrap Classloader、Extensions Classloader 和 System Classloader。Bootstrap Classloader 用来加载 Java 核心类库;Extensions Classloader ...

2010-03-09 15:48:01 58

NIO 文件随机存取问题

NIO 的内存映射文件机制虽然在操作大文件上有速度的优势,但我觉得它不能真正实现文件随机。FileChannel fc = new RandomAccessFile(new File("temp.tmp"), "rw").getChannel();IntBuffer ib = fc.map(FileChannel.MapMode.READ_WRITE, 0, fc.size()).asIn...

2010-03-07 20:11:44 183

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除