编程进阶网 编程进阶网
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接

杨充

专注编程 · 终身学习者
首页
  • 在线工具
  • JSON工具
  • 文本工具
  • 图片处理
  • 文档转化
  • 代码压缩
  • 加解密
  • 时间日期
  • 网络工具
  • 颜色设计
  • 二维码
  • 开发实用
  • 计算机组成原理
  • 操作系统原理
  • 网络协议原理
  • 数据库系统原理
  • 序卷导读
  • 数据本质
  • 运行模型
  • 并发设计
  • 内存真相
  • 交互系统
  • 面向对象
  • 设计原则
  • 设计模式
  • 系统架构
  • 体系建设
  • 代码品质
  • 方案设计
  • 稳定可靠
  • 工程运维
  • 性能优化
  • 数据结构导论
  • 线性结构详解
  • 树哈希结构论
  • 容器设计实战
  • 经典算法思想
  • 工程案例剖析
  • 算法题库精练
  • C语言入门
  • C综合案例
  • C专栏博客
  • C标准集库
  • C++入门教程
  • C++综合案例
  • C++专栏博客
  • C++编程技巧
  • Java入门教程
  • Java综合案例
  • Java专栏博客
  • Go入门教程
  • Go综合案例
  • Go专栏博客
  • Go开发技巧
  • JavaScript入门
  • JavaScript案例
  • JavaScript高级
  • Android库解读
  • Android专栏
  • iOS ObjC入门
  • iOS Swift入门
  • iOS入门精通
  • Web之Html手册
  • Web之TypeScript
  • Web之Vue高级进阶
  • Linux之QML入门
  • Linux之QT核心库
  • Python教程
  • Shell&Bash教程
  • 工具脚本
  • 自动化脚本
  • 质量保障
  • 产品思考
  • 软实力
  • 开发流程
  • Git应用
  • 技术模版
  • 技术规范
  • Markdown
  • Mermaid
  • 开源协议
  • 毛选解读
  • 自我精进
  • 关于我
  • 自我精进
  • 职场管理
  • 职场面试
  • 心情杂货
  • 友情链接
  • 毛选选集解读

  • 小人物的进修

    • 全书快速指引
    • 学习的七大原则
    • 需求层次的模型
    • 一起来做个练习
    • 要带上技能地图
    • 经营好自我公司
    • 信息过载怎么办
    • 体系思维很重要
    • 构建知识的体系
    • 闭环思维的逻辑
    • 宏观学习的方法
    • 用海绵法找时间
    • 三段分解学什么
    • 链式和环式思考
      • 01.看一个真实案例
      • 02.让学习有针对性
      • 03.链式学习法介绍
      • 04.链式学习法步骤
      • 05.链式学习法优点
      • 06.比较学习法介绍
      • 07.比较学习法步骤
      • 08.比较学习法优点
      • 09.环式学习法介绍
      • 10.环式学习法步骤
      • 11.环式学习法优点
      • 12.后来发生的改变
      • 13.今天起改变三点
      • 14.课后作业思考下
    • 玩和教保证效果
    • 学习方法论沉淀
    • 以结果导向计划
    • 目标设立和管理
    • 分解目标要明确
    • 计划的落地策略
    • 结果的检查改进
    • 掌握些做事方法
    • 高效成长方法论
    • OKR目标规划法
    • SMART目标设定
    • SWOT分析方法论
    • MECE分析法则
    • 二八法则的运用
    • 三种方案设计法
    • RACI责任矩阵法
    • Pdca执行方法
    • 番茄工作法实践
    • 六顶思考帽方法
    • 金字塔汇报方法
    • STAR摸底分析法
    • 五步问题处理法
    • 五问根因分析法
    • 鱼骨图分析方法
    • 四维度总结分析
    • 阶段复盘方法论
    • 生命线分享游戏
    • 语言底蕴的提升
    • 阅读的持续提升
    • 理解能力的锻炼
    • 沟通能力的演进
    • 演示幻灯片提升
    • 学会高效地提问
    • 公众演讲的提升
    • 做好技术的演讲
    • 专注能力的提升
    • 自我自控的调节
    • 感知能力的提升
    • 记忆能力的训练
    • 质疑精神的分析
    • 思考能力的提升
    • 情商能力的学习
    • 写给平凡的你
    • 十年回望后记
    • 方法速查卡片
    • 刻意练习手册
  • 书籍
  • 小人物的进修
