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

2014-07-28 16:05:58 +08:00
 thinkmore
https://github.com/thinkMore123/Java-Socket
3488 次点击
所在节点    程序员
16 条回复
WildCat
2014-07-28 16:21:40 +08:00
哥们,这么不注意大小写真的好吗?
yangxiongwei
2014-07-28 16:44:24 +08:00
哈哈,讨论Java的主题真的好少

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

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

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

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

谢谢大家的回复
zts1993
2014-07-28 21:59:13 +08:00
哈哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/124893

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX