晋升系列4:学习方法
每一个成功的人,都是从底层开始打怪,不断的总结经验,一步一步打上来的。在这个过程中需要坚持、总结方法论。
对一件事情长久坚持的人其实比较少,在坚持的人中,不断的总结优化的更少,所以最终达到高级别的人非常少。对于普通人而言,只要肯不断的坚持,已经能够在某个领域(公司、学校)崭露头角了。
特别喜欢王国维《人间词话》提出的治学方法:古今之成大事业、大学问者,必经过三种之境界
- “昨夜西风凋碧树,独上高楼,望尽天涯路” 此第一境也;
- 做学问成大事业者,首先要有执着的追求,登高望远,瞰察路径,明确目标与方向,了解事物的概貌;也要能够忍受的了孤独寂寞
- “ 衣带渐宽终不悔,为伊消得人憔悴” 此第二境也;
- 以此两句来比喻成大事业、大学问者,不是轻而易举,随便可得的,必须坚定不移,经过一番辛勤劳动,废寝忘食,孜孜以求,直至人瘦带宽也不后悔
- “ 众里寻他千百度,蓦然回首,那人却在,灯火阑珊处”此第三境也;
- 做学问、成大事业者,要达到第三境界,必须有专注的精神,反复追寻、研究,下足功夫,自然会豁然贯通,有所发现,有所发明,就能够从必然王国进入自由王国
一、学习方法大纲
- **时间从哪里来?**如果没有足够的时间投入,再好的理论也只是纸上谈兵。
- 尊重10000 小时定律,用海绵学习法找时间
- **学什么?**找到正确的学习方向,明确了学习的目标,才能做到有的放矢。
- 用三段分解法,将 10000 小时逐级分解,最终落实到可以实施的各项学习行动。
- **怎么学?**不同的学习目的应该有不同的学习方法,保证学习的投入产出比。
- 链式学习法:适合提升技术深度,通过自顶向下逐步深入的方式,将关联技术逐一掌握。
- 比较学习法:适合提升技术宽度,通过比较相似的知识或者技能,全面掌握单个领域的技术。
- 环式学习法:适合提升技术广度,通过学习业务闭环流程中相关技术,全面掌握多个领域的技术。
- **怎么保证学习效果?**如何解决“学了用不上,学了就忘”两个常见影响学习效果的问题。
-
Play 学习法:可以用来解决工作中暂时没有实践机会的问题,学以致“玩”,通过“玩耍”的方式来应用。
-
Teach 学习法:可以用来解决学得不深的问题,教学相长,通过“教学”的方式来加深理解。
二、时间从哪里来?
2.1时间的重要性
-
成为某个领域的专家,需要花费 10 年时间。
-
5000 + 5000 不等于 10000。10000 小时定律所说的“成功”或者“成为专家”,是指在某一个领域,而不是所有领域一通百通。所以专业聚焦对于 10000 小时定律的落地非常关键。看看自己所在的领域是哪个?