杨充
2019-01-27
目录

链式和环式思考

# 3.4链式和环式思考

# 目录介绍

  • 01.看一个真实案例
  • 02.让学习有针对性
  • 03.链式学习法介绍
  • 04.链式学习法步骤
  • 05.链式学习法优点
  • 06.比较学习法介绍
  • 07.比较学习法步骤
  • 08.比较学习法优点
  • 09.环式学习法介绍
  • 10.环式学习法步骤
  • 11.环式学习法优点
  • 12.后来发生的改变
  • 13.今天起改变三点
  • 14.课后作业思考下

# 01.看一个真实案例

转 P6 那一年,我被拉去做一个跨端 SDK 的方案评审。我在 PPT 上写了一行字:"网络层使用 OkHttp",自我感觉很妥。结果架构师老张抬头看了我一眼:

"为什么用 OkHttp,不用 HttpURLConnection?也不用 Retrofit?还有它和底层的 Socket 之间是什么关系?"

我"嗯"了一下,开始解释 OkHttp 是怎么"好用"。老张又问:"那它的连接池怎么管理?复用机制是什么?拦截器链是怎么走的?为什么默认有 Bridge / Cache / Connect 这几个内置拦截器?"

我额头开始冒汗。我会用 OkHttp,但完全说不出"为什么是这样"。会议室一片安静,老张把我那页 PPT 翻过去,留了一句话:

"你只是会用。'会用' 不是技术,'懂为什么这么用' 才是技术。"

那天我回工位红着脸坐了一下午,第一次意识到——会调一个 API 跟"掌握一个技术"中间,还隔着一整套'链式思考'。

第二天我请老张喝咖啡,他在餐巾纸上画了三层东西:

1.链式(深度):拽起一个技术,把上下游全都拽出来——OkHttp → Socket → TCP → 三次握手 → 内核 buffer。

2.比较(宽度):和它"长得像"的横向比一遍——OkHttp vs HttpURLConnection vs Retrofit + 各自适用场景。

3.环式(广度):把它放到一个完整业务闭环里——用户点"下单" → 网络层发请求 → 网关 → 服务端 → DB → 回包渲染。

他说:"中级钻链式(往深里钻),高级钻比较(横向看清行业方案),专家钻环式(看全局)。三种都不是互斥的,但用错阶段就等于白用**。**

那次之后,我才真正开始按这三种方法重新组织自己的学习。下面这套链式 + 比较 + 环式的组合拳,就是我从"会用"过渡到"懂为什么"的关键。

# 02.让学习有针对性

一般来说,中级人员主要提升技术深度,高级主要提升技术宽度,专家级主要提升技术广度。

级别 提升维度 推荐学习法 核心目标
中级人员 技术深度 链式学习法 在一个方向上打透,达到精通
高级人员 技术宽度 比较学习法 掌握同领域多种技术的异同
专家级别 技术广度 环式学习法 构建跨领域的完整技术闭环

关键点在于:不要在错误的阶段追求错误的维度。初中级就去追求广度,结果什么都会一点但什么都不精;高级还在埋头钻深度,却忽略了横向对比和全局视野。

这三种方法不是替代关系,而是接力关系——链式法把你"拔深"、比较法把你"拔宽"、环式法把你"拔高"。理想的成长曲线是:先深、再宽、再广。深度不够直接堆宽度,知识就会像浮萍一样飘着;宽度不够直接看全局,又会变成纸上谈兵的"PPT 架构师"。

# 03.链式学习法介绍

面对"打破砂锅问到底"的方式,如果没有充足的准备,你很可能会卡住。

所谓"链式学习法",顾名思义,就是学习的过程好像从水里拉起一根链条,拉出一环后面又接着一环,最后将整个链条全部拉出来。当知识联结成锁链,环环相扣,你对技术的理解就很透彻,别人问到底,你就能答到底。

