intent_recognition:Google Research 基于传感器数据构建用户活动识别模型的完整流水线指南
intent_recognitionGoogle Research 基于传感器数据构建用户活动识别模型的完整流水线指南【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research本指南深入讲解intent_recognition目录提供的基于传感器如腕戴式加速度计的机器学习建模工具覆盖从传感器数据采集、MediaPipe 预处理、SequenceExample 转换到 TensorFlow 模型训练与推理评估的完整流水线。读完本文你将掌握该工具的端到端使用方式、各阶段命令行入口与配置文件的编写方法并能基于仓库源码理解 AnnotatedRecordingCollection 数据模型、MediaPipe 处理图模板与标签映射机制的工作原理。流水线总览从传感器数据到活动识别模型intent_recognition是一个创建基于传感器的 ML 模型用于推断用户活动的工具。使用该工具共包含五个阶段每一阶段都有独立可运行的二进制或 Notebook 支撑获取传感器数据将原始传感器数据收集并格式化为AnnotatedRecordingCollection处理Processing使用 MediaPipe 对数据进行滤波、重采样、加窗等预处理转换Conversion将处理后的数据转换为 TensorFlowSequenceExample写入 TFRecord训练Training使用 TensorFlow / Keras 训练活动分类模型推理与指标Inference Metrics用训练好的模型进行推理并评估指标。从仓库结构看这一流水线对应的代码分别位于 conversion/、processing/、sample_configs/ 与 training/ 四个子目录根目录还包含数据模型定义 annotated_recording_collection.proto 和 annotated_recording_collection_utils.cc 等公共工具。数据模型AnnotatedRecordingCollection 的核心概念整个流水线的输入与中间产物都是AnnotatedRecordingCollection简称 ARC其 proto 定义在 annotated_recording_collection.proto。理解这套层级模型是使用工具的前提RecordingCollection一条 trace一段时间内来自不同传感器加速度计、近距传感器、视频流、音频流等的全部记录数据SequenceRecordingCollection 中单一传感器的全部数据由Datapoint或Window加窗后的 Datapoint 集合组成Datapoint某个时刻点的单次传感器读数支持DoubleDatapoint、Int64Datapoint、BoolDatapoint、BytesDatapoint四种测量类型并带有相对base_timestamp的offset时间偏移AnnotationGroup / AnnotationSequence / Annotation对 RecordingCollection 的标注分为两大主题——ground truth 信息事件时间戳、标签与标记、评分者标注与数据衍生结果模型预测、staged model 输出、指标计算产物。AnnotationGroupType枚举区分GROUND_TRUTH与MODEL两类。RecordingCollectionMetadata记录base_timestamp、session_id、user_id并通过MobileCollectionMetadata.session_activity保存该 trace 对应的真实活动名称——这正是模型的监督信号来源。第一阶段获取传感器数据并转换为 AnnotatedRecordingCollection传感器数据必须被收集并格式化为AnnotatedRecordingCollection其中recording_collection字段必须填充。工具提供了一个将ADL 数据集UCI 腕戴加速度计 ADL 识别数据集转换为 ARC 的示例二进制构建命令为bazel run --cxxopt-stdc17 --experimental_repo_remote_exec --define MEDIAPIPE_DISABLE_GPU1 intent_recognition:convert_adl_dataset_to_annotated_recording_collection -- see file for flags对应的实现位于 convert_adl_dataset_to_annotated_recording_collection.cc其命令行参数flags为Flag说明--adl_dataset_dir_pathADL 数据集顶层目录路径--record_output_filename输出 riegeli 文件路径存放转换后的 AnnotatedRecordingCollection 记录从源码可以提炼出该转换器实现的几个关键细节加速度原始值解码DecodeAccel函数将原始整数值映射为 m/s²公式为(-1.5 raw_accel / 63.0 * 3.0) * 9.8067kGravity 9.8067采样率假定以kSamplingRateHz 3232 Hz推算每个数据点的时间偏移offset秒与纳秒即假定 ADL 数据集原始采样率为 32Hz元数据填充每个以Accelerometer-前缀命名的文件对应一个 ARCsession_id从 0 递增user_id从文件名段解析session_activity从文件名中提取Sequence 的type SENSOR、subtype ACCELEROMETER、measurement_dimensionality 3输出格式使用 riegeli 的RecordWriter逐条写出 ARC因此输入/输出文件均为 riegeli records 格式。该二进制可作为如何把自己的传感器数据集改写成 ARC的参考模板替换数据集目录遍历与元数据填充逻辑即可适配新的数据源。第二阶段MediaPipe 处理Processing处理阶段使用 MediaPipe 完成运行命令为bazel run --cxxopt-stdc17 --experimental_repo_remote_exec --define MEDIAPIPE_DISABLE_GPU1 intent_recognition/processing:process_annotated_recording_collection_main -- see file for flags对应入口为 process_annotated_recording_collection_main.cc支持三个 flagsFlag说明--record_input_filename输入 riegeli 文件未处理的 AnnotatedRecordingCollection--record_output_filename输出 riegeli 文件处理后的 AnnotatedRecordingCollection--processing_options_filename处理选项文件路径textproto 格式的ProcessingOptions处理选项的类型定义在 processing_options.proto其关键字段如下字段类型说明processing_graph_filestringDrishti 图模板路径指定预处理方式传感器选择、采样率、加窗等window_sizeint64加窗大小每个窗口的输入样本数sampling_rateint64目标采样率window_strideint64窗口滑动步长padding_strategyenum填充策略取值为WindowCalculatorOptions.PaddingStrategy枚举名minimum_windowsint64最少需要产生的窗口数at_least_one_annotation_with_substringrepeated string要求至少一个标注包含指定子串才保留no_annotations_with_substringrepeated string标注包含指定子串则丢弃exclude_user_idrepeated string按用户 ID 过滤include_session_activity/exclude_session_activityrepeated string按活动名保留/排除二者不可同时使用label_mapping_filesrepeated string标签类映射文件路径filter_label_mapping_namestring用于过滤的映射名称include_class_name/exclude_class_namerepeated string按映射后的类名保留/排除二者不可同时使用min_variance_thresholdfloat方差阈值低于阈值的窗口将被丢弃drop_below_threshold_comparatorenumALL全部参考流低于阈值才丢或ANY任一低于阈值即丢invert_thresholdbool取反阈值逻辑保留低于阈值的窗口处理图模板processing_graph.pbtxtProcessingOptions.processing_graph_file指向一个Drishti 图模板示例为 sample_configs/graph/processing_graph.pbtxt。该模板使用 Jinja 风格的% ... %占位符由BuildDrishtiGraphWithProcessingOptions见 annotated_recording_collection_utils.h将ProcessingOptions中的参数代入生成最终CalculatorGraphConfig。模板中的计算器calculator链完整定义了预处理流程ClassMappingsSidePacketCalculator从label_mapping_files加载类映射输出CLASS_MAPPINGS_PROVIDERside packet映射类型STRING_CLASSFilterAnnotatedRecordingCollectionCalculator第一次按filter_if_sensor_not_present_or_empty: ACCELEROMETER、exclude_user_id、exclude_session_activity、include_session_activity、标注子串等条件过滤 ARCAddClassMappingsCalculator利用 side packet 中的映射为 ARC 添加标注类映射实现见 add_class_mappings_calculator.ccFilterAnnotatedRecordingCollectionCalculator第二次按filter_label_mapping_name与include_class_name/exclude_class_name过滤映射后的类ExtractSensorDataFromAnnotatedRecordingCollectionCalculator提取ACCELEROMETER数据流required_dims: 3重复时间戳策略为RAISE_ERRORPacketResamplerCalculator以%sampling_rate%重采样WindowCalculator按%window_size%、%window_stride%、%window_padding_strategy%、%minimum_windows%加窗参数含义见 window_calculator.protopadding_strategy支持RIGHT_ZERO与RIGHT_LAST_VALUEComputeSampleMagnitudeVarianceCalculator计算窗口幅度方差DropOnThresholdValueCalculator按%min_variance_threshold%、%drop_below_threshold_comparator%、%invert_threshold%丢弃方差过低的窗口实现参考 drop_on_threshold_value_calculator.protoComparator含ANY/ALLinvert_threshold用于反转保留逻辑MergeSensorDataIntoAnnotatedRecordingCollectionCalculator将重采样流与阈值化加窗流合并回 ARC——原始加速度计流标记为ACCELEROMETER加窗流标记为ACCELEROMETER_WINDOWwindow_dims %window_size%SetAnnotatedRecordingCollectionMetadataCalculator回写处理后的元数据输出流名为output。处理主程序为每条输入 ARC 实例化一个 MediaPipeCalculatorGraph启动运行后通过AddOutputStreamPoller(output)收集输出一条输入可产生多条输出记录见 process_annotated_recording_collection_main.cc。运行结束时日志会打印读取与写出的记录条数Num of records read / written。标签映射机制label_mapping_files指向 StringLabelClassMap 类型的 textproto 文件。以示例 standup_chair_labelmap.textproto 为例它定义了名为standup_chair_mapping的映射标签包含子串standup_chair映射为Standup_chair包含Eat映射为Negative包含walk但不包含MODEL映射为Negative其余标签entry无identifier映射为Withdraw。映射不区分大小写。从源码 class_mappings_provider_helpers.h 可以推断类 ID 的分配规则所有target_class_string收集到集合后按字母序排序从 0 开始编号implicit_target_classes中声明的隐式类会被排除。也就是说同一个StringLabelClassMap内的类名顺序决定了最终分类的 label ID训练阶段的标签 ID 与之一一对应。样例处理配置仓库提供了两个可对照的正负样本处理配置2sec_positive_standup_chair.pbtxtwindow_size: 50、sampling_rate: 50、window_stride: 5、padding_strategy: RIGHT_LAST_VALUE、minimum_windows: 1过滤条件为filter_label_mapping_name: standup_chair_mappinginclude_class_name: Standup_chair只保留正类方差阈值min_variance_threshold: 5、drop_below_threshold_comparator: ALL2sec_negative_standup_chair.pbtxt加窗参数相同但include_class_name: Negative且min_variance_threshold: -1实际关闭低方差丢弃。两个配置文件中的processing_graph_file与label_mapping_files均为占位符[path to intent_recognition]/...使用前必须手工替换为 intent_recognition 目录的绝对路径。第三阶段转换为 SequenceExampleTFRecord处理完成后需将 ARC 转换为 TensorFlow 训练所需的SequenceExample运行命令为bazel run --cxxopt-stdc17 --experimental_repo_remote_exec --define MEDIAPIPE_DISABLE_GPU1 intent_recognition/conversion:convert_annotated_recording_collection_to_sequence_example_main -- see file for flags入口为 convert_annotated_recording_collection_to_sequence_example_main.ccflags 如下Flag说明--riegeli_record_input_filename输入 riegeli 文件处理后的 AnnotatedRecordingCollection--tf_record_output_filename输出 TFRecord 文件SequenceExample 序列化字节流转换核心函数ConvertAnnotatedRecordingCollectionToSequenceExample声明见 convert_annotated_recording_collection_to_sequence_example.h实现见 convert_annotated_recording_collection_to_sequence_example.cc生成的 SequenceExample 结构如下Context featuressession_idbytes来自recording_collection.metadata().session_id()mapping_name/labelint64与mapping_name/label/namebytes来自 GROUND_TRUTH 类别的 CLASS_LABEL 标注序列mapping_name即标注源名称派生标注annotation_type DERIVED会生成双向映射特征activity/labelbytes原始session_activitytype/subtype/dimensionalityint64传感器测量维度例如SENSOR/ACCELEROMETER_WINDOW/dimensionalitytype/subtype/window_sizeint64加窗序列的窗口大小例如SENSOR/ACCELEROMETER_WINDOW/window_sizefirst_measurement/timestamp/secondsfloat首个测量值相对时间戳。Feature lists每个非空序列生成type/subtype/floats例如SENSOR/ACCELEROMETER_WINDOW/floats窗口序列按窗口逐个写入 Featureflattenfalse时每个窗口对应一个 feature窗口内的数据按时间×维度排列。主程序逐条读取输入 ARC转换失败如无数据可写时打 WARNING 并跳过最终日志打印读取与写入记录数。第四阶段TensorFlow 模型训练与推理训练使用 TensorFlow仓库提供了可直接在 Colab 中运行的 Notebookintent_recognition_training.ipynb。该 Notebook 的核心工作流为数据准备通过tf.data.TFRecordDataset(FILENAMES)读取 TFRecord解析每个SequenceExample从 context 中提取CLASS_FEATURE_KEY_IDmapping_name/label作为标签、DIM_FEATURE_NAMESENSOR/ACCELEROMETER_WINDOW/dimensionality与WINDOW_SIZE_FEATURE_NAME作为数据形状信息再从 feature list 的DATA_FEATURE_NAMESENSOR/ACCELEROMETER_WINDOW/floats还原出window_size × dims的窗口数组数据划分按 60% 训练、10% 验证、30% 测试的比例PERCENT_TRAIN / PERCENT_VALIDATION / PERCENT_TEST使用train_test_split分层划分DATASET_BATCH_SIZE 32批量化并 shuffle二分类训练keras.Sequential网络Flatten → Dense(40, relu) → Dropout(0.3) → Dense(20, relu) → Dense(1, sigmoid)使用adam优化器与BinaryCrossentropy损失epochs15评估指标含BinaryAccuracy与 TP/FP/TN/FN训练后binary_model.save(SAVED_MODEL_FOLDER)保存多分类训练输出层改为Dense(len(label_ids), softmax)使用SparseCategoricalCrossentropy同样训练 15 个 epoch 并保存。Notebook 顶部参数区定义了输入 TFRecord 文件名列表如正样本positive_with_drop.tfrecord与负样本negative.tfrecord、POSITIVE_DATA_LABEL_NAME Standup_chair等方便替换为自身流水线产物。训练完成后即可用保存的模型对新 trace 进行推理并借助 ARC 中 MODEL 类别的标注组记录预测结果用于指标计算这与数据模型中的AnnotationGroupType.MODEL设计相呼应。仓库速查与流水线对应的关键文件阶段文件数据获取示例转换器convert_adl_dataset_to_annotated_recording_collection.cc数据模型annotated_recording_collection.proto、annotated_recording_collection_sensor_options.proto公共工具annotated_recording_collection_utils.h、annotated_recording_collection_utils.cc处理入口与选项processing/process_annotated_recording_collection_main.cc、processing/processing_options.proto处理图模板sample_configs/graph/processing_graph.pbtxt样例处理配置sample_configs/processing/2sec_positive_standup_chair.pbtxt、sample_configs/processing/2sec_negative_standup_chair.pbtxt标签映射sample_configs/labelmap/standup_chair_labelmap.textproto、processing/string_label_class_map.proto转换入口conversion/convert_annotated_recording_collection_to_sequence_example_main.cc训练 Notebooktraining/intent_recognition_training.ipynb常见问题与注意事项配置文件路径占位符样例 textproto 中processing_graph_file与label_mapping_files的[path to intent_recognition]必须替换为绝对路径否则主程序读取图模板或映射文件会失败参数互斥约束include_session_activity与exclude_session_activity、include_class_name与exclude_class_name不可同时设置proto 注释中明确要求方差阈值丢弃窗口设置min_variance_threshold后处理结果中的窗口可能出现不等间距部分窗口被丢弃转换与训练时需接受这一特性类 ID 由字母序决定同一StringLabelClassMap中目标类按字母序编号调整映射文件会改变训练标签 ID修改后需同步核对 Notebook 中的特征键与标签定义重复时间戳ExtractSensorData...Calculator支持RAISE_ERROR与KEEP_LAST_VALUE两种重复时间戳处理策略默认图模板使用RAISE_ERROR数据存在重复采样时刻时会导致处理报错可按需调整。通过将上述五个阶段串联起来即可基于自定义的传感器数据集构建活动识别模型参照 ADL 转换器生成 ARC → 用 MediaPipe 处理图清洗与加窗 → 转换为 SequenceExample/TFRecord → 在 Colab 中训练 Keras 模型 → 部署推理并计算指标。整个过程的数据格式、参数语义与实现细节均已在上文结合源码逐层展开可直接作为落地实践的参考。【免费下载链接】google-researchGoogle Research项目地址: https://gitcode.com/gh_mirrors/go/google-research创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

