- 想转型 Agent 研发,不知道怎么系统学习怎么办?3 赞 · 3 评论
- #每天一个知识点#
**Material 3(Material You)** 是 Google 设计系统的演进版,核心原则为**个性化、自适应与表现力**:界面从用户壁纸提取主题色,随屏幕尺寸灵活重组,并通过形状与动效传递情感。其最具革命性的特性是**动态取色**:算法基于 HCT 颜色空间,从单一壁纸种子色生成明暗两套完整方案,自动保障对比度与无障碍要求。与此同时,M3 用**语义角色**取代硬编码色值,组件只引用 `primary`、`onSurface`、`surfaceContainer` 等约 26 个角色名,换主题时无需改动组件代码。**色调表面**替代重阴影:层级越高,表面越向主色靠拢,以色彩而非投影表达深度。形状上,按钮默认为全圆角,卡片可用 12dp、对话框可用 28dp 等令牌化圆角;动效则引入弹簧物理,使交互更具“活性”。最简代码示例如下。
**Compose 示例**:
```kotlin
FilledButton(onClick = { /* 提交 */ }) { Text("提交") }
ExtendedFloatingActionButton(
onClick = { /* 新建 */ },
icon = { Icon(Icons.Default.Add, null) },
text = { Text("新建项目") }
)
```
**解读**:`FilledButton` 承担当前上下文的主操作(如提交),而 `ExtendedFloatingActionButton` 专用于“创建新事物”,二者在 M3 强调层级中位置不同,不可混用。更关键的是,组件颜色全部来自 `MaterialTheme.colorScheme` 的角色,不出现 `#FF6200` 这类字面色值——这正是 M3 将设计系统从“皮肤”升级为“语义框架”的实质:品牌色、动态壁纸、明暗模式都只是角色解析的不同输入,视觉一致性由角色关系保证,而非由固定像素保证。2 赞 · 1 评论 - 你以为 MyBatis 一直都是这样?带你看看它改名前的“老祖宗”—— iBATIS 2.3.4。
刚从一套 2010 年的电信系统里扒出来的持久层:
Maven 坐标是 org.apache.ibatis,但包名还是 com.ibatis;
307 个存储过程调用,全靠 HashMap 传参,问号数量、参数顺序、Map 的 key 三处必须靠手工对齐,错一个直接运行时报错;
游标结果集得自己写 TypeHandler,用 CachedRowSet 全量读进内存;
四个 SqlMapClient 解析同一份 XML,但事务管理器只认一个数据源。
没有 Mapper 接口,没有注解,一切全靠 XML。这份极其硬核的持久层考古报告,带你看懂十多年前的底层设计5 赞 · 2 评论