1. 什么是阻塞?什么是非阻塞?
阻塞:
当某个事件或者任务在执行过程中,它发出一个请求操作,但是由于该请求操作需要的条件不满足,那么就会一直在那等待,直至条件满足;
非阻塞:
当某个事件或者任务在执行过程中,它发出一个请求操作,如果该请求操作需要的条件不满足,会立即返回一个标志信息告知条件不满足,不会一直在那等待。
2. 同步IO是什么?异步IO是什么?
同步IO:
当用户发出IO请求操作之后,如果数据没有就绪,需要通过用户线程或者内核不断地去轮询数据是否就绪,当数据就绪时,再将数据从内核拷贝到用户线程。
异步IO:
只有IO请求操作的发出是由用户线程来进行的,IO操作的两个阶段都是由内核自动完成,然后发送通知告知用户线程IO操作已经完成。也就是说在异步IO中,不会对用户线程产生任何阻塞。
3. Java NIO 中的Buffer是什么?
缓冲区(Buffer)
缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区。
4. TCP和UDP的区别?
tcp:传输控制协议,提供的是面向连接、可靠的字节流服务
- 面向连接
- 点到点的通信;
- 高可靠性;
- 占用系统资源多、效率低;
udp:用户数据报协议,是一个简单的面向数据报的运输层协议。
- 速度快
- 操作简单
- 要求系统资源较少
5. Socket是什么?
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
6. 什么是HttpClient
提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持HTTP 协议最新的版本和建议。ommons-httpclient项目:来简化HTTP客户端与服务器进行各种通讯编程。
7. 说一下http协议?HTTP协议特点?
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写
HTTP是一个基于TCP/IP通信协议来传递数据
http协议特点:
- http协议是无状态的
- 采用TCP作为运输层协议,但http协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)
- http连接方式:持久连接(keep-alive),非持久连接(close)
8. 常见http状态码
200 —请求资源成功
301 —资源(网页等)被永久转移到其它URL
404 —请求的资源(网页等)不存在
405 —请求方式错误
500 —内部服务器错误
9. 什么是端口?
端口是TCP/IP协议簇中,应用层进程与传输层协议实体间的通信接口。端口是操作系统可分配的一种资源;应用程序通过系统调用与某端口绑定后,传输层传给改端口的数据都被相应进程接收,相应进程发给传输层的数据都通过端口输出。
10. 什么是URI、URL、URN
- URI: Uniform Resource Identifier 统一资源标志符
- URL: Uniform Resource Locator 统一资源定位符
- URN: Uniform Resource Name 统一资源名称
URL和URN都是URI的子集
URL唯一地标识一个资源在Internet上的位置。
URN它命名资源但不指定如何定位资源 比如:只告诉你一个人的姓名,不告诉你这个人在哪