-
工作时间外也要主动提升。10000 个小时相当于连续 10 年平均每天投入 3 个小时,但重复的工作不算,要算有效提升时间。原因在于,工作中的很多时间都是在做一些重复的事情,只是让已经掌握的技能变得更熟练而已,边际效益是越来越低的。除了上班时间外,尽量保证每天能够有 1 个小时的主动提升时间。
2.2海绵学习法
鲁迅的名言——“时间就像海绵里的水,只要愿意挤,总还是有的。”海绵学习法的关键就是“挤时间”。它既不需要我们放弃所有的休闲娱乐,也不需要在累成狗的时候强行“打鸡血”逼着自己去学,而是让我们通过长期坚持的方式,达到“积少成多、聚沙成塔”的效果。
可以按照自己的情况,早起30分钟、通勤的时候学习、上班的前30分钟、睡前30分钟、周末找2个小时用来学习。
2.3一些感想
感觉很多事情都是相通的。
论语:“达巷党人曰:“大哉孔子!博学而无所成名。”子闻之,谓门弟子曰:“吾何执?执御乎?执射乎?吾执御矣。”
达巷这个地方有人说:“孔子真伟大啊!他学问渊博,因而不能以某一方面的专长来称赞他。”孔子听说了,对他的学生说:“我要专长于哪个方面呢?驾车呢?还是射箭呢?我还是驾车吧。”
孔子为什么这么回答?因为孔子怕弟子「专骛为博学」,好高骛远,不脚踏实地从一门学起,不能专精就不能成就。要学,一定要一门深入,一门学透了,再学第二门,这个是学的方法,否则终无所能,学不成。
对于海绵学习法,其实我一般也是通勤的时候看书、早晨到了公司看会、中午午休前看一下、睡前看一会、周末看一会,这样每年能看七八本书、写几十篇文章。其实30分钟,能看好多页,一本书,很快就能看完。而且我比较喜欢这种学习方法,我发现让我持续长时间看书反而效果不好,记不太住,相反单独拎出来的这些时间我能记忆很深刻。
大家可以根据自己的具体情况设置方案,真的是聚少成多。当然,最重要的还是意志力。
三、学什么?
坚持十年达成目标很难,但坚持一两年达成一个小目标,然后十年达成大目标就要容易一点。
我们可以使用三段分解法,带你把“10 年成为大牛”这个大目标,分解成一个个可以在短期内达成的小目标。
3.1分解等级
先确定目标,然后确定为了达成目标可以分为哪些阶段。如在阿里如果想成为P9,那可以分为P5~P8好几个小目标。如果为了赚1个小目标,可以设置每年赚1000W!!!
3.2分解技能
从当前等级到达下一个等级需要哪些技能?要实现这一点需要两个前提条件
- 知道下一个等级的要求
- 知道具体对应哪些技能
这两个条件需要自己去进行搜索、咨询他人完成。其实在我们学习的过程中,可以维护一个技能树,能够更好的帮助我们了解技能范围。然后对这些技能做分解
- 分解的方法很简单,**哪里不懂补哪里!**比如你感觉自己现在的数据库水平很一般,只会写 CRUD 语句,其他的东西都不懂,那么你就专攻数据库这一部分,通过一段时间的专项提升来拿下这个技能。
- **专项提升某个技能的持续时间既不能太短,也不能太长,一般建议在 6 个月左右。**时间太短,容易陷入为了“完成任务”而去学的误区,没有真正得到有效提升。时间太长的话,其他技能就来不及提升了。
3.3分解“行动”
第二段分解之后,我们得到了 6 个月左右的技能提升目标,接下来要做的,就是通过第三段分解,将技能提升目标分解为具体要做的事情,然后按照计划执行。
那么,怎样才能提升呢?你可以上网搜索(知乎是个好地方),也可以去问有经验的朋友,把二段目标细化为 1~2 个月的三段目标。
如作者确定了“提升 Linux 水平”:
- 1.5 个月:通读《UNIX 环境高级编程》
- 1.5 个月:通读《Linux 系统编程》
- 2 个月:通读《UNIX 网络编程 卷 1》
- 1 个月:Linux 常用命令实战,包括 tcpdump、ps 和 top 等
如你想提升数据库水平
- 1.5个月:通读《MySQL技术内幕:InnoDB存储引擎》
- 1.5个月:精读《MySQL实战45讲》
- 继续提升:《高性能MySQL》、《MySQL运维内参:MySQL、Galera、Inception核心原理与最佳实践》、源码
当然,大家要是想再狠一点,可以再细分到周。
3.4一些感想
有些人不需要了解这些方法,在生活中自然就按照这个方法在做事情了。我感觉我媳妇就是这样的,会给自己立个很大的目标,然后不断拆解为子目标,然后找时间行动。她是搞量化基金的,CFA持证人蛮有含金量,她就想考。这个证需要考三次,一级一级的考。她就买了对应技能的书,每天抽时间看,一两年考一次,已经考过二级了。
我觉得可能对于很多人来说,主要是没有设立十年的目标吧,没有去细细的考虑过这个问题,这应该对应人间词话的第一重境界。
四、怎么学?
一般来说,P5/P6/P7 主要提升技术深度,P7/P8 主要提升技术宽度,P8/P9 主要提升技术广度。我们怎么提升自己的技术深度、技术宽度、技术广度?
技术宽度和技术广度有点容易误解,宽度是相同领域的,如redis和memcache、mysql和mongodb等。技术广度是跨领域的,如前端、后端等。
4.1提升技术深度
最好使用链式学习法。所谓“链式学习法”,顾名思义,就是学习的过程好像从水里拉起一根链条,拉出一环后面又接着一环,最后将整个链条全部拉出来。
其实在面试和晋升的时候都会遇到,从一个问题开始,不断的往下问,看看这个人学到了什么程度。
链式学习法能够促使我们主动提升,还能将知识和体系系统化。
- 明确一项技术的深度可以分为哪些层。
第一种是自顶向下、层层关联,打通一项技术的领域分层。
第二种是由表及里、层层深入,打通一项技术的细节分层。


