Android系统开发实战:Binder、Activity启动与系统稳定性核心解析
1. 这个岗位到底在做什么Android系统开发的真实工作边界很多人一听到Android系统开发工程师第一反应是不就是写App的吗或者觉得系统层的东西太底层了离业务太远学了没用。这两种想法我都听过无数次。先说结论Android系统开发和普通应用开发虽然共用一套SDK但工作内容、思维方式和考核维度几乎是两个工种。我自己是半路转进来的。早期做应用开发天天跟Activity、Fragment、RecyclerView打交道自认为对Android已经够熟了。直到有一次需要排查一个系统级的ANR问题发现日志里的堆栈指向的是system_server进程而不是我的App进程那一刻才意识到应用层和系统层之间隔着一道很深的墙。这道墙的名字叫Binder、Handler、进程优先级、Selinux策略、Systrace、以及整个AMS/WMS/PMS的服务体系。系统开发工程师在日常工作中处理的任务大致可以归为下面几类每一类都是应用开发几乎碰不到的。1.1 框架层定制不是用API而是改API应用开发者拿到的是google已经封装好的接口比如startActivity()、bindService()而系统开发工程师面对的是这些接口背后的实现。举个例子如果产品经理提了一个需求——某个定制ROM要支持双用户空间每个用户有独立的桌面布局和应用列表。应用层开发很难做到但系统层可以在ActivityManagerService或PackageManagerService这一层做逻辑扩展甚至可以在framework层增加一个系统服务来管理多用户的数据隔离。再举个例子某手机厂商在适配一款游戏时发现频繁的GC导致游戏掉帧。应用层能做的优化很有限系统层可以直接在ART虚拟机层面调整GC策略或者修改framework的渲染调度逻辑甚至在SurfaceFlinger做ComposeLayer的合并策略。你手里握着的是整个系统运行的每一环你要改的可能不是你自己写的代码而是整个系统所有App都要走的公共路径。系统开发的核心工作就是对AOSP和厂商自研代码的理解和改造同时要保证这种改造不影响系统的稳定性和性能。这就意味着你不仅要有较高的代码能力还要对整个系统架构有全局认识。1.2 系统服务开发从一个系统服务的视角理解AndroidAndroid系统里跑着几十个核心服务ActivityManagerService、WindowManagerService、PackageManagerService、BatteryStatsService、AlarmManagerService等等。系统开发的很大一部分工作就是跟这些服务打交道要么修改现有的服务要么在SystemServer里注册一个新的服务。很多应用开发转系统开发的人第一个卡点就是SystemServer的启动流程。为什么我们要理解这个流程因为你在system_server中加入的任何逻辑都会直接影响开机速度和系统稳定性。而且system_server一旦崩溃整个系统会Soft Restart也就是用户看到的那种桌面重新加载。所以系统开发中关于能不能在主线程做耗时操作能不能在核心服务里执行IO这个锁的持有时间会不会阻塞关键路径这些问题的判断是日常代码评审中最常见的争议点。这种思维是应用开发中不常被强调的。1.3 系统稳定性与性能线上问题不是你产品的是整台机器的应用开发排查Crash通常只关心自己的App怎么崩的。系统开发排查问题面对的是整台设备的状态。比如一个第三方App通过反射调用了非公开API导致Zygote进程Fork失败最终所有应用都启动不了。这种问题如果你只盯着某一个App看永远找不到根源。你必须看Zygote的日志、系统Server的日志、甚至kernel的log。还有一类常见的工作是开机时间优化。厂商在定制系统时通常有严格的开机性能指标。这项优化会涉及到并行化启动任务、缩短Zygote预加载资源时间、优化PackageManager扫描耗时、甚至调整CPU调频策略。每一项优化都要求对系统启动链路有清晰的了解。所以在系统开发岗位上稳定性、性能、功耗这三座大山几乎每天都在眼前。不是出了线上事故才去背锅而是要通过各种工具、日志、系统埋点提前把问题堵住。这种主动防御的意识和被动改Bug的应用开发节奏很不一样。2. 必备技能地图从Linux内核到Java/Kotlin从编译到调试聊完工作内容自然就到了最核心的问题要胜任这个岗位需要掌握哪些技能。我给过一个系统开发能力金字塔的说法从下往上分别是Linux基础、C/C与Java/Kotlin、Android系统架构、调试与性能分析工具、项目经验。这套能力不是短期内能速成的但可以分阶段补。2.1 金字塔底座Linux操作系统与C/C基础先说Linux。系统开发中遇到的大量问题都与Linux相关进程间通信包括管道、socket、共享内存、Selinux安全策略、内存管理、文件系统、设备驱动。如果你对linux不熟看AOSP的代码会有很强的陌生感。C/C的重要性主要体现在这些地方native层的Binder通信、ART虚拟机、SurfaceFlinger、InputFlinger、HAL层、以及大量的JNI实现。哪怕你的日常工作以Java/Kotlin为主遇到native崩溃tombstone时也必须能看懂C的调用栈。所以在面试中考官喜欢问new和malloc的区别、什么是虚拟内存、SharedPreferences为什么可能ANR这类关联问题本质都是考察这几块基础扎不扎实。2.2 进阶必备Android系统架构的主脉络Android系统架构宽泛如果漫无目的去学效率极低。我建议顺着一条主脉络去梳理应用启动一条链路、消息循环一条链路、组件管理一条链路、渲染一条链路。把这四条链路吃透了系统的骨架就在你脑子里了。应用启动链路从Launcher点击图标到AMS创建Process、ActivityThread.main()启动再到Activity的onCreate。这条链路是很多人接触系统开发的起点。消息循环从Looper.loop()到Handler、MessageQueue、epoll再到IdleHandler。理解它就是理解Android为什么不会卡死为什么主线程不能做耗时任务。组件管理从Activity的启动模式、Task与返回栈到Service的绑定流程再到BroadcastReceiver的动态与静态注册。这几个组件是AMS和PMS的核心业务。渲染链路从ViewRootImpl到Choreographer再到SurfaceFlinger的合成。理解这条链路才能做流畅度优化。我用一个比喻来说明为什么要学这些如果把Android比作一家医院AMS是院长办负责统筹协调各部门Binder是医院内部的电话和专线科室之间靠它互通信息Handler是每个科室内部的前台负责把任务分派给正确的医生SurfaceFlinger则相当于手术室的显示屏把各个信号合成最终图像。你把这些角色在脑子里定位清楚后面看代码就有方向感了。2.3 调试工具链比搜索引擎更重要的是看懂日志系统开发里看懂日志和分析Trace的优先级远高于会写代码。我见过不少新人遇到Bug第一反应是上网搜但系统层的问题往往非常定制化网上的答案几乎不可用。真正管用的是这几个工具logcat与dmesg区分app侧日志和kernel日志tombstonenative崩溃日志通过addr2line定位到具体的C函数systrace现在叫Perfetto分析耗时和调度dumpstate / bugreport完整的系统状态快照strace跟踪系统调用debuggerd / gdbnative调试很多公司面试时会问如果你接到了用户反馈说设备卡顿你该如何入手排查这个问题的核心不是让你背工具名称而是看你有没有完整的排查方法论先确认范围和场景再看logcat和systrace然后结合CPU频率、内存压力、存储IO等因素定位最后才是fix和验证。2.4 编译系统与源码环境能改、能跑、能验证很多人忽略的是系统开发和应用开发最大的环境差异在于你要能在源码级环境下完成修改和验证。这意味着你至少要熟悉AOSP的构建系统Soong/Blueprint、make命令、常见构建产物system.img、vendor.img、boot.img、以及如何用adb刷机或推送修改后的文件到设备。面试中常见的考点包括修改了framework.jar里的代码如何编译、如何推送、如何验证新增一个系统服务需要改动哪些文件Selinux权限配置在哪里改如何通过adb shell来测试一个系统服务。这些都是实际工作中每天都会做的事。我建议任何人准备系统开发面试之前先自己完整编译一次AOSP并在模拟器或真机上运行起来。这个过程会让你对系统开发的全貌有一个非常直观的认识。光靠背面试题是没有用的因为面试官能很快分辨出你是真掌握还是背书。3. 面试高频考点拆解以Activity启动流程为代表在系统开发的面试中最经典、出现频率最高的一道题同时也是最能区分候选人水平的题就是说一下从点击桌面图标到Activity显示出来的完整流程。这道题考察的绝不仅仅是记忆而是你对整套系统架构的理解深度和表达逻辑。我梳理了这道题的核心变体和答题层面。3.1 第一层Binder与AMS的调用链大多数人能回答到这一层点击图标后Launcher通过Binder调用AMS的startActivity()AMS校验调用者权限然后通过Socket通知Zygote进程Fork出一个新的App进程新进程的入口是ActivityThread.main()。到这一步已经能拿到一定的分数。但要进入高分还需要补充细节。Binder调用在这个流程中的关键点是Launcher运行在独立的App进程里AMS运行在system_server进程里这两个进程之间不能直接共享内存必须通过Binder。Binder是Android里最核心的IPC机制它的一次调用包括driver层的binder_write/binder_ioctl、内核态的binder_thread、以及进程间的内存映射。如果面试官问到这里你要能够画出调用栈结构并指出Binder线程池的大小配置。3.2 第二层进程创建与ActivityThread.main()AMS确定要启动新进程后会通过socket向Zygote进程发送fork请求。Zygote收到请求后会通过forkspecialize的方式创建一个新的App进程。这里有很多人能说出fork但说不出specializeZygote fork之后子进程还要执行specialize来设置UID、GID、Selinux上下文、seccomp过滤等安全策略。然后是ActivityThread.main()这一步会建立主线程的Looper然后通过Binder向AMS报告进程启动完成请求AMS继续执行Activity的启动。这里面的坑是很多候选人回答到ActivityThread.main()就停下来了以为Activity已经启动了。实际上main()只是创建了消息循环Activity的创建是在后续的scheduleLaunchActivity()消息里完成的。3.3 第三层Activity的创建、生命周期与View绘制ActivityThread通过HHandler收到scheduleLaunchActivity消息后最终在handleLaunchActivity里通过Instrumentation.newActivity()用反射创建Activity实例接着调用attach()方法把Activity和Window关联起来再调用onCreate()。此时Activity已经创建但界面还没显示。onCreate之后系统会执行performResume()、WindowManager.addView()然后才走到ViewRootImpl的performTraversals()完成measure、layout、draw三步最后通过SurfaceFlinger合成并上屏。到了这一层你已经能把系统框架层和UI渲染层这两条链路打通了面试官基本能判断你具备系统的视野。3.4 高频变体从这道题延伸出的追问主流程说完之后面试官通常会顺着往下追常见的追问角度我整理成表格大家准备的时候可以按这个方向去自查追问方向核心考察点常见回答思路Zygote为什么能fork出App进程进程创建的底层机制forkspecialize子进程继承Zygote的预加载资源system_server为什么不能Crash系统稳定性设计system_server死亡会导致系统软重启且所有核心服务集中于此Binder为什么比Socket快IPC机制理解一次拷贝、mmap映射、线程池模型为什么主线程不能做耗时操作Handler与消息队列机制耗时操作会阻塞MessageQueue的取消息循环Activity与Window的关系窗口管理机制Window是View的容器Activity通过WindowManager与WMS交互SurfaceFlinger如何上屏渲染与合成三层缓冲、硬件合成器HWC、vsync信号同步Selinux如何限制访问安全机制主体-对象-权限三元组type enforcement策略静态广播为什么在8.0受限系统资源与功耗大量隐式广播唤醒App影响设备续航这套追问体系几乎是一个小型系统开发知识框架。与其一道题一道题去背不如花时间把这些底层机制彻底理清。4. 从应用开发转型系统开发的避坑指南这节写给想从应用开发转岗的朋友。我自己踩过不少坑身边也有几个转岗成功和失败的案例总结出几个共性问题供参考。4.1 不要用应用开发的思维理解系统开发应用开发追求的是功能上线系统开发追求的是改了不炸。不炸比实现功能难得多。很多人转岗后还保留着加个判断就行了这样可以跑就行的习惯这是很危险的。系统层代码被所有App共享你的任何一个改动都可能引发连锁问题。举个例子曾经有开发者在WindowManagerService里加了一个日志埋点自测没问题结果线上出现大面积性能劣化。原因是这个埋点位于WMS的核心路径上每次Window切换都会执行大量日志写入导致线程阻塞。这种问题在应用开发里很难遇到因为你的代码只管你自己的App。转岗后我建议首先建立改动前先量化风险、改动后做全量回归的思维习惯。不管多小的改动都要问自己这个改动会影响哪些进程哪些场景开机流程还是系统Server关键时刻还是普适路径4.2 重基础、重源码而不是使劲刷面试题我见过不少候选人在面试前热衷于背AOSP源码这其实是个误区。源码浩如烟海背是背不完的也背不住。真正靠谱的学习方式是选一条完整链路从入口到出口自己走一遍然后亲手做一个小实验来验证。比如自己写一个system service并注册到SystemServer里然后通过一个简单的App去调用它的接口。这个实验覆盖了Binder、SystemServer、Selinux配置、JNI、aidl等多块知识做完之后很多疑问会豁然开朗。另外必须提一句一定要动手编译AOSP。哪怕你用一台16G内存的机器编译一次可能用掉几个小时但这个过程会让你对整个代码树结构、模块依赖、编译产物、刷机方式有一个全貌意识。不用太纠结版本新旧能跑起来就成功了一大半。4.3 学会从日志找线索而不是从搜索找答案应用开发的时代你遇到一个报错复制到搜索引擎大概率能找到答案。到系统开发阶段几乎每个问题都是特定设备、特定ROM、特定场景下的产物网上的直接答案非常少。真正能帮你的是自己分析日志的能力和排查问题的方法论。我给新人的建议是拿到一个Bug第一件事是收集尽可能多的信息包括复现步骤、出错设备、logcat/dmesg、tombstone、systrace。不要一上来就改代码而是先建立假设用日志和Trace去验证或推翻假设。这套假设驱动的排查方式在系统开发中是核心生产力。4.4 保持对Android系统的整体感系统开发最忌讳只见树木不见森林。看代码时不要一头扎进某一个类就不出来要在不同的服务、不同的层之间跳来跳去把上下文串起来。面试时技术问题答得再细如果对系统整体缺乏理解考官问你一个跨模块问题时你还是会卡壳。我个人的方法是拿出一张白纸不定期把Android系统的架构图画一遍从Linux内核到HAL再到Native层库再到Framework的Service再到App层。每次画都有新的收获也能发现哪部分记忆模糊了及时补课。这是我认为最值得推荐的学习习惯之一。5. 一条可落地的准备路径与实战建议如果目标是半年内从应用开发转岗系统开发或者从0开始准备系统开发面试我建议把整个过程拆成四个阶段。每阶段的产出和考核方式都很明确可以跟着自查。5.1 阶段一源码环境搭建1-2周这个阶段的目标是让AOSP在你的电脑上跑起来。选择合适的AOSP版本准备至少200GB可用磁盘、16GB以上内存32G更好建议在Ubuntu环境编译。下载源码、配置环境、执行构建、刷入真机或模拟器。我第一次编译的时候遇到了一堆环境问题比如OpenJDK版本不匹配、磁盘空间不足、没有安装必要的依赖中间几乎想放弃。所以建议多利用社区已有的编译教程一步一步来别急着全部弄懂先跑起来。产出标准你可以在本地机器上执行make -j8并在真机上看到自己编译出来的系统。5.2 阶段二单点突破3-6周选一条链路陆续吃透。我推荐从应用启动流程开始因为这条链路覆盖了进程创建、Binder通信、Handler机制、Activity生命周期、View绘制是系统开发最基础也最常见的知识组合。具体做法是带着问题去看源码比如ActivityThread.main里做了什么、AMS如何启动新进程、ViewRootImpl的setView里发生了什么。每弄清楚一个问题就写下笔记。这一阶段不要贪多能彻底搞懂一条链路就已经领先大多数候选人了。产出标准能画出应用启动全流程的调用时序能指出关键的类名、方法名以及每层之间的通信方式。5.3 阶段三验证式练习2-4周在这个阶段给自己设计几个小实验。比如通过反射调用系统中非公开的API验证Selinux如何拦截它修一个自定义系统服务通过命令行直接调用或者修改framework层某个耗时操作的实现对比优化前后systrace的变化。这些练习都是在验证你的理解同时也为面试准备实打实的项目经验。如果公司内部恰好有系统模块的项目机会争取参与哪怕只是擦边的工作。真实项目带来的经验远比任何教程都扎实。产出标准至少完成一个自创的实验Demo并能在面试中清晰讲出我要解决什么问题、我做了什么改动、如何验证效果。5.4 阶段四面试表达与模拟1-2周系统开发面试不仅考你会不会还考你能不能讲清楚。很多工程师技术上很强但一到表达就语无伦次丢了很多分。我建议在准备面试前自己对着镜子或者录屏软件把几个高频问题完整讲一遍。重点练逻辑顺序先说背景再说主体流程再说关键细节再说异常情况。这种结构化表达的能力在面试中极其加分。另外可以找一个水平比你高的人做模拟面试。某位学长当年帮我做的模拟面试问了一堆我没准备过的角度才发现自己只是记住了是什么没有深入思考为什么。从那之后我把知识点全部换成为什么的角度再学一遍面试效果立刻不一样。6. 写在简历和面试中的加分项从面试官的视角来看什么样的简历最吸引人我总结了三个关键词真实项目、量化结果、系统视角。很多转岗候选人的简历写的是熟悉Binder机制熟悉AMS源码这种描述其实很空。更好的写法是在某项目中通过修改Binder线程池配置将XX场景下的跨进程调用耗时降低了30%。有项目、有改动、有量化结果这三样才是面试官真正想看到的。另外系统开发的岗位非常看重系统视角。比如你处理过一个Camera App的卡顿问题如果回答里只有App侧的优化面试官会觉得你还是应用开发思维。但如果你能从CameraProvider的HAL层、SurfaceFlinger的buffer queue、CPU/GPU调频这些角度去分析就会明显体现出系统开发的素养。还有一个小建议在面试中主动展示你的排查思路比直接给结论更重要。面试官问你是怎么解决这个问题的不要只讲方案而是把你从收集信息、建立假设、验证假设、找到根因、最终修复的完整过程讲出来。这个过程本身就是对候选人能力的最高证明。我在实际接触过不少候选人后最大的体会是系统开发不是靠刷题能刷出来的岗位。它更需要的是长期积累的系统思维、动手验证的习惯以及面对未知问题时冷静拆解的能力。如果你能踏踏实实把一条链路吃透、做过几个可以拿出来讲的实验哪怕之前完全没有系统开发经验也完全有机会在面试中拿到不错的评价。