知识的锁链不是胡乱连接的,环环相扣的方式很有讲究。常见的方式有两种:第一种是自顶向下、层层关联,打通一项技术的领域分层。第二种是由表及里、层层深入,打通一项技术的细节分层。

1.比如:网络优化,先解析域名,然后建立连接,然后发送请求,然后接受请求,然后解析数据,最后渲染到页面。了解了每一步细节,然后才能知道从哪里优化。

2.比如:以网络编程为例,从接口设计,设计原理,设计方案,设计代码等层级去分析学习,也可以打通细节知识点。

# 04.链式学习法步骤

第一步,就是要明确一项技术的深度可以分为哪些层。具体来说,就是画出"领域分层图"和"细节分层图"。一开始你可能会觉得画不出来,这恰恰说明你对深度的理解还不够,而尝试画图本身就是一个梳理结构、强化认知的过程。

第二步,你自己要学到哪一层。学得太浅,达不到提升深度的目的;学得太深,又会耗费太多的时间和精力。一般来说,作为应用工程师,学到能解释 + 能调优 + 能定位异常这一层就足够;想成为这个方向的核心专家,再继续往下挖一层原理。

第三步,每一层应该怎么学。在领域分层图中,越往上越偏应用,实际工作中用得越多,越往下越偏原理(包括相关的工具和配置),实际工作中用得越少。所以总的原则是,在上层投入更多时间,更关注细节和熟练使用,在下层投入相对少的时间,更加关注原理和简单应用。

# 05.链式学习法优点

大部分人在实际工作中,很多技术都只接触到了领域分层图和细节分层,没有进一步地去了解。而如果采用链式学习法,你就会意识到,使用一项技术完成了工作,并不意味着你就完全掌握了这项技术。

你还需要把刚刚自己用到的技术作为切入点,画出完整的领域分层图和细节分层图,然后逐一攻破,这样才能提升深度,达到精通水平。

明确知识和技能点之间的关联关系,有助于更好的理解和应用这些知识和技能。只有使用链式学习法,你才能系统地了解到这些关联的知识和技能,以及如何将它们串起来。

链式学习法是让知识形成锁链,环环相扣,主要用来提升技术深度。链式学习法的步骤包括:明确一项技术的深度可以分为哪些层,明确要学到哪一层,明确每一层应该怎么学。链式学习法的优点有:促使我们主动提升,将知识和技能系统化。

链式学习法最容易犯的错误:一是"只画图不学习"——花大量时间画分层图,却不真正去攻克每一层的知识;二是"贪多求全"——想一次性把所有层都学透,结果每一层都浅尝辄止。正确的做法是:先集中火力攻克最靠近应用层的1-2层,用起来之后再逐步往下深入。

# 06.比较学习法介绍

提升技术宽度,最好使用比较学习法。举几个简单的例子:为什么发送微信消息要使用TCP协议而不是UDP协议?为什么移动端数据库选择SQLite而不是MySQL?为什么Android进程通信是使用Binder而不是Socket或管道?

这些问题大部分都是考察你思考、判断和决策的逻辑和过程。如果你只有技术深度而没有技术宽度,这时就会陷入窘境:单个技术细节你都很熟悉,但是却无法解释为什么用这个,而不用那个。

所谓比较学习法,就是横向比较同一个领域中类似的技术,梳理它们异同,分析它们各自的优缺点和适用场景。这种方法能帮助你建立起技术选型的判断力和决策力,而不仅仅是"会用某个技术"。

# 07.比较学习法步骤

比较学习法的具体操作步骤如下:

1.先用链式学习法掌握某个领域的一项技术,将这个领域的关键技术点整理成表格;

2.基于整理好的技术点,学习这个领域的另一项技术,将它们在技术点上的差异整理成思维导图;

3.找出差异较大的技术点,将背后的原理和对应用场景的影响整理成表格。

举个例子:比如发送消息为何 TCP 而不是 UDP?从消息安全性、数据加密、传输速度、数据完整性等维度去比较两者的区别和优劣。