- 明确你自己要学到哪一层。学得太浅,达不到提升深度的目的;学得太深,又会耗费太多的时间和精力。按照自己的当前情况学习。
- 明确每一层应该怎么学。总的原则是,在上层投入更多时间,更关注细节和熟练使用,在下层投入相对少的时间,更加关注原理和简单应用。
4.2提升技术宽度
最好使用比较学习法。所谓比较学习法,就是横向比较同一个领域中类似的技术,梳理它们异同,分析它们各自的优缺点和适用场景。
可以回答Why的问题,如为什么用redis不用memcache。
比较学习法能够学得快、学的全、学的深。
比较学习法的具体操作步骤如下:
-
先用链式学习法掌握某个领域的一项技术,将这个领域的关键技术点整理成表格。
-
基于整理好的技术点,学习这个领域的另一项技术,将它们在技术点上的差异整理成思维导图。
-
找出差异较大的技术点,将背后的原理和对应用场景的影响整理成表格。
以redis和memcache为例



4.3提升技术广度
最好使用环式学习法。所谓环式学习法,就是构建一个完整的闭环过程,将多个领域的“鱼”一网打尽。
技术上常见的闭环是功能环,代表某个功能的处理过程。环式学习法更加适合业务系统相关的技术人员

- 就是把闭环画出来。具体的画法是将完整的闭环分为几个关键的环节,然后标出每个环节的关键内容。
- 就是由近及远,逐步攻克闭环上的各个节点。根据自己的情况,选择合适的学习顺序。
环式学习法能够培养全局视野、避免盲目的广撒网却捞不到鱼。
4.4一些感想
自己写了好多文章,应该按照链式学习法、比较学习法、环式学习法给系统梳理一下,把点变成线、线变成面。
五、怎么保证学习效果?
大家经常会遇到学了就忘的情况。
5.1Play学习法
从科学学习的角度来看,学以致用的效果是最好的,光学不练学得不深,时间一长可能就忘记了。
所谓 Play 学习法,就是**通过模拟实践中的场景来进行学习和训练。**Play 学习法就是主动创造 Do 的机会来提升自己对新技能的理解和记忆。
它的做法比较简单,主要分为三个步骤:
- 按照链式学习法的方式学习某项技术。
- 列举常见的场景,搭建模拟场景。
- 在模拟场景进行测试、体验和练习。

比如为了验证 ZooKeeper 的集群选举功能,模拟的时候可以采取拔网线、直接杀进程、删除存储文件等各种非常规的手段。
5.2Tech学习法
很多人都有类似的经历:自己学习某项技术的时候感觉学的差不多了,甚至都已经在工作中具体实践了,但是一旦跟别人讨论,或者在晋升的时候面对评委的提问,又会感觉很多东西都没有完全掌握。这种现象背后的原因是,每个人的知识和技能都是有一定局限性的,不同的人理解会不一样,关注点会不一样,所以在讨论或者 PK 的时候自然会遇到各种各样的问题。就算你有实践机会,也不太可能一两次就把一项技术相关的知识全部用到,总会有认知的盲区存在。
所谓 Teach 学习法,就是通过教别人来提升自己。

