setstate是同步还是异步_谈谈 IO模型:同步、异步、阻塞、非阻塞

同步/异步、阻塞/非阻塞 说的是一回事儿吗?

同步/异步、阻塞/非阻塞 你能通俗易懂的讲清楚吗?

Java 中的 BIO、NIO、AIO 你了解吗?

Socket 编程你还会吗?

Linux 操作系统的 IO 模型你能讲讲吗?

01. 生活中的同步/异步、阻塞/非阻塞


70e5b441e67836a3a10b2d8e7da11bd7.png

程序猿有了孩子之后,从原来的劈柴喂马周游世界,就变成了撸码喂娃家里蹲蹲。

说起喂娃,不得不提小猿给孩子热奶的事情。给孩子喂奶,有些时候喝着喝着就凉了,要时不时给孩子热一热。

9fe96d0b114feb0044a363713e61dc08.png

起初,由于带娃没有经验,小猿直接把奶瓶放进一个自制的温奶器(盛满开水的大碗里),然后一直摸着奶瓶来确定是否热好了。

1. 对于温奶器来说,它是「同步」的;

2. 由于热奶的时候,小猿其它的什么事儿都干不了,小猿被温奶器「阻塞」;

3. 这种场景称之为「同步阻塞」。

不过,在小猿热奶时,孩子嗷嗷待哺,小猿也开始涨姿势啦,热奶的空档开始去抚慰孩子饥饿的心灵,时不时的去摸一下奶瓶有没有热好。

1. 对于温奶器来说,它是「同步」的;

2. 由于小猿在热奶的空档,可以抚慰孩子饥饿的心灵,小猿被温奶器「非阻塞」;

3. 这种场景称之为「同步非阻塞」。

不过自制的温奶器确实不太智能,尤其是当老人一人在家带娃的时候,于是寻找智囊团寻求高招。

598ba6c39b099c5f30e6b9f436bd5ad7.png

这不,在邻居萝卜妈妈的建议下,购置了一款既能控制温度,又能响铃提醒的智能温奶器。小猿把奶瓶放进去,设置好温度,奶热好后会自动响铃提醒,但是小猿还是习惯性的直勾勾的盯着温奶器,你说小猿是不是有点犯傻。

1. 对于温奶器来说,奶温好后会通知小猿,它是「异步」的;

2. 小猿还是被温奶器「阻塞」;

3. 这种场景称之为「异步阻塞」。

不过,小猿在怎么犯傻充楞,也抵不住孩子因饥饿而哇哇的哭声。于是小猿在智能温奶器温奶的空档,便开始跟孩子做小游戏、读读小猪佩奇,当听到智能温奶器的响铃提醒时,再去拿温好的奶喂孩子。

1. 对于温奶器来说,奶温好后会通知小猿,它是「异步」的;

2. 由于小猿在热奶的空档,可以陪孩子做游戏、读小猪佩奇,小猿被温奶器「非阻塞」;

3. 这种场景称之为「异步非阻塞」。

我们把小猿视作调用者,把温奶器视作被调用者,进行简单归档一下。

同步、异步说的是温奶器(被调用者)。同步指的是被调用者做完事情之后再返回的机制;异步指的是被调用者先返回,然后再做事情,做完之后再通知调用者的机制。

阻塞、非阻塞说的是小猿(调用者)。阻塞指的是调用者在等待消息时,其它什么都不做;非阻塞指的是调用者在等待消息时,去干了别的事情。

02. 业务研发中的同步、异步


7f5db53a7ae503d3bb85d904b42f63a9.png

不可缺失的注册场景。在注册环节,要进行姓名、证件号码的二要素实名认证,要等待实名认证 API 的响应结果,才能进行后续的注册环节,所以此种业务场景可以认为是同步设计。

3d7d10b5a5eeba15d07e4ae4840138c1.png

如果做过支付相关的业务时,充值、提现等等很多涉及到 Money 的业务场景,API 调用时一般会返回处理中,那么调用者可以去做别的事情,可以依赖于相应的查询接口进行轮询;不过被调用者在业务处理完成后,一般也会再通知调用者处理之后的结果。此种业务场景的设计,可以认为是异步设计。

简单归纳一下,纯属一家之言,不喜也请喷。

