微信号:grzlwx

介绍:光荣之路官方资讯

程序员,你需要些“脑力运动”了

2015-10-08 23:10 Harmo哈莫


1 前言

最近看了一本关于记忆的书,叫《超级记忆力-图像记忆法》,看完之后发现一些有意思的东西,不敢独享,故拿出来分享一下。

参加工作以来,也不知道具体是什么时候,总会感觉自己的记忆力越来越不好,而且越来越依赖于计算机存储设备。有时候突然意识到,现在是不是离开了电子设备,自己是不是记忆能力和思考能力会急剧下降?估计答案是肯定的。这应该是自己已经严重忽视了自身大脑的锻炼的结果吧。

关于对大脑的锻炼,个人认为是非常有必要的,虽然肯定会有人反驳 “你再怎么锻炼记忆力,能比得过硬盘么?你再怎么锻炼计算能力,搞得过CPU么” 。但是这样的反驳就如 “你再怎么锻炼身体,体能可以超过起重机么?你再怎么训练跑步,你速度能超过汽车么” 。毕竟,身体和大脑是个人思想迸发出火花的最基本基础吧,这两样好了,个体才能胜任更有挑战性的工作,更高效的处理一些外部工具处理不了的事情,比如“创造性工作,逻辑思辨工作”。

广大的程序员们,一般都给的印象是:只能在键盘上虎虎生风,现实生活中,却很少有能够在语言上咄咄逼人,占据上风的,总会给人不善于言辞的感觉,可能就是因为接触计算机设备及互联网太方便了,导致“好记性不如烂笔头”的想法深入人心,一旦离开电子设备,就会在现实生活中陷入词穷的局面,所以要改变此局面和“程序员钱多事少死得早”的调侃话语,就一定要注意下面两样:

  • 锻炼身体

  • 锻炼大脑

这本书篇幅很短,主要是对一些记忆的方法论进行讲解,给大脑来一些锻炼。就像电脑一样,计算能力(CPU)和存储能力(RAM-ROM)都是必不可少的。

当然,本文的脑力锻炼并不是鼓励使用大脑却存储垃圾信息,毕竟,好钢都是要用在刀刃上的。大脑存储部分是思考部分的 最直接缓存 , 这I/O速度可绝不是电子设备能够相比的,对其进行性能提升是为了存储更多的有用信息。

2 图像记忆法示例

以下例子来自于《超级记忆力-图像记忆法》举的例子。

在某个电视节目中要叫人记忆下列东西:

  1. 风筝

  2. 铅笔

  3. 汽车

  4. 电饭锅

  5. 蜡烛

  6. 果酱

在这六样东西,你可以记得几项呢?其实你可以六样都记得而且轻而易举。只要靠着你的想象力。

你要想象,你放着风筝,风筝在天上飞,这是一个什么样的风筝呢?是一个白色的风筝。忽然有一枝铅笔,被丢了上去,把风筝刺了个大洞,于是风筝被掉了下来。而铅笔也掉了下来,砸到了一台汽车,挡风玻璃也全破了。后来,汽车只好放到一个大电饭锅里去 ,当汽车放入电饭锅时,汽车融化了,变软了。后来,你拿着一个蜡烛,敲着电饭锅,当当当的声音,非常的大声,而蜡烛,被涂上了果酱。 现在回想一下。

风筝怎么了? 被铅笔刺了个大洞。 铅笔怎么了? 砸到了汽车 汽车怎么了? 被放到电饭锅煮 电饭锅怎么了? 被蜡烛敲出声音 蜡烛怎么了? 涂上了果酱。

如果你再回想几次,就把这六项记了起来了。

这个需要记忆的内容有如下特点:

  • 是具体的物理实体

  • 有顺序之分

所以直接构造一个电影画面,运用想像力,给这些物理实体安排对应的角色,创造事件给它们制造故事关联,然后就可以很快记住了,而且基本上过很长时间都不会忘记的。

电影角色帮助记住了物理实体,发生的故事一方面为记忆物理实体提供线索,也同时在时间层次间接记住了它们的序列。

书中给出了如下的结论 [1]:

能够记得清楚又久的连结,是生动的连结,是动态的连结,是包括这个对象的属性(如果酱有粘粘的,红色的,甜甜的特性)。

好的连结,在回想时速度快,也不易忘记 [1]:

  1. 有声音的连结比没有声音好

  2. 有颜色的连结比没有颜色的好

  3. 有变形的连结比没有变形的好

  4. 动态的比静态的好

