字节一面:
hashmap了解吗
hashmap线程不安全,怎么实现安全线程
hashmap了解吗
hashmap线程不安全,怎么实现安全线程
接口和抽象类的不同:
用途不同:行为规范:接口;通用功能:抽象
语法不同:抽象类:可以有非抽象方法;一个类只能继承一个直接父类;除了final其他的可以修饰
接口:只有非抽象方法;一个类可以实现多个接口;接口中属性的默认是public static final 、方法是public abstract
快速排序、堆排序
synchronized volatile threadlocal关键字
左右链接
隔离级别
tcp和ucp区别:
synchronized volatile threadlocal关键字
左右链接
隔离级别
tcp和ucp区别:
区别:udp是无连接的协议、远程主机收到报文后不需要确认;传输形式是数据报文段;udp不提供可靠的传输,但是比较高效
tcp是面向连接的协议、传输数据需要建立连接完后需要时放链接;传输形式是字节流;提供的是可靠的传输,因为在传输数据前首先要三次握手,数据传输时,会有校验和、数据合理分片和排序、确认、重传、流量控制和拥塞控制机制来保证可靠传输。
1.三次握手:
客服端A 服务器B
第一次握手:A向B发送一段请求链接报文:标识位SYN=1(表示请求连接),seq=x(随机产生的字节流序列号),A进入SYN—SENT状态
第二次握手:B收到请问报文后,通过SYN=1得知这个是连接请求,将标识位SYN=1 ACK=1(表示确认号有效),seq=y,ack=x+1;B进去SYN-RCVD状态
第三次握手:A收到报文后,检查ACK=?1和ack=?x+1,如果正确的话,将标识为ACK=1,seq=x+1,ack=y+1;A进入establish状态
为什么三次握手不是二次:如果A的某一个请求报文没有丢失在某个节点逗留很久,导致连接已经释放了才发送到B,B收到请求后误以为是A发的新的连接请求,于是B向A发确认报文,同意建立连接。
如果没有第三次握手,只要B发送同意新的连接就建立了,但是A其实没有发新的连接,所以不理睬B的确认,也不发送数据给B,但是B却认为连接建立了。一直在等待A发送数据,造成资源浪费。在三次握手的情况下,A在第三次时不会给B发确认,连接就不会建立。
2.四次挥手:
第一次挥手:A向B发送链接释放报文:FIN=1,seq=u;A进入FIN-WAIT-1状态
第二次挥手:B接收到连接释放报文后,发出确认:ACK=1,ack=u+1,seq=v;B进入CLOSE-WAIT状态
A收到之后,进入FIN-WAIT-2状态,等待B发送释放链接报文,这个阶段A还要接受B发送的数据
第三次挥手:B将数据发完之后,向A发送释放报文:FIN=1,ACK=1,ack=u+1,seq=w;B进入LAST—ACK状态
第四次挥手:A收到B的释放请求后,发出确认:ACK=1,ack=w+1,seq=u+1;A进入CLOSE
全部评论
(0) 回帖