边城愚人

如果我不在边城,我一定是在前往边城的路上。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  31 随笔 :: 0 文章 :: 96 评论 :: 0 Trackbacks

我的评论

死循环的代码在hashmap的transfer方法:
void transfer(final Entry[] newTable) {
final Entry[] src = table;
final int newCapacity = newTable.length;
final long time1 = System.currentTimeMillis();
for (int j = 0; j < src.length; j++) {
Entry<K,V> e = src[j];
if (e != null) {
src[j] = null;
do {
final Entry<K,V> next = e.next;
final int i = indexFor(e.hash, newCapacity);
e.next = newTable[i];
newTable[i] = e;
e = next;
} while (e != null);
}
}
}
我的分析是:死循环就在while中,对同一个旧table中的e,一个线程执行了 e.next = newTable[i];(还没到 e = next;),另一个才到 final Entry<K,V> next = e.next;,结果后到的线程接着执行e = next;造成e=e.next,死循环了。
re: 搜索拼音输入法研究[未登录] kafka0102 2009-05-11 10:50  
ding一个
re: 消除实现继承和面向接口编程 kafka0102 2007-09-03 22:17  
@Matthew Chen
是的,对于繁杂的对象模型,如果继承层次太多就会很难把握具体的调用,也更难于修改。对于我举的例子,也许并不漂亮,这里只是为了说明一下问题。实际上,我看到很多代码有在基类抛出异常或子类抛出异常的情况,因为作者希望抽象出的公共操作只是对其某个或某几个子类不适用,而作者因为实际需求又希望将方法作为公共方法。
re: 在spring中使用Timer kafka0102 2007-07-20 08:55  
不好意思,记错了,以为Spring也是opnesymphony 的东东了。。我对Quartz也不是很了解,它在做复杂的任务调度方面要更好些,因为它可以在配置文件中配置调度策略,而Timer则只能写在TimerTask中。
re: 使用DbUnit进行持久化测试(1) kafka0102 2007-06-14 09:19  
有谁知道如何在文章中附上文件?
re: 要范型,要DAO,更要范型DAO kafka0102 2007-05-03 22:06  
发表文章时,代码不是直接贴进去的,而是选择编辑器中的“代码”选项(应该在编辑菜单的最后一个位置),然后根据弹出来的对话框进行操作就行了。
re: 要范型,要DAO,更要范型DAO kafka0102 2007-04-17 09:20  
都要疯掉了。昨晚第一遍写的时候,直接在编辑器里做,结果添加代码框出不来,IE死掉了。第二遍在word里写,结果发表时不能连接服务器。好吧,一大早来做,结果从word到编辑器转换时,格式都乱了。就这样了,没心情再改了。
re: JavaScript中定义对象的四种方式 kafka0102 2007-04-09 19:11  
学艺不精,还需努力!
re: JavaScript中定义对象的四种方式 kafka0102 2007-04-08 20:28  
确实不对,我试了一下,name属性根本没有起作用,看来外部方法introduceSelf()需要添加参数name才行!
re: 一道java算法题 kafka0102 2007-03-13 16:03  
我本身也不会多少算法题,我想的是,这样的题要求的是实现技巧,而不单单是结果。这道题蛮可以for循环嵌套,将得到的每一个排列放到Set中让Set过滤,但这样效率极低,而且Set如果自己实现(比如TreeSet)也很复杂。做了这么多年Java,感觉就是基本的数据结构还行,算法方面就差很多(也许没有使用机会吧),但算法是很基础的东西,值得好好学习。
实际使用的代理对象应该通过Proxy.newProxyInstance这样的方法实现,而代理对象调用的就是继承了InvocationHandler的类的public Object invoke(Object proxy, Method method, Object[] args)方法,这里的Object proxy应该就是代理对象本身。如果你的method.invoke(this.delegate, args); 改成method.invoke(proxy, args);将出现不断的循环。


re: 玩玩Spring之初章 kafka0102 2006-05-04 18:45  
不过是个程序员,做程序不过混口饭吃,何必那么张狂?对这么一个框架有了些认识就牛啊?最看不上你这种人了。有时间多做做程序,多学学什么叫做谦虚。大音稀声。尽管我是个80后的人,但我可以告诉你,80后根本配不上美国50年代的一代。垮掉的不单是这一代,是这一社会。