同步阻塞式IO开发简单,但在处理IO密集的并发任务时,非常浪费CPU资源,性能低;并且,当一个进程(线程)含有多个套接字上时,同步阻塞式IO会带来问题:因为同步阻塞式IO只支持进程(线程)阻塞在一个套接字上,其余套接字上的事件将得不到及时处理。 为解决这些问题,IO编程的世界诞生了更多的IO模型及实 ...
分类:
其他好文 时间:
2018-05-11 23:39:28
阅读次数:
177
前言 SOFARPC 提供了多种调用方式满足不同的场景。 例如,同步阻塞调用;异步 future 调用,Callback 回调调用,Oneway 调用。 每种调用模式都有对应的场景。类似于单进程中的调用模式。在单进程中,我们可以使用 JDK 的 Future 实现异步,可以通过观察者实现回调。 那么 ...
分类:
其他好文 时间:
2018-05-09 22:42:53
阅读次数:
721
什么是分布式事务? 简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上说,分布式事务就是为了保证不同数据库的数据一致性。 分布式事务产生的原因 服务化,随着服务化,出现各个微服务,以及这些服 ...
分类:
其他好文 时间:
2018-05-01 17:42:39
阅读次数:
136
初识setTimeout 与 setInterval 先来简单认识,后面我们试试用setTimeout 实现 setInterval 的功能 setTimeout 延迟一段时间执行一次 (Only one) 1 2 3 4 5 setTimeout(function, milliseconds, p ...
分类:
其他好文 时间:
2018-04-23 21:42:27
阅读次数:
493
同步阻塞,用户空间的应用程序执行一个系统调用,这意味着应用程序会一直阻塞,直到系统调用完成为止(数据传输完成或者发生错误)。 同步非阻塞,设备以非阻塞形式打开,这意味着 io 操作不会立刻完成,需要应用程序调用多次来等待完成。 同步和异步 1)同步:发出一个调用时,在没有得到结果前,该调用就不返回, ...
分类:
其他好文 时间:
2018-04-16 19:51:40
阅读次数:
162
BIO:同步阻塞式IO,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。 NIO:同步非阻塞式IO,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多 ...
分类:
其他好文 时间:
2018-04-13 14:33:59
阅读次数:
159
BIO(Blocking I/O)同步阻塞I/O 这是最基本与简单的I/O操作方式,其根本特性是做完一件事再去做另一件事,一件事一定要等前一件事做完,这很符合程序员传统的顺序来开发思想,因此BIO模型程序开发起来较为简单,易于把握。 但是BIO如果需要同时做很多事情(例如同时读很多文件,处理很多tc ...
分类:
其他好文 时间:
2018-04-09 21:52:37
阅读次数:
229
了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞 NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。 BIO 常见使用方式 传统的BIO是同步阻塞的方式,因此,在服务器中常见的使用方式是: 来一个请求创 ...
分类:
编程语言 时间:
2018-03-28 15:38:15
阅读次数:
299
本文总结自 https://zhuanlan.zhihu.com/p/34408883, https://www.zhihu.com/question/19732473中愚抄的回答, http://blog.51cto.com/stevex/1284437作者自身的评论 快速理解 首先,我们要先对这 ...
分类:
编程语言 时间:
2018-03-26 00:38:11
阅读次数:
185
如果要实现多个socket同时工作的话, 同步阻塞 + 多线程 同步非阻塞(ioctrlsocket):通俗讲,就是每个套接字都去内核看看收没收到消息,没收到再返回 I/O模型select: ①集合 fd_set ②清空集合 FD_ZERO ③将Socket放入集合内 FD_SET ④将集合交给se ...
分类:
其他好文 时间:
2018-03-20 18:05:54
阅读次数:
208