1、网络层的解析与协议
URL解析:
域名的层级:
DNS递归查询,获取服务器ip:
DNS迭代查询,获取服务器ip:
根域名服务器有限且相对固定,所以各大运营商都会内置根域名的地址,因此不需要单独查询根域名地址。
分层及协议:
2、java IO
基本字符流、复杂字符流:
基本字节流、复杂字节流:
java.io中的设计模式
- 装饰器模式:BufferedInputStream 构造需要传入一个InputStream的实现类,比如传入FileInputStream类,既在FileInputStream的现有功能上,扩展了缓冲区。
3.同步/异步,阻塞/非阻塞
同步与异步关注的是消息通信机制,所谓同步,就是由“调用者”主动等待这个“调用”的结果。
异步则相反:“调用”在发出之后,这个调用就直接返回了,所以没有返回结果。换句话说,当一个异步过程调用发出后,调用者不会立即得到结果。而是在“发出后”,“被调用者“通过状态,来通知调用者,或通过回调函数处理这个调用。
举例:男生给女生表白,如果是同步通信机制,女生会思考一下,然后会给出思考的结果,就是是否接受;而异步通信机制,女生会说,等我考虑几天,考虑好了我会给你发短信告诉你。
阻塞和非阻塞是进程在访问数据的时候,数据是否准备就绪的一种处理方式,阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态。
阻塞:当数据没有准备的时候阻塞,往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否則一直等待在那里。
非阻塞:当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经准备好,也直接返回。
阻塞调用:是指调用结果返回之前,当前线程被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用:是指在不能立即得到结果之前,该调用不会阻塞当前线程。
还是上面的例子,如果是阻塞调用,则表白过后,男生什么事也不做,就等着女生的返回结果;如果是非阻塞调用,则你完全不受是否收到回复,一直在做自己的事情。可见阻塞非阻塞是针对调用者(也就是此处表白的男生)来说的。