2022/9/2
剑指Offer - 用两个栈实现队列
class CQueue {
private Stack<Integer> in;
private Stack<Integer> out;
public CQueue() {
in = new Stack<>();
out = new Stack<>();
}
// 进队只需简单push进in
public void appendTail(int value) {
in.push(value);
}
// 出队需要先把in里的元素pop出来,再push进out中,则out的头部元素就是我们需要出队的元素
public int deleteHead() {
if (!out.empty()) {
return out.pop();
}
if (out.empty() && !in.empty()) {
while(!in.empty()) {
out.push(in.pop());
}
return out.pop();
}
return -1;
}
}
计算机网络
TCP三次握手
sequenceDiagram
Client->>Server: SYN=1, seq=J
Server-->>Client: SYN=1,ACK=1,ack=J+1,seq=K
Client-)Server: ACK=1,ack=K+1
- client: SYN=1,seq=J --> SYN_SENT
- server: ACK=1,SYN=1,seq=K,ack=J+1 --> SYN_RCVD
- client: ACK=1,ack=K+1 --> ESTABLISHED server: --> ESTABLISHED
比特填充技术
发生在数据链路层,当payload里连续出现5个1时,自动在后面填充0.
集线器
集线器的英文称为“Hub”。“Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。 Hub只是一个多端口的信号放大设备,工作中当一个端口接收到数据信号时,由于信号在从源端口到Hub的传输过程中已有了衰减,所以Hub便将该信号进行整形放大,使被衰减的信号再生(恢复)到发送时的状态,紧接着转发到其他所有处于工作状态的端口上。从Hub的工作方式可以看出,它在网络中只起到信号放大和重发作用,其目的是扩大网络的传输范围,而不具备信号的定向传送能力,是—个标准的共享式设备。因此有人称集线器为“傻Hub”或“哑Hub”。
属于物理层。
交换机和路由器
交换机用在局域网中,交换机通过纪录局域网内各节点机器的MAC地质(物理地址)就可以实现传递报文,无需看报文中的IP地质。路由器识别不同网络的方法是通过识别不同网络的网络ID号(IP地址的高端部分)进行的,所以为了保证路由成功,每个网络都必须有一个唯一的网络编号。路由器通过察看报文中IP地址,来决定路径,向那个子网(下一跳)路由,也就是说交换机工作在数据链路层看MAC地址,路由器工作在网际层看IP地址 但是由于现在网络设备的发展,很多设备既有交换机的功能有由路由器的功能(交换试路由器)使得两者界限越来越模糊。
交换机最大的好处是快速,路由器最大的好处是控制能力强。