KVSTORE_Pain point_tuchuang_ROS2

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


面试官:在主从同步中遇到过什么印象深刻的问题?

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

智能指针的使用:


问题本质 :在异步编程中,你的主线程 创建了一个对象来处理请求,然后把这个任务扔给工作线程 。在工作线程开始处理时,主线程中的那个原始对象可能已经被销毁了

工厂只负责"制造",调用方负责"使用和销毁"

unique_ptr 就是这个"交接仪式"的契约:工厂交出去就说"归你了",调用方拿到就说"我负责"。

逻辑关系:


1. 复杂的对象生命周期

一个TCP连接涉及多个对象:ConnectionSessionRequestResponse等,它们的生命周期相互交织。

问题本质 :在异步编程中,你的主线程 创建了一个对象来处理请求,然后把这个任务扔给工作线程 。在工作线程开始处理时,主线程中的那个原始对象可能已经被销毁了


三个主人共享访问同一个物理对象,一个修改,大家立即看到变化,所有人放弃,对象才被销毁

因为文件上传上下文的特性:

  • 每个上传应该是独立的

  • 上传状态、进度、错误处理都是独立的

  • 一个上传失败不应该影响其他上传

  • 上传完成就应该立即释放资源

如果用共享模式

  • 多个上传会互相干扰

  • 一个上传出错可能导致所有上传失败

  • 资源不能及时释放

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和文件消息

→元数据存储到数据库

ROS2:bug

这是一个基于Gazebo仿真的TurtleBot3机器人智能控制系统。系统包含三个主要模块:键盘交互处理、机器人安全控制和传感器数据处理,在仿真环境中完成了从用户输入到智能执行的完整闭环。

  • 上层-交互层:键盘控制,处理用户输入和模式切换

  • 中层-决策层:机器人控制,综合传感器数据做安全决策

  • 下层-感知层 :传感器处理,分析激光数据感知环境

面向面试官的表述

"我遇到过一个机器人失控打转的问题,根本原因是沿墙算法没有处理'看不到墙壁'的边界情况。通过系统化的日志分析和PID控制理论,我发现是积分项累积导致的控制发散。解决方案包括边界情况处理、积分限制和多层次安全保护,这个经历让我深刻理解了鲁棒控制的重要性。




分享文件:解析url请求--》解析cmd参数--》生成文件分享标识url md5,时间--》插入数据库-》返回json格式

浏览分享图片:解析url请求--》解析cmd参数--》查询分享记录--》查询文件实际url--》更新访问计数+1---》json格式响应

获取共享文件总数:解析url请求--》解析cmd参数--》查询共享文件总数-》返回json格式

获取共享文件列表:解析url请求--》解析cmd参数--》获取文件总数-》分页查询---》返回json格式

取消文件分享:解析url请求--》解析cmd参数--》更新用户文件共享状态为0--》删除分享记录--》从redis有序删除文件--》redis哈希表删除文件名的映射--》json格式响应

转存文件:解析url请求--》解析cmd参数--》检查文件是否存在--》查询文件的引用计数--》更新文件的引用计数--》插入记录到用户文件列表

更新文件下载计数:解析url请求--》解析cmd参数--》查询共享文件的当前pv值--》更新MYSQL中的pv值----》检查redis是否有该文件--》不存在从MYSQL导入,设置+1

相关推荐
济南壹软网络科技有限公司2 分钟前
企业级盲盒系统:Java高并发架构在多元化抽奖电商中的设计与实践
java·架构·开源源码·盲盒源码·盲盒h5·盲盒app
廋到被风吹走6 分钟前
【Java】常用设计模式及应用场景详解
java·开发语言·设计模式
一条可有可无的咸鱼13 分钟前
企业招聘信息,企业资讯进行公示
java·vue.js·spring boot·uni-app
Sammyyyyy14 分钟前
DeepSeek v3.2 正式发布,对标 GPT-5
开发语言·人工智能·gpt·算法·servbay
Luna-player23 分钟前
在前端中,<a> 标签的 href=“javascript:;“ 这个是什么意思
开发语言·前端·javascript
小草cys37 分钟前
项目7-七彩天气app任务7.4.2“关于”弹窗
开发语言·前端·javascript
程序猿DD40 分钟前
JUnit 5 中的 @ClassTemplate 实战指南
java·后端
小鸡吃米…1 小时前
Python PyQt6教程三-菜单与工具栏
开发语言·python
爱吃山竹的大肚肚1 小时前
EasyPOI 大数据导出
java·linux·windows
aini_lovee1 小时前
寻找 MAC 协议的 MATLAB 仿真
开发语言·macos·matlab