第二章 你的第一个Netty应用

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

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

本章包含:

  • 创建开发环境
  • 编写一个Echo服务器和客户端
  • 编译测试应用

在这一章我们将会向你展示如何创建一个基于Netty的客户端和服务器。这两个应用很简单—客户端送消息到服务器,服务器再将该消息送回客户端—不过,基于两个原因,这个练习很重要。

首先,它提供了一个创建和验证开发工具及环境的试验台。如果你打算用书里的示例代码来准备你自己的开发,那么这一点很重要。

第二,你能积累一些亲手实践前一个章节提到的Netty关键部分的经验:用ChannelHandlers来创建应用逻辑。这能帮你为从第三章开始的Netty API深入学习做好准备。
阅读全文

哪个线程执行 CompletableFuture’s tasks 和 callbacks?

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

CompletableFuture尽管在2014年的三月随着Java8被提出来,但它现在仍然是一种相对较新潮的概念。但也许这个类不为人所熟知是好事,因为它很容易被滥用,特别是涉及到使用线程和线程池的时候。而这篇文章的目的就是要描述线程是怎样使用CompletableFuture的。

阅读全文

Java – 获取类中特定数据类型的字段

原文链接作者: 译者:王乐(2270134103@qq.com)

一些Java反射API的例子。

阅读全文

《React官方文档》之Getting Started

原文链接  译者:jella77

JSFiddle

开始React最简单的方法就是遵循JSFiddle的Hello World例子:

ExecutorService-10个要诀和技巧

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

ExecutorService抽象概念自Java5就已经提出来了,现在是2014年。顺便提醒一下:Java5和Java6都已不被支持,Java7在半年内也将会这样。我提出这个的原因是许多Java程序员仍然不能完全明白ExecutorService到底是怎样工作的。还有很多地方要去学习,今天我会分享一些很少人知道的特性和实践。然而这篇文章仍然是面向中等程序员的,没什么特别高级的地方。

阅读全文

第一章 Netty—异步和事件驱动

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

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

本章包含

  • Java的网络编程
  • Netty初探
  • Netty的核心组件

假设你即将要为一个重要的大公司开发一个新的关键任务的应用程序。在第一次会议上,你了解到这个系统必须能无性能损耗地扩展到支持15万个并发用户。这时所有的人都看着你,你会说什么?
阅读全文

Netty in Action中文版 — 第一部分前言

本文翻译自《Netty in Action》第一部分前言 

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

Netty是一个用于创建高性能网络应用的成熟框架。在本书的第一部分,我们将深入探讨Netty的性能,同时展现以下三个要点:

  • 你不必成为一个网络专家,才能用Netty搭建应用
  • 使用Netty比直接使用底层的Java APIs要简单的多
  • Netty能促成良好的设计原则,比如说解耦你的应用层逻辑和网络层

阅读全文

《Netty in Action》中文版

本文翻译自《Netty in Action》目录  作者:Norman Maurer, Marvin Allen Wolfthal  译者:桃小胖

第一部分 NETTY的概念和结构

阅读全文

《Spark官方文档》Spark Streaming编程指南

spark-1.6.1 [原文地址]

Spark Streaming编程指南

概览

 

Spark Streaming是对核心Spark API的一个扩展,它能够实现对实时数据流的流式处理,并具有很好的可扩展性、高吞吐量和容错性。Spark Streaming支持从多种数据源提取数据,如:Kafka、Flume、Twitter、ZeroMQ、Kinesis以及TCP套接字,并且可以提供一些高级API来表达复杂的处理算法,如:map、reduce、join和window等。最后,Spark Streaming支持将处理完的数据推送到文件系统、数据库或者实时仪表盘中展示。实际上,你完全可以将Spark的机器学习(machine learning) 和 图计算(graph processing)的算法应用于Spark Streaming的数据流当中。

spark streaming-arch 阅读全文

用SLF4J和Guidce记录日志

原文链接  作者:Michael Glauche

