摘要: Java的内部类包括四种类型:Static member classesMember classesLocal classesAnonymous classes1. Static member classStatic member class是类的一个静态成员,它只能访问上层类中的静态成员和静态方法... 阅读全文
posted @ 2014-08-26 11:33 longshaohang 阅读(204) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap的整个结构是一个Segment数组,每个数组由单独的一个锁组成,Segment继承了ReentrantLock。然后每个Segment中的结构又是类似于HashTable,也就是又是一个数组,数组的元素类型是HashEntry,每个形成一个桶。要找每个元素的时候,首... 阅读全文
posted @ 2014-08-25 23:06 longshaohang 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 官方的解释这个类为:/** * A simple, durable, atomic K/V database. *Very inefficient*, should only be * used for occasional reads/writes. Every read/write hits d... 阅读全文
posted @ 2014-08-05 21:26 longshaohang 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 1. 最简单的情形 public void main(){ String s = test(); System.out.println("s=[" + s + "]"); } public String test(){ String... 阅读全文
posted @ 2014-05-23 16:52 longshaohang 阅读(1012) 评论(0) 推荐(0) 编辑
摘要: Storm中涉及到了很多组件,例如nimbus,supervisor等等,在参考了这两篇文章之后,对这个有了更好的理解。Understanding the parallelism of a Storm topologyhttps://github.com/nathanmarz/storm/wiki/Understanding-the-parallelism-of-a-Storm-topologyhttp://www.cnblogs.com/yufengof/p/storm-worker-executor-task.html我们先理一下概念:一般对于物理节点来讲,我们部署的节点的类型包括nimb 阅读全文
posted @ 2014-02-22 23:37 longshaohang 阅读(2945) 评论(0) 推荐(1) 编辑
摘要: What’s the Difference Between ESP and CEP?http://www.complexevents.com/2006/08/01/what%E2%80%99s-the-difference-between-esp-and-cep/主要介绍了ESP和CEP的区别Event stream processing is focused more on high-speed querying of data in streams of events and applying mathematical algorithms to the event data.CEP is 阅读全文
posted @ 2014-02-19 21:21 longshaohang 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 这个锁叫可重入锁。它其实语义上和synchronized差不多,但是添加了一些拓展的特性。A reentrant mutual exclusionLockwith the same basic behavior and semantics as the implicit monitor lock accessed usingsynchronizedmethods and statements, but with extended capabilities.我们重点看看它的源代码实现。在ReentrantLock类中很大一部分的函数是委托给这个类Sync来完成的。 /** Synchron... 阅读全文
posted @ 2013-10-08 17:39 longshaohang 阅读(774) 评论(0) 推荐(0) 编辑
摘要: 装饰者模式动态地将责任附加到对象杭,若要拓展功能,装设置提供了比继承更有弹性的替代方案。星巴兹有多种咖啡,它们具有不同的价格。在购买咖啡时,也可以要求在其中加入各种调料,例如豆浆、摩卡、奶泡等等。需要根据所加入的调料收取不同的费用。这里运用”装饰者模式“,以饮料为主体,然后在运行时以调料来“装饰”饮料,比如说顾客想要摩卡和奶泡深焙咖啡,那么哪一个深焙咖啡(DarkRoast)对象以摩卡对象装饰它以奶泡对象装饰它调用cost()方法,并依赖委托(delegate)将调料的价格加上去。看一下装饰者模式的类图是如何实现的:ConcreteComponent是我们要动态地加上新行为的对象每个Compo 阅读全文
posted @ 2013-10-07 20:42 longshaohang 阅读(448) 评论(0) 推荐(0) 编辑
摘要: 我们用Java中自带的观察者模式接口来重写前面的例子。先看一下类图:这里用到了一个setChanged函数,它用来标记状态已经改变的事实,好让notifyObservers()知道当它调用时就应该更新观察者。如果调用notifyObservers()之前没有先调用setChanged(),观察者就不会被通知到。setChanged()方法可以让你在更新观察者时,有更大的弹性,你可以适当地通知观察者。Observable内部是这样的结构:setChanged(){ changed = true; }notifyObservers(Object arg){ if (changed){ ... 阅读全文
posted @ 2013-10-07 19:45 longshaohang 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖着都会受到通知并且自动更新。我们先看下类图:首先我们自己创建Subject接口,定义了注册观察者,移除观察者和通知观察者三个函数。1 package headfirst.observer.weather;2 3 public interface Subject {4 public void registerObserver(Observer o);5 public void removeObserver(Observer o);6 public void notifyObservers()... 阅读全文
posted @ 2013-10-07 17:20 longshaohang 阅读(377) 评论(0) 推荐(0) 编辑