《JAVA8开发指南》第二章采用Lambda表达式

原文链接 译者:hyssop

采用Lambda表达式

本章,你将学习到如何采用JAVA8的重要特性Lambda表达式。首先,你要了解“行为参数”这种模式。该模式能够使你写出来的代码适应需求变化。然后,你将看到该模式如何使得Lambda表达式的使用与以往比变得更加简洁。然后,你将学习如何精确地定位Lambda表达式的使用场景和使用方式。你也将了解JAVA8的另一个特性-方法参数,它能使你的代码更简洁更易读。带着所有这些新知识实战一个重构代码的例子。最后,你也将学习到如何使用Lambda表达式和方法参数。

阅读全文

《Mybatis官方文档》翻译邀请

在持久层我们经常使用Ibatis框架,不过从10年开始这个框架已经不再维护了(Ibatis官网),原Ibatis的开发已经投入到MyBatis的开发中,所以本月组织大家翻译《Mybatis官方文档》(需要翻墙),每次领取一节,翻译完后再领取其他章节。翻译完成之后请登录到并发网提交成待审核状态,会有专门的编辑校对后进行发布。值得注意的是官网部分文档已经有翻译了,参与翻译的人可以参考下。

阅读全文

CompletableFuture 不能被中断

原文链接 作者:Tomasz Nurkiewicz  译者:simonwang

我之前写过一篇关于InterruptedException and interrupting threads的文章。总之,如果你调用Future.cancel(),那么Future不仅会终止正在等待的get(),还会试图去中断底层的线程。这是个很重要的特征,它能够使线程池变得更加利于使用。我在之前的文章中也说过,相对于标准的Future,尽量使用CompletableFuture。但事实证明,Future的更加强大的兄弟-CompletableFuture并不能优雅地处理cancel()。

阅读全文

Java中的Functor与monad

原文链接 作者:Tomasz Nurkiewicz  译者:simonwang

这篇文章最初是我们的Reactive Programming with RxJava一书中的附录,然而提到monad即使它与响应式编程有关,但也只是一点点,所以我决定把它单独拿出来出一篇博客。我意识到对monad一边解释一边纠正,对我而言这就像是在编程博客上使用“Hello World”一样(是对是错拉出来溜溜)。而且这篇文章从Java数据结构与库的角度对functor与monad给出了独特见解,因此我认为这值得拿出来分享。

阅读全文

《Netty in Action》中文版—第七章 EventLoop和线程模型

本文翻译自《Netty in Action》第七章  

作者:Norman Maurer, Marvin Allen Wolfthal   译者:桃小胖

本章包含

  • 线程模型概览
  • Event Loop的概念和实现
  • Task调度
  • 实现详解

简单来说,线程模型定义了操作系统,编程语言,框架或者应用程序线程管理的关键部分。线程是如何,并且何时被创建,显然对代码的执行有很大的影响。因此,开发者需要理解不同线程模型中存在的权衡利弊。无论他们是直接为自己选择模型,还是通过用一种语言或者框架隐性地来选择模型,这一点都是毋庸置疑的。

在这一章我们会详细探讨Netty的线程模型。Netty线程模型很强大,不过用起来很简单。Netty总是一如既往地简化你的应用代码,最大化应用的性能和可维护性。我们还会讨论到我们选择Netty目前这个线程模型的整个过程。

如果你对Java并发API(java.util.concurrent)有一个大致的了解,你会感觉本章的讨论很清晰明了。如果你对这些概念不熟悉,或者需要再回忆下,Brian Goetz和其他人合著的《Java并发编程实战》是个很棒的资源。
阅读全文

为什么多线程是个坏主意

原文地址:

Unix编程艺术 中,提到了尽量避免多线程编程模型, 认为这样只会增加复杂度, 提倡使用多进程, 这样本质上就可以避免多线程『共享内存数据』产生的 “corruotped memory” 问题。

其中, 提到了一篇文章 Why Threads Are A Bad Idea, 对于多线程编程和事件编程分析的非常好, 具体的翻译如下:

阅读全文

理解Storm的内部消息缓冲机制

原文链接 作者:Michael G. Noll  译者:lendo

这篇文章是Apache Kafka的作者之一Michael G. Noll写的,他的博客地址在[这里]

优化Storm计算拓扑性能的过程有助于我们理解Storm内部消息队列的配置和使用,在这篇简短的文章中,我将向大家解释并说明Storm(0.8或0.9版本)的一个工作进程(worker process)和与其相关的多个执行器线程是如何完成内部通信的。

阅读全文

《ZooKeeper官方指南》一致性保障

本文翻译自《ZooKeeper官方指南》,译者:追云,校对:追云

一致性保障

ZooKeeper是一个高性能,可扩展的服务。虽然读比写更快,但在设计上,它的读操作和写操作都很快。(读比写更快)之所以会这样,是因为在某些“读”的情况下,ZooKeeper对更古老的数据会起作用,这反过来也是得益于ZooKeeper的一致性保障:

阅读全文

《Jersey用户指南》–序言

序言

此书是Jersey 2.23.1的用户手册。我们努力及时更新这本手册因为Jersey 2.23.1增加了一些新的功能。当您在阅读这本用户手册的时候, 请同时参考我们的Jersey  API 手册从而进一步理解Jersey 的功能和API。

如果您也想给这本手册贡献一点力量或者对这本手册没有涵盖的内容抱有疑问,请联系我们:users@jersey.java.net。同时,如果您在这本用户手册上发现任何错误, 请把发现的问题注册到Jersey JIRA Issue Tracker上的文档部分 阅读全文

《Netty in Action》中文版—第六章 ChannelHandler和ChannelPipeline

