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

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

你一直在听说函数式编程将称霸整个编程届,而自己仍然沉浸在普通的Java里?请不要担心,因为你已经在日常Java代码中加入了函数式编程的特性。此外,函数式编程很有趣,能够帮你节省多行代码并且降低错误率。

阅读全文

并发网2014.12月阅读量Top10

ICON4新年到,并发网12月Top10的阅读量的文章姗姗来迟,希望各位客官笑纳!有任何意见和建议,欢迎告诉我们,我们在努力!~

阅读全文

聊聊架构-模块化

什么是模块化?
 
模块化是指解决一个复杂问题时,自上而下逐层把系统划分成若干模块的过程。

阅读全文

RecyclerView Part 1:为ListView专家写的基础

原文链接    作者:Bill Phillips    译者:赵峰

是时候讲清楚了:我了解RecylerView有些晚。太迟了。

这只能怪我自己。你可以从文档中得知RecylerView应该会取代ListView,并且在工具包里没有几个视图比ListView更重要。所以,RecyclerView十分重要。

但是它们还是会有很多不同,对吗?嗯。所以我一直推迟对它的讲解,直到几周之前我为Hack Night准备一个讲座的时候。我最终做了大量的研究,我承认这些研究很有乐趣。

最终的结果是RecyclerView非常酷,值的去替换listView。它把以前非常棘手的东西变的非常非常简单。最重要的是,它可以让一个item轻松的从一个可行的列表中动画流入和流出,而不像之前那样慢。 阅读全文

跟着实例学习ZooKeeper的用法: Curator框架应用

前面的几篇文章介绍了一些ZooKeeper的应用方法, 本文将介绍Curator访问ZooKeeper的一些基本方法, 而不仅仅限于指定的Recipes, 你可以使用Curator API任意的访问ZooKeeper。

CuratorFramework

Curator框架提供了一套高级的API, 简化了ZooKeeper的操作。 它增加了很多使用ZooKeeper开发的特性,可以处理ZooKeeper集群复杂的连接管理和重试机制。 这些特性包括:

  • 自动化的连接管理: 重新建立到ZooKeeper的连接和重试机制存在一些潜在的错误case。 Curator帮助你处理这些事情,对你来说是透明的。
  • 清理API:
    • 简化了原生的ZooKeeper的方法,事件等
    • 提供了一个现代的流式接口
  • 提供了Recipes实现: 如前面的文章介绍的那样,基于这些Recipes可以创建很多复杂的分布式应用

阅读全文

跟着实例学习ZooKeeper的用法: 临时节点

使用Curator也可以简化Ephemeral Node (临时节点)的操作。 临时节点驻存在ZooKeeper中,当连接和session断掉时被删除。

比如通过ZooKeeper发布服务,服务启动时将自己的信息注册为临时节点,当服务断掉时ZooKeeper将此临时节点删除,这样client就不会得到服务的信息了。

阅读全文

AKKA文档(JAVA版)—派发器

原文地址  译者:Zhanggc

派发器

Akka MessageDispatcher 是维持 Akka Actor “运作”的部分, 可以说它是整个机器的引擎. 所有的MessageDispatcher 实现也同时是一个 ExecutionContext, 这意味着它们可以用来执行任何代码, 例如 Future.

阅读全文

Java FP: 伪造闭包工厂,创建域对象

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

最近我们想构建一个需要使用外部依赖进行计算的域对象,同时我们希望在测试的时候能够忽略这些依赖。

阅读全文

跟着实例学习ZooKeeper的用法: 缓存

zookeeper可以利用ZooKeeper在集群的各个节点之间缓存数据。 每个节点都可以得到最新的缓存的数据。 Curator提供了三种类型的缓存方式:Path Cache,Node Cache 和Tree Cache。

Path Cache

Path Cache用来监控一个ZNode的子节点. 当一个子节点增加, 更新,删除时, Path Cache会改变它的状态, 会包含最新的子节点, 子节点的数据和状态。 这也正如它的名字表示的那样, 那监控path。

实际使用时会涉及到四个类:

  • PathChildrenCache
  • PathChildrenCacheEvent
  • PathChildrenCacheListener
  • ChildData

阅读全文

Java FP: Java中函数式编程的Map和Fold(Reduce)

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

在函数式编程中,Map和Fold是两个非常有用的操作,它们存在于每一个函数式编程语言中。既然Map和Fold操作如此强大和重要,但是Java语言缺乏Map和Fold机制,那么该如何解释我们使用Java完成日常编码工作呢?实际上你已经在Java中利用手动编写循环的方式实现了Map和Fold操作(译者注:许多动态语言如python都提供了内置的实现)。

免责声明:本篇文章仅仅只是一篇入门简介,并非函数式编程的参考。函数式编程爱好者可能会不赞同本文观点。

阅读全文

跟着实例学习ZooKeeper的用法: 计数器

这一篇文章我们将学习使用Curator来实现计数器。 顾名思义,计数器是用来计数的, 利用ZooKeeper可以实现一个集群共享的计数器。 只要使用相同的path就可以得到最新的计数器值, 这是由ZooKeeper的一致性保证的。Curator有两个计数器, 一个是用int来计数,一个用long来计数。

SharedCount

这个类使用int类型来计数。 主要涉及三个类。

  • SharedCount
  • SharedCountReader
  • SharedCountListener

SharedCount代表计数器, 可以为它增加一个SharedCountListener,当计数器改变时此Listener可以监听到改变的事件,而SharedCountReader可以读取到最新的值, 包括字面值和带版本信息的值VersionedValue。

阅读全文

跟着实例学习ZooKeeper的用法: Barrier

分布式Barrier是这样一个类: 它会阻塞所有节点上的等待进程,知道某一个被满足, 然后所有的节点继续进行。

比如赛马比赛中, 等赛马陆续来到起跑线前。 一声令下,所有的赛马都飞奔而出。

阅读全文

跟着实例学习ZooKeeper的用法: 分布式锁

分布式的锁全局同步, 这意味着任何一个时间点不会有两个客户端都拥有相同的锁。

可重入锁Shared Reentrant Lock

首先我们先看一个全局可重入的锁。 Shared意味着锁是全局可见的, 客户端都可以请求锁。 Reentrant和JDK的ReentrantLock类似, 意味着同一个客户端在拥有锁的同时,可以多次获取,不会被阻塞。 它是由类InterProcessMutex来实现。 它的构造函数为:

public InterProcessMutex(CuratorFramework client, String path)

阅读全文

跟着实例学习ZooKeeper的用法: Leader选举

ZooKeeper官方给出了使用zookeeper的几种用途

  • Leader Election
  • Barriers
  • Queues
  • Locks
  • Two-phased Commit
  • 其它应用如Name Service, Configuration, Group Membership

阅读全文

Java 注解指导手册 – 终极向导

原文链接 原文作者:Dani Buiza 译者:Toien Liu  校对:深海

编者的话:注解是java的一个主要特性且每个java开发者都应该知道如何使用它。

我们已经在Java Code Geeks提供了丰富的教程, 如Creating Your Own Java Annotations, Java Annotations Tutorial with Custom Annotation 和 Java Annotations: Explored & Explained.

我们也有些文章是关于注解在不同类库中的应用,包括 Make your Spring Security @Secured annotations more DRY和 Java Annotations & A Real World Spring Example.

现在,是时候汇总这些和注解相关的信息到一篇文章了,祝大家阅读愉快。 阅读全文

return top