V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
thinkmore
V2EX  ›  程序员

逛了 V2EX 这么久发现大家技术上偏向 PHP,PYTHON 的比较多,很少见 JAVA 方面的呢!大家快出来溜溜! 附上以前写的一个 SOCKET 方面的程序,模仿 QQ 的,当抛砖引玉!

  •  
  •   thinkmore ·
    generalthink · 2014-07-28 16:05:58 +08:00 · 3470 次点击
    这是一个创建于 3773 天前的主题,其中的信息可能已经有所发展或是发生改变。
    WildCat
        1
    WildCat  
       2014-07-28 16:21:40 +08:00   ❤️ 2
    哥们,这么不注意大小写真的好吗?
    yangxiongwei
        2
    yangxiongwei  
       2014-07-28 16:44:24 +08:00   ❤️ 1
    哈哈,讨论Java的主题真的好少

    记得本科的时候也写过类似的
    用socket和rmi各自实现过一遍

    btw,bin这种目录直接ignore掉会更好,不然每次修改代码class文件也跟着在变
    xujialiang
        3
    xujialiang  
       2014-07-28 16:52:18 +08:00
    大小写啊~~~~~~~~~~~~~
    nybux
        4
    nybux  
       2014-07-28 17:04:55 +08:00
    一个链接一个线程,这样的服务器性能不行呀
    mantianyu
        5
    mantianyu  
       2014-07-28 17:11:06 +08:00   ❤️ 1
    一看 Eclipse, 就没继续点下去
    thinkmore
        6
    thinkmore  
    OP
       2014-07-28 17:23:28 +08:00
    @WildCat 全部写大写有什么问题吗?
    incompatible
        7
    incompatible  
       2014-07-28 17:23:41 +08:00   ❤️ 2
    php和python短糙快 java的开发效率毕竟没法比

    楼主的代码粗略看了看,挑点小毛病,望海涵
    1. ChatManager里面用了HashMap,但是HashMap不是线程安全的。建议改成ConcurrentHashmap
    2. MyServer 里每过来一个请求就新启一个线程,很不经济。建议改成线程池
    3. UserDaoImpl 里做完jdbc操作后,没有关闭ResultSet和Connection,这样是不对的。另外异常应该往外抛,不应该printStackTrace后直接返回
    4. DaoInstance的getUserDao()方法有问题,它不是线程安全的。建议在方法上加上synchronized关键词
    thinkmore
        8
    thinkmore  
    OP
       2014-07-28 17:24:37 +08:00
    @nybux 不是呀!所以客户端都去找服务器,服务器知识开了一个线程为其服务而已,难道我只用一个线程就可以为多个客户端服务吗?
    thinkmore
        9
    thinkmore  
    OP
       2014-07-28 17:25:04 +08:00
    @yangxiongwei 第一次把东西放在上面,下次我注意了,thanks
    thinkmore
        10
    thinkmore  
    OP
       2014-07-28 17:25:26 +08:00
    @mantianyu 为啥呢?不喜欢,还是你喜欢用notepadd
    incompatible
        11
    incompatible  
       2014-07-28 17:32:04 +08:00
    客户端代码中的问题:
    不要在mouseClicked()或actionPerformed()中做耗时操作,这样会导致swing的event dispatcher线程阻塞,会使界面卡住

    具体原理你可以参考 http://blog.itpub.net/13685345/viewspace-374940/
    nybux
        12
    nybux  
       2014-07-28 17:33:05 +08:00
    恩,如果要做到大并发,必须不能一个连接一个线程。可以参考一下epoll/iocp或者nio或者netty
    sdysj
        13
    sdysj  
       2014-07-28 17:54:46 +08:00
    因为java代码不好看。。。
    lu18887
        14
    lu18887  
       2014-07-28 18:01:09 +08:00
    @WildCat
    @xujialiang 这种大小写真的很重要吗?标题里大写还不够明显吗?
    thinkmore
        15
    thinkmore  
    OP
       2014-07-28 19:13:06 +08:00
    @incompatible 非常感谢你的回答,当初写的时候没有太多的注意到,毕竟是大二的时候写的,当时考虑得有不全面的地方,谢谢指正,我会在后期的版本中改正这些问题,thanks

    谢谢大家的回复
    zts1993
        16
    zts1993  
       2014-07-28 21:59:13 +08:00 via Android
    哈哈哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:20 · PVG 16:20 · LAX 00:20 · JFK 03:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.