同步设计,Moudle1 调用 Moudle2,Moudle2 的处理是同步的,在处理完之前不会告诉 Moudle1,只有处理完之后才会告诉 Moudle1。

异步设计,Moudle1 调用 Moudle2,Moudle2 的处理是异步的,Moudle2 在接到请求后,先告诉 Moudle1 已经接到请求,然后异步去处理,处理完再通过通知的方式通知 Moudle1。

03. Java 中的 IO(BIO、NIO、AIO)


IO 顾名思义就是 input(输入),output(输出)。

在业务研发中,只要定义好输入输出,其它一切只是时间问题 —— 个人愚论。

在 Java 中 IO 模型有三种,分别是 BIO(同步阻塞 IO)、NIO(同步非阻塞 IO)、AIO(异步非阻塞 IO)。

聪明的你肯定会发现,在 Java 中的确是不存在,像小猿那种傻傻盯着智能温奶器,其它啥事儿也不干的异步阻塞的傻模型。

7becf07b17a172063057a358db3cbed5.png

那么,Java 中的 BIO、NIO、AIO 说的是什么呢?先画个脑图给大家,下期我们将结合代码进行讲解。

更多精彩,咱们且听下次分解。

以上属于一家之言,如果你若喜欢,欢迎转发或在看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tp获取referer里的域名_thinkPHP的redirect跳转和referer使用的问题

如果从Topic/topic页面跳转到Login/login页面 使用$_SERVER[HTTP_REFERER]后再login页面出来的地址是这样的http://localhost/a/jz/index.php/Home/topic/topic,这个地址没错,为什么我使用redirect跳转后地址栏上的地址就变成了这样http://localhost/a/j…

软件测试要求太高,软件“故障门”频现 对软件测试提出更高要求

随着信息化时代的到来,各行各业已离不开各类应用软件,可是频频爆出的软件“故障门”却成为企业发展的“拦路虎”。为了解决“故障门”,众多IT企业不得不加大软件测试领域的投入,有的试图培养高水平的测试团队,有的则希…

md5会重复吗_如何优雅地处理重复请求(并发请求)

点击上方“服务端思维”,选择“设为星标”回复”669“获取独家整理的精选资料集回复”加群“加入全国服务端高端社群「后端圈」利用唯一请求编号去重你可能会想到的是,只要请求有唯一的请求编号,那么就能借用Redis做这个去重——只要这个唯一…

初学者选黑卡还是微单_3500以内的微单相机好用吗?值得初学者入手吗?

2000--3000元的相机还是有一定使用价值的,如果你是拿来学习摄影,这些相机还是足够用的。我们按照京东自营的价格,来搜一下3500块钱以内的微单无反相机,看看有哪些值得入手的。索尼ILCE6000套机今年最低价3198佳能EOS M6一代套机今…

计算机二级excel数据有效性,原来Excel数据有效性还可以这样做——制作二级下拉菜单...

很多时候,在进行设置数据有效性时,我们希望可以根据前一单元格的内容,使用动态的数据选项。如下图为一个员工信息表,现希望在F列制作下拉列表,下拉列表的内容根据E列输入的省份变化而变化,如在E2单元格中输…

python 模块 包 库_模块(包、库)

模块的基本概念:模块是程序,它就是一个扩展名为.py的python程序。因此对于一个.py的python文件而言,既可以把它当作程序来执行,也可以将它作为模块引入。导入一个模块时,python解释器会先自动在当前路径下搜索要导入的…

计算机网络课设题目java_java课程设计参考题目

参考题目选题原则:所完成的系统应能够在生活、学习中使用,以实用性为主。模仿生活、学习中使用到的各种软件,做mini版本。开发的目标是自己、同学愿意使用你所开发的软件完成一些简单任务。从小功能着手,一点点的添加功能。添加一…

win7系统安装信息服务器不可用怎么办,Win7系统下iis服务器应用程序不可用怎么办?...

Win7系统用户在使用电脑系统时都有自带可以方便用户们搭建网站的iis服务器。不过也有Win7系统用户反映在电脑系统里添加或删除组件时iis服务器无法添加,还弹跳出了应用程序不可用的提示窗口,这使用户非常苦恼,那么Win7系统下iis服务器应用程序…

python协同过滤电影推荐_基于协同过滤的电影推荐系统的设计与实现

