如果说当前这个资源没有准备就绪,在这个时候该线程就会有两种处理的方式,一种就是阻塞,一种就是非阻塞
- 阻塞: 该线程会一直持续等待这个资源处理完毕,直到它响应返回一个结果,这个时候我们的线程是一直阻塞的状态,不可以去做任何的事情
- 非阻塞: 该线程会直接返回一个结果,不会持续的等待这个资源处理完毕才去响应,它会去请求别的资源
同步和异步是指访问数据的一种机制
- BIO
- NIO
- AIO(相当于是NIO2.0,即在NIO的基础上引入异步的概念)
- 异步非阻塞IO: 理解下面的例子后我们就相当于在厕所外面干自己的事情,等到有人通知后才去上厕所.
- 理解异步阻塞IO(几乎是用不到的): 还是上厕所的例子,厕所坑全满了,我比较懒什么都不干一直等着,让每一个坑位的用户主动在释放坑位之后来通知我这个坑位可以用了,在有人通知我之后我才去上
- BIO: 发起请求——> 一直阻塞——>处理完成
- NIO: Selector主动轮询channel——> 处理请求——> 处理完成
- AIO: 发起请求---------> 通知回调
- BIO,NIO,AIO之间的区别是什么?
- 什么是同步阻塞BIO?
- 什么是同步非阻塞的NIO?
- 什么是异步非阻塞的AIO?
- Netty: 是一个提供了易于使用的API的客户端/服务端的框架
- 并发高: NIO(非阻塞IO)
- 快传输: 零拷贝
- 使用NIO所遇到的问题:
- 类库以及API使用起来相对比较复杂
- 必须具备很好的Java多线程的知识才可以很好的使用NIO里面的相关的API
- 使用Netty的优点:
- API使用起来简单
- 开发门槛也是非常的低
- 构建一对主从线程组
- 定义服务器启动类
- 为服务器设置channel
- 设置处理从线程池的助手类初始化器
- 监听启动和关闭服务器
每一个channel由多个handler共同组成管道(pipeline)
- var socket = new WebSocket("ws://[ip]:[port]")
- 生命周期:
- onopen():当我们的客户端和服务端建立连接的时候会触发
- onmessage():收到消息时会触发
- onerror():出现一些异常
- onclose():客户端和服务端连接关闭触发
- 主动方法: Socket.send() Socket.close()
- MUI
- H5 PLUS (H5+)
- HBuilder
- 启动tracker: sudo fdfs_trackerd /etc/fdfs/tracker.conf
- 重启tracker: sudo fdfs_trackerd /etc/fdfs/tracker.conf restart
- 启动storage: sudo fdfs_storaged /etc/fdfs/storage.conf
- 重启storage: sudo fdfs_storaged /etc/fdfs/storage.conf restart