其实有些人记忆力好,表面上看来他们天资聪明,其实都是有一定的内在的你拍案叫绝的技巧的。

2015年,《最强大脑》的综艺节目里面,有一期,某个20多岁的从事核电工作的小伙-李威,从300张常人看来区分度不高的京剧脸谱中找出指定的几张出来,这种短时间快速而又精确的记忆力确实让人惊叹。但是据当事人说,他也没有什么天生神力,来自湖北黄冈的农村小伙,小时候也没有什么特殊的外界营养补充,但是考入武汉大学之后,参加了一个记忆协会,里面分享的一些科学的记忆方法,确实让人有脑力迸发出惊人的力量出来。

之后在网上有人写了一个关于这个小伙的专访 [2]

里面提到李威在核电工作当中的一些记忆的应用:

“ 我们拿核电人最熟悉的三字经来举例

  • APG:第一个A 联想Apple,苹果有很多水,所以是主给水系统;PG,谐音是屁股,所以是排污用的,所以APG是主给水连续排污系统(吃了巴豆拉稀的屁股…囧)。

  • ASG:A,同上,SG,帅哥,帅哥是用来端茶倒水伺候人的,所以是主给水辅助系统。

  • REN:R就是核岛,EN音译成”嗯“,联想抽血时,针管扎下去一般人都会嗯一声,所以是核岛取样系统。也可以EN联想为ENGLISH,核岛取样的设备都是英文操作界面。

  • L:一个直尺,联想到直尺上掺了很多电线,所以凡是L开头的,大部分是电气系统,而380V系统的正常应急的是L和K,可以组合起来,变成LK,(老K),老K是个三八,将L、K对应的电压等级记住。

知道真相后,是不发现“NB的结果表象背后也是有很朴素的方法论的”?。

[1] (1, 2) 《超级记忆力-图像记忆法》. 天津科学技术出版社
[2] 怎么评价1月30日最强大脑的李威选手的“辨变脸”项目?

计算机技术是一门应用型技术,很多计算机基础平台都是人为创建的,那么就免不了有很多规则。如果不是造轮子的人,那么对于很多基础平台,基本上是 “拿来主义” 为我所用即可。对于已经公认的结论,只需要记住即可。下面将以几个人为创建的计算机知识系统的相关概念为例子来示例记忆方法。

3 网络七层结构

3.1 网络七层图

绘制结构图+对每一层的功能的理解的记忆方法,应该是最“正统”的方式了。但是这种方式,总是无法被绝大多数人所接受,要不然现在也不会出现N多IT从业人员仍然无法一口回答出网络的七层结构是什么。

关于计算机网络的OSI模型,在wiki百科里面有介绍 [3]


这七层可以说是任何对计算机网络介绍的书里面都要遵守的整体内容结构了。在学习计算机网络的时候,无论教材有多厚,万变不离此整体结构了。

[3] Wiki:OSI model

3.2 英文记忆法

网络七层协议的英文名对应如下:

  • Application

  • Presentaion

  • Session

  • Transport

  • Network

  • Data-link

  • Physical

由上到下的英文简称是为 APSTNDP ,然后就是:

“All People Seems To Need Data Processing”,似乎所有的人都需要数据处理(的技能)

情景展开,解读如下:

在计算机技术和互联网技术迅速发展的今天,没有一点计算机的能力,真的是很难跟上时代的步伐了,所以目前的情况下看 似乎所有的人都需要数据处理 的能力了。

3.3 中文记忆法

网络七层协议的中文名对应如下:

  • 应用层

  • 表示层

  • 会话层

  • 传输层

  • 网络层

  • 数据链路层

  • 物理层

由下到上的中文简称是 “物数网传会表应”,谐音转化记忆语为: “无数网络传销会议不要回应”

编个故事就是:

随着计算机网络的发展,传销行骗的手段也跟着升级,也开始利用互联网工具了,每天微信朋友圈里面那么多号称开微店月流水几万的,可是让人红了眼啊。但是即使是这样,爸爸妈妈还是告诫我们:不要相信天下会掉下馅饼,“无数网络传销会议都不要回应” ,一旦回应了,就开始进入圈套了。

以后,一旦要用到网络的协议,就想到网络上密密麻烦的人群的的传销画面,然后旁边站着你的爸爸妈妈,跟你说:“不要(表)回应”。