龙源期刊网http://www.qikan.com.cn基于协同过滤的电影推荐系统的设计与实现作者:张玉叶

++ 多核cpu 并行_一文读懂什么是多核并行计算(三)

导读:面向应用工程师的商业软件咨询、自研软件定制开发服务的仿真公众号,点击关注进入菜单,查看更多精彩内容。(三)如何实现多核并行计算呢?了解了多核、多Machine、多Rack后,我可以看一下软件(程序)是如何对这些资源进…

诺禾致源css客户端,诺禾,诺禾致源:CSS 基础教学

伦多星报 2020-07-06 17:14:58Applying CSS and JavaScript to HTML当今您将使用的几乎所有网站都将使用CSS使它们看起来很酷,并使用JavaScript来支持交互式功能,例如视频播放器,地图,游戏等. 这些最常分别使用元素和元素应用于网…

python 文档操作_Python 文件操作

一. Python 读写 创建文件Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 shutil 模块 .一) . OS模块 的基本操作方法功能os.getcwd()得到当前工作目录,及当前Python脚本工作的目录路径os.listdir()返回指定目录下的所有文件和目录名:os.remoce()函数用来删除一…

vc读取北通手柄按键_《噬血代码》手柄怎么操作 北通手柄按键功能详解

噬血代码手柄怎么操作?应该很多朋友都还不是很清楚吧,所以呢小编今天给大家带来的就是噬血代码北通手柄按键功能详解,需要的朋友不妨进来看看。北通手柄按键功能详解游戏介绍本作是由《噬神者》的开发团队带来的完全新作,是迷宫探…

服务器放行6in4协议,最简单的接入IPv6网络的方法 – 6in4隧道

很多大学的校园网启用了IPv6,并且建设了很多IPv6专享的资源。毕业离校,由于现在的网络运营商绝大部分尚未支持IPv6,所以那些资源也就离我们远去了。机缘巧合之下,我知道了,原来我们可以这样接入IPv6网络。目前接入IPv6…

python自动寻路模板_Python实现的简单模板引擎功能示例

本文实例讲述了Python实现的简单模板引擎功能。分享给大家供大家参考,具体如下:#coding:utf- 8__author__"sdm"__author_emailsdmzhu3gmail.com__date__ "$2009-8-25 21:04:13$" pytpl 类似 php的模板类 import sysimport StringIOi…

梦幻群侠传5帮派修炼_梦幻西游:2020年十大更新回顾 法连不秒空和连续战斗修复...

今年梦幻西游有过很多重大的维护更新,其中不少更新都对玩家产生中重大的影响,比如说法术连击第二下不会秒空气,以及副本的迭代等等,今天就来盘点下2020年梦幻西游的十大更新!一、各类副本优化迭代今年优化了多个副本,如…

jq ajax提交评论,织梦评论怎么改成自己的jq ajax评论

如何把织梦评论框改成自己的1、首先我们先获取织梦评论吧!这个比较简单,打开/plus/feedback_ajax.php文件,我们找到这第36行左右代码,看下面/*----------------------获得指定页的评论内容function getlist(){ }-----------------…

前端图片上坐标连线_前端图形学(十三)——弹跳运动的深入之傲娇的小球

欢迎来到【畅哥聊技术】前端图形学相关技术文章,更多精彩内容持续更新中,敬请关注。前面我们说到了小球的弹跳运动,通过一个方向的加速度和摩擦力去影响小球的动画,其目标点也是一个固定不变的,似乎有些单调。那么我们今天继续小球…

python通过内置函数测试对象类型_Python的内置函数

函数名功能描述示例abs()返回数字的绝对值abs(-45)divmod()把除数和余数运算结合起来,返回一个包含商和余数的元组divmod(7,2) 返回:(3,1)raw_input()获取控制台输入,将所有输入看作字符串,返回字符串类型araw_input("input&…

服务器微信了早上好,微信早晨好问候语句动态图片 早上好发给朋友的微信早安问候语简短...

原标题:微信早晨好问候语句动态图片 早上好发给朋友的微信早安问候语简短嘀嘀嘀嘀,我的短信到啦。用关心方式,要你多注意休息;用体贴方式,要你轻松而快乐;用祝福方式,要你一切都过的好&#xff…