用Java写了一个客户端和服务器对话的小程序,用TCP/IP协议,程序运行之后,客户端和服务器端能连接上,可是彼此都收不到对方的消息,而且readLine()后面的代码也不执行了。。。
网上查了查,才知道,readLine()方法是阻塞的,如果在接收的数据中不含有'\n','\r'或者结束符时,往往导致进程挂起,从而程序无法继续。
所以在发送数据的时候,一定要加上换行符(\n)
readLi...
分类:
编程语言 时间:
2015-04-06 23:19:13
阅读次数:
321
1 什么是回调
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方(即调用客户...
分类:
其他好文 时间:
2015-04-06 15:44:49
阅读次数:
184
转自:http://www.oschina.net/translate/loading-css-without-blocking-render本文展示了一种技术,它能通过异步下载样式表,以阻止它们的下载阻塞页面的渲染,从而尽可能快的让访问者获取到信息内容。警告! 我发这篇帖子全是好意,但是它并不负责...
分类:
Web程序 时间:
2015-04-06 08:44:27
阅读次数:
232
Java NIO模式的Socket通信,是一种同步非阻塞IO设计模式,它为Reactor模式实现提供了基础。
下面看看,Java实现的一个服务端和客户端通信的例子。
NIO模式的基本原理描述如下:
服务端打开一个通道(ServerSocketChannel),并向通道中注册一个选择器(Selector),这个选择器是与一些感兴趣的操作的标识(SelectionKey,即通过这个标...
分类:
编程语言 时间:
2015-04-05 23:36:20
阅读次数:
302
jdk供的无阻塞I/O(NIO)有效解决了多线程服务器存在的线程开销问题,但在使用上略显得复杂一些。在NIO中使用多线程,主要目的已不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分使用用多个CPU的处理能力和处理中的等待时间,达到提高服务能力的目的。
这段时间在研究NIO,写篇博客来记住学过的东西。还是从最简单的Hello World开始,
client多线程请求...
分类:
编程语言 时间:
2015-04-05 23:34:41
阅读次数:
327
1,多线程下整个进程的退出>关于进程环境一章中指出了进程退出的8个条件:...(4)最后一个线程从启动例程中返回(5)最后一个线程调用pthread_exit()返回...这些条件一个前提是,主线程在等待子线程返回,若没有等待,则是主线程退出,整个进程直接退出了。其实主线程在等待子线程时,是阻塞到j...
分类:
编程语言 时间:
2015-04-05 18:42:44
阅读次数:
157
阻塞总数Blocked count is the total number of times that the thread blocked to enter or reenter a monitor. I.e. the number of times a thread has been in th...
分类:
编程语言 时间:
2015-04-05 18:41:26
阅读次数:
2747
大二时看《Thinking in java》里NIO时这几个概念就很含混,现在大四快毕业了,看《tomcat权威指南》时又得遇到这些概念,这次决定弄懂它。 如果直接从网上扒它们的定义,那我写这个博客就啥意义都没有了,还不如写...
分类:
其他好文 时间:
2015-04-05 17:37:13
阅读次数:
130
使用ssh2实现shell自动化测试,实际工作中遇到非常多。各种语言都有相应的库可以使用。比如,c/c++语言可以使用libssh2;python可以使用paramkio库等。但这些库网上的帮助,都不是很全,都比较浅显。shell自动化,最基本的三个需求,一个是适合多重类型的操作系统;二是要能够支持交互式shell,比如使用sudo执行时,需要输入密码;三是读数据时要非阻塞的。...
分类:
编程语言 时间:
2015-04-05 17:29:26
阅读次数:
1247
管道读写规则:当没有数据可读时O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。当管道满的时候O_NONBLOCK disable: write调用阻塞,直到有进程读走...
分类:
其他好文 时间:
2015-04-05 01:07:34
阅读次数:
194