虽然事件联想感觉有些牵强,但是我相信你肯定是记住OSI网络的七层结构了,而且很难忘记了。因为“网络传销的人生鼎沸,传销受害者的家破人亡,爸爸妈妈的严厉警告”场景已经刻在你脑海中了,当然如果你把自己想象成网络传销的受害者,加持主角光环,可能就真的一辈子都忘不了。

4 MongoDB数据库id

4.1 mongodb简介

在百度百科里面的介绍如下 [4]:

Mongo DB 是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式备受当前IT从业人员的青睐。Mongo DB很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象。Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作。

关于NoSql和MongoDB的详细介绍及应用,不是此处只言片语就能够说清楚的,本篇只讲对一些常用知识的记忆技巧而已。

[4] 百度百科-Mongodb

4.2 ObjectId

Mongodb设计之初就是为实现分布式的数据库系统,然后用户在创建一条Document记录的时候,如果不特意指定,系统都会为每条记录生成一个12字节的十六进制唯一码 ObjectId,为了保证此标识是独一无二的,特意做了一系列的规定。

12字节的组成图如下 [5] :

12字节的具体含义,按照官方的解释如下 [6]:

ObjectId is a 12-byte BSON type, constructed using:

  • a 4-byte value representing the seconds since the Unix epoch,(time)

  • a 3-byte machine identifier,

  • a 2-byte process id, and

  • a 3-byte counter, starting with a random value.

简单点说就是:

  • 4字节的时间戳标记 (timestamp)

  • 3字节的机器编号 (machine id)

  • 2字节的进程ID (process id)

  • 3字节的自增计数器 (increment/counter)

通过如上的规定,对于全球范围分布式产生的数据的区分度为:同一秒时刻,同一机器,同一进程,能够产生256的3次方(即:16777216)条具有不同的ID的数据。即:只要一台机器一个进程每秒能够产生不高于 1千600万条记录,mongodb就能够保证此数据具有全球唯一的ID,显然这个数字已经远远超过了目录单体机器单个进程的数据库IO能力的上限了。

基于这个准则,mongodb做分布式数据系统就有了天然的优势,有点类似于IPv6给地球上的每一粒沙子都能分配一个IP,mongodb可以给全球每一条数据记录都分配一个唯一id。

关于mongodb的ObjectId的详细介绍,英文不好的同学,有中文的博客可以推荐: MongoDB深究之ObjectId

[5] Monodb ObjectId Byte Image
[6] Monodb ObjectId


4.3 记忆方法

其实通过如上的对设计原理进行讲解和理解之后,立刻记住objectid的组成及结构不难,但是稍微过一段时间之后,恐怕就立刻会忘记了。所以必须要强化自己的记忆,就需要构造一下的电视景象场景。

根据前面的知识总结,有如下几个点需要记住:

  • 知识领域:mongodb

  • 唯一ID的位数:12位

  • objectid的12位字节分段:4323


    • Timestamp

    • Machine Id

    • Process Id

    • Increment Counter

    • 字节分段的含义:TMPIN


个人以知乎的吉祥特 刘看山 为主角,根据以上的意象来编写如下电影场景:

刘看山是一条北极狐,家在冰雪荒芜的北极地区,由于地球变暖,在他的家乡很难再见到冰山了。在他出身的时候,没有多少文化的爸爸回忆起很久很久前在家里抬头看到家门口的那座宏伟冰水的场景,便有些感伤,所以就给儿子取名 看山

转眼刘看山长大了,有天在看电视时,看到了 芒果电视台(mongodb) 举办 "营救雅典娜" 的真人秀综艺节目,简单为来说就是 “小强打黄金12宫”的通关升级游戏,他立刻就报名了,然后居然被选中了。

mongo台用专机把刘看山接到了 黄道 12 宫的神庙(temple)的山脚下,刘看山下飞机后,第一次见到山,然后大叫: “是山呃,山!(4323)” ,一副没有见过世面的样子,笑坏了剧组人员。

当然剧组人员也没有理会他,只是指了指第一宫白羊宫,说:你可以进去神庙了。小看山就这样进入了神庙(temple in:TMPIN),开启了自己的闯关升级之路。

给配一幅图吧:

上面对故事讲了那么多,其实去掉不必要的细节就是:

“mongo台” 让没见过世面的刘看山去玩“打黄金12宫”的游戏,刘看山第一次见到山,喊出了“ 4323 ”,然后进入了进入了神庙(temple in:TMPIN)

小时候看过《圣斗士星矢》动画片的,后来又看了湖南电视台的,然后再后来刷知乎喜欢上吉祥物刘看山的,这里面的梗肯定一下就出来了,记住这些东西应该也不难了吧。

