<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>若野 / Qun</title><description>Notes in motion.</description><link>https://ruoye.site/</link><item><title>unit_rc 系列（一）：用 C++ 把 N×N 跨语言桥接降为 N×1</title><link>https://ruoye.site/blog/unit-rc-series-1-architecture/</link><guid isPermaLink="true">https://ruoye.site/blog/unit-rc-series-1-architecture/</guid><description>从一次完整调用出发，介绍 unit_rc 的整体架构：.ur 接口定义、urgen 代码生成、C++ 运行时和 Java、Objective-C、Dart、ArkTS 平台桥接如何协作。</description><pubDate>Wed, 12 Aug 2026 15:42:00 GMT</pubDate><category>unit_rc</category><category>c++</category><category>architecture</category><category>ffi</category></item><item><title>unit_rc 系列（二）：urgen 如何把 .ur 编译成多语言绑定</title><link>https://ruoye.site/blog/unit-rc-series-2-urgen-pipeline/</link><guid isPermaLink="true">https://ruoye.site/blog/unit-rc-series-2-urgen-pipeline/</guid><description>从源码拆解 urgen 的完整流水线：入口扫描、Lark 语法解析、两阶段语义模型、call/impl 配置、Jinja2 后端、增量缓存和版本锁定。</description><pubDate>Wed, 12 Aug 2026 15:42:00 GMT</pubDate><category>unit_rc</category><category>codegen</category><category>compiler</category><category>python</category></item><item><title>unit_rc 系列（三）：BaseRC 如何统一对象身份与跨语言生命周期</title><link>https://ruoye.site/blog/unit-rc-series-3-object-lifecycle/</link><guid isPermaLink="true">https://ruoye.site/blog/unit-rc-series-3-object-lifecycle/</guid><description>深入 BaseRC、rcId、原对象与 proxy、addRC/removeRC 和 WeakPtr，解释 GC、ARC 与 shared_ptr 之间如何建立可工作的跨语言引用协议。</description><pubDate>Wed, 12 Aug 2026 15:42:00 GMT</pubDate><category>unit_rc</category><category>c++</category><category>memory</category><category>reference-counting</category></item><item><title>unit_rc 系列（四）：JNI、Objective-C、Dart 与 ArkTS 桥接对照</title><link>https://ruoye.site/blog/unit-rc-series-4-platform-bridges/</link><guid isPermaLink="true">https://ruoye.site/blog/unit-rc-series-4-platform-bridges/</guid><description>对照四个平台的 BaseRC 适配：宿主对象如何变成 C++ proxy，强弱引用如何落到 GlobalRef、ARC、PersistentHandle 和 napi_ref，以及运行时隔离带来的差异。</description><pubDate>Wed, 12 Aug 2026 15:42:00 GMT</pubDate><category>unit_rc</category><category>jni</category><category>dart</category><category>arkts</category></item><item><title>unit_rc 系列（五）：多 Isolate 注册表与跨运行时消息队列</title><link>https://ruoye.site/blog/unit-rc-series-5-isolate-message-queue/</link><guid isPermaLink="true">https://ruoye.site/blog/unit-rc-series-5-isolate-message-queue/</guid><description>结合 UnitRCDartRuntime 与 BaseMessageQueue 源码，分析 Isolate 注册、thread_local 缓存、函数表隔离、sendId 确认、积压重试、超时回流和退出清理。</description><pubDate>Wed, 12 Aug 2026 15:42:00 GMT</pubDate><category>unit_rc</category><category>dart</category><category>isolate</category><category>message-queue</category></item><item><title>unit_rc 系列（六）：ByteBuffer、Protobuf 与运行时可观测性</title><link>https://ruoye.site/blog/unit-rc-series-6-data-observability/</link><guid isPermaLink="true">https://ruoye.site/blog/unit-rc-series-6-data-observability/</guid><description>从 ByteBuffer 四端实现、Protobuf 编解码、实验性共享数据结构、BaseProfile 和 UnitRCError 出发，讨论跨语言数据路径怎样兼顾性能、所有权和线上诊断。</description><pubDate>Wed, 12 Aug 2026 15:42:00 GMT</pubDate><category>unit_rc</category><category>protobuf</category><category>performance</category><category>observability</category></item><item><title>Android Binder 数据边界：一次 Intent 过大崩溃的排查方法</title><link>https://ruoye.site/blog/android-binder-payload-boundaries/</link><guid isPermaLink="true">https://ruoye.site/blog/android-binder-payload-boundaries/</guid><description>Intent 和 Bundle 看起来只是进程内对象，启动 Activity 时却要经过 Binder 事务。本文从一个无明确业务堆栈的崩溃出发，解释 TransactionTooLarge、Parcel 尺寸、复现方法和架构修复。</description><pubDate>Tue, 03 Dec 2024 12:55:00 GMT</pubDate><category>android</category><category>binder</category><category>intent</category><category>crash</category></item><item><title>跨语言传递 Protobuf：从拷贝路径到所有权模型</title><link>https://ruoye.site/blog/cross-language-protobuf-data-path/</link><guid isPermaLink="true">https://ruoye.site/blog/cross-language-protobuf-data-path/</guid><description>零拷贝不一定更快。本文拆解 Dart、Java、Objective-C 与 ArkTS 传递 Protobuf 的真实数据路径，并给出 buffer 所有权、阈值选择和基准测试的方法。</description><pubDate>Tue, 26 Dec 2023 09:45:00 GMT</pubDate><category>protobuf</category><category>ffi</category><category>jni</category><category>performance</category></item><item><title>C++ 异步系统的生命周期陷阱：最后一个 shared_ptr、self-join 与锁环</title><link>https://ruoye.site/blog/cpp-async-lifecycle-and-deadlocks/</link><guid isPermaLink="true">https://ruoye.site/blog/cpp-async-lifecycle-and-deadlocks/</guid><description>shared_ptr 能防止对象过早释放，却不能保证对象在哪条线程析构。本文从 worker 内释放最后一个强引用出发，分析 self-join、析构竞态和多线程锁环，并给出可落地的退出协议。</description><pubDate>Tue, 26 Dec 2023 06:51:00 GMT</pubDate><category>c++</category><category>concurrency</category><category>shared_ptr</category><category>deadlock</category></item><item><title>设计一套跨语言绑定框架：从 IDL、代码生成到对象生命周期</title><link>https://ruoye.site/blog/cross-language-binding-framework-design/</link><guid isPermaLink="true">https://ruoye.site/blog/cross-language-binding-framework-design/</guid><description>跨语言调用不只是生成几层胶水代码。本文从接口描述、类型系统、运行时派发、继承与多态、强弱引用到线程约束，完整拆解一套绑定框架的设计。</description><pubDate>Sun, 26 Feb 2023 15:46:00 GMT</pubDate><category>c++</category><category>ffi</category><category>jni</category><category>architecture</category></item><item><title>Flutter 页面启动优化：Engine 预热、首帧与黑屏的完整度量</title><link>https://ruoye.site/blog/flutter-engine-startup-and-warmup/</link><guid isPermaLink="true">https://ruoye.site/blog/flutter-engine-startup-and-warmup/</guid><description>预热 Engine 不等于启动更快。本文从点击、Engine 创建、页面动画到 Flutter 首帧建立统一时间线，比较三种预渲染策略，并给出可验证的启动优化方法。</description><pubDate>Mon, 14 Nov 2022 16:00:00 GMT</pubDate><category>flutter</category><category>ios</category><category>performance</category><category>startup</category></item><item><title>Dart Native Bridge 运行时设计：多 Isolate、多引擎与消息可靠性</title><link>https://ruoye.site/blog/dart-native-bridge-runtime-design/</link><guid isPermaLink="true">https://ruoye.site/blog/dart-native-bridge-runtime-design/</guid><description>当 Flutter 从单引擎走向多引擎、多 Isolate 和线程合并，基于全局函数指针或 thread_local 的桥接方案会逐渐失效。本文给出注册表、对象生命周期、消息队列与销毁时序的完整设计。</description><pubDate>Thu, 27 Oct 2022 16:00:00 GMT</pubDate><category>dart</category><category>flutter</category><category>ffi</category><category>c++</category></item><item><title>关于自动化的一些思考</title><link>https://ruoye.site/blog/think-of-automatic/</link><guid isPermaLink="true">https://ruoye.site/blog/think-of-automatic/</guid><description>引 最近玩了一个游戏，叫做另一个伊甸：超越时空的猫，一个 RPG 游戏，之所以想说一下这个游戏，并不是说它的剧情多好、画面多精美之类的，想说的是这个游戏机制中非常恶心的一点： 很多任务的完成条件，都需要依赖于大量的“刷怪”，比如任务完成需要获取 “XX晶体” 30 万个，而 “XX晶体” 的来源只能是在特定地图打怪，而打怪一次一般只能拿到 100 “XX晶体…</description><pubDate>Sun, 05 Dec 2021 14:00:00 GMT</pubDate><category>Think</category></item><item><title>iOS 嵌套滑动方案</title><link>https://ruoye.site/blog/iOS-nested-scroll/</link><guid isPermaLink="true">https://ruoye.site/blog/iOS-nested-scroll/</guid><description>由于工作上的需求，需要在 iOS 中做一个类似于嵌套滑动的案例，大致上就是，顶部有一个 Header，下面是一个 List，然后 Header 会随着 List 的滑动进行展开或收起。这种功能在 Android 中倒是挺常见，直接使用 Material 相关的一些组件就能完成，之前也多次使用过，但是要在 iOS 上做这么一个功能，之前倒没想过该怎么做。 开发…</description><pubDate>Sun, 17 Oct 2021 09:00:00 GMT</pubDate><category>iOS</category></item><item><title>OC block 变量捕获</title><link>https://ruoye.site/blog/OC%20block%20%E5%8F%98%E9%87%8F%E6%8D%95%E8%8E%B7/</link><guid isPermaLink="true">https://ruoye.site/blog/OC%20block%20%E5%8F%98%E9%87%8F%E6%8D%95%E8%8E%B7/</guid><description>在做 iOS 开发的时候经常会需要使用到 block，简单来说 block 就是一个匿名函数，但是相比于常规意义上的函数，它除了能执行相应的代码逻辑、传递参数之外，还有一个比较重要的特性，就是 block 会捕获变量，根据变量类型（作用域、生命周期）的不同，block 会对其有不同的捕获方式，先列总结： 捕获方式 是否安全 是否可写 : : : : : : …</description><pubDate>Sun, 12 Sep 2021 05:00:00 GMT</pubDate><category>iOS</category><category>OjbC</category></item><item><title>Objective-C 引用计数</title><link>https://ruoye.site/blog/objc_reference_count/</link><guid isPermaLink="true">https://ruoye.site/blog/objc_reference_count/</guid><description>所有代码基于 objc 818.2 说到 OC 这个语言，一般都会说，OC 是 C 的超集实现，在 C 的基础上增加了 runtime 机制，使得 OC 成为一个动态语言，同时也增加了一些语言特性，比如增加了类的概念，同时也增加了一些内存管理方面的功能。 而对于内存管理，一般就是指 OC 的对象引用计数，这中间又分为两种，MRC（手动引用计数）、ARC（自动…</description><pubDate>Tue, 03 Aug 2021 14:00:00 GMT</pubDate><category>iOS</category></item><item><title>Flutter 异步机制：microtask</title><link>https://ruoye.site/blog/flutter-microtask/</link><guid isPermaLink="true">https://ruoye.site/blog/flutter-microtask/</guid><description>本文与 Flutter 异步机制：Future 比较相关，如有需要，可以先看下关于 future 的介绍（主要是发送任务、接受任务部分）。 之前说到 Flutter 中与异步相关的 Future，了解到，dart 是一个单线程模型的语言，当我们使用 Future 去实现一个异步操作时，多半是利用单线程的事件循环机制来模拟，类似于 Android 中的 Loo…</description><pubDate>Sat, 10 Apr 2021 13:00:00 GMT</pubDate><category>flutter</category></item><item><title>bash 下一次执行 cd 报错问题排查</title><link>https://ruoye.site/blog/shell-bash-rvm-cd/</link><guid isPermaLink="true">https://ruoye.site/blog/shell-bash-rvm-cd/</guid><description>背景就是，最近有遇到，在 bash 下，加载了 rvm 后，设置了 set e（这个命令就是，shell 遇到命令执行错误的时候会自动退出） ，然后执行 cd 到一个目录下，竟发生了神奇的一幕，shell 退出了。不甘心的我，继续设置了 set x（shell 调试用，会打印每一个执行的命令），再执行 cd，竟发现 cd 被 hook 了，变成了一大串不知名…</description><pubDate>Tue, 30 Mar 2021 16:00:00 GMT</pubDate><category>shell</category></item><item><title>算法分析：Valid Triangle Number</title><link>https://ruoye.site/blog/algorithm-valid_triangle_number/</link><guid isPermaLink="true">https://ruoye.site/blog/algorithm-valid_triangle_number/</guid><description>最近参与了一些面试工作，于是想着从 LeetCode 上找一些备选的算法题目，用于测试面试者的算法能力，本着希望一个算法既能够让面试者可以通过通俗的方式解决，不至于太过打击其信心，又不至于太过简单或太过常见，无法判断出面试者对于算法问题的思考这种心态，发现了一个不错的题目，即使标题上已经说了的，Valid Triangle Number，这个题目可以认为是 …</description><pubDate>Sat, 27 Mar 2021 11:00:00 GMT</pubDate><category>algorithm</category></item><item><title>Flutter 滑动体系</title><link>https://ruoye.site/blog/flutter-scroll/</link><guid isPermaLink="true">https://ruoye.site/blog/flutter-scroll/</guid><description>ScrollView 可滑动视图的父类，ListView，CustomScrollView 和 GridView 都是它的子类，它们通过实现 buildSlivers 函数为 ScrollView 提供子视图，同时将 ScrollController，ScrollPhysics，ViewportBuilder 和 children 等传递给 Scrollab…</description><pubDate>Sat, 31 Oct 2020 16:00:00 GMT</pubDate><category>flutter</category></item></channel></rss>