第091篇 Job 与 SupervisorJob:异常传播的分水岭
本文详解 Kotlin 协程中 `Job` 与 `SupervisorJob` 的核心差异:普通 `Job` 实现失败级联(子失败→父取消→兄弟全停),适用于“全有或全无”场景;`SupervisorJob` 切断级联,子失败仅限自身,需手动兜底异常,适合并行独立任务(如首页三路数据加载)。附机制原理、避坑指南与面试高频问答。
第088篇 协程入门:suspend 到底挂起了谁
本文深入解析协程本质:挂起的是协程(状态机),而非线程;线程在挂起时被释放复用。厘清`launch`/`async`/`run`差异、作用域管理、调度器选择及常见坑(如`delay` vs `Thread.sleep`、漏取消、主线程卡顿),助你真正掌握结构化并发。
第085篇 类委托 by:装饰器模式的一行实现
Kotlin类委托`by`是编译期语法糖,自动生成接口抽象方法的转发实现(如`delegate.foo()`),零反射、零运行时开销。但仅支持接口/抽象方法,不委托`Any`三方法、具体类方法及Java默认方法;委托对象天然共享状态,需注意隔离与可变性边界。
第084篇 委托属性与 Delegates:属性系统的深水区
Kotlin委托属性是优雅却常被忽视的特性:编译器将属性读写自动转发至`getValue`/`setValue`方法。本文深入剖析其核心机制,详解`by lazy`、`notNull`、`observable`三大标准委托,并直击Android开发中委托导致内存泄漏、线程不安全等典型坑点与解法。
第083篇 作用域函数五兄弟:let、run、with、apply、also
Kotlin五大作用域函数(`let`/`run`/`with`/`apply`/`also`)本质由两个维度决定:**对象传入方式**(参数`it` vs 接收者`this`)和**返回值类型**(原对象 vs lambda结果)。理解定义即可推导行为,无需死记硬背。`apply`适合配置,`also`专用于链式副作用,`let`/`run`用于变换,`with`是非扩展函数,语义等价`run`。所有函数均为`inline`,需注意`return`语义。
第081篇 inline 内联函数:高阶函数零开销的秘密
`inline` 本质是编译期函数体展开,消除 Lambda 分配与虚调用,但带来字节码膨胀与方法数增长。需权衡收益:仅对≤10行、纯转发、热路径的薄包装使用。`noinline`(传/存函数)、`crossinline`(禁非局部返回)、`reified`(保留泛型运行时类型)各解特定语义问题。Android 中须警惕 R8 与 dex 65536 限制。
第079篇 高阶函数:函数作为参数与返回值
本文深入解析Android开发中的高阶函数,直击面试痛点:从概念(函数作参数/返回值)到本质(控制反转与流程复用),再到工程落地(生命周期回调、异步回调、DSL作用域函数)。详解性能坑(非inline导致对象分配)、设计误(过度抽象)、内存漏(Lambda捕获this),并给出可落地的修复方案与选型判据。
下一代编程语言出炉
Mio 是一款由 C++ 实现的新兴编程语言,主打极致编译速度——大型项目编译比 C++ 快近 10 倍。语法简洁现代(支持模板、类、模块化导入、宏与条件编译),采用上下文无关 CFG 设计,语义分析阶段完成模板实例化,并基于 LLVM 生成高效代码。开源地址:github.com/mioLanguage。