JAVA ’ 目录归档

《Apache Velocity用户指南》官方文档

原文链接   译文连接 译者:小村长  校对:方腾飞

Quick Start

本项目是 Apache Velocity官方文档的中文翻译版,Velocity类似与JSP,是一种基于Java的模板引擎。它可以在web页面中引用Java代码中定义的数据和对象,而Velocity的作用就是把Web视图和java代码进行组装在一起。本次翻译主要针对对Velocity感兴趣和工作中使用到Velocity的开发人员提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。

由于我也是第一次接触Velocity,还不是很深入,翻译的时候也查看了一些博客以及其他网上资料。也尝试着去了解它和JSP方面的差别以及优缺点,同时也去了解了下它和其他Java引擎模板的区别,比如freemaker的区别,等等。但是还是因为能力见识有限,翻译过程中难免出现个人的主观或者客观原因导致与官方文档存在差异。在此,我还是建议有能力的童鞋能够自己去Velocity官方看看。

阅读全文

Apache Velocity开发者指南–导读

原文链接   译者:小村长

Velocity–导读

本项目是 Apache Velocity官方文档的中文翻译版,Velocity类似与Jsp,是一种基于Java的模板引擎。它可以在web页面中引用java代码定义的数据和对象,而Velocity的作用就是Web视图和java代码进行组装在一起。本次翻译主要针对对Velocity感兴趣和工作中使用到Velocity的开发人员提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。

由于我也是第一次接触Velocity,还不是很深入,翻译的时候也查看了一些博客以及其他网上资料。以及也测试者去了解它和Jsp方面的差别以及优缺点,同时也去了解了下他和其他Java引擎模板的区别,比如freemaker的区别,等等。但是还是因为能力见识有限,翻译过程中难免出现个人的主观或者客观原因导致与官方文档有差异。在此,我还是建议有能力的童鞋能够自己去Velocity官方看看。

阅读全文

在系统中使用Bean Validation验证参数

为什么要使用Bean Validation?

 当我们实现某个接口时,都需要对入参数进行校验。例如下面的代码

