没有什么困难是不能打败我的!
Vue录音模块状态机重构笔记
最近被抓去写微信小程序,按照决策者的话说,逻辑都是一样的。 这句话对了一半。 作为一个成熟的 UI 框架,支持的交互能力一定是相似的:点击、长按、滑动、双击,不论是 Android、iOS 还是小程序,最终都会落到同一套用户行为模型上。但另一半恰恰是问题所在——语言和范式,会反过来塑造你组织逻辑和状态的方式。
2025年终总结
又是一年年尾,又到了写年终总结的时候,写年终总结无非是敦促自己想想这一年做了什么,有什么进步,又有什么想做没做成的。 细想这一年变化蛮大的,生活上、工作上都是。 生活 # 生活上,最大的变化就是从小一块长大的妹妹要结婚了。我是家里的独生子,妹妹是我大大家的,她上面还有一个亲哥。想着从小总能见到的妹妹要和另一个男生一起生活,过年不能再像之前一样打麻将,心里总归有些寂寞。
Compose Compiler 深入解析:从参数注入到重组执行的 IR 变换全流程
在 Compose 编译阶段,针对 @Composable 函数,编译器主要做两件事: 一是修改方法签名(参数注入),二是修改方法实现(函数体 Lowering)。 这两个步骤是分离实现、顺序执行的,分别对应两个核心 IR Transform。 方法签名变换发生在 ComposerParamTransformer 中,负责向 Composable 函数注入 $composer、$changed、$default 等参数; 方法实现变换发生在 ComposableFunctionBodyTransformer 中,负责生成 Group、处理默认参数、实现跳过与重组逻辑。
为什么设置 clipChildren = false 可以突破父 View 边界?
设置clipChildren = false # 默认情况下,clipChildren 是 true 的。也就是说,在 ViewGroup 绘制时,子 View 超出父 ViewGroup 范围的部分会被裁剪掉。当然,这个行为是可以通过设置关闭的。 如果将 clipChildren 设置为 false,允许子 View 绘制到父容器之外,Framework 内部到底做了什么?这篇就从源码角度来捋一捋这个过程。
Android 字符串资源加载流程解析
Android 字符串资源解析全流程解析 # 说明:本文基于 Android API 36.0 和 Android Code Search(2025.12.7 最新 android-latest-release 分支)进行源码分析。 在 Android 应用中,我们常写下这样一行代码: 1 val appName = context.getString(R.string.app_name) 看起来只是取一个字符串,但这行调用实际上穿过了从 Java 层到 Native 层的完整资源解析流程。下面以 string 为例,看系统是如何一步步把资源 ID 转成最终的字符串。
C++ 学习笔记:指针与引用
指针是什么 # 在 Java 和 Kotlin 这些语言里,你不能直接操作内存地址,只需要关心生命周期,避免被生命周期更长的对象引用,进而导致内存不能释放。这是一种内存管理方案。而 C++ 则允许显式地操作内存——更具体一点,是允许直接处理指针或你手动分配的内存。Rust 又走了另一条路:归属模型。一块内存只能被一个变量拥有,其他变量想要用它必须“借”,目的是规避 C/C++ 中指针带来的野指针、悬空指针之类的问题。
从模拟信号到补码:计算机如何存储和计算数字
模电 # 总常听到计算机的世界中只有0和1这两个,现实也是这样。但是自然界中的数据通常不是这样不是0就是1这般非黑即白的。像是声音、电流等等,都是连续的。 为了能存储这些数据,就要转换成计算机的方式存储,那就是用二进制表示,怎么将连续的数值转换成二进制呢?先后经过模电(模拟电路)中的采样、量化、编码。
AAR 构建全解析:从解包到 APK 的完整生命周期
依赖里有一堆 AAR,最终 APK 里却不见它们的影子。 不是它们消失了,而是它们一进构建系统就被解包,残片分别流向: dex manifest resources.arsc assets so 下面按真实的 AGP 源码线把整个事件复盘一遍。 AAR 生命周期的起点: ExtractAarTransform # AAR 被下载后,首先交给一个类处理:
命名的艺术:从驼峰到蛇形
不同编程语言往往有不同的命名约定。Java、Python、C++ 各自形成了独特的命名文化。许多重构类书籍在讲解前都会先强调命名,因为命名绝不是一件简单的事。好的命名要能准确传达含义,让人一眼就能看出变量或函数的用途。 这些命名方式的共同目标,都是为了增强可读性——让名字更像语言,而不是符号。
函数与方法:一个容易被忽视的编程概念差异
从学习C语言接触计算机开始,我总以为函数和方法不过是两个不同的名称而已,只不过是习惯不同。直到阅读Rust语言的文档时,同时出现了"方法"和"函数"两个术语,我才意识到这其中的差异。