一面:

自我介绍+项目

八股

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
例子:

  1. mylibrary.h头文件

    #ifndef MYLIBRARY_H
    #define MYLIBRARY_H

    void hello_world();

    #endif // MYLIBRARY_H

  2. mylibrary.c实现文件

    #include <stdio.h>
    #include “mylibrary.h”

    void hello_world() {
    printf(“Hello, world!\n”);
    }

  3. 编译动态库

    gcc -shared -o libmylibrary.so -fPIC mylibrary.c

  4. 编译主程序

    #include “mylibrary.h”

    int main() {
    hello_world();
    return 0;
    }

    gcc -o main main.c -L/path/to/directory_containing_shared_libraries -lmylibrary

如何创建线程,api是什么

智能指针

进程间的通信方式