脑子不够用的现代人
我们小时候没有智能手机,信息不能每时每刻到达身边,所以事情都是一个个来的。在学校背诵“欲穷千里目,更上一层楼”;在家里出门到村口,小跑打酱油。
我们成长这些年,也是计算机通信技术飞速发展的十几年。随着智能手机来到每个人身边,我们每时每刻都可能接收到来自家人、朋友、同事、快递、银行、物业、推销、售后等的信息,还主动从今日头条、新浪、优酷,美团、知乎、百度、同花顺等各种信息平台获取信息。我们并不比那个时代的人聪明,但是同时处理信息和人际关系的难度已经升了无数个级别,所以会经常感觉到脑子不够用,健忘、心累。
信息成爆炸式增长,首当其冲的是信息处理的服务器(解决问题的计算机)和手机、电脑等客户端(发出问题的计算机),它们会不会手忙脚乱脑子不够用呢?它们又是如何处理这些问题呢?接下来我们看一看它们的困惑与最通用的解决方式。
一种稳定、低负担的信息交流处理方式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)
这样就好比在个人书信上写上一个大大的签名,覆盖每一个文字部分,一旦文档被改掉,你的签名就也变形失效,通过数字签名保证内容部分没有被篡改。