claude-seo 图像生成品牌预设系统:基于 presets.md 的品牌一致性规范与 CLI 管理实战

claude-seo 图像生成品牌预设系统:基于 presets.md 的品牌一致性规范与 CLI 管理实战

claude-seo 图像生成品牌预设系统:基于 presets.md 的品牌一致性规范与 CLI 管理实战 【免费下载链接】claude-seo Universal SEO skill for Claude Code. 25 sub-skills 18 sub-agents covering technical SEO, E-E-A-T, schema, GEO/AEO, backlinks, local SEO, …

2026/9/22 17:27:29 阅读更多 →
BentoPDF Simple Mode 完全指南:面向自托管部署的去营销化构建(bentopdf-simple)

BentoPDF Simple Mode 完全指南:面向自托管部署的去营销化构建(bentopdf-simple)

前端 【免费下载链接】bentopdf The Privacy First PDF Toolkit 项目地址: https://gitcode.com/gh_mirrors/be/bentopdf 点击查看 免费下载 Simple Mode 是 BentoPDF(The Privacy First PDF Toolkit)为自托管(Self-Hosted&#…

2026/9/22 18:53:56 阅读更多 →
VitePress 站点部署完全指南:从本地预览到 Netlify、GitHub Pages 与 Nginx 等主流平台

