万物皆KV
首先我承认万物皆KV不一定是最正确的,但也是目前本人认知层面最正确的。
物种起源
达尔文在《物种起源》中提出两个理论。第一,他认为所有的动植物都是由较早期、较原始的形式演变而来;其次,他认为生物演化是通过自然选择而来。
其理论重点如下:
物种并非一成不变,而是会随环境变动而改变;
生物的演化是长时间连续性的缓慢改变,不是突然性的剧变;
同一类生物有着共同的祖先,例如哺乳类是由同一个祖先演变而来;
生物族群会随着繁殖而扩大,并超过其生存空间与食物供应的极限,引起个体间的竞争;
不适应环境的个体会被淘汰,适者才能生存,并繁衍后代。
文字起源
从大约是在公元前14世纪,殷商后期的“甲骨文”被认为是“汉字”的第一种形式,直到今天,各种字体纷纷诞生。为商朝后期用写或刻的方式,在龟甲、兽骨上所留下的文字,其内容多为"卜辞",也有少数为"记事辞"。甲骨文大部分符合象形、会意的造字原则,形声字只占20%。
数据库起源于对数据的存储以及管理
我们的电脑,有目录,有文件,文件有大小,有位置,有格式,这个是有文件系统开始就有这个概念的,肯定在有一个地方,存储了这些文件的参数或者元数据,而在我们的日常生活中,每一个物体和人,都有其各自不同的特征,当一批量的这些可描述的特征,想要数据化存储起来的时候,也就需要有一种格式来保存。
除了保存数据之外,我们还得对数据进行管理。这就是数据库出现的背景,并且随着使用场景的越加复杂,数据库本身也有了更多的衍生版本。
磁盘中数据要存储,首先有一个地址,然后把数据存储到该地址中。这是一个天然的KV,KEY就是地址,VALUE就是数据,所以有了一个天然的数据结构:数组。 数据由下标和数据组成,逻辑上天衣无缝的对应了物理存储设备。
现实生活中,更是无处不在,每种人事物都是有一个KEY来代称,比如日期,车次,七大姑八大姨和老王......就连新物种,一时无法命名,我们也可以统一归纳到一个标签:未知
以前说读万卷书,行万里路。书是竹简,记录的文字有限,不行万里路,所见所知又有限,不读万卷书,又不行万里路,穷和苦就连在了一起。
过去说的是穷苦人家,吃的都是缺衣少粮的苦,穷和苦是连在一起的。随着时代发展,不需要吃苦了,互联网时代各种精神产品那么丰富,可以过的更安逸舒适,刷短视频+直播+娱乐+游戏+拼多多,人人买的起的智能手机+付得起的电费,满足所有人的多巴胺。
现在想致富就得开始吃苦。要想实现财富的保值或增长,需要主动改变自己的很多习惯,主动思考,而多数人为了逃避真正的思考, 愿意做任何事情。思是一种大苦,得付出N倍的努力,承受N倍的寂寞。
要找个好伴侣,二点:
一、找个好人。
二、做一个好人。
做不到呢,那就变成4条了。
一、容忍,帮助,帮助不好仍然容忍。
二、使容忍变成一种习惯。
三、在习惯中养成傻瓜的品性。
四、做傻瓜,并永远做下去。
还做不到呢,那就得做到以下16条。
一、不同时发脾气。
二、除非有紧急事件,否则不要大声吼叫。
三、争执时,让对方赢。
四、当天的争执当天化解。
五、争吵后回娘家或外出的时间不要超过8小时。
六、批评时话要出于爱。
七、随时准备认错道歉。
八、谣言传来时,把它当成玩笑。
九、每月给他或她一晚自由的时间。
十、不要带着气上床。
十一、他或她回家时,你一定要在家。
十二、对方不让你打扰时,坚持不去打扰。
十三、电话铃响时,让对方去接。
十四、口袋里有多少钱要随时报账。
十五、坚决消灭没有钱的日子。
十六、给你父母的钱一定要比给对方父母的钱少。
......
如果做不到以上两点,你就得做到更多的4点、16点、256点......而且最终的结果,很可能还是失败。
那就变成: K(好伴侣) : V(找个好人+做个好人)
我们知道设计模式基本都是基于设计原则总结出来的,这才是设计模式的本质和精髓所在。人们总结出来的设计原则也很多,而从源头开始,GoF(Gang of Four)在《设计模式》一书中只提到两个设计原则:
针对接口编程,而不是针对实现编程
优先使用对象组合,而不是类继承
后来的人们给上面两个设计原则分别起了专业的名字:依赖倒置原则和合成复用原则。而且,还总结出了其他设计原则,主要包括里氏替换原则、单一职责原则、接口隔离原则、迪米特法则、开闭原则等。
以上所述,进一步抽象都是:开闭原则+组合原则(下回分解)。
那就变成: K(设计) : V(组合+开闭)
一生二,二生三,三生万物;最终KV演化成树,图,文件系统......
势高则围广,不仅要站得高,还得包容。
惑的来源: 人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。
困惑的原因: 一切困惑皆源于变化太快。
我们平时用的语言就是信息的高度抽象,比如上面我们聊的物种起源,文字的起源,数据库起源。又比如从诗经,五言七言,再到现代的普通的话,背后都是有无数本书在描述。
数组F[0]和函数F(X),一个从空间,一个从时间描述问题,本质上还是一样。前面我们也聊到了数组和KV天然的对应关系,其实一通百通。 在编程中,不变点比较好处理,针对变化点我们常用抽象类和接口来封装变化点,是一对多,一是抽象,多是变化点。
信息高度的抽象+千变万化,让我们猝不及防,但这都可以从KV上来抽象和变化,化繁为简,一步一步来。