摘要: 在本系列的上篇文章中,我们讲到了如何自定义Property,在本篇文章中,我们将讲到如何使用java Plugin。 请通过以下方式下载本系列文章的Github示例代码:git clone https://github.com/davenkin/gradle-learning.git Gra... 阅读全文
posted @ 2013-11-13 16:22 无知者云 阅读(32376) 评论(6) 推荐(4) 编辑
摘要: 在本系列的上篇文章中,我们讲到了增量式构建,在本篇文章中,我们将讲到如何自定义Project的Property。 请通过以下方式下载本系列文章的Github示例代码:git clone https://github.com/davenkin/gradle-learning.git 在前面的文... 阅读全文
posted @ 2013-11-13 09:04 无知者云 阅读(45542) 评论(0) 推荐(6) 编辑
摘要: 在本系列的上篇文章中,我们讲到了如何读懂Gradle的语法,在本篇文章中,我们将讲到增量式地构建项目。 请通过以下方式下载本系列文章的Github示例代码:git clone https://github.com/davenkin/gradle-learning.git 如果我们将Gradl... 阅读全文
posted @ 2013-11-12 16:08 无知者云 阅读(33166) 评论(2) 推荐(8) 编辑
摘要: 在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle。 请通过以下方式下载本系列文章的Github示例代码: Gradle是一种声明式的构建工具。在执行时,Gradle并不会一开始便顺序执行build.gradle文件中的内容,而是分为两个阶段,第一个 阅读全文
posted @ 2013-11-12 09:19 无知者云 阅读(55950) 评论(4) 推荐(6) 编辑
摘要: 在本系列的上篇文章中,我们讲到了Gradle入门,在本篇文章中我们将讲到创建Task的多种方法。 请通过以下方式下载本系列文章的Github示例代码: Gradle的Project从本质上说只是含有多个Task的容器,一个Task与Ant的Target相似,表示一个逻辑上的执行单元。我们可以通过很多 阅读全文
posted @ 2013-11-11 19:47 无知者云 阅读(77193) 评论(11) 推荐(5) 编辑
摘要: 这是一个关于Gradle的学习系列,其中包含以下文章: 请通过以下方式下载本系列文章的Github示例代码: 和Maven一样,Gradle只是提供了构建项目的一个框架,真正起作用的是Plugin。Gradle在默认情况下为我们提供了许多常用的Plugin,其中包括有构建Java项目的Plugin, 阅读全文
posted @ 2013-11-11 13:20 无知者云 阅读(242253) 评论(11) 推荐(23) 编辑
摘要: 一个教授三个帮,北京深圳石家庄,市场经济我也搞,管他荒唐不荒唐。 阅读全文
posted @ 2013-06-04 21:26 无知者云 阅读(575) 评论(0) 推荐(0) 编辑
摘要: 在本系列先前的文章中,我们主要讲解了JDBC对本地事务的处理,本篇文章将讲到一个分布式事务的例子。 请通过以下方式下载github源代码:git clone https://github.com/davenkin/jta-atomikos-hibernate-activemq.git 本地事... 阅读全文
posted @ 2013-03-19 23:26 无知者云 阅读(12862) 评论(5) 推荐(3) 编辑
摘要: 在本系列的上一篇文章中,我们讲到了使用动态代理的方式完成事务处理,这种方式将service层的所有public方法都加入到事务中,这显然不是我们需要的,需要代理的只是那些需要操作数据库的方法。在本篇中,我们将讲到如何使用Java注解(Annotation)来标记需要事务处理的方法。 这是一个关... 阅读全文
posted @ 2013-02-24 20:42 无知者云 阅读(15984) 评论(0) 推荐(1) 编辑
摘要: 在本系列的上一篇文章中,我们讲到了使用Template模式进行事务管理,这固然是一种很好的方法,但是不那么完美的地方在于我们依然需要在service层中编写和事务处理相关的代码,即我们需要在service层中声明一个TransactionTemplate。在本篇文章中,我们将使用Java提供的动... 阅读全文
posted @ 2013-02-24 12:25 无知者云 阅读(5254) 评论(3) 推荐(2) 编辑
摘要: 在本系列的上一篇文章中,我们讲到了使用TransactionManger和ConnectionHolder完成线程安全的事务管理,在本篇中,我们将在此基础上引入Template模式进行事务管理。 这是一个关于Java事务处理的系列文章,请通过以下方式下载github源代码:git clone ... 阅读全文
posted @ 2013-02-23 17:31 无知者云 阅读(5502) 评论(1) 推荐(1) 编辑
摘要: 在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的。在本篇文章中,我们将引入另外一种机制(ConnectionHolder)来完成事务管理。 这是一个关于Java事务处理的系... 阅读全文
posted @ 2013-02-23 13:31 无知者云 阅读(9901) 评论(2) 推荐(4) 编辑
摘要: 在本系列的上一篇文章中,我们看到了一个典型的事务处理失败的案例,其主要原因在于,service层和各个DAO所使用的Connection是不一样的,而JDBC中事务处理的作用对象正是Connection对象,所以不同DAO中的操作不在同一个事务里面,从而导致事务失败。从中我们得出了教训:要避免这... 阅读全文
posted @ 2013-02-22 17:04 无知者云 阅读(4561) 评论(0) 推荐(2) 编辑
摘要: 一个出租车司机在知道我的工作后立即回答道“高科技哟!”;异国入关处的检查官在询问得知我的职业后,也连声直呼“Goodmoney,goodmoney!”;在美国各大职业中,软件工程师的收入也一直令人歆羡地位居前三甲。我们这群人就着这样被人认为是“高收入的高科技工作者”,然而我看到更多的是科学的危机... 阅读全文
posted @ 2013-02-19 19:47 无知者云 阅读(535) 评论(0) 推荐(2) 编辑
摘要: 在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例。 请通过以下方式下载github源代码:git clone https://github.com/davenkin/j... 阅读全文
posted @ 2013-02-17 22:13 无知者云 阅读(8462) 评论(0) 推荐(2) 编辑
摘要: Java中的事务处理有多简单?在使用EJB时,事务在我们几乎察觉不到的情况下发挥着作用;而在使用Spring时,也只需要配置一个TransactionManager,然后在需要事务的方法上加上Transactional注解就行了。Java的事务处理之所以这么简单是因为框架在背后为我们做了太多的工... 阅读全文
posted @ 2013-02-16 20:48 无知者云 阅读(17909) 评论(1) 推荐(7) 编辑
摘要: 开始学Java EE,为什么不从Servlet,JSP学起,而偏要选择一个在如今企业级开发中基本上不会直接用到的RMI,是因为大名鼎鼎而又臭名昭著但又不得不学的EJB建立在RMI基础之上。怀揣着李约瑟那句“如果我们不了解过去,也没多少希望掌握未来。”, 我开始盘根问底似的去学习Java EE的历... 阅读全文
posted @ 2013-02-08 17:02 无知者云 阅读(2045) 评论(1) 推荐(0) 编辑
摘要: 和传统的批处理(Batch Processing)相比,Spring Batch虽然有很大的不同,但是归根结底,都是顺序地执行一些列任务。你用Spring Batch可以读取一个TXT文件的内容,然后将处理之后的数据放到数据库里,反之亦然。 Spring Batch任务处理的核心组件有Jo... 阅读全文
posted @ 2013-02-05 20:21 无知者云 阅读(5954) 评论(0) 推荐(1) 编辑
摘要: InputStreamReader将基于byte的Stream转换为基于char的Reader,此时需要有Charset介入。InputStreamReader有多个构造函数,如果构造函数中没有指定Charset,则转换将按照系统默认的Encoding方式完成,如果指定了Charset,便按照该... 阅读全文
posted @ 2013-02-01 16:45 无知者云 阅读(2170) 评论(0) 推荐(1) 编辑
摘要: 元月元日一轮暖阳,千古情愁一幕荧光,十里洋场一阵枪声,双眼泪滋一个老乡。 阅读全文
posted @ 2013-01-01 21:31 无知者云 阅读(365) 评论(0) 推荐(0) 编辑