本文翻译自《Netty in Action》第六章  

作者:Norman Maurer, Marvin Allen Wolfthal   译者:桃小胖

本章包含

  • ChannelHandler和ChannelPipeline APIs
  • 检测资源泄露
  • 异常处理

在前一章,你学习了Netty的数据容器ByteBuf。在这一章我们会在你已经学过的知识的基础上探讨Netty的数据流和处理模块。你会开始看到这个框架的一些重要元素被组合到一起了。

你已经了解到,ChannelHandler在一个ChannelPipeline中被链在一起,将所有的处理逻辑组织起来。我们会在这一章学习有关这两个类的各种用例,以及另一个重要的相关类,ChannelHandlerContext。

理解所有这些组件之间的相互作用是用Netty创建一个模块化的,可复用应用的关键。
阅读全文

Java实现 二叉搜索树算法(BST)

作者:李强强(泥瓦匠)

“岁月极美,在于它必然的流逝”
“春花 秋月 夏日 冬雪”
— 三毛 阅读全文

Commons IO 官方文档

本文翻译自 Commons IO 官方文档 译者:MagicWolf

Common IO 是一个工具库,用来帮助开发IO功能 它包括6个主要部分

  • Utility classes – 包括一些静态方法来执行常用任务
  • InputInputStreamReader 实现
  • OutputOutputStreamWriter 实现
  • Filters – 多种文件过滤器实现(定义了 IOFileFilter接口,同时继承了 FileFilterFilenameFilter 接口)
  • Comparators – 用于文件比较的多种java.util.Comparatot实现

阅读全文

Spark机器学习库(MLlib)指南

spark-1.6.1

机器学习库(MLlib)指南

MLlib是Spark的机器学习(ML)库。旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。

MLllib目前分为两个代码包:

  • spark.mllib 包含基于RDD的原始算法API。
  • spark.ml 则提供了基于DataFrames 高层次的API,可以用来构建机器学习管道。

《JAVA8开发指南》使用流式操作

本文翻译自《JAVA开发指南》第三章  

本章中,你将学习到怎样使用Stream API进行开发。首先,你将会了解Stream API背后的机制,什么是流以及流的用处。其次,你将学习到一系列的流式操作、流式数据处理模型以及能让你写出更复杂数据查询的流式集合操作。接下来是如何应用流式操作的例子。最后,你将学习到并行流。

阅读全文

《Jersey用户指南》翻译邀请

7月并发网组织大家翻译《Jersey用户指南》。有兴趣的同学可以通过评论领取,翻译完成之后再并发网直接提交审核。

一次领取一篇,一篇建议领取一个章节,翻译完成之后可以继续领取,领取文章后最好在一个星期内翻译完成,如果不能完成翻译请通过评论告知,以便于其他人可以继续翻译。

阅读全文

《JAVA8开发指南》为什么你需要关注 JAVA8

本文翻译自《JAVA开发指南》第一章  

作者:Raoul-Gabriel Urma   译者:二进制的蛇

本章包含

  • 代码的可读性
  • 多核
  • JAVA8特性的快速指南

JAVA8:为什么你需要关注?

JAVA已经更新了!在 2014 年 3 月,JAVA发布了新版本-JAVA8,JAVA8 引入的一些新特性可能会改变你日常中基本的编码方式。但不用担心,这本简洁的指南会带着你掌握一些要领,现在你就可以开始阅读。

阅读全文

《Java8开发指南》翻译邀请

 

《Redis官方文档》发布和订阅

原文链接

发布/订阅(Pub/Sub)

SUBSCRIBE、UNSUBSCRIBE 和 PUBLISH 这三个命令实现了发布/订阅消息模式(引用自维基百科),发送者(发布者)并不是直接发送它们的消息给指定的接收者(订阅者),而是将消息发布到特定的消息通道,并且不需要知道订阅者(如果有的话)的任何信息。订阅者可以订阅一个或多个感兴趣的消息通道,同时也只会收到他们感兴趣通道的信息,而不用去关心是谁发布的。这种发布者与订阅者的解耦,使其具备更强的扩展性并得到一个更加动态的网络拓扑。

阅读全文

《Netty in Action》中文版—第五章 ByteBuf

本文翻译自《Netty in Action》第五章  

作者:Norman Maurer, Marvin Allen Wolfthal   译者:桃小胖

本章包含

  • ByteBuf—Netty的数据容器
  • API详情
  • 用例
  • 内存分配

正如我们前面提到的,网络数据的基础单位总是字节。Java NIO用ByteBuffer做它的字节容器,但是这个类使用起来过于复杂,有时候还非常麻烦。

Netty用ByteBuf替代了ByteBuffer,这个强大的实现突破了JDK API的限制,为网络开发者提供了更好的API。

在这一章我们会展现同ByteBuffer相比,ByteBuf的出色功能和灵活性。这也让你从大体上更好地理解Netty数据处理的方式,并且为第六章ChannelPipeline和ChannelHandler的讨论做好准备。
阅读全文

《Netty in Action》中文版—第四章 传输

本文翻译自《Netty in Action》第四章  

作者:Norman Maurer, Marvin Allen Wolfthal   译者:桃小胖

 

本章包含

  • OIO—阻塞传输
  • NIO—异步传输
  • 本地传输—JVM内部的异步通信
  • 嵌入式传输—测试你的ChannelHandler

经过一个网络的数据通常是同一种类型:字节。这些数据是如何移动的基本上取决于被我们称之为网络传输的概念,这个概念帮我们抽象了底层的数据传输机制。用户不关心细节,他们只关心他们的字节数据被可靠地传送和接收。

阅读全文

return top