携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
@TOC
前言
计算机网络面试知识点。
一、SSH是什么?
SSH 加密是一个使用数学算法对数据进行编码的过程。然后,编码数据的发送者和接收者可以使用密钥来解码数据。 此过程有助于确保数据保持机密并且在传输过程中不被篡改。SSH 还提供身份验证,这有助于防止未经授权访问系统和数据。
SSH 加密主要有两种类型:公钥加密和对称密钥加密。公钥加密使用两种不同的密钥,一种用于编码,一种用于解码。 密钥通常由第三方提供商生成,并在发送方和接收方之间共享。对称密钥加密使用相同的密钥进行编码和解码。这意味着发送方必须先将密钥发送给接收方,然后才能对任何数据进行加密或解密。
二、TCP粘包?如何解决?
TCP粘包是指发送方发送的若干数据包到达接收方时粘成一个数据包,从接收缓存看,后一个数据包的头紧接着前一个数据包的尾。
TCP拆包是指应用程序的数据包被拆分成若干部分发送出去,从接收缓存看,接收方收到的只是数据包的一部分内容。
由此可见,粘包情况有两种,一种是粘在一起的包都是完整的数据包,另一种情况是粘在一起的包有不完整的数据包。
怎么解决粘包问题? 1.利用tcp每次发送数据,就与对方建立连接,然后双方发送完一段数据后,就关闭连接,这样就不会出现粘包问题(因为只有一种包结构,类似于http协议)。 2.一般可能会在头加一个数据长度之类的包,以确保接收。
三、网络中MTU的概念和作用?
MTU是最大传输单元,用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。 MTU是包或帧的最大长度,一般以字节为单位,如果过大在碰到路由器时会被拒绝转发,如果太小,因为协议一定要在包上加上包头,那实际传送的数据量就会过小。 @TOC
前言
操作系统面试知识点。
一、CAS无锁队列实现的原理
先了解一下CAS无锁队列的概念。CAS的意思是Compare And Swap,从字面意思上面也可以知道实际就是对数据进行交换的一种原子操作。对应到CPU指令的话就是cmpxchg。
无锁队列的内部实现实际也是原子操作,可以避免多线程调用出现的不可预知的情况。主要的核心就是函数__sync_bool_compare_and_swap,返回值为bool型,原子交换操作成功返回true,失败返回false。
【注】原子操作:原子操作通俗的将就是一段指令的执行期间不会被其他的进程或者线程打断,可以保证执行的一致性。
二、时间片轮转算法的原理
在早期的时间片轮转法中,系统将所有的就绪进程按先来先服务的原则,排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片.时间片的大小从几ms到几百ms. 当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾; 然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片. 这样就可以保证就绪队列中的所有进程,在一给定的时间内,均能获得一时间片的处理机执行时间.