[code lang=”java”]
public String queryValueByKey(String parmTemplateCode, String conditionName, String conditionKey, String resultName) {
checkNotNull(parmTemplateCode, "parmTemplateCode not null");
checkNotNull(conditionName, "conditionName not null");
checkNotNull(conditionKey, "conditionKey not null");
checkNotNull(resultName, "resultName not null");
[/code]

阅读全文

Hortonworks(HDP)开发者认证-考试大纲

原文链接   译者:小村长

本项目是 Hortonworks开发者认证官方文档的中文翻译版,Hortonworks致力于打造一个全新的大数据处理平台来满足大数据处理和分析的各个使用场景,它组合了大数据平台使用的各个组件, 比如Hadoop、Hbase、Hive、Spark等等一些列的组件, 它安装方便使用便捷, 而且已经在2000节点以上的节点上商用. 本次翻译主要针对对Hortonworks感兴趣和致力于从事大数据方法开发的人员提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。

由于我公司鼓励大家考Hortonworks认证(呵呵,公司出费用),于是今天简单的看了下官方考试大纲,感觉还不错,故翻译了下供大家参考学习,本次翻译并没有咬文嚼字, 而是根据我个人的理解进行翻译, 由于本人能力有限难免有些地方翻译不到位,还希望大家谅解,同时也鼓励大家去看官方文档。

阅读全文

《Redis官方文档》事件库

原文链接 译者:flashair

究竟为什么需要一个事件库呢?让我们通过下面一系列问答来了解为什么。

阅读全文

Java 8 新特性

原文链接   译者:小村长

这篇文章是一篇介绍Java8新特性英文博客的中文翻译,Java8发布有些时日,但是大家对它的了解和认识还不够,大部分企业和用户还停留在之前的版本中,本次翻译主要针对对Java8感兴趣和致力于从事Java开发的人员提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。Java8的中文资料相对匮乏,这是我看过介绍Java8新特性最好的一篇文章,作者通过实例和理论相结合的方式,通俗易懂的阐述了Java8的一些新特性,今天让小村长为你揭开Java8的神秘面纱,一同走进码农的精神世界。注释 : 由于本人翻译水平有限,文中难免出现错误或者翻译不合理的地方,还希望大家多多指导。

阅读全文

《Redis官方文档》 FAQ

原文地址 译者:zivyu

为什么Redis与其他的k-v存储相比不一样

有两个主要的原因

  • redis在键-值数据库中是一个不同的发展方向,值可以包含更复杂的数据类型,同时许多原子操作定义在这些数据类型上。redis的数据类型和基本数据结构密切相关,没有额外的抽象层,同样对于程序员也是直接可见的。
  • redis是一个在内存中但是可以持久化到磁盘上的数据库,所以它代表了一个不同的权衡,高速读写被实现,但是对数据集有限制,那就是不能大于内存的大小。在内存中的数据库还有另外的优点,内存中表示的复杂数据结构比一些在磁盘中的数据结构更容易操作,所以redis可以做很多操作而内部并不复杂。同时,两种磁盘存储格式(RDB和AOF)也不需要适合于随机存储。所以,数据是紧凑的,而且总是在末尾添加生成。

阅读全文

少有人走的路

20130704121043_uUSdV.thumb.466_0

《少有人走的路》 是一位心理学家写的关于如何走上心智成熟之路的书。

引言

The road less traveled,并不是所有人的心智都是成熟的,从不成熟到成熟是人生要走的一段路,相信阅读本书或本文是走向成熟的重要路程,建议每一个人都阅读下这本书,能够帮助你促进心智成熟。

我自己总是在想,为什么明白很多的道理,却仍然做不明智的事情,为什么知道很多做事的技巧,却仍然做事情不是那么高效。明知道做事不要切换,却一会看看旺旺,一会听听音乐。最近朋友也和我说明明知道要努力,却还是喜欢玩。这些问题的答案就是缺乏自律。带着问题重看此书又有新的收获。

《JAVA多线程编程实战指南》之Active Object(主动对象)模式

本文是《JAVA多线程编程实战指南》的样章,感谢作者授权并发网(ifeve.com)发表此文。感谢demochen整理此文。

8.1 Active Object

Active Object模式是一种异步编程模式。它通过对方法的调用(Method Invocation)与方法的执行(Method Execution)进行解耦(Decoupling)来提高并发性。若以任务的概念来说,Active Object模式的核心则是它允许任务的提交(相当于对异步方法的调用)和任务的执行(相当于异步方法的真正执行)分离。这有点类似于System.gc()这个方法:客户端代码调用完gc()后,一个进行垃圾回收的任务被提交,但此时JVM并不一定进行了垃圾回收,而可能是在gc()方法调用返回后的某段时间才开始执行任务-回收垃圾。我们知道,System.gc()的调用方代码是运行在自己的线程上(通常是main线程派生的子线程),而JVM的垃圾回收这个动作则由专门的工作者线程(垃圾回收线程)来执行。换而言之,System.gc()这个方法所代表的动作(其所定义的功能)的调用方法和执行方法是运行在不同的线程中的,从而提高了并发性。

阅读全文

《ZooKeeper官方文档》Zookeeper操作指南

原文链接   译者:小村长

About

本项目是 Apache ZooKeeper官方文档的中文翻译版,致力于为有分布式协同项目需求和对 Apache Zookeeper 感兴趣的同学提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。

Zookeeper对与做大数据的人来说在熟悉不过了,毕竟经常用于分布式协同服务中,比如Hbase,Strom等大数据组件中经常用到,但是大部分人仅仅把它当着一个小小的工具,从而很少发时间去深入了解它,今天让小村长为你揭开Zookeeper的神秘面纱。

阅读全文

《JAVA多线程编程实战指南》之Two-phase Termination(两阶段终止)模式

本文是《JAVA多线程编程实战指南》的样章,感谢作者授权并发网(ifeve.com)发表此文。感谢demochen整理此文。

5.1Two-phase Termination模式简介

停止线程是一个目标简单而实现却不那么简单的任务。首先,Java没有提供直接的API用于停止线程。此外,停止线程还有一些额外的细节需要考虑,如停止的线程处于阻塞(如等待锁)或者等待状态(等待其他线程),尚有未处理完的任务等。
Two-phase Termination模式通过将停止线程这个动作分解为准备阶段和执行阶段这两个阶段,提供了一种通用的用于优雅地停止线程的方法。
准备阶段。该阶段的主要动作是“通知”目标线程(欲停止的线程)准备进行停止。这一步会设置一个标志变量用于指示目标线程可与准备停止了。但是,由于目标线程可能正处于阻塞状态(等待锁的获得)、等待状态(如调用Object.wait)或者I/O(如InputStream.read)等待等状态,即便设置了这个标志,目标线程也无法立即”看到”这个标志而做出相应的动作。因此,这一阶段还需要用过interrupt方法,以期望目标线程能够对能够通过捕获相关的异常侦测到该方法调用,从而中断其阻塞状态、等待状态。对于能够对interrupt方法调用做出响应的方法(参见表5-1),目标线程代码可以通过捕获这些方法抛出的InterruptedException来侦测线程停止信号。但也有一些方法(如InputStream.read)并不对interrupt调用作出响应,此时需要我们手工处理,如同步的Socket I/O操作中通过关闭socket,使处于I/O等待的socket抛出java.net.SocketException。

阅读全文

《Redis官方文档》持久化

原文链接 译者:Alexandar Mahone

这篇文章从技术层面描述了Redis持久化,建议所有读者阅读。如果希望更多了解Redis持久化和持久性保障,建议阅读Redis持久化揭秘

Redis 持久化

提供了多种不同级别的持久化方式:

  • RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
  • AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还可以在后台对 AOF 文件进行重写(rewrite),使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。Redis 还可以同时使用 AOF 持久化和 RDB 持久化。 在这种情况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集, 因为 AOF 文件保存的数据集通常比 RDB 文件所保存的数据集更完整。你甚至可以关闭持久化功能,让数据只在服务器运行时存在。

了解 RDB 持久化和 AOF 持久化之间的异同是非常重要的, 以下几个小节将详细地介绍这这两种持久化功能, 并对它们的相同和不同之处进行说明。

阅读全文

初探设计:Java接口和抽象类何时用?怎么用?

Writer      :BYSocket(泥沙砖瓦浆木匠

今天犯了个错:

接口变动,伤筋动骨,除非你确定只有你一个人在用”。哪怕只是throw了一个新的Exception。哈哈,这是我犯的错误。

一、接口和抽象类

类,即一个对象

抽象类,就是抽象出类的基础部分,即抽象基类(抽象类)。官方定义让人费解,但是记忆方法是也不错的 — 包含抽象方法的类叫做抽象类。

接口就是把抽象的深度更深,它就像用简短的非逻辑的一些规则表示类之间的关系。可以比作协议,比如通信使用的UDP/TCP协议等。

小结类与接口是Java语言的基本抽象单元。
阅读全文

《ZooKeeper官方指南》ZooKeeper 使用 ACL 进行访问控制

原文链接 译者:Thor_liu

ZooKeeper 使用 ACL 进行访问控制

ZooKeeper使用ACL来控制访问其znode(ZooKeeper的数据树的数据节点)。ACL的实现方式非常类似于UNIX文件的访问权限:它采用访问权限位 允许/禁止 对节点的各种操作以及能进行操作的范围。不同于UNIX权限的是,ZooKeeper的节点不局限于 用户(文件的拥有者),组和其他人(其它)这三个标准范围。ZooKeeper不具有znode的拥有者的概念。相反,ACL指定id集以及与之对应的权限。

阅读全文

阿里感悟(九)- 能力和晋升

作者:方腾飞Workshop. Dude the Business people X 6 at meeting. Looking at bl

晋升是一个水到渠成的过程,能力到了自动就能晋升。所以需要努力突破自己,超越本层级的能力,并创造当前层级的人创造不出来的价值。晋升意味着对自己更高的要求,更高的责任和更多的思考。

如何才能突破自己能力?

首先要做的是改变习惯。在阿里很流行的一句话是,当自己不舒服的时候就是自己成长的时候。比如老大和我说要学会到先规划再做事情,而不是想到哪做到哪。这句话看起来简单,但是做起来很难,因为要打破自己已有的做事习惯,就像你习惯8点起床,现在让你每天6点起床,你肯定会很不习惯。 阅读全文

return top