VitePress 站点部署完全指南:从本地预览到 Netlify、GitHub Pages 与 Nginx 等主流平台

前端文档 【免费下载链接】vitepress Vite & Vue powered static site generator. 项目地址: https://gitcode.com/gh_mirrors/vi/vitepress 点击查看 免费下载 VitePress 是 Vite 与 Vue 驱动的静态站点生成器,其部署流程本质上是一次"构建 …

2026/9/21 15:15:19 阅读更多 →

最新新闻

2026最新绿荫继承者调试指南:3招解决代码复制跑不通难题

2026最新绿荫继承者调试指南:3招解决代码复制跑不通难题

2026最新绿荫继承者调试指南:3招解决代码复制跑不通难题 刚把掘金技术社区热帖里的代码复制下来,双击运行,控制台直接红屏报错?别慌,这不是你笨,也不是代码烂。很多转岗进开发圈的朋友都卡在第一步:看着别人跑通的“绿荫继承者”模式示例,自己环…

2026/9/22 19:04:09 阅读更多 →
如何编写自己的AI编程技能:MiniMax Skills技能开发与贡献完全教程

如何编写自己的AI编程技能:MiniMax Skills技能开发与贡献完全教程

如何编写自己的AI编程技能:MiniMax Skills技能开发与贡献完全教程 【免费下载链接】skills 项目地址: https://gitcode.com/gh_mirrors/skills18/skills MiniMax Skills 是一个面向 AI 编程工具的开发技能库,让 Claude Code、Cursor、Codex 等 A…

