程序員,你須要些「腦力運動」了

程序員,你須要些「腦力運動」了

[讀書筆記]開發你的大腦--圖像記憶法

1   前言

最近看了一本關於記憶的書,叫《超級記憶力-圖像記憶法》,看完以後發現一些有意思的東西,不敢獨享,故拿出來分享一下。html

參加工做以來,也不知道具體是何時,總會感受本身的記憶力愈來愈很差,並且愈來愈依賴於計算機存儲設備。有時候忽然意識到,如今是否是離開了電子設備,本身是否是記憶能力和思考能力會急劇降低?估計答案是確定的。這應該是本身已經嚴重忽視了自身大腦的鍛鍊的結果吧。java

關於對大腦的鍛鍊,我的認爲是很是有必要的,雖然確定會有人反駁 「你再怎麼鍛鍊記憶力,能比得過硬盤麼?你再怎麼鍛鍊計算能力,搞得過CPU麼」 。可是這樣的反駁就如 「你再怎麼鍛鍊身體,體能能夠超過起重機麼?你再怎麼訓練跑步,你速度能超過汽車麼」 。畢竟,身體和大腦是我的思想迸發出火花的最基本基礎吧,這兩樣好了,個體才能勝任更有挑戰性的工做,更高效的處理一些外部工具處理不了的事情,好比「創造性工做,邏輯思辨工做」。git

廣大的程序員們,通常都給的印象是:只能在鍵盤上虎虎生風,現實生活中,卻不多有可以在語言上咄咄逼人,佔據上風的,總會給人不善於言辭的感受,可能就是由於接觸計算機設備及互聯網太方便了,致使「好記性不如爛筆頭」的想法深刻人心,一旦離開電子設備,就會在現實生活中陷入詞窮的局面,因此要改變此局面和「程序員錢多事少死得早」的調侃話語,就必定要注意下面兩樣:程序員

  • 鍛鍊身體
  • 鍛鍊大腦

這本書篇幅很短,主要是對一些記憶的方法論進行講解,給大腦來一些鍛鍊。就像電腦同樣,計算能力(CPU)和存儲能力(RAM-ROM)都是必不可少的。github

固然,本文的腦力鍛鍊並非鼓勵使用大腦卻存儲垃圾信息,畢竟,好鋼都是要用在刀刃上的。大腦存儲部分是思考部分的 最直接緩存 , 這I/O速度可毫不是電子設備可以相比的,對其進行性能提高是爲了存儲更多的有用信息。mongodb

2   圖像記憶法示例

如下例子來自於《超級記憶力-圖像記憶法》舉的例子。數據庫

在某個電視節目中要叫人記憶下列東西:api

  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] (12) 《超級記憶力-圖像記憶法》. 天津科學技術出版社
[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

  • 字節分段的含義:TMPIN
    • Timestamp
    • Machine Id
    • Process Id
    • Increment Counter

我的以知乎的吉祥特 劉看山 爲主角,根據以上的意象來編寫以下電影場景:

劉看山是一條北極狐,家在冰雪荒蕪的北極地區,因爲地球變暖,在他的家鄉很難再見到冰山了。在他出身的時候,沒有多少文化的爸爸回憶起好久好久前在家裏擡頭看到家門口的那座宏偉冰水的場景,便有些感傷,因此就給兒子取名 看山

轉眼劉看山長大了,有天在看電視時,看到了 芒果電視臺(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
版權聲明: 歡迎以學習交流爲目的讀者隨意轉載,可是請 【註明出處】
支持本文: 若是文章對您有啓發,能夠點擊博客右下角的按鈕進行 【推薦】
相關文章
相關標籤/搜索