又一次对java.util.logger无语的时候,我在想如何用SLF4J logger取代它。尽管Guice针对java.util.logger提供一个非常好的内部绑定,slf4j提供一个更好的语法。永远是细节中的魔鬼…如果你想你的logger与当前类一起初始化,你不能简单地注入logger。但是,在Guice中有一个好教程(http://code.google.com/p/google-guice/wiki/CustomInjections):关于注入log4j looger。SLF4J也是这样工作的。

阅读全文

Apache Commons Pool官方文档

原文链接  译者:张坤

Apache Commons Pool 开源软件库提供了一个对象池API和一系列对象池实现。Apache Commons Pool 2.x与1.x相比实现了一个可重写的对象池实现。另外,性能和可伸缩性也有了改进,2.x版本包含鲁棒的实例追踪和对象池监控。2.x版本需要JDK6以上版本。 阅读全文

可插入式ZooKeeper身份认证

原文地址:Pluggable ZooKeeper authentication
ZooKeeper运行在带有数量众多并且各不相同的身份认证schemes(视图)的各种不同环境中,所以它拥有完整的可插入式身份验证框架。甚至它内置的身份验证schemes也使用了可插入式身份验证框架。

想搞清楚身份验证框架式是如何工作的,你首先必须弄明白两个主要的身份验证操作。该框架首先必须验证客户端(client)。这一步通常都会被完成只要客户端连接到服务器并且它包含了从服务器发送过来或收集到相关的关于客户端与连接进行关联的验证信息。第二步由框架处理的操作时找出一个对客户端进行响应的ACL中的entries(我翻译成“标识”)。ACL entries是一对<idspec, permissions>对。Idspec可能是一个匹配关联连接的验证信息的简单字符串(simple string)或者它也可能是一个用来评估该验证信息的表达式(expression)、它关注于实现身份验证插件的匹配。这里是身份验证插件中必须被实现的接口:
阅读全文

缓存穿透、缓存并发、缓存失效之思路变迁

我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题:

  • 缓存穿透
  • 缓存并发
  • 缓存失效

阅读全文

《Apache Common CLI官方文档》

原文链接      参考链接    译者:小村长

本篇文章是并发编程网组织的一次Apache Common组件翻译的一部分,因为无意中看到了Apache Common CLI感觉很好奇,因为这个工具很少在网上看到,当然或许我没有关注过。因为我之前也写过类似的CLI工具所以感觉情有独钟吧。所以让我来为大家揭开CLI的神秘面纱。

虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱。各种工具和系统都提供了详尽的使用手册,有些还提供示例说明如何二次开发。然而关于如何开发一个易用、强壮的命令行工具的文章却很少。

阅读全文

《Apache Common官方文档》翻译邀请

原文链接

有很多工具类其实Apache Common包里都有,所以每次开发之前都可以先看下是否这包里已经有相关的工具类,5月份并发网组织大家翻译Apache Common包。

有兴趣的同学可以通过评论领取,翻译完成之后再并发网直接提交审核。

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

阅读全文

Maven的Java插件开发指南

原文地址 译者:刘小刘

介绍

本指南的目标是帮助用户使用Java开发Maven插件。

重要声明:插件命名规范和Apache Maven商标

通常将你的插件命名为<yourplugin>-maven-plugin。
强烈反对命名为maven-<yourplugin>-plugin(maven在插件名开头),因为这是Apache Maven组织为官方Maven插件保留的命名格式,用org.apache.maven.plugins作为组id。使用此命名是对Apache Maven商标的侵权。
阅读全文

《Maven官方文档》创建Archetype

原文链接

创建archetype是一个非常简单的过程。archetype就是一个非常简单的构件,它包含了你想创建的工程的模型。archetype由这些东西组成:

  • 一个archetype描述符(archetype descriptor)(src/main/resources/META-INF/maven目录下的archetype.xml)。这个文件列出了包含在archetype中的所有文件并将这些文件分类,因此archetype生成机制才能正确的处理。
  • 原型文件(prototype files),archetype插件会复制这些文件(目录: src/main/resources/archetype-resources/)
  • 原型POM(prototype pom)(pom.xml in: src/main/resources/archetype-resources)
  • archetype的POM(pom.xml 在archetype的根目录下)

阅读全文

《Maven官方文档》什么是原型(Archrtype)?

原文链接

什么是原型?

简单来说,原型(Archetype)是一个Maven工程模板工具包。一个原型被定义为一个提供相同性质内容的原始样式或模型。这个名字适合当我们试图提供一个系统,这个系统提供了一个一致的方式生成Maven项目。原型将帮助作者为用户创建Maven工程模板,并且为用户提供方法去使用参数来调整生成的工程模板。

阅读全文

《Spark 官方文档》Spark SQL, DataFrames 以及 Datasets 编程指南

spark-1.6.0 [原文地址]

Spark SQL, DataFrames 以及 Datasets 编程指南

概要

Spark SQL是Spark中处理结构化数据的模块。与基础的Spark RDD API不同,Spark SQL的接口提供了更多关于数据的结构信息和计算任务的运行时信息。在Spark内部,Spark SQL会能够用于做优化的信息比RDD API更多一些。Spark SQL如今有了三种不同的API:SQL语句、DataFrame API和最新的Dataset API。不过真正运行计算的时候,无论你使用哪种API或语言,Spark SQL使用的执行引擎都是同一个。这种底层的统一,使开发者可以在不同的API之间来回切换,你可以选择一种最自然的方式,来表达你的需求。

 

本文中所有的示例都使用Spark发布版本中自带的示例数据,并且可以在spark-shell、pyspark shell以及sparkR shell中运行。

阅读全文

《SLF4J官方文档》SLF4J-FAQ 常见问题解答

原文地址

一般性问题

  1. 什么是SLF4J?
  2. 什么时候应该使用SLF4J?
  3. SLF4J仍是另一个日志外观吗?
  4. 如果SLF4J可修复JCL,那为什么不在JCL里加入修复而是创建一个新项目?
  5. 使用SLF4J时,我必须重新编译我的应用以转换到一个不同的日志系统吗?
  6. SLF4J的要求是什么?
  7. SLF4J向后兼容版本吗?
  8. 使用SLF4J时遇到访问权限错误,原因是什么?
  9. 为什么SLF4J是在X11类型许可证下许可而不是Apache软件许可?

阅读全文

return top