Teach 学习法包括两种形式,写作和培训。
- 写作能帮我们系统的整理技术体系。确实是这样的,写的时候,得思考整体的结构是怎样的。
- 写作有助于了解细节。确实是这样的,写的时候,经常会发现这个地方好像不太懂或者这个地方有问题,需要查一下。
- 培训需要写培训材料,能够锻炼总结、归纳、提炼的能力;让我们在有限时间内讲清楚一个主题,会强迫我们思考和主题相关的各种信息和可能的问题;和听众交流,能加深理解和临场反映能力。
总结
好的学习方法确实事半功倍,感觉自己以前花了很多时间,虽然有进步,但方法掌握的不好,进步的速度还是太慢了。好在确实是有积累的,现在需要把积累的这些内容,按照学习方法重新梳理一下。今后的学习内容,都向新的学习方法贴合。
上面这些学习方法是相辅相成的,你可以根据你当前的级别和实际工作内容,把它们组合起来使用,具体的方式如下:
第一步,无论你当前是什么级别,先用“三段分解法”来规划你的学习目标和计划。
第二步,使用“海绵学习法”来找到你可以用于学习的时间。
第三步,根据学习目标采取相应的学习方法。
- 如果你是 Java 后端 P5/P6/P7 级别,你的技术提升以技术深度为主,你可以采取“链式学习法”来学习 MySQL 以提升技术深度;
- 如果你是 P7/P8 级别,除了技术深度外,还需要提升技术宽度,你可以采取“比较学习法”来学PostgreSQL、MongoDB 和 Elasticsearch 等存储系统;
- 如果你是 P8/P9 级别,你可以采用“环式学习法”来学习跨领域的技能,比如学习 vue、小程序和人工智能等业务闭环流程涉及的技术领域;
相关文章:
晋升系列4:学习方法
每一个成功的人,都是从底层开始打怪,不断的总结经验,一步一步打上来的。在这个过程中需要坚持、总结方法论。 对一件事情长久坚持的人其实比较少,在坚持的人中,不断的总结优化的更少,所以最终达到高级别的…...
脑电波控制设备:基于典型相关分析(CCA)的脑机接口频率精准解码方法
文章目录 前言一、CCA的用途二、频率求解思路三、输入数据结构四、判断方法五、matlab实践1.数据集获取及处理2.matlab代码3.运行及结果 六、参考文献 前言 在脑机接口(BCI)领域,有SSVEP方向,中文叫做稳态视觉诱发电位,当人观看闪烁的视觉刺激…...
Android Spinner总结
文章目录 Android Spinner总结概述简单使用自定义布局自定义Adapter添加分割线源码下载 Android Spinner总结 概述 在 Android 中,Spinner 是一个下拉选择框。 简单使用 xml布局: <Spinnerandroid:id"id/spinner1"android:layout_width&…...
element-ui layout 组件源码分享
layout 布局组件源码分享,主要从以下两个方面: 1、row 组件属性。 2、col 组件属性。 一、row 组件属性。 1.1 gutter 栅栏间隔,类型为 number,默认 0。 1.2 type 布局模式,可选 flex,现代浏览器下有效…...
OBJ文件生成PCD文件(python 实现)
代码实现 将 .obj 文件转换为 .pcd(点云数据) 代码文件。 import open3d as o3d# 加载 .obj 文件 mesh o3d.io.read_triangle_mesh("bunny.obj")# 检查是否成功加载 if not mesh.has_vertices():print("无法加载 .obj 文件,…...
LinPEAS 使用最佳实践指南
在渗透测试和权限提升评估中,LinPEAS(Linux Privilege Escalation Awesome Script)是⼀个⽤来搜索类unix主机上可能的提权路径的⾃动化脚本。本文将介绍使用 LinPEAS 的最佳实践方案,并针对不同环境(如无 curl 的情况&…...
c++介绍智能指针 十二(1)
普通指针:指向内存区域的地址变量。使用普通指针容易出现一些程序错误。 如果一个指针所指向的内存区域是动态分配的,那么这个指针变量离开了所在的作用域,这块内存也不会自动销毁。动态内存不进行释放就会导致内存泄露。如果一个指针指向已…...
Vue的scoped原理是什么?
scoped的工作原理 当在 <style> 标签上使用 scoped 属性时,Vue 会为当前组件的每个元素添加一个唯一的 data-v-xxxxxx 属性,并将样式规则中的选择器修改为包含该属性的形式。 编译阶段: 在编译 .vue 文件时,Vue 的编译器…...
大白话解释 React 中高阶组件(HOC)的概念和应用场景,并实现一个简单的 HOC。
高阶组件(HOC)的概念 在 React 里,高阶组件(Higher-Order Component,简称 HOC)就像是一个“超级工厂函数”。它本身是一个函数,而且这个函数接收一个组件作为参数,然后返回一个新的…...
深入浅出C++ STL:统领STL全局
深入浅出C STL:统领STL全局 深入浅出C STL:统领STL全局github主页地址前言一、STL的前世今生1.1 什么是STL?1.2 STL版本演进 二、STL六大核心组件详解2.1 容器(Containers)容器性能对照表 2.2 算法(Algorit…...
k8s面试题总结(十五)
1.如何使用Kubernetes进行多环境部署(如开发,测试和生产环境)? 使用命名空间(namespaces): 命名空间是用于逻辑隔离和资源分组的一种方式,可以为每个环境创建单独的命名空间。 2.使…...
Appium等待机制--强制等待、隐式等待、显式等待
书接上回,Appium高级操作--其他操作-CSDN博客文章浏览阅读182次,点赞6次,收藏7次。书接上回Appium高级操作--从源码角度解析--模拟复杂手势操作-CSDN博客。https://blog.csdn.net/fantasy_4/article/details/146162851主要讲解了Appium的一些…...
Vue源码深度解析:从2.x到3.x的架构演进与核心原理剖析
Vue源码深度解析:从2.x到3.x的架构演进与核心原理剖析 一、框架演变:从Vue2到Vue3的跨越 1.1 革命性升级 Vue3的发布标志着前端框架进入新纪元,其核心改进体现在三个方面: 性能飞跃:包体积减少41%,初始…...
计算机视觉cv2入门之图像的读取,显示,与保存
在计算机视觉领域,Python的cv2库是一个不可或缺的工具,它提供了丰富的图像处理功能。作为OpenCV的Python接口,cv2使得图像处理的实现变得简单而高效。 示例图片 目录 opencv获取方式 图像基本知识 颜色空间 RGB HSV 图像格式 BMP格式 …...
前置机跟服务器的关系
在复杂的IT系统架构中,前置机与服务器的协同配合是保障业务高效、安全运行的关键。两者的关系既非简单的上下级,也非独立个体,而是通过功能分层与职责分工,构建起一套既能应对高并发压力、又能抵御安全风险的弹性体系。 在当今复…...
【Vue】el-dialog的2种封装方法(父子组件双向通信),$emit触发父事件/.sync修饰符双向绑定
🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 前言 在现代Vue.js开发中,el-dialog组件作为ElementUI库中的一个…...
CCF CSP 第30次(2023.09)(1_坐标变换_C++)(先输入再计算;边输入边计算)
CCF CSP 第30次(2023.09)(1_坐标变换_C) 题目描述:输入格式:输出格式:样例输入:样例输出:样例解释:子任务:解题思路:思路一࿰…...
【QT】事件系统入门——QEvent 基础与示例
一、事件介绍 事件是 应用程序内部或者外部产生的事情或者动作的统称 在 Qt 中使用一个对象来表示一个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候&…...
5-27 临摹大师-IP-Adapter
前言: 前一节我们主要介绍ControlNet中如何对黑白照片进行上色 主要介绍ControlNet中的IP-Adapter。这个也是一种类似的风格借鉴,类似Reference的能力。 当然IP-Adapter有两点或许可以吸引我们,一个是国人腾讯公司制作的。另一个在速度和效…...
Spring MVC面试题(一)
1.什么是Spring MVC? 全称为Model View Controller,Spring MVC是Spring的一个模块,基于MVC架构模式的一个框架 2.Spring MVC优点? 1.可用各种视图技术,不仅限于JSP 2.支持各种请求资源映射策略 3. Spring MVC工作原…...
Unity开发的抖音小游戏接入抖音开放平台中的流量主(抖音小游戏接入广告)
前言:作者在进行小游戏审核版本的过程中,碰到了下列问题,所以对这个抖音小游戏接入广告研究了下。 还有就是作者的TTSDK版本号是6.2.6,使用的Unity版本是Unity2022.3.29f1,最好和作者的两个版本号保持一致,因为我发现TTSDK旧版的很多函数在新版中就已经无法正常使用了,必…...
统一 Elastic 向量数据库与 LLM 功能,实现智能查询
作者:来自 Elastic Sunile Manjee 利用 LLM 功能进行查询解析,并使用 Elasticsearch 搜索模板,将复杂的用户请求转换为结构化的、基于模式的搜索,从而实现高精度查询结果。 想象一下,你在搜索“距离 Belongil Beach 25…...
[操作系统] 学校课程关于“静态优先级抢占式调度“作业
今天我们来分享两道题目哈, 学校弄得题目. T1: 静态优先级, 抢占式(1为高优先级) 图解: 以下是静态优先级抢占式调度的解题过程和结果: 解题思路: 优先级规则: 数值越小优先级越高。新进程到达时,若其优先级高于当前运行进程&…...
【SpringBoot】MD5加盐算法的详解
目录 一、什么是加盐算法 二、如何实现加盐算法 2.1 加盐算法代码实现 2.2 注册页面中进行密码加盐 2.3 登录页面进行加盐的解密 2.4 注册和登录 一、什么是加盐算法 加盐算法是一种用于增强密码安全性的技术。这种技术通过在密码存储过程中添加一个随机生成的盐值&…...
kotlin与MVVM结合使用总结(一)
一、Kotlin 与 MVVM 结合的核心优势 代码简洁性 数据类(data class)简化 Model 层定义,自动生成equals/hashCode/toString扩展函数简化 View 层逻辑(如点击事件扩展)lateinit/by lazy优化 ViewModel 属性初始化 异步处…...
累计完工数量达到了xxxx超过了最大可完工数量xxxx
之前解决过一次,没有记录下来,不记得发生什么事情。又浪费几个小时去分析问题。这次的经历有点痛苦,碰上多表关连数据的勾稽。分析是河南用户的非法操作造成的。没有领料记录入不了库,跨月了。财务要求删单处理。删单之后…...
飞鸟与鱼不同路
看,好美的太阳。 正是因为有人看才会觉得美,若无人问津,美又从何而来。 嘿嘿,今天提出辞去综合教研室主任一职,不想在这个管理上废时间啦~ 把时间用来考试.........用来做自己的事情,花在自己的身上&…...
若依RuoYi-Cloud-Plus微服务版(完整版)前后端部署
一.目标 在浏览器上成功登录进入 二.源码下载 后端源码:前往Gitee下载页面(https://gitee.com/dromara/RuoYi-Cloud-Plus)下载解压到工作目录。 前端源码: 前往Gitee下载页面(https://gitee.com/JavaLionLi/plus-ui)下载解压到工作目录。 文档地址&a…...
【redis】list类型:基本命令(下)
文章目录 LLENLREMLTRIMLSET阻塞版本命令BLPOP 和 BRPOP区别使用方式 命令小结内部编码 LLEN 获取 list 的长度 语法: LLEN key时间复杂度: O ( 1 ) O(1) O(1)返回值: list 长度 LREM 删除 count 个 key 中的元素 语法: LREM…...
【数据挖掘】知识蒸馏(Knowledge Distillation, KD)
1. 概念 知识蒸馏(Knowledge Distillation, KD)是一种模型压缩和知识迁移技术,旨在将大型复杂模型(称为教师模型)中的知识传递给一个较小的模型(称为学生模型),以减少计算成本&…...