5 一些彩蛋

同样的方法,可以用于对历史事件的记忆。

  • 1844年8月28日:马克思和恩格斯见面

    "1844年8月28日,马克思在凯皇咖啡馆与到访巴黎的德国社会主义者弗里德里希·恩格斯会面,开始两人深厚的友谊"

    某位历史老师上课时讲了一个虚构的场景解读为“伟大的共产主义导师,马和恩这对基友在见面时,就 一把死死(1844) 地抓住了对方,根本就拉不开”。如此生动的场景,一下就记住了他们是在1844年见面的了。

  • 1921年7月23日:中国共产主义D的成立

    可以解读为“在中国形势十分严峻的时候,一群热血知识份子,冒着 妻走儿散(7-23),骨肉分离的风险,举起手中的酒杯,大叫:‘较之国之大事,家之小事乃 一酒而已(1921) ,不足为泣’。虽豪气万千,但仍泣饮之”

    免责声明

    以上纯属于以武侠体虚构瞎编的场景(目的是为了传播我党的基本知识,宣传党的光荣革命传统,不要查我水表)。其实关键字可以更简洁,更悲壮点,但是怕查水表,就不写上了。此例子,仅供娱乐记忆,不许深究。

各位看官,应该记住了我党的成立时间了吧? 1921-7-23,还记不住的查你水表。

以前在读书的时候,老师在课堂上放过的大型电视纪录片《大国崛起》,里面有一段片头,对近现代的欧洲国家的重大历史事件的开场词:

  • 15~16世纪,西班牙和葡萄牙 开始航海地理大发现

  • 17世纪,荷兰成为世界级商业帝国

  • 1688年,英国进行工业革命

  • 1789年,法国开始大革命

  • 1871年,德国完成统一


通过如下解读:

  • 西萄荷,英法德


    • 无心插柳柳成荫

    • 无(5)心插柳(6) 柳成荫,本来为了寻找富饶的东方而进行的航海活动,却成就了两牙(西班牙和葡萄牙)的第一批世界级殖民宗主大国的地位。


    • 不靠死骑成土豪

    • 没有使用武力,没有像“ 死骑(17) -死亡骑士”这样的强势兵力出击,仅仅依靠商业头脑,荷兰人在相当长的时间内成为了世界级的商业帝国


    • 一流爸爸有机器

    • 蒸汽机开启工业先声,英国人最先进行工业革命,是现代工业国之父,真的是 一流爸爸(1688)


    • 把酒言欢闹革命

    • 法国人比较豪气浪漫,喝着美酒干革命, 一起把酒(1789) 来革命


    • 起义之后就统一

    • 德国人比较纯粹和直接,生死看淡,说干就干,直接来了 一把起义(1871) ,就统一了德国

通过一些简单的意象和故事穿插,这些重大历史事件就已经记在脑中,虽然记忆的手段很朴素,但这些就是为了今后能够引经据典时能够信手拈来。

6 总结

虽然目前计算机的运算能力和存储能力已经远不是人所能够比了,但是就像即使机械设备有很巨大的力量,人仍然需要体力锻炼一样,人也是仍然需要一定的脑力锻炼。

希望以上分享的一些方法论的技巧能够给大家后面的学习和工作都能带来一些帮助。同时希望看了本文的几个例子的同学,已经记住了这些重要的知识点,因为这也是本文的目的之一。

本文纯属娱乐,让学习变成一个好玩的事情,仅此而已,如果有和大家处事风格不一致的地方,希望能够少些争议,多些交流。


作者: Harmo哈莫
作者介绍: https://zhengwh.github.io
技术博客: http://www.cnblogs.com/beer
Email: dreamzsm@gmail.com
QQ: 1295351490
时间: 2015-10
发布方:
光荣之路


更多测试开发资讯请关注光荣之路微信公众号:gloryroadtrain



 
光荣之路 更多文章 今天晚上的 linux 公开课- Awk 编程 7月28日(今天)晚上的 linux 公开课- shell编程 8月4日(今天)晚上的 linux 公开课- shell编程 9月1日(本周一)晚8点半,光荣之路Web自动化系列基础课—javascript第二讲 推荐本好书《与机器赛跑》
猜您喜欢 小道消息预告 (12.6 晚上 10:00)—— 测试工程师需要哪些技能? PHP核心知识要点 一 使用PM2管理Node应用 CDH大数据平台搭建 还在用grep --color?教你如何快速高亮关键词