2026/9/22 19:04:09 阅读更多 →
悦读纪博客避坑速查手册:3步搞定代码调试难题

悦读纪博客避坑速查手册:3步搞定代码调试难题

悦读纪博客避坑速查手册:3步搞定代码调试难题 复制来的代码跑不通,报错信息满屏飞,你是不是也盯着屏幕发呆,不知道从哪下手?别慌,这种“复制粘贴即崩溃”的尴尬,几乎每个开发者都经历过。这时候,你需要的不是盲目搜索错误代码,而是一份能直接定位问…

2026/9/22 19:04:09 阅读更多 →
皇牌空战性能调优避坑指南:3个实战案例搞定高并发卡顿

皇牌空战性能调优避坑指南:3个实战案例搞定高并发卡顿

皇牌空战性能调优避坑指南:3个实战案例搞定高并发卡顿 刚学完 Python 或 Go 语法,看着文档里的 for 循环和 if 判断觉得挺简单,真到了公司接手项目,一上线就崩。是不是觉得代码逻辑没错,但服务器 CPU 飙红、响应时间从…

2026/9/22 19:04:09 阅读更多 →
5个关键步骤搞定SSD固态硬盘修复源码最佳实践

5个关键步骤搞定SSD固态硬盘修复源码最佳实践

5个关键步骤搞定SSD固态硬盘修复源码最佳实践 复制来的代码跑不通,报错日志像天书,调试半天没头绪?这不仅是新手噩梦,也是资深开发者常踩的坑。在SSD固态硬盘修复领域,很多教程只给结果不给过程,导致你明明照着写,却因环境差异或底层逻辑理解偏…

2026/9/22 19:04:09 阅读更多 →
3个技巧搞定图片缩小,高频面试题里的坑全在这

3个技巧搞定图片缩小,高频面试题里的坑全在这

3个技巧搞定图片缩小,高频面试题里的坑全在这 昨天帮一个刚转行嵌入式的朋友看代码,他对着屏幕抓耳挠腮,说从网上抄的Python图片处理脚本,一跑就报错,改来改去还是不行。这场景太熟悉了,很多开发者都卡在这里:复制来的代码跑不通,日志满屏红字…

2026/9/22 19:03:08 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →