逛了 V2EX 这么久发现大家技术上偏向 PHP,PYTHON 的比较多,很少见 JAVA 方面的呢!大家快出来溜溜! 附上以前写的一个 SOCKET 方面的程序,模仿 QQ 的,当抛砖引玉! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
thinkmore
V2EX    程序员

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

  •  
  •   thinkmore
    generalthink 2014-07-28 16:05:58 +08:00 3768 次点击
    这是一个创建于 4144 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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     Solana     920 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 20:02 PVG 04:02 LAX 12:02 JFK 15:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86