《Java并发性和多线程介绍》-Java TheadLocal
Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域。
Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有一个指向同一个ThreadLocal变量的引用,但是这两个线程依然不能看到彼此的ThreadLocal变量域。
本项目是 Apache Storm 官方文档的中文翻译版,致力于为有实时流计算项目需求和对 Apache Storm 感兴趣的同学提供有价值的中文资料,希望能够对大家的工作和学习有所帮助。
虽然 Storm 的正式推出已经有好几个年头了,发行版也已经到了 1.0.x,但是目前网络上靠谱的学习资料仍然不多,很多比较有价值的资料都过时了(甚至官方网站自己的资料都没有及时更新,这大概也是发展太快的社区的通病),而较新的资料大多比较零碎,在关键内容的描述上也有些模棱两可,给初学者带来了很大的困扰。本人自己在初学 Storm 的阶段就非常痛苦,一直想有一份较系统、实用的资源来方便学习。最近借着整理工作的机会,就下定决心通过官方文档的翻译梳理出 Storm 的技术路线,于是就有了这个翻译项目。非常感谢并发编程网对本项目的支持,由于本人水平有限,翻译中仍然存在不少问题,还请大家不吝斧正。如果对本项目有任何问题,欢迎在评论中或者本项目的 Github 页面中(https://github.com/weyo/Storm-Documents)提出,另外也可以直接给本人发邮件(ivicoco at gmail.com),谢谢。
Strom 的代码有三个层次:
第一,Storm 在一开始就是按照兼容多语言的目的来设计的。Nimbus 是一个 Thrift 服务,拓扑也被定义为 Thrift 架构。Thrift 的使用使得 Storm 可以用于任何一种语言。
第二,所有的 Storm 接口都设计为 Java 接口。所以,尽管 Storm 核心代码中有大量的 Clojure 实现,所有的访问都必须经过 Java API。这就意味着 Storm 的每个特性都可以通过 Java 来实现。
第三,Storm 的实现中大量使用了 Clojure。可以说,Storm 的代码结构大概是一半的 Java 代码加上一半的 Clojure 代码。但是由于 Clojure 更具有表现力,所以实际上 Storm 的核心逻辑大多是采用 Clojure 来实现的。
本文阐述了 Storm 0.6.0 以上版本的序列化机制。在低于 0.6.0 版本的 Storm 中使用了另一种序列化系统,详细信息可以参考 Serialization (prior to 0.6.0) 一文。
原文链接 作者:Jakob Jenkov 译者:魏嘉鹏
Java
的java.sql.Timestamp
类在JDBC API
中被使用。如果你需要在java.sql.PreparedStatement
上设置日期+时间或者从java.sql.ResultSet
获取日期+时间,你将会和java.sql.Timestamp
打交道。
实际上,java.sql.Timestamp
继承于java.util.Date
,所以你可以用java.util.Date
做的任何事同样适用于java.sql.Timestamp
。查阅 java.util.Date
了解更多的信息。
阅读全文
原文链接 作者:Jakob Jenkov 译者:魏嘉鹏
Java
的java.sql.Date
类在JDBC API
中被使用。如果你需要在java.sql.PreparedStatement
上设置日期或者从java.sql.ResultSet
获取日期,你将会和java.sql.Date
打交道。
实际上,java.sql.Date
继承于java.util.Date
,所以你可以用java.util.Date
做的任何事同样适用于java.sql.Date
。查阅 java.util.Date
了解更多的信息。
阅读全文
原文链接 作者:Jakob Jenkov 译者:魏嘉鹏
在Java中,用System.currentTimeMillis()
来测量时间最方便。
你要做的是在某些操作之前获取到时间,然后在这些操作之后你想要测量时间,算出时间差。下面是一个例子:
[code lang=”java”]
long startTime = System.currentTimeMillis();
callOperationToTime();
long endTime = System.currentTimeMillis();
long totalTime = endTime – startTime;
[/code]
阅读全文