类似的还有"为什么短视频的弱网传输用 UDP 而不是 TCP"、"为什么直播信令走 WebSocket 不走 HTTP"——比较学习法的精髓就是把'选择题'拆成'对比表',把感性的"我觉得这个好",变成有理有据的"在这种场景下这个更好"。

# 08.比较学习法优点

同一个领域的技术在功能上大都是类似的,区别往往在于实现方案和细节。所以当你掌握了一项技术之后,再去同一个领域的另一项技术,就不需要从0开始了,因为基础的部分你已经学会了,只要重点关注它们的差异点就能够快速掌握。

整理关键技术点和制作思维导图的过程,会促使你把一个领域的技术体系化,更全面、更系统地掌握这个领域。

从差异点到背后的原理再到应用场景的思考过程,会让你对技术的取舍之道理解得更深,在每一次技术选择时都能给出让人信服的理由。

# 09.环式学习法介绍

提升技术广度,最好使用环式学习法。很多人一听要提升广度,就以为学得越多越好,想到什么牛就学什么,看到什么热就追什么。学了一段时间,感觉学了很多,但好像啥也不会,网撒得很广,却没捞到几条鱼。所谓环式学习法,就是构建一个完整的闭环过程,将多个领域的"鱼"一网打尽。

无论什么领域,都可以采用环式学习法来学习跨领域的技术。除了功能环以外,还有很多构建闭环的思路:

闭环类型 含义 举例
功能环 一个功能涉及的所有技术环节 用户登录:前端→客户端→网络层→服务端→数据库
业务环 某个业务的完整处理步骤 电商下单:浏览→加购→支付→发货→收货
流程环 某件事情的完整处理步骤 需求开发:需求评审→设计→开发→测试→上线

# 10.环式学习法步骤

环式学习法的第一步,就是把闭环画出来。具体的画法是将完整的闭环分为几个关键的环节,然后标出每个环节的关键内容。

就拿"用户登录"这个功能环来说,它可以分为前端、客户端、网络层、机房入口、Nginx、用户中心、安全中心和数据中心,总共8个环节;每个环节又会涉及不同的技术,比如客户端涉及 JsBridge和OkHttp,用户中心涉及微服务、MySQL和Redis等,总共涉及的技术有 18 项。

通过画出完整闭环,你就能清晰地看到全貌,知道自己在哪些环节上是强项,哪些环节还需要补课。

# 11.环式学习法优点

在画出完整闭环的过程中,你可以端到端地了解全流程涉及哪些系统或者模块,每个模块的关键技术是什么,从而培养出全局的视野和能力。

全局视野是从"做事的人"晋升为"规划的人"的关键能力。当你能看到完整闭环的每个环节,你就不再只是执行者,而是可以发现瓶颈、优化流程、提出改进方案的人。这也是很多公司在晋升高级岗位时考察的核心能力之一。

环式学习法划定的范围是实际工作的闭环,能够形成一套有效的组合拳,而不是东一榔头西一棒槌的胡乱搭配,能够大大提升学习效率。所以你只要对照环来提升就可以了,不用再担心广撒网却捞不到鱼了。

链式、比较、环式三种学习法不是互斥的,它们可以组合使用。一个典型的学习路径是:先用链式法在一个技术点上打深→再用比较法横向对比同类技术→最后用环式法把这个技术放到完整闭环中理解它的位置和作用。这样你对一个技术的理解就从"深度+宽度+广度"三个维度都覆盖到了。

'会用一个技术'只是入场券;用'链式 + 比较 + 环式'三种思考方式,把'我会调用 API'升级到'我能解释为什么这么设计、为什么不那么设计、它在整个系统里站在哪个位置',才是技术成长的真正分水岭。

你应该带走的三件事

1.链式法治"空心病":会用 ≠ 懂,每次用一个技术都问自己 5 个"为什么"。

2.比较法治"选型瞎":技术选型从来不是"我觉得",而是"在 X 场景下 A 比 B 好在哪"。

