加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡水站长网 (https://www.0318zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

变革型AI、无代码与低代码

发布时间:2021-02-13 11:23:03 所属栏目:动态 来源:互联网
导读:oT和AI可以通过以下六种方式来遏制大流行: 智能可穿戴设备 许多工作场所正在使用可穿戴设备进行接触跟踪并监视医务人员和患者的健康。接触跟踪设备包括无源GPS位置跟踪、由蓝牙和超宽带连接供电的接近传感器、可充电电池和内置的长期演进(LTE)。 佩戴者可以

oT和AI可以通过以下六种方式来遏制大流行:

智能可穿戴设备

许多工作场所正在使用可穿戴设备进行接触跟踪并监视医务人员和患者的健康。接触跟踪设备包括无源GPS位置跟踪、由蓝牙和超宽带连接供电的接近传感器、可充电电池和内置的长期演进(LTE)。

佩戴者可以更新其健康状况,以指示是否存在任何潜在的或经过验证的感染,并且设备将根据位置历史记录来通知与他们接触过的人。组织中的集中式系统可以将此信息用于工作场所中的完整健康状况仪表板。

 

我相信你们都是直接滑下来看这里的,我在写这段代码的时候也非常痛苦,甚至有点厌烦 Java 原生的 NIO 编程。实际上我们在日常开发中很少直接用 NIO 进行编程,通常都会用 Netty,Mina 这种服务器框架,它们都是很好地 NIO 技术,对 Java 原生的 NIO 进行了上层的封装、优化,简化开发难度,但是在学习框架之前,我们需要了解它底层原生的技术,就像 Spring AOP 的动态代理,Spring IOC 容器的 Map 容器存储对象,Netty 底层的 NIO 基础······

总结

NIO 的三大板块基本上都介绍完了,我没有做过多详细的 API 介绍,我希望能够通过这篇文章让你们对以下内容有所认知

  • Java IO 体系的组成部分:BIO 和 NIO
  • BIO 的基本组成部分:字节流,字符流,转换流和处理流
  • NIO 的三大重要模块:缓冲区(Buffer),通道(Channel),选择器(Selector)以及它们的作用
  • NIO 与 BIO 两者的对比:同步/非同步、阻塞/非阻塞,在文件 IO 和 网络 IO 中,使用 NIO 相对于使用 BIO 有什么优势

下图可以看见,在客户端给服务器端发送信息,服务器接收到消息后,可以将该条消息分发给其它客户端,就可以实现一个简单的群聊系统,我们还可以给这些客户端贴上标签例如用户姓名,聊天等级······,就可以标识每个客户端啦。在这里由于篇幅原因,我没有写出所有功能,因为使用原生的 NIO 实在是不太便捷。


在 Java NIO 中,选择器是使用 Selector 类表示,Selector 可以接收各种 IO 连接,在 IO 状态准备就绪时,会通知该通道注册的 Selector,Selector 在下一次轮询时会发现该 IO 连接就绪,进而处理该连接。

Selector 选择器主要用于网络 IO当中,在这里我会将传统的 BIO Socket 编程和使用 NIO 后的 Socket 编程作对比,分析 NIO 为何更受欢迎。首先先来了解 Selector 的基本结构。

重要方法方法解析open()打开一个 Selector 选择器int select()阻塞地等待就绪的通道int select(long timeout)最多阻塞 timeout 毫秒,如果是 0 则一直阻塞等待,如果是 1 则代表最多阻塞 1 毫秒int selectNow()非阻塞地轮询就绪的通道

在这里,你会看到 select() 和它的重载方法是会阻塞的,如果用户进程轮询时发现没有就绪的通道,操作系统有两种做法:

  • 一直等待直到一个就绪的通道,再返回给用户进程
  • 立即返回一个错误状态码给用户进程,让用户进程继续运行,不会阻塞

这两种方法对应了同步阻塞 IO 和 同步非阻塞 IO ,这里读者的一点小的观点,请各位大神批判阅读

  • Java 中的 NIO 不能真正意义上称为 Non-Blocking IO,我们通过 API 的调用可以发现,select() 方法还是会存在阻塞的现象,根据传入的参数不同,操作系统的行为也会有所不同,不同之处就是阻塞还是非阻塞,所以我更倾向于把 NIO 称为 New IO,因为它不仅提供了 Non-Blocking IO,而且保留原有的 Blocking IO 的功能。

了解了选择器之后,它的作用就是:监听多个 IO 通道,当有通道就绪时选择器会轮询发现该通道,并做相应的处理。那么 IO 状态分为很多种,我们如何去识别就绪的通道是处于哪种状态呢?在 Java 中提供了选择键(SelectionKey)。

选择键(SelectionKey)

在 Java 中提供了 4 种选择键:

  • SelectionKey.OP_READ:套接字通道准备好进行读操作
  • SelectionKey.OP_WRITE:套接字通道准备好进行写操作
  • SelectionKey.OP_ACCEPT:服务器套接字通道接受其它通道
  • SelectionKey.OP_CONNECT:套接字通道准备完成连接

在 SelectionKey 中包含了许多属性

  • channel:该选择键绑定的通道
  • selector:轮询到该选择键的选择器
  • readyOps:当前就绪选择键的值
  • interesOps:该选择器对该通道感兴趣的所有选择键

选择键的作用是:在选择器轮询到有就绪通道时,会返回这些通道的就绪选择键(SelectionKey),通过选择键可以获取到通道进行操作。

简单了解了选择器后,我们可以结合缓冲区、通道和选择器来完成一个简易的聊天室应用。

示例:简易的客户端服务器通信

  • 先说明,这里的代码非常的臭和长,不推荐细看,直接看注释附近的代码即可。

我们在服务器端会开辟两个线程

  • Thread1:专门监听客户端的连接,并把通道注册到客户端选择器上
  • Thread2:专门监听客户端的其它 IO 状态(读状态),当客户端的 IO 状态就绪时,该选择器会轮询发现,并作相应处理



(编辑:衡水站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读