集度面经
一面:
自我介绍+项目
八股
tcp和udp的区别,tcp的粘包如何解决
区别
- 连接性和可靠性
tcp面向连接,确保数据的可靠传输,提供错误检测、重传机制和流量控制,确保数据的顺序和完整性。
udp面向无连接,不保证数据的可靠传输。不提供错误检测、重传机制和流量控制。传输速度快但是不保证数据的顺序和完整性 - 通信方式
tcp采用全双工通信,允许双方在通信中同时发送和接收数据。
udp可以是单工或双工通信。 - 头部开销
tcp头部开销较大,udp较小。 - 流量控制和拥塞控制
tcp提供,以避免网络拥塞和丢包。
udp不提供,由程序处理。
粘包现象
概念:发送多个小数据包时,接收方可能一次性接收到多个数据包。
原因:1. 发送方连续发送小数据包,可能会被合并成一个大的tcp段。2. 网络拥塞和优化算法,可能会使多个数据包被合并到一起以提高网络效率。
解决方法:
- 消息界定符
- 固定消息长度
- 头部指定长度信息
- 使用应用层协议按规定的数据格式来处理数据
linux下动态库如何调用,环境变量名称叫什么
环境变量名称:LD_LIBRARY_PATH
设置方法:export LD_LIBRARY_PATH=/path/to/directory_containing_shared_libraries:$LD_LIBRARY_PATH
例子:
-
mylibrary.h头文件
#ifndef MYLIBRARY_H
#define MYLIBRARY_Hvoid hello_world();
#endif // MYLIBRARY_H
-
mylibrary.c实现文件
#include <stdio.h>
#include “mylibrary.h”void hello_world() {
printf(“Hello, world!\n”);
} -
编译动态库
gcc -shared -o libmylibrary.so -fPIC mylibrary.c
-
编译主程序
#include “mylibrary.h”
int main() {
hello_world();
return 0;
}gcc -o main main.c -L/path/to/directory_containing_shared_libraries -lmylibrary
如何创建线程,api是什么
智能指针
进程间的通信方式
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 jhhuangのblog!