相关新闻

PostMan发送二进制流请求:从协议设计到调试避坑全指南

PostMan发送二进制流请求:从协议设计到调试避坑全指南

1. 二进制流传输的底层逻辑与方案选型1.1 为什么选择二进制流而不是JSON日常接口联调中,绝大多数场景用的都是JSON或表单格式,数据以文本形式传输,可读性好、调试方便。但有些场景下,JSON就不太够用了。比如需要传输一个文件、一段…

2026/10/19 13:05:26 阅读更多 →
数据库设计基础理论实战:范式、主键与ER模型的避坑指南

数据库设计基础理论实战:范式、主键与ER模型的避坑指南

我刚入行那年,第一次参加项目评审就见到一张让人血压升高的表。表名叫customer_info,里面有个字段叫other_contact,存的内容长这样:“微信:xxx;QQ:12345;紧急联系人:张三(13800000000)”。旁边还并排开着phone1、phone2、phone3三…

2026/10/19 13:05:26 阅读更多 →
遥感建筑物变化检测:改进U-Net++与SE注意力+剪枝实战

遥感建筑物变化检测:改进U-Net++与SE注意力+剪枝实战

简介:基于改进U-Net算法的高分辨率城市建筑物遥感变化检测系统Python源码,主要面向本科毕业设计及遥感图像处理方向的学习者。项目完整覆盖模型选择、编码器配置、训练与验证流程,重点实现了SE模块嵌入、嵌套U-Net损失计算和剪枝技术&#xf…