3.环式法治"局部观":能看见完整闭环的人,才能从"码农"升级为"架构师"。

# 12.后来发生的改变

被老张点破之后那个周末,我闭关 2 天,把 OkHttp 自顶向下画了一张分层图:

应用层调用 → Call → Dispatcher(线程池调度) → Interceptor 链 →
RetryAndFollowUpInterceptor → BridgeInterceptor → CacheInterceptor →
ConnectInterceptor → CallServerInterceptor → Socket → TCP → 三次握手

每一层我都问自己 3 个问题:"这一层在干啥 / 为什么这么设计 / 出问题了怎么定位"。两天后我能完整复盘整个请求流程——再有人问"OkHttp 怎么管理连接池",我能从 ConnectionPool 的复用规则一口气讲到 socket 的 keep-alive。

链式打深之后,我用比较法做了一张三方对比:HttpURLConnection / OkHttp / Retrofit / Volley。每一项都按 9 个维度(拦截器、连接复用、缓存策略、HTTP/2、HTTPS、Cookie、文件上传、性能、易用性)逐项打分。

那张表后来成了组里的"网络选型公认参考"。做完之后我才知道——以前我的'选 OkHttp' 是因为'大家都用',现在我的'选 OkHttp' 是因为'在我们这个场景里它在这 5 个维度都赢'。

半年后又一次跨端 SDK 评审,老张又抛出了类似问题。这次我画了一张完整的"用户登录请求链路环式图"——从 SDK 调用一直到机房 DB 落库,每个环节我都用一句话讲清楚"这里用什么技术、为什么用、出问题怎么排查"。

讲完老张点了点头:"这才像样。" 散会后他单独走过来拍了我一下:"半年前那个面红耳赤的小伙子,长大了。"

那天我才真正意识到——链式 + 比较 + 环式这三招,其实修的不是技术,是我对"技术"这两个字的理解。

# 13.今天起改变三点

如果你是初中级开发者,优先使用链式学习法——选择一个你想深入的技术方向,从基础到原理再到实战,一环扣一环地深入下去。不要急于扩展宽度,先在一个点上打透。 今天就确定你要用链式学习法深入的那个技术方向。

选定方向后,画一张从"了解"到"精通"的学习链路图。列出每个阶段需要掌握的知识点、需要完成的实践项目和检验标准。这张图就是你接下来几个月的学习导航,有了它你就不会迷失方向。

选择你工作中涉及的两个相似技术或方案(比如两种数据库、两种框架),从多个维度进行系统对比——适用场景、优缺点、性能表现、学习曲线等。写一篇对比分析文章,这不仅能加深你的理解,还能帮你培养技术选型的判断力。

# 14.课后作业思考下

1.技术深度评估:选择你最擅长的一项技术,用"了解→掌握→熟练→精通"四个等级评估自己处于哪个阶段。如果还没到"精通",用链式学习法设计一条从当前等级到精通的学习路径,明确每个阶段需要攻克什么。

2.环式学习规划:如果你想培养全局视野,画出你工作涉及的完整业务闭环(比如从需求到上线的完整流程)。标记出每个环节你的掌握程度,找出最薄弱的2-3个环节,制定用环式学习法补齐的计划。

3.比较学习实操:选择你工作中经常用到的两个工具或技术,用比较学习法做一次系统对比。至少从5个维度进行比较,形成一份对比表格。完成后思考:通过比较,你对这两个技术的理解是否比以前更深了?

4.学习法效果对比:分别用链式学习法和你以前的学习方式,各花2周时间学习一个新知识点。2周后对比两种方式的学习效果——理解深度、记忆持久度、实际应用能力。哪种方式更适合你?

上次更新: 2026/06/28, 17:55:19
三段分解学什么
玩和教保证效果

← 三段分解学什么 玩和教保证效果→

最近更新
01
科学方法实践论法
06-28
02
辩证思维矛盾论法
06-28
03
毛选中的调查观念
06-28
更多文章>
Theme by Vdoing | Copyright © 2019-2026 杨充 | MIT License | 鄂ICP备2024073355号-1 | 鄂ICP备2024073355号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式