第一次杭州程序员交流会总结

第一次杭州程序员圆桌交流会于上周末在杭城著名的betacafe举行了,本次主题为Java并发编程,参加的人员为14人,分别来自网易、cisco、DBAppSecurity、阿里巴巴b2b、淘宝、支付宝、阿里云,组织者为阿里云的龙浩,twitter id为: @hoorace,交流会上共有7人分享了PPT,其他人员热烈的参与了讨论,:),总结来说,本次的交流会还是很成功的,质量不错,组织形式上后面可以考虑进一步优化,下面进入本次交流会的细节分享,感兴趣的同学可以继续阅读,twitter上的直播实录请搜索#yuanzhuo。

第一次杭州程序员圆桌交流会于上周末在杭城著名的betacafe举行了,本次主题为Java并发编程,参加的人员为14人,分别来自网易、cisco、DBAppSecurity、阿里巴巴b2b、淘宝、支付宝、阿里云,组织者为阿里云的龙浩,twitter id为: @hoorace,交流会上共有7人分享了PPT,其他人员热烈的参与了讨论,:),总结来说,本次的交流会还是很成功的,质量不错,组织形式上后面可以考虑进一步优化,下面进入本次交流会的细节分享,感兴趣的同学可以继续阅读,twitter上的直播实录请搜索#yuanzhuo。
===================================================================
Topic 1:Java多线程常见陷阱
PPT下载地址:http://www.bluedavy.com/yuanzhuo/20100320/killme2008@taobao.pptx
Topicer: @killme2008
Topic评价:PPT做的很不错,形象的图形,这些陷阱在编写Java多线程程序时需要特别注意,绝对是经验之谈,值得学习,尤其是killme2008 PPT中最后分享到的Sun JDK 1.5里的一些bug。
===================================================================
Topic 2:Java Concurrent Programming
PPT下载地址:http://www.bluedavy.com/yuanzhuo/20100320/joez@cisco.ppt
Topicer: joez
Topic评价:这个Topic分享的更多的是并发编程中需要掌握的一些理论知识,例如线程、原子操作、可见性、wait/notify机制等,和上一Topic一样,都提到了要特别注意InterreputedException的处理,在分享的过程中引发大家讨论的主要是什么是并发,什么是并行,我自己的看法是并发的程序不一定能并行,就此而已,另外一个有意思的点就是交流到了CPU超线程,这个点是有些意思的。
===================================================================
Topic 3:SEDA与Java并行编程点滴
PPT下载地址:http://www.bluedavy.com/yuanzhuo/20100320/tanbamboo@DBAppSecurity.ppt
Topicer:@tanbamboo
Topic评价:SEDA是现在高性能服务器编程中的重要思想,tanbamboo同学分享了一个实际的SEDA的例子,会有助于SEDA思想的理解,在PPT的最后提到了coroutine的一个问题,coroutine只是用一个线程如何发挥多核优势,其实coroutine通常是使用cpu核数线程。
===================================================================
Topic 4:并发编程交流
PPT下载地址:http://www.bluedavy.com/yuanzhuo/20100320/bluedavy@taobao.pptx
Topicer: @bluedavy
Topic评价:自己的PPT不好评价了,分享的主要是Java并发编程中最关键的资源竞争、一致性保证的知识点以及线程相关的知识点,分享过程中我举的一个基于concurrentHashMap、FutureTask改造的例子引发了大家的热烈讨论,cisco同学后来给了一个类似的方案,也是不错的,最后在讲线程部分时也宣扬了下coroutine,并发上来讲最重要的还是尽可能的去除(Non-Blocking)、减少竞争(拆分、lock-free),这个其实不是纯技术方面的,很多时候需要根据场景来分析。
===================================================================
Topic 5:Java并发编程实践
PPT下载地址:http://www.bluedavy.com/yuanzhuo/20100320/hoorace@aliyun.pptx
Topicer: @hoorace
Topic评价:hoorace分享了一个实际的案例,这个还是很受大家关注的,各提意见来进行改造和提升,:),从效果来看,分享案例再讲一些背后的机制是很受大家欢迎的,同时自己也能从中获得一些新的不同角度的改进方法。
===================================================================
Topic 6:线程飞扬
PPT下载地址:http://www.bluedavy.com/yuanzhuo/20100320/lihaibo@netease.ppt
Topicer:杨海波
Topic评价:网易的同学分享了一个数据迁移的案例,这个例子中反应的主要是借助多线程来提升性能的方案,这也是我个人认为实际场景中使用多线程主要是两个目的,一是提升所能支撑的并发量,二是提升性能。
===================================================================
Topic 7:并发程序设计
PPT下载地址:http://www.bluedavy.com/yuanzhuo/20100320/wenshaojin@b2b.ppt
Topicer:温少
Topic评价:温少同学以一个经典的10个老婆的例子来阐述了amdahl、gustafson、sun-ni定律,通俗易懂,太经典了,推荐了这本书:《Synchronization Algorithms and concurrent Programming》; 同时在分享中温少从另一个不同的角度来讲了并发的提升,就是硬件角度,例如现在的GPU,分解了CPU压力;最后分享的基于TimerWheel算法来改进java中头疼的基于Timer做定时触发的问题,很值得学习,如果说评选的话,我会选择温少这个分享作为本次的最佳分享,受益颇丰。

