父母那代人很難理解我們這代人的累-從Http協議設計中學習資訊社會的智慧之一
被漫天資訊輪番轟炸的現代人
父輩們年輕時候剛改革開放,農業、工業、商業百廢俱興;他們所經歷和理解的累是在田間、在工廠、在路上,看得見感受得到,這些累大多是身體上的累,回到家便放下了,老婆孩子熱炕頭,外面再累這時候也是既放鬆又幸福的。
我們這代人的累,是處理複雜資訊和人際關係的累,是對未來迷茫與無力感的累、是腦力和精神上的累,它看不見摸不著、回到家依舊勒著你,讓你沒有片刻的寧靜,不少人還把這種情緒帶給親人,從而導致家庭問題。壓力山大、身心俱疲、焦躁無力、想逃離這一切卻又捨不得,這是很多現代人的通病。
面對爆炸的資訊和複雜的人際關係,如何處理才能使自己從容不迫和心安理得呢?我們不妨從應用最廣泛的計算機交流方式- Http協議中獲取一些思路。
一種穩定、低負擔的資訊交流處理方式Http
遺忘與放下使我們不斷重獲新生
我們在忙到焦頭爛額的時候會忘記很多事,如果一些重要的被遺漏就會造成不必要的損失。不僅人類,計算機也會因為忙而出現各種各樣的失誤,這種情況叫過載。
Http協議(一種計算機交流方式)一開始設計時候,設計者就認為作為提供服務的計算機(伺服器)肯定是非常忙的,如果讓他記住每一個跟他交流的人和內容,肯定會把伺服器也累得上氣不接下氣,過勞死。
鑑於這種情況,設計者說”乾脆這樣吧:伺服器啥事也不要去記啦,如果有一些非記不可的東東,那麼伺服器同學就拿出你的小本本記下來。” 具體情形如下:
每次客戶端同學想請伺服器同學做什麼事的時候,那就發一條資訊給他,說我是誰,想讓你做啥事(Http request)。這個事如果不需要許可權,伺服器同學就直接做好,回覆 ok 這是你要的結果;如果這個事需要許可權,那伺服器同學就去它的小本本(表單)查詢下客戶端同學給他的憑證(賬號、密碼)是否有正確,如果正確依舊幫你好好處理回覆,如果不正確,那麼不好意思,告訴你沒有許可權。事情處理完畢,伺服器同學就忘記了客戶端,也忘記跟客戶端說了什麼話,幫他做了什麼事。下次客戶端再問伺服器同學:“你還記得上次我來時候讓你幫忙做了什麼事嗎?” ,伺服器說:“不好意思,我忘記了,我這個機器人健忘什麼也記不住,你需要什麼幫助嗎?請告訴我你是誰,想要我怎麼幫助你”。
這種每次對話(一問一答)都是獨立的,有一個專業的名詞叫無狀態。Http協議一開始的設計就是一種無狀態協議。
就這樣,採用了Http協議的伺服器同學雖然健忘,但是基本不影響他的工作。由於不需要記住那麼多的人和事,他工作專注又快樂,也基本不出錯了,大多數需要伺服器幫忙的客戶端同學雖然因為伺服器記不住自己有點遺憾,但大家都是萍水相逢,他能穩定的做事,感覺還是可以的。慢慢的,客戶端同學們越來越喜歡這個忘事卻又穩重的伺服器同學。
別的伺服器們慢慢知道了,原來我們一直想記住太多,反而失去了太多。然後全世界的伺服器都紛紛效仿這種工作交流方式,Http協議迅速流行起來。
拿好我給你的信物,你就是我的小甜心-cookie
伺服器同學們遵循Http規則進行交流工作,雖然他們總是一轉眼就忘記了跟誰在說話,但是他們感到輕鬆且很少出問題,慢慢的大家就習以為常了,甚至一個叫小紅的客戶端和伺服器小明同學談起了戀愛:
小紅:“小明小明,我是小紅,身份證號碼是411302200198283 我家住在黃土高坡,我爸爸叫黑土,我媽媽白雲(相當於賬戶,密碼),幫我選一件順手的鍵盤”
小明拿出小本本,核對小紅資訊,哦!她是我女朋友呀,立馬幫她選好鍵盤型號後記在小本本上(硬碟資料庫),並且回覆:“小紅、選好的鍵盤型號是多少,我也記下來了”
小紅:“小明小明,我是小紅,身份證號碼是411302200198283 我家住在黃土高坡,我爸爸叫黑土,我媽媽白雲(相當於賬戶,密碼),幫我選一個好滑鼠”
小明拿出小本本,核對小紅資訊,哦!她是我女朋友呀,立馬幫她選好滑鼠型號記在小本本上,並且回覆:“小紅、選好了 滑鼠型號是多少,我也記下來了”
小紅:“小明小明,我是小紅,身份證號碼是411302200198283 我家住在黃土高坡,我爸爸叫黑土,我媽媽白雲(相當於賬戶,密碼),你剛才幫我選好的那滑鼠和鍵盤幫我買下來,再快遞給我吧”
小明拿出小本本,核對小紅資訊, 核對成功,哦!她是我女朋友呀,然後再查小本本和小紅的聊天記錄,哦!我三分鐘前幫她選過滑鼠和鍵盤,找到買家 -付錢買下來- 快遞給小紅,把過程依舊記錄在小本本上,還有快遞單號也記在小本本上,並且回覆:“小紅、選好了,買好了寄給你了快遞單號是13579,請注意查收哦”
.....................................
就這樣,小明一直這樣沒心沒肺和小紅交流著,有一天,小紅(客戶端)跟小明抱怨到:”我是小紅,身份證號碼是411302200198283 我家住在黃土高坡,我爸爸叫黑土,我媽媽白雲,小明你怎麼記憶那麼差呢,一場談話下來,總是不停的要我說是誰,我身份證號是多少啥的 家庭地址在哪裡等(賬戶、密碼)-煩,而且你做這個簡單事情也慢吞吞的。“
小明拿出小本本,核對小紅資訊, 核對成功,哦!!她是我女朋友呀,然後給小紅回覆:”對不起,我錯了,我想想辦法“ ,其實小明也有不少煩惱,小明是一個謹慎的人,他記性不好,又怕工作生活出差錯,所以遇到人他都要別人講講自己的身份,但是遇到女友、親人、好朋友,他還是總是問他們是誰,對他們是有不少愧疚的。
有一天,設計者來看望小明,小明說:”偉大的造物主呀,其實我記憶沒有那麼差,短時間內我還是可以記住誰跟我說了什麼的,但是我知道自己記性不好,怕出錯,而且每次交流過程中我都要去查我的小本本(資料庫)也很麻煩,一些東西用幾次就再也不用了,還要去小本本上刪除。您給我指條明路吧“
設計者認真聽小明的意見,又仔細觀察了幾天小明和小紅的聊天過程,發現這種聊天方式的確有不少問題:
1)小紅每次聊天都要說自己身份證號,家庭住址(賬戶、密碼),這個被壞人弄去了多危險,而且小明也只認這些,指不定壞人就拿著小紅的個人資訊炸騙小明來著;
2)小明的太依賴小本本了,隨著小明接觸越來越多的人,他的小本本越來越多,查詢越來越慢,還要定期的去整理維護這些小本本,刪除不必要的資訊等,其中一些資訊在小本本上存活幾秒就被刪掉了,很不划算。
設計者想明白這些後,對小明說:”不好意思小明,當時是我考慮不周,給你造成這些困惱我很抱歉,你對數字是不是特別敏感?“ 小明說:也許我們計算機有一種天賦,那就是對數字的記憶超乎尋常。”
設計者會心一笑:“perfect,以後這樣,每次誰跟你交流時候,第一次你回覆他的時候,給他一張小紙片,上面寫上你一串你喜歡的數字,你要記住這個數字是你寫的哦,然後小紙片上還要寫上對方是誰。她以後跟你每次跟你交流的時候,都帶著這個小紙片,你一看到上面小紙片上那個數字(seesionId )就知道這是不是你寫的小紙片,如果是就要信任這個小紙片上所寫的名字,而不用讓對方報身份證,家庭地址等,而且你們雙方覺得有什麼需要記住的都可以寫在這個小紙片上,當你們交往結束,你就讓對方把小紙片銷燬掉,你也忘記那個你寫的數字,所以你還要告訴她啥時候該銷燬這個小紙片(過期時間),那個時候你就不承認你寫的數字(Cookie過期),至於什麼時間該銷燬,一 你看她跟你關係遠近 只是是萍水相逢,跟你隨便諮詢點事的,聊天完畢聊天完畢就可以銷燬了,是你女友的話,你可以稍微延長點時間,畢竟你記得她她很高興的,不過我要提醒你,萬一你給女友的小紙片(信物)丟了的話,可能會有人拿著那東西來騙你,所以過一段時間還是要你女友再報下她基本情況(登入過期,再次登入驗證),具體你自己決定哦,特別是一些重要資訊,比如給她匯錢時候最好再次驗證下“。
小明(服務端)留下了激動的淚水:”好的 造物主,我怎麼沒有想到這個方法呢,謝謝您!“
今天小紅(客服端)又來了:”小明小明,我是小紅,身份證號碼是411302200198283 我家住在黃土高坡,我爸爸叫黑土,我媽媽白雲(相當於賬戶,密碼),我做了一個夢,夢見你能一直記著我了“。
小明拿出小本本,核對小紅資訊, 核對成功,她是我女朋友哇:”哈哈哈,小紅,我的確有個驚喜給你 下面我給你的信物,以後你來找我都帶著它,就不需要每次都核對你的個人資訊了,還有就是我們暫定這個信物有效期為兩週吧,兩週後我再給一個,以防你丟了信物,別人拿著信物冒充你 “。
編號:135791317;name:小紅;
小紅喜,帶著信物跟小明說:”好的,小明,你知道我是誰嗎?“
小明看一眼信物:“你是我的小紅紅,哈哈哈~”
小紅不敢相信:“嘿嘿,沒想到夢想成真了,還算你有心,這樣以後有重要的事,比如你給我買東西,給我零花錢的時候,還是要仔細來問問我是誰的,別被騙了”
小明高興的:“遵命,女王大人!
小紅:“ 每次你認出來我的時候,我就像吃了世間最美味的甜點一樣開心,這全都是因為你那個小紙條,要不以後我們就叫它甜點吧(Cookie),是你專門為我做的一個小甜點,然後你在寫紙條時候,根據你自身條件寫上你準備讓這次的信物用多久。”
小明:“好的,拿著我給你的小甜點(Cookie),你便是我的小甜心“。
Take my cookie,you must be my sweet heart .
如果感興趣可以去附錄看看,小紅小明最後協商的cookie是什麼樣子哦。
因為方便,他們交流更頻繁高效,歡樂老多了,然後呢,全世界都效仿他們了,煩惱是藏不住,幸福也是藏不住的!!
隨著小紅和小明關係越來越密切,小紅也知道了小明的一些朋友,小紅(客戶端)的事情很多,她能做的事也很有限,小明能幫忙肯定是義不容辭,但是有時間她也需要小明的朋友來幫忙,因為小明的朋友也跟小明一樣記性並不是那麼好,所以她每次找小明朋友幫忙都很麻煩,1 要報自己各種資訊; 2證明自己跟小明的關係; 3 讓小明和他朋友提前打好招呼。
於是小紅跟小明抱怨:“小明,我只是偶爾請你某一個朋友幫個忙,以後都不怎麼跟他聯絡,每次都這麻煩,好鬱悶呢,你有沒有什麼好辦法呢?”
小明再次祈禱:“萬能的造物主啊,我遇到了一個問題,巴拉巴拉巴拉······,能不能給我指條明路!”
拿好我給你的一次性身份證,我的朋友們都認識你哦-jwtToken
設計者聽到小明的呼喚,想了想,對小明說:“這個問題好辦,讓小紅找你朋友幫忙的時候,你就給她開一個一次性證明,也是用小紙條形式給她,上寫著你是誰 ,你想讓哪些朋友幫小紅,這個證明啥時候用、啥時候失效、你什麼時候寫的這個證明的,最後還要蓋上你的個章或者簽名,以及怎麼驗證你簽名的辦法。
當小紅跟你朋友交流的時候,每次都帶著這個證明信,你朋友看到這個證明信,看到你獨一無二的簽名,就知道這是你授權的,他就信任小紅了,這樣小紅就可以像跟你聊天那樣 ,跟你朋友交流了。
但是我提醒你,這個證明信一旦你開出去,如果在過期之前丟了的話,別人拿到也可以冒充小紅請你朋友做事,因為是證明信你朋友還不可以單方面說不認這個,慎用,而且最好設定有效期不要太長哦。“
小明:“知道了,再次感謝您,造物主大人。”
小明迫不及待的已經用上了這個機制,簽名認證機構也找好了~
小紅:“小明 我想請你朋友小藍幫我訂購一個月的luckinCoffee”
小明:“好的,我給你開了一張臨時憑證,你拿著這個找他,他就知道,你是我女朋友,會幫你搞定的憑證如下:
eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiJMdWNraW4gSW9UIEdyb3VwIiwiZXhwIjoxNTU4MzM5MzEzLCJzdWIiOiJJb1QgQXV0aG9yaXphdGlvbiIsImF1ZCI6IkNvZmZlZSBNYWNoaW5lIERhc2hib2FyZCBVc2VyIiwiaWF0IjoxNTU3NzM0NTEzLCJuYmYiOjE1NTc3MzQ1MTMsImp0aSI6IjQyMWQxMmU4YTQ3NjRhYWJhNWRiY2UxNTY5ZTZmNWUzIn0.TwplWEJx7_lMH3_rsSVu79Mdznq4FXc35jwez_Kk4UE,你不用看懂這個,把這個給我朋友,他就知道你是我女友了,別把這個給別人看哦“
小明給小紅的憑證裡面有什麼內容呢,到底表達什麼意思呢?我們可以去附錄偷偷看看。
就這樣小紅在請小明的朋友小藍幫忙的時候帶上了這個jwtToken憑證,小藍就沒有問小紅身份資訊,直接就小紅定好了咖啡,以後每當小紅找小明的朋友幫忙的時候就找小明開了一個臨時證明給小紅,小紅拿著證明啥事都可以辦了,happy! happy!這過程中小明相當於一個身份擔保人了。
小紅、小明和他們的朋友們又開始快樂的聊天工作了~他們以後還會遇到什麼問題呢?大家不妨想一想,也許你就變成計算機專家了,嘿嘿!
從計算機交流規則-http協議中獲得的生活工作的啟迪
旁觀了客戶端和伺服器端同學交流的場景和他們遇到的問題,再想想我們自身,很容易想到我們每個人既是一個客戶端又是一個伺服器,我們請各種各樣的人幫我們解決問題,同時又有各種各樣的人找我們解決他們的問題。
假如我們是請別人幫忙,是客戶端,那麼我們就要儘量遵循和服務提供者約定好的溝通表達方式,不然別人理解不了我們,問題就得不到解決,同時我們發現有問題,也要提出來,或者幫助對方也思考一些方案。
如果我們是伺服器,而且是一個很忙的伺服器,怎麼辦呢?
1 制定、反思自己與不同人的交流習慣。有一些同學與人交流時候遊刃有餘,讓我們羨慕不已。不是因為他們一出生就這樣,而是因為他們有一套對不同的幾類人交流的標準習慣或者叫套路。跟朋友交流時候就灑脫、自由;跟親人交流時候就乖巧懂事;跟工作同事交流就謹慎、認真 ;跟陌生人交流就熱情有餘但有所保留……當你的交流套路成為習慣(不同的通訊目標、不同的通訊場景,通訊協議也要變化),與人交流便會輕鬆自在。接下來還要把你與不同人的交流的套路給寫下來,有助於不斷的提高交流質量與雙方的交流愉悅度,這也就是我們常說的協議進化。
永遠記住:讓人累的不是處理的事情多,而是對一個特定問題沒有處理的標準方案或者套路。
2 學會放下、為大腦減輕記憶負擔,大腦記憶太多會影響了思考的速度。
在1中,我們會把不同與你交流的人進行歸為幾類,朋友、家人、同事、陌生人等,對待不同的人有不同的交流模式,這一步我們需要針對不同的人交流的過程需要有不同的記憶模式,與陌生人交流,一次交流完,如果沒有自己要學習的東西,就立馬放下,與父母、女友、同事交流有重要事需要記住,最好寫在筆記上,備忘錄上、減輕大腦記憶負擔,不重要事則不必在意,對女友、家人也做好說明,讓他們能夠理解你。
人腦力是有限的,記住太多重要的事,往往會導致你一事無成。
3記憶對映 , 一個人往往有很多缺點,當往往天賦就藏在你的缺點之間。除了上面那個小明記憶不好,但數字敏感的,其他場景我還沒有想到,大家幫我想想唄。拜託~
附錄
小明給小紅製作的獨一無二Cookie詳情
set-cookie: sessionId=201911520; domain=www.xiaoming.com; path=/;expires=Sat, 11 May 2019 13:27:48; name=xiaohong;hobby=buybuybuy;
sessionId 就是小明為小紅記住的獨一無二的數字,domin 代表小明地址, path 是說小紅要把這個放在自己哪裡下次,小明好一眼看到,expires 說明這個cookie什麼時候就需要銷燬了,不起作用了,name 是小紅的名字 hobby是小紅的愛好。
小紅給小明回覆的Cookie樣子:
cookie: sessionId=201911520; name=xiaohong;hobby=buybuybuy;
小明給小紅的臨時憑證表達什麼意思:
憑證串:eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYifQ.eyJpc3MiOiJMdWNraW4gSW9UIEdyb3VwIiwiZXhwIjoxNTU4MzM5MzEzLCJzdWIiOiJJb1QgQXV0aG9yaXphdGlvbiIsImF1ZCI6IkNvZmZlZSBNYWNoaW5lIERhc2hib2FyZCBVc2VyIiwiaWF0IjoxNTU3NzM0NTEzLCJuYmYiOjE1NTc3MzQ1MTMsImp0aSI6IjQyMWQxMmU4YTQ3NjRhYWJhNWRiY2UxNTY5ZTZmNWUzIn0.TwplWEJx7_lMH3_rsSVu79Mdznq4FXc35jwez_Kk4UE
這個憑證叫jwtToken,我們可以看到它是一個字串中間兩個”.“分割為三個部分,具體來說就是:Header.Payload.Signature
Header(頭部)部分:
{
"alg": "HS256",
"typ": "JWT"
}
alg表示數字簽名演算法;
typ表示這個令牌型別叫jwt ,遵循jwtToken的樣式;
Payload(內容部分,也叫負載):
簽發人iss (issuer)-小明
過期時間exp (expiration time)- 明天
主題sub (subject)-定咖啡
受眾aud (audience)-小藍
生效時間nbf (Not Before)-立即
簽發時間 iat (Issued At)-今天
編號jti (JWT ID)-13579
Signature(簽名)部分:
按照下面公式產生一個簽名串
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
這樣就好比在個人書信上寫上一個大大的簽名,覆蓋每一個文字部分,一旦文件被改掉,你的簽名就也變形失效,通過數字簽名保證內容部分沒有被篡改。