「Flutter系列⑥」跨平台交互、插件开发与发布运维 发表于 2025-10-15 分类于 跨平台框架 本文字数: 7.2k 阅读时长 ≈ 26 分钟 1. 概述可能有人刚使用 Flutter 时,会有类似疑问:“为什么我在 Flutter 里调用不了系统相机?”,“蓝牙、NFC、推送这些底层能力怎么都得靠插件?”这类问题背后,其实反映了一个事实——Flutter 并不是一个“包揽一切”的框架。它的核心职责,是负责跨平台 UI 渲染和逻辑运行,而真正和系统打交道的,仍然是 Android、iOS、Web、桌面这些原生层。 阅读全文 »
「Flutter系列⑤」性能剖析:帧、内存、启动与并发优化 发表于 2025-10-12 更新于 2025-10-15 分类于 跨平台框架 本文字数: 11k 阅读时长 ≈ 41 分钟 1. 从感知到数据驱动性能问题,往往是从“感觉”开始的。比如——滑动列表时明显掉帧、点击按钮后界面迟迟不响应、应用启动时间漫长、或突然出现 OOM(内存溢出)从而导致崩溃。这些“感知问题”是用户最先接触到的体验信号,也是性能优化的出发点。但“感觉”并不等于“原因”。一个卡顿,可能是因为主线程被阻塞,也可能是图片解码过慢,甚至只是动画过渡时 CPU 和 GPU 同时被抢占。 阅读全文 »
「Flutter系列④」路由、导航与多端协同:嵌套路由与多端差异处理 发表于 2025-10-08 更新于 2025-10-15 分类于 跨平台框架 本文字数: 7.1k 阅读时长 ≈ 26 分钟 1. 为什么要声明式导航在 Flutter 的早期开发中,我们几乎都是通过 Navigator.push() 来完成页面跳转的。这种方式直观、易上手,但当应用体量一旦变大、业务流程变复杂,命令式导航(imperative navigation)就会开始暴露出一系列问题。 阅读全文 »
「Flutter系列③」状态管理与项目架构:模块化、DI与可维护性实践 发表于 2025-10-04 更新于 2025-10-15 分类于 跨平台框架 本文字数: 11k 阅读时长 ≈ 39 分钟 1. 从“能跑”到“可扩展、可维护”平时开发中,很多开发者虽然能把视图(Widgets)按页面或组件拆成不同的文件,但业务逻辑和状态处理往往直接写在 Widget 内部,依赖 setState 或零散的单例/全局变量来管理。这种“分文件但逻辑内聚”的灵活方式虽然能在小项目里能快速迭代、方便验证想法,但不讲究长期维护,就像临时搭建的一间小屋。 阅读全文 »
「Flutter系列②」约束与布局:RenderObject、CustomPaint 与 Sliver 协议 发表于 2025-09-29 更新于 2025-10-15 分类于 跨平台框架 本文字数: 7.1k 阅读时长 ≈ 26 分钟 1. 为什么要自定义 RenderObject在 Flutter 中,我们平时开发中最常打交道的是 Widget。它们像是 UI 的“配置表”,描述界面要长什么样。但 Widget 并不真正负责绘制,它只是告诉框架“我要一个红色的方块”或者“我要一个可滚动的列表”。真正负责把这些需求落到屏幕上的,是底层的 RenderObject。 阅读全文 »
「Flutter系列①」从Widget到Layer:引擎与渲染管线解析 发表于 2025-09-25 更新于 2025-10-15 分类于 跨平台框架 本文字数: 14k 阅读时长 ≈ 52 分钟 1. 概述1.1 为什么要理解 Flutter 渲染原理可能很多人刚接触 Flutter 时,往往只关心“怎么写 Widget”。但是当项目复杂度增加,就会遇到各种疑惑:为什么页面会掉帧?为什么某个布局报错“RenderBox was not laid out”?为什么同样的动画,有的流畅,有的卡顿?这些问题的根源,几乎都藏在 Flutter 的渲染机制里。 阅读全文 »
A3C 算法原理与超级马里奥实践(下) 发表于 2025-08-29 更新于 2025-09-21 分类于 强化学习 , 深度学习 本文字数: 9k 阅读时长 ≈ 33 分钟 1. 项目背景与目标1.1 为什么选择 A3C 来玩超级马里奥?超级马里奥是一个经典的横版过关游戏,玩法是简单,但是环境比较复杂:玩家要面对敌人、陷阱、跳跃平台,还要在有限时间内快速决策。所以在强化学习中,它被认为是一个很好的 实验case: 状态空间是高维的(游戏画面本身就是像素矩阵) 行动结果对未来奖励有长远影响(跳跃错过管道可能直接失败) 游戏场景变化多端,能充分考察智能体的泛化能力 阅读全文 »
A3C 算法原理与超级马里奥实践(上) 发表于 2025-08-22 更新于 2025-09-21 分类于 强化学习 , 深度学习 本文字数: 5.4k 阅读时长 ≈ 20 分钟 1. AC 算法1.1 策略梯度在强化学习中,如果我们想让智能体学会这样一个 策略(在不同状态下选什么动作): 一个动作能带来高奖励,就要让它以后更可能被选上 一个动作只能带来低回报,就要减少使用它的频率 而策略梯度就是一个这样的工具,“根据奖励信号,调整策略参数,让好动作更可能被选中,坏动作少被选上。” 阅读全文 »
DQN(Deep Q-Network)系列算法解析与实践 发表于 2025-08-14 更新于 2025-09-21 分类于 强化学习 , 深度学习 本文字数: 7.4k 阅读时长 ≈ 27 分钟 1. 任务与背景介绍在 Gym/Gymnasium 的 MountainCar-v0 环境中,有这样一个场景:一辆小车被困在两个山坡之间,目标是到达右侧山坡顶端的红旗位置。 乍一看,这似乎只需要踩油门往右冲就行,但现实并非如此,小车的发动机动力不足,单次加速无法直接登顶,它会在半途滑落回谷底。正确的策略是先向左加速爬上左坡,然后顺势向右冲下去,再反复摆动、积累动能,最终才能冲上右侧山顶。 阅读全文 »
PPO算法在连续与离散动作空间中的案例实践 发表于 2025-07-30 更新于 2025-09-21 分类于 强化学习 , 深度学习 本文字数: 9k 阅读时长 ≈ 33 分钟 1.PPO算法与动作空间类型概览1.PPO(Proximal Policy Optimization)简介PPO(近端策略优化)是OpenAI于2017年提出的强化学习算法,通过创新的”剪切目标函数”设计,在保证训练稳定性的同时实现高效策略优化。其核心思想是通过约束策略更新幅度,防止策略突变导致的性能崩溃,解决了传统策略梯度方法(如TRPO)的工程实现复杂性问题。 阅读全文 »