2026/10/19 13:05:26 阅读更多 →

最新新闻

AI重塑软件开发流程:从需求到运维的全链路实践

AI重塑软件开发流程:从需求到运维的全链路实践

我直接说:AI时代重塑软件开发流程这件事,不是未来的趋势,而是现在正在发生的现实。过去一年里,我见过太多团队给每个开发者装上了AI编程助手,项目总结里写着“AI赋能研发”,但实际工作流还是老一套——产品…

2026/10/19 13:43:24 阅读更多 →
CrewAI目录RAG搜索实战:从文档索引到智能体工具封装

CrewAI目录RAG搜索实战:从文档索引到智能体工具封装

只要你真在 CrewAI 里搓过智能体,大概率会撞上这堵墙:模型推理再强,也读不到你本地目录里的那些文档。目录 RAG 搜索要解决的,正是“让智能体先翻资料、再开口回答”这个闭环——把某个文件夹下的文档变成可检索的知识库&#xff…

2026/10/19 13:43:24 阅读更多 →
三维重建与无感定位:危化园区智能安防的关键技术解析

三维重建与无感定位:危化园区智能安防的关键技术解析

危化园区的智能安防,过去十年基本是“堆摄像头、堆大屏”的路子,监控中心几十块屏幕轮切,值班员盯到眼睛发酸,却依然说不清某个时间点有没有人违规靠近过储罐区。真正危险的地方不是没有监控,而是监控画面无法回答一个…

