- 浏览: 72469 次
最新评论
-
dotjar:
dotjar 写道http://burtleburtle.ne ...
ConcurrentHashMap, Hashtable and HashMap -
dotjar:
http://burtleburtle.net/bob/has ...
ConcurrentHashMap, Hashtable and HashMap -
ldw1986hf123:
[u][/u]
ConcurrentHashMap, Hashtable and HashMap -
mooncui:
haoooooj 写道2年零3个月后,偶然路经此处,作答:
...
ConcurrentHashMap, Hashtable and HashMap -
haoooooj:
2年零3个月后,偶然路经此处,作答:
static int ...
ConcurrentHashMap, Hashtable and HashMap
文章列表
源码 进度
1. Junit3.8 源码 99%
2. Hibernate 源码
3. ehcache源码
4. oscache源码 10%
5. JBoss源码 ...
- 2009-05-11 14:31
- 浏览 1088
- 评论(0)
Linux下libstdc++.so.5找不到解决方案
(2012-10-16 10:41:47)
转载▼
标签:
it
在Liinux系统安装程序时经常遇到“libstdc++.so.5找不到”的问题,例如提示“libstdc++.so.5: cannot open shared object file: No such file or directory”。
从网上找资料和亲手实践后,把解决方法描述如下:
--- 以下的"#"表示是root用户。
CentOS/fedora
在Terminal窗口中 ...
one sentence
- 博客分类:
- English
But to say only this is to pay less respect than is due.
摘自《深入Java虚拟机第二版》
boolean是基础类型,但它有点特殊。指令集对boolean的支持有限,当编译器把Java代码编译为字节码的时候,会用int或byte来表示boolean。在Java虚拟机中,false是用整数零来表示,所有非零整数都表示true。
涉及boolean的操作会使用int,boolean数组则是当做byte数组来访问,而在“堆”区,它也可以表示为位域。
- 2009-06-15 13:22
- 浏览 1325
- 评论(0)
有点乱,基本上是看代码时的笔记。
StandardServer.init
StandardService.initialize
Http11Protocol.init
JIoEndpoint.init
connector.initialize()
JkCoyoteHandler.init
JkMain.init
这里的几个类基本都实现了Lifecycle接口,这个接口非常重要。
StandardServer.start()
StandardService.start()
StandardEngine.start() --StandardEngi ...
- 2009-06-01 11:31
- 浏览 1090
- 评论(0)
译自:http://junit.sourceforge.net/doc/cookstour/cookstour.htm
不是直接翻译。
1. Command 模式
一个TestCase就是一个Command,command内容都写在run方法里。
2. A best practice is from Smalltalk, "Collecting Parameter":
当你需要收集多个方法的运行结果,比较好的一个方式就是每个方法增加一个参数,用这个参数object来收集结果
3.
protected void run(final TestCase t ...
- 2009-05-14 17:18
- 浏览 1086
- 评论(0)
volatile 关键字
译自 http://www.javamex.com/tutorials/synchronization_volatile.shtml
一、简介
volatile在JAVA5开始变化比较大。
volatile是用来说明变量的值会被多个线程修改到,用volatile关键字定义了的变量意味着:
1.这个变量的值不会被线程cache到,所有的读写操作都是直接操作主存
2.访问这个变量的操作就好象是在synchronized block中一样,synchronized(this object)。当然实际上是并没有lock的。
我们来比较一下synchroniz ...
- 2009-05-11 13:20
- 浏览 1415
- 评论(0)
1.
default initial capacity, HashMap is 16, Hashtable is 11(eleven).
而且HashMap的capacity应该是2的指数倍的,它还有MAXIMUM_CAPACITY。
HashMap的构造函数中还会调用一个init()方法,这个默认是空的,是留给子类来做个性化定义的。
DEFAULT_LOAD_FACTOR is 0.75f for these two.
ConcurrentHashMap的capacity方面设置和HashMap类似。
AbstractConcurrentReadCache也是map类的,默认capacity是 ...
- 2009-05-07 16:20
- 浏览 8193
- 评论(5)
在ReentrantLock中主要定义了static的内部类:Sync。
static abstract class Sync extends AbstractQueuedSynchronizer {
然后又分别派生出:NonfairSync,FairSync两个类。
这两个区别是:NonfairSync中的tryAcquire就看当前(锁)的状态是否是0,如果是则
state=acquires;
owner = current; //owner==null, 表示没有锁定,否则表示被owner线程锁定
如果原来owner就是current thread, state +=acquires; ...
- 2009-04-28 15:14
- 浏览 2600
- 评论(0)
ReentrantLock implements Lock 主要定义了一个内部类Sync是继承AbstractQueuedSynchronizer
所以看看:AbstractQueuedSynchronizer
定义了内部类Node
状态:CANCELLED(1),SIGNAL(-1),CONDITION(-2)
/** Marker to indicate a node is waiting in shared mode */
static final Node SHARED = new Node();
/** Marker to indicate a node ...
- 2009-04-28 13:26
- 浏览 2102
- 评论(1)
在JDK1.5之前,多线程并发一般用synchronized关键字来实现。1.5之后,在java.util.concurrent包提供了更强大的支持。
synchronized 方法或语句的使用提供了对与每个对象相关的隐式监视器锁定的访问,但却强制所有锁定获取和释放均要出现在一个块结构中:
当获取了多个锁定时,它们必须以相反的顺序释放,且必须在与所有锁定被获取时相同的词法范围内释放所有锁定。
Lock 接口的实现允许锁定在不同的作用范围内获取和释放,并允许以任何顺序获取和释放多个锁定,从而支持使用这种技术。
随着灵活性的增加,也带来了更多的责任。锁定和取消锁定出现在不同作用范围中时,必须谨慎地 ...
- 2009-04-27 16:43
- 浏览 1263
- 评论(0)
static final int MAXIMUM_CAPACITY = 1 << 30;
//32位的int最大值+1的一半
//(1073741824 0100 0000 0000 0000 0000 0000 0000 0000)
最大值MAX_VALUE = 0x7fffffff;
//(2147483647 0111 1111 1111 1111 1111 1111 1111 1111)
transient
意思是转瞬即逝的,它 ...
- 2009-04-27 10:13
- 浏览 1067
- 评论(0)
在学习IBM WebSphere Commerce的时候,看到关于catalog的表设计,觉得非常灵活强大。
一个store可以对应多个目录,一个目录可以属于多个store,不同子目录在不同store中可以显示,也可以不显示。
Commerce是做大型B2B,B2C网站,基本概念包括:
store -- 具体的一个网站,实际网站下可以有多个子网站,参考连锁店之类的经营模式。
catalog -- store的主目录
catalog group -- 分组,子目录
catalog entry -- 一类产品,或一个产品,或一个产品包。
one store can have multiple c ...
- 2009-04-16 14:50
- 浏览 1681
- 评论(0)
怎样测private方法?
Summer example = new Summer.newInstance();
Method m = example .getClass().getDeclaredMethod("methodone",new Class[]{String.class});
m.setAccessible(true);
Object result = m.invoke(example ,new Object[] {new String(xxxx)});
m.setAccessible(false);
- 2008-02-12 20:09
- 浏览 1392
- 评论(0)
昨天看到一个blog,用一个极端例子来说明Java中的内存问题:
http://blog.xebia.com/2007/10/04/leaking-memory-in-java/
测试代码如下:
public class TestGC {
private String large = new String(new char[100000]);
public String getSubString() {
return this.large.substring(0,2);
}
...