KVSTORE_Pain point_tuchuang_ROS2
strdup() 会在堆上分配新内存来复制字符串





面试官:在主从同步中遇到过什么印象深刻的问题?
候选人:印象最深的是僵尸连接问题。从节点异常断开后,主节点还保留着dead socket,导致文件描述符泄漏。通过lsof发现大量CLOSE_WAIT状态连接后,我用getsockopt实现了健康检查机制,在每次广播前检测连接状态,死连接立即清理,解决了资源泄漏问题。
智能指针的使用:


1. 复杂的对象生命周期
一个TCP连接涉及多个对象:Connection、Session、Request、Response等,它们的生命周期相互交织。
问题本质:在异步编程中,你的主线程创建了一个对象来处理请求,然后把这个任务扔给工作线程。在工作线程开始处理时,主线程中的那个原始对象可能已经被销毁了。
IMS系统项目:多存储文件系统
配置文件("fastdfs")
→ main.cc(初始化)
→http_handler(解析multipart) //连接存储 connect-》“/etc/fdfs/client/conf”
→file_upload_context(状态管理) ==》委托给存储后端
→storage_factory(创建FastDFs实例)
→fastdfs_backend(调用C API存储)
→返回文件URL
→存储元数据到MySQL
→返回结果给客户端
配置文件("MinIO")
→ main.cc(初始化,读取配置)
→ http_handler(文件上传解析multipart)
→file_upload_context(状态管理,委托给存储后端)
→storage_factory(工厂动态创建后端MinIO实例)
→MinIO后端初始化
→MinIO连接建立.connect() //解析配置项
→调用后端minIO的API(uploadBlock),文件上传数据块处理
→完成上传到MinIO 调用finishupload
→生成访问url和文件消息
→元数据存储到数据库,资源清理
配置文件("cos")
→ main.cc(初始化,读取配置)
→ http_handler(文件上传解析multipart)
→file_upload_context(状态管理,委托给存储后端)
→storage_factory(工厂动态创建后端cos实例)
→cos后端初始化
→cos连接建立.connect() //解析配置项
→generateobjectkey()生成对象键
→调用后端cos的API(uploadBlock),文件上传数据块处理
→完成上传到cos 调用finishupload
→生成访问url和文件消息
→元数据存储到数据库
