日常——异步Socket实现中的问题
尝试了Socket的一般实现,同步处理,没什么问题了。
另外发现调用Socket的时候,经常Socket就调用getOutputStream()取出OutputStream输出流,然后写么,一般都习惯性的写点内容,然后flush()。突然发现。。好像一直不知道这个flush的作用,就百度了下,发现有人说这个没用,我就自己试了试,看了下jdk的源码。在调用Socket的时候,这里取出的OutputStream应该是SocketOutputStream,这个东西没有覆盖父类的flush方法,那么往上看是FileOutputStream,再往上是abstract的OutputStream,这里边的flush是空方法,SO,确实是没有什么实际作用的。
然后CSDN论坛上之前有个哥们说好多OutPutStream的子类中的flush也没用,于是也就顺便看了下,DataOutPutStream中的flush是子类重写过的,调用的是他内部成员OutputStream的flush(),而这个成员out,又和DataOutPutStream构造的时候有关,SO,如果构造的时候用的那个OutPutStream中flush就是没用的,那这个buffered也就没啥用了,比如说用FileOutputStream去构造。具体用flush有意义的,一般都是那种涉及到利用缓冲区的,我CTRL+T了下,比如BufferedOutPutStream, PipedOutputStream,ObjectOutputStream的flush就是有用的。
然后在写测试类的时候无意中查到个东西,就也具体的看了看。。就是Iterator这个玩意,以前不太喜欢用,后来尝试多模匹配AC算法实现的的时候,搞了段代码,里头重写了一个集合的iterator()方法。我以前遍历集合,喜欢用for(T t : 集合),顶多了,有时候的情况是,遍历某个集合,去掉不满足条件的。。。我之前就尝试遍历过程中,list.remove然后报异常了。。。遍历过程中修改集合。。。所以我过去的方法特土鳖。。都是把不满足的东西放到另一个list里头,然后遍历完了,removeAll。。。这次正好又学到了这个,用iterator,for(; it.hasNext(); it.next()) 注意这个it.next()如果在循环体中调了的话,就别写for里头了。这样如果这个遍历的对象不满足条件的话,用it.remove()是不会有影响的,很nice。it.next()给我的感觉,就像是,有10条记录的集合,遍历第一圈, it没指向谁,然后以一执行it.next,it指向第一个,并返回第一个,这个时候,remove是remove掉第一个元素,假如你上来就it.remove的话,it没指向谁,就该报错了。
此外,我也试了下,for(T t:集合)循环过程中,用it.remove。也是会报错的。然后用iterator遍历过程中,用list.remove也会异常,所以涉及到遍历集合过程中修改集合的话,还是用iterator遍历+修改,比较稳.
今儿打算一看下Socket异步处理的那堆代码,我才发现那个包是java.nio。。。我日,没用过,另外昨儿回家的路上看jsp的电子书。。。上来讲javabean用了一些propertychange一类的处理,监听。我觉得这个可能前台用的比较多吧,以前我是用winform做界面的,里边对监听啊,事件啊,用的比较多,而且那会oracle也表示不用swing什么的了么。。就没学,不过看来还是有用的,今天有空也写写看。
日常——异步Socket实现中的问题相关推荐
- 高并发 python socket send 异步_在Python中使用异步Socket编程性能测试
ok,首先写一个python socket的server段,对开放三个端口:10000,10001,10002.krondo的例子中是每个server绑定一个端口,测试的时候需要分别开3个shell, ...
- c#异步socket
.NET Socket开发之异步Socket 在基于.NET的网络服务端的开发中,我们用到和听到的最多的恐怕就是异步Socket了.异步Socket的性能比同步高出很多,但是编写代码比较复杂.因此异步 ...
- [python3.3]Python异步Socket编程【TCP】
参考: http://www.cnblogs.com/snailrun/p/3805188.html 异步网络据说能极大的提高网络server的连接速度,所以打算写一个专题,来学习和了解异步网络.因为 ...
- C#.net同步异步SOCKET通讯和多线程总结(转)
C#.net同步异步SOCKET通讯和多线程总结 来源:http://www.cnblogs.com/Silverlight_Team/archive/2009/03/13/1411136.html ...
- python模块介绍-asyncore 异步socket处理器
2019独角兽企业重金招聘Python工程师标准>>> 该模块提供了异步socket服务客户端和服务器的基础架构. 只有两种方法让程序在单个处理器上的同时做超过一件的事情. 多线程编 ...
- 可扩展多线程异步Socket服务器框架EMTASS 2.0
本文原创版权归 CSDN hulihui 所有,转载请按照如下方式显示标明原创作者及出处,以示尊重!! 作者: hulihui 原文:http://blog.csdn.net/hulihui/arch ...
- 同步Socket 与 异步 Socket
同步Socket 与 异步 Socket: 1.同步就是阻塞的,比如 接受数据 如果没有回应 就一直等待. 2.异步就是不用等待: 同步Socket using System; using Syste ...
- IP地址的三种表示格式及在Socket编程中的应用
转自:http://blog.csdn.net/hguisu/article/details/7449955 使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理.IP地址其 ...
- 网络推广专员浅析如何在日常网络推广过程中增加网站转化率?
当下越来越多企业选择建立属于自己的企业官网,通过网络推广实现在互联网市场中开拓新的用户群体,根据庞大的用户市场需求走向有针对性的运营优化,实现企业网站转化率的提升,促进企业网站营销获益.然而在庞大的互 ...
最新文章
- OpenCV最经典的3种颜色空间(cv2.cvtColor)及互相转换
- SAP RETAIL 为门店维护多个存储地点
- @Autowire 和 @Resource 注解使用的正确姿势,别再用错的了!!
- HttpPost+json请求---服务器中文乱码及其他
- 几种字符串到byte[] 数组转化为String 的方法
- 小心!上万个 Android 和 iOS 应用正在泄露你的数据
- Oracle,Mysql,Sqlserver数据库连接串(总爱忘,留着备用)
- Python基础---循环、条件判断
- vivo解bl锁_黔隆科技刷机教程酷派Y82820忘记密码刷机解锁降级救砖解屏幕锁账户锁教程...
- Android Window/Window Z-Order/Surface/SurfaceView
- Matlab与1stOpt多元非线性回归
- 树莓派打造智能语音控制系统
- outsystems刚做项目时的注意点-划重点
- PMP/CAPM/PgMP/ACP考试报名资格
- unity3d 获取 Advertising ID
- 1007 Maximum Subsequence Sum (25 分) java 题解
- angularjs常见错误_AngularJS开发人员应避免的7大错误
- sdut-循环-7-统计正数和负数的个数(II)python
- 项目管理进阶--软件开发项目中的团队组成
- CodeForces 891 E.Lust(生成函数)