作为第一次这种交流会,质量能保证的这么好,不得不要感谢各位参与者open的分享精神,同时更要感谢的是@hoorace的辛苦组织,从本次交流来看,这种相对交流性质而非培训性质的还是很受欢迎的,因此将继续组办这类交流会,以后的可能的改进方法为:
1、初定为一个月一次,固定场所,每次的主题前期由组织者来指定,开展多了后则可采取投票机制;
2、由于分享的同学可能会很多,为了避免时间过长,后续会采取对需要分享的PPT做一次投票,确保在有限的时间内分享大家最感兴趣的话题,在分享方面最好是实例,然后讲解此次实例过程中涉及的背后的知识点,参与交流会的同学可以随时提供改进的更好建议;
3、录制视频,以便分享给更多的无法来参加的同学,进一步讨论。
下一期主题初定为关于JVM的那点事,对JVM内存管理、编译机制、线程机制等有深入研究和实战经验的同学欢迎参与,可以直接联系我或者是等口碑上的活动报名帖做出来后再行报名。

《第一次杭州程序员交流会总结》有28个想法

  1. 本次活动目标是提高大家的动手编码能力,需要重在参与,所以我在电话中拒绝了很多围观者。
    第一期活动没有录视频是因为大家的PPT都没有提前发给我看看,我对质量很是担心,就结果来看,我的担心多余了。
    下期活动建议继续网上报名和邀请机制并行,网上报名的演讲者可以带2个以下的非女性来围观。
    这次活动全是男人,真的很圆桌。

  2. 看了博主的PPT和书,理解不了用FutureTask的实现怎么减少连接数的难道FutureTask会缓存连接在里面嘛?

  3. 感谢博主的及时回答,以下是内容:
    这些是PPT中的:
    能否不创建无谓的连接,想到了FutureTask
    private static ConcurrentHashMap<String,FutureTask> connections=new ConcurrentHashMap<String,FutureTask>();

    public Connection get(final String key) throws Exception{
    if(connections.containsKey(key)){
    return connections.get(key).get;
    }
    FutureTask newTask=new FutureTask(new Callable(){
    public Connection call() throws Exception{
    return createConnection(key);
    }
    });
    FutureTask task=connections.putIfAbsent(key, newTask);
    if(task==null){
    newTask.run();
    return newTask.get();
    }
    return task.get();
    }
    在书的160页上也有和只用ConcurrentHashMap实现的对比:原话是:经过这样的改造可以避免由于并发代来的多次创建连接及锁有出现。

    不知道要怎样来理解这个,昨天想了一下午没有想明白“不创建无谓的连接”或者书中的“避免由于并发代来的多次创建连接”是指的什么,谢谢指点一下。

  4. 明白了,谢谢
    之前想成createConnection(key);这个方法会实现判断同一个KEY不会创建两次(要不这个KEY用来做什么….)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注


*