归档之于 ‘ 2015 年二月

嵌入Groovy

原文链接  译者: 李璟(jlee381344197@gmail.com)

(本站正在翻译groovy系列文章,有兴趣同学可以加入我们)

Groovy就其本身而言,在不同的场景下都算是一门非常不错的编程语言,特别是在与Java混用的环境下,Groovy显得更加强大。出于这种考虑,Groovy被设计成非常轻量级,并且易于嵌入到任何Java应用系统中。

目前主要有3种方法将Groovy与Java集成起来,细节会在下文中讨论。

还有一种可选方案是,如果你确实需要使用其他脚本语言,可以利用Bean Scripting Framework将任何脚本语言集成到你的Java代码中(虽然我们难以想象这么做的原因)。

阅读全文

采用Java 8中Lambda表达式和默认方法的模板方法模式

原文链接 作者:   Mohamed Sanaulla  译者: 李璟(jlee381344197@gmail.com)

模板方法模式是“四人帮”(译者注:Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides)所著《Design Patterns book》一书中所描述的23种设计模式其中的一种,该模式旨在:

“Define the skeleton of an algorithm in an operation, deferring some steps to subclasses.

TemplateMethod lets subclasses redefine certain steps of an algorithm without changing the algorithm’s structure”。

即模板方法定义一个算法的架构,并将某些步骤推迟到子类中实现。模板方法允许子类在不改变算法架构的情况下,重新定义算法中某些步骤。

为了以更简单的术语描述模板方法,考虑这个场景:假设在一个工作流系统中,为了完成任务,有4个任务必须以给定的执行顺序执行。在这4个任务中,不同工作流系统的实现可以根据自身情况自定义任务的执行内容。

模板方法可以应用在上述场景中:将工作流系统的4个核心任务封装到抽象类当中,如果任务可以被自定义,则将可自定义的任务推迟到子类中实现。

阅读全文

一个Java 8中简单Lambda表达式程序

原文链接 作者:   Mohamed Sanaulla  译者: 李璟(jlee381344197@gmail.com)

我尝试过把Lambda表达式融入到我的代码中,下面的代码例子是此次尝试的结果。对于那些完全不知道Lambda表达式的Java程序员,我强烈建议在继续阅读之前,浏览一下这篇文章

Ok,现在你已经熟悉Lambda表达式了(在阅读过推荐的Lambda入门文章之后),那我们现在开始学习一个我认为很好的Lambda表达式的例子。

考虑一下这种场景:某些操作在执行之前需要做预处理,执行之后需要做后期处理。待执行的操作会随着行为的不同而变化。预处理会提取出这个操作所需的必要参数,后期处理做一些清理的工作。

我们来看看如何利用接口与接口的匿名实现类模拟这个场景。

阅读全文

Groovy模板引擎上(基础模板介绍)

原文链接 作者:groovy团队  译者:树下偷懒的蚁

1.简介
Groovy支持多种方式动态的生成文本譬如:GStrings, printf(基于Java5),MarkupBuilder 。除此之外,模板框架则是非常适用基于静态模板生成文本的应用程序。

2.模板框架

在Groovy中,模板框架包含TemplateEngine抽象基类(引擎必须实现),Template接口(引擎生成的模板必须实现)。

阅读全文

Predicate和Consumer接口– Java 8中java.util.function包下的接口

原文链接 作者:   Mohamed Sanaulla  译者: 李璟(jlee381344197@gmail.com)

早先我写了一篇《函数式接口》,探讨了部分Java 8中函数式接口的用法。我也提及了Predicate接口属于java.util.function包,在这篇文章中,我将展示如何应用Predicate接口和Consumer接口。

阅读全文

Guava 是个风火轮之基础工具(1)

前言

Guava 是 Java 开发者的好朋友。虽然我在开发中使用 Guava 很长时间了,Guava API 的身影遍及我写的生产代码的每个角落,但是我用到的功能只是 Guava 的功能集中一个少的可怜的真子集,更别说我一直没有时间认真的去挖掘 Guava 的功能,没有时间去学习 Guava 的实现。直到最近,我开始阅读 Getting Started with Google Guava,感觉有必要将我学习和使用 Guava 的一些东西记录下来。

阅读全文

Function接口 – Java8中java.util.function包下的函数式接口

作者:   Mohamed Sanaulla  译者: 李璟(jlee381344197@gmail.com)

早先我写了一篇《函数式接口》,探讨了Java8中函数式接口的用法。如果你正在浏览Java8的API,你会发现java.util.function中 Function, Supplier, Consumer, Predicate和其他函数式接口广泛用在支持lambda表达式的API中。这些接口有一个抽象方法,会被lambda表达式的定义所覆盖。在这篇文章中,我会简单描述Function接口,该接口目前已发布在java.util.function中。

阅读全文

Java FP: Java中函数式编程的谓词函数(Predicates)第二部分

作者:  Cyrille Martraire  译者: 李璟(jlee381344197@gmail.com)

在上一篇文章中我们介绍了谓词函数。通过一个简单的只带一个返回值是true或者false的函数的接口,把函数式编程语言的优势带入到了类似Java的面向对象编程语言中。这一小节,我们将会介绍一些高级特性,方便你高效利用谓词函数。

阅读全文

线程基础之遗漏和扩展部分

原文地址  译文地址   译者:姚志彬  校对:丁一,方腾飞

       这里我们只是关注了一些多线程之间共享变量的简单使用问题。这些是任何一个写多线程程序的人,都应该熟悉的最基础的问题。我们忽略了一些其他多线程实现提供的工具。它们虽然很少被用到,但是对于你的程序仍然很有必要。

阅读全文

模块化的乐趣

原文链接  作者:Kirk Knoernschild

         模块间的紧耦合是一种很糟糕的设计,而耦合的最坏表现就是模块间的循环依赖。幸运的是,有几种方法可以用来消除循环依赖,分别是回调函数,代码上移,代码下移。 接下来,我会为大家展示一个小例子。示例中,我会分别使用上述几种技术来消除循环依赖。

        在消除循环依赖之后,我们会探索另外两项技术,来达到依赖反转和消除模块之间依赖的目的。本示例的所有代码都可以在Google Code下载,每个解决方法对应的代码都包含有一个编译脚本和一个简单测试用例。一般你只需要输入 ant compile就可以执行编译脚本,不过如果你想使用JarAnalyzer,那么必须要有GraphViz。注意每个解决方法对应的代码版本都具有相同的行为!

阅读全文

Netty源码注释翻译-Channel类

定义为一个通往网络socket或者一个由I/O读写能力的组件。

通道提供:
1,通道的当前状态,打开?已连接?
2,跟通道关联的配置信息ChannelConfig,包括buffer大小等。
3,通道支持的I/O操作,如读、写、连接、绑定等。
4,跟通道关联的ChannelPipeline,用来处理通道的I/O事件和请求。

阅读全文

return top