`
SSailYang
  • 浏览: 308268 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
Log4J 一直是我们首选的日志框架,但其一直有个不便之处。当记录 DEBUG 日志时,我们常用以下语句:   if (LOG.isDebugEnabled()) { LOG.debug("..."); } 在这里,if 是个很恼人的判断语句。如果我们去掉 if,那便会导致不必要的日志消息渲染。这所导致的性能损耗并不是可以完全忽略不计的,某些情况下还有可能导致严重的性能问题。但如果我们留着 if,这又会污染我们的代码,使得其不再干净整洁。而且,当使用 PMD 等代码质量检查工具时,这样的 if 会使代码的圈复杂度变高。   当使用 SLF4J 时,如此问题便 ...
  参加了两天的代码重构培训,虽时间有限,但收获颇丰。下面是我参加这门培训之后的总结,以及一些思考和感想。 重构的重要性 简单来说,要重构代码的原因就是代码变坏了。代码变得越来越长、越来愈复杂,同时又没有适时地优化代码、重组代码。这样,渐渐地,代码的可读性、可维护性便变得越来越差了。其实,软件产品的开发成本只是其中一小部分,而占得更多的则是维护成本和部署成本。而一个没有经过代码重构的软件产品,其维护成本和部署成本必定高昂的。甚至不少软件产品不得不重写代码。所以,对于软件,尤其是一个产品来说,代码重构是必需品。如何进行代码重构则是每一个软件开发人员应该具备的技能。 重构的好处 ...
  在 MySQL 中,只有 Timestamp 类型带有时区信息,所以在分布式系统中要尽量使用 Timestamp 类型,否则会造成因时区不同导致的时间不一致。 OSGi Service (OSGi Service,也成为 Blueprint,源自 Spring OSGi Service 技术)。在使用中主要涉及这两个配置项 <osgi:service /> 服务提供者和 <osgi:reference /> 服务使用者。 <osgi:service />注册一个 OSGi Service 非常简单,用下面的配置即可。(当然一个 service ...
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 Subversion Edge (CSVN for short). How to find the reason of the problem? Because ServiceMix cannot s ...
Recently I 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_repositories_done_right Getting Started with Spring Data JPA: http://blog.springsource.com/2011/02/10/gettin ...
在 complexType 定义中,sequence 要放在 attribute 的前面: <xs:complexType name="exceptionType"> <xs:sequence> <xs:element name="defaultMessage" type="xs:string" /> </xs:sequence> <xs:attribute name="class" ty ...

JAXB unmarshall

    博客分类:
  • Java
在使用 JAXB 将 XML umarshall 为 JavaBean 的时候,XML 文件的 root 节点将 xmlns 定为和对应 XML Schema 中 namespace 相同的值。
Groovy Grape 几乎是复杂 Groovy 脚本的必备,否则依赖管理会很麻烦。不过 Grape 的速度貌似很长问题,加上 @Grabe 之后脚本执行起来就慢了。而且还不想 Maven 那样执行的时候会有输出,让你知道程序在干啥。   不知有人知道怎么让 Grape 提速吗。
  今天遇到的问题,随口说一句。   MySQL 中,如果 update 语句中含有 select 子句,那么update 的表和 select 子句中的表不能是一个。否则会得到“You can't specify target table ‘<Table Name>’ for update in FROM clause” 的错误消息。解决方法是在 select 子句的 from 不直接用表名,而是用一个另外一个 select 语句得到一个临时表。   update <Table Name> set xxx=xxx where ( ...
需要使用 iBatis 将对象序列化到一个表的 BLOB 字段中,当然还有反序列化。这就需要用到 iBatis 的 TypeHandler 功能。具体实现并不麻烦,我就不多说了。我实现的是 TypeHandlerCallback 接口,因为相对来说简单点。   在配置的时候,我先尝试了全局配置 TypeHandler。   <typeHandler javaType="xxx" jdbcType="blob" callback="xxx.TypeHandler" />   但是发现配置无效,提示 No type ...
找 OSGi Bundle,到 http://repo2.maven.org/maven2/org/apache/servicemix/bundles/ 你懂的
想让 iBatis insert 返回生成的主键的话还要在 sql map 里面加上 <selectKey> 然后自己写上一段 sql。这个也低级了点了吧。JDBC 3 已经支持自动返回生成的主键了,iBatis 却还要这样搞,低级了了点了吧。当然不是所有的 DB Driver 都支持 JDBC3,不过支持的就自动返回生成主键就好了,不支持的再自己搞。不知 iBatis 怎么想的。   已经给 iBatis 的开发人员提了这个问题,不知多久能回复。
OSGi Blueprint 是最新的关于 OSGi Service 的规范,未来构建面向服务的 OSGi 应用的基础。Spring DM 2.0 是其参考实现。简单看了看两者的规范,形式都是一致的。不过我倾向于使用 Spring DM 形式的配置,因为这便于和其它 Spring 应用集成(可能今后也会有 Blueprint 配置和 Spring 配置整合的方式),而且三大 OSGi 的实现 Equinox 3.5.x, Knopflerfish 和 Apache Felix 都可以和 Spring DM 很好的整合(Felix 在项目中以应用),至少文档上是这么说的。并且使用 Spring D ...
在开发 OSGi bundle 时,如果你的 Bundle 所依赖的某个 Jar 并不是一个 OSGi bundle(可以通过 MANIFEST.MF)文件看出来)。有一些解决方法:   将这个 Jar 包的 MANIFEST.MF 文件修改为符合 OSGi 规范的格式。这个工作可以手工做。(网上的使用 Eclipse 完成这个工作的方法我没有成功。成功者可告诉我方法) 将 Jar 包打入到你的 OSGi 包中。下面介绍使用 Felix 的 Maven Bundle plugin 去实现这个方法。 将下面的代码加入到你项目的 pom.xml 中。这样你所依赖的 Jar 将被打入到生产 ...
现在的项目使用 ServiceMix 作为运行环境,由于之前没有 OSGi 的经验,所以在使用过程中碰到了很多钉子,在这里总结一下: 在 start 一个 bundle 时报出这样的错:XXX bundle could not be resolved. Reason: Missing constraint: Import-package: XXX 。直接的原因当然是你要 import 的某个包没有在可用的 bundle 找到。这里需要了解的是 ServiceMix 的 OSGi 核心 Felix 会在 Maven repository 中加载 bundle。但有时你会发现 Ma ...
Global site tag (gtag.js) - Google Analytics