2026/10/19 13:43:23 阅读更多 →
生产级AI Agent工作流实战:从架构到踩坑指南

生产级AI Agent工作流实战:从架构到踩坑指南

最近半年,我身边至少有三四个团队都在做 AI Agent,有一个已经上线了,有两个还在反复改工作流。聊到最后,大家几乎都卡在同一个问题上——Demo 跑得很顺,一上生产就到处漏风:超时、乱调用工具、上下文越搞越…

2026/10/19 13:43:23 阅读更多 →
电动重卡首次“进电网”、宁德时代25.56亿加码换电、吉利喊话“县县通”:补能进入“重卡主战场+超充军备”时代

电动重卡首次“进电网”、宁德时代25.56亿加码换电、吉利喊话“县县通”:补能进入“重卡主战场+超充军备”时代

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 13:43:23 阅读更多 →
开源代码审查CLI工具:本地化LLM+Git集成的工程化实践

开源代码审查CLI工具:本地化LLM+Git集成的工程化实践

1. 项目概述:一个真正能落地的开源代码审查 CLI 工具“open-code-review”这个名字乍一听像某个 GitHub 上刚起步的玩具项目,但如果你最近在团队里被反复追问“能不能自动跑一遍 PR 的基础质量检查”,或者自己写完一段逻辑复杂的函数后&#…

2026/10/19 13:42:22 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →