剧本作家思维(3)——流
架构治理如同大禹治水,
以疏代堵,顺势而为,大道如水,那我们的思维也要切合如水。
首先什么是流?最先联想到的是“水流”,潺潺不断,流是一种动态过程,如果你想截断水流,最简单的是堵住它,所以,流是不能被堵塞的,也就是非堵塞,只有非堵塞才会形成流。
中国有句古话:百川入海,如果水流没有被堵塞,随着时间推移,再多的水都会流入大海,如果把水看成是数据,很显然,流处理方式可以处理无限的数据,只需要消耗时间。因此,流式是对数据量开放的。

流式这种不畏惧数据量的特点在现实生活中比比皆是,比如我们看电视,这是通过流式获得大量信息的输入;比如我们逛大型超市,从入口一直溜(流)到出口,通过这种流式我们能获得大量商品信息。
那么为什么要提出一种流式思维呢?因为思维决定软件设计,设计决定系统,而我们的系统是模拟真实客观规律运行的,因此我们的思维必须采取最贴近客观规律的方式去思考,那么客观规律是什么特点?

量子力学的波粒二象性和薛定谔猫理论认为:当我们观察量子时它是一颗颗有边界的粒子,而我们不观察它时其实是连续的波。也就是说,在微观世界,客观规律隐式的其实是一种流式的波,连续而不间断。

点只是宏观时间诧然间冒头的一粒现象。
流(Stream)就是指像水流一样长长的一串的东西。
在很多时候,流(Stream)是字节流(Byte Steram)的简称,也就是长长的一串字节,,,,
当然,除了字节流,我们还可以有视频流、音频流、数据流,,,,
流只有一个特征就是连续,流可以没有头可以没有尾,甚至可能没有绝对的位置(因为无头无尾),但是由于流是连续的,所以有相对位置。
流是一个很抽象的概念,只有多用才能理解。
但是流绝对不是一个容器,这是一个典型的误解。容器可以被视为一个流,或者可以用流的方式来读写,但流不是容器。
譬如说,网络流(NetworkStream)就不是一个容器,也正因为流不是一个容器,所以流不存在拷贝。我们可以拷贝文件,拷贝内存,但是不能拷贝一个流。

同理,标准输入输出流显然也不是容器。
为什么要有流?
假设没有流, 所有的数据都可以用二进制串来表示, 也没什么的呀. 我们再简单点, 就认为那是string. 假设我写了一个html的parser:
def html_parse(html_string): // do magic return html_tree
可是我们可能是从网络获得 html_string 的, 大家都知道网络相比于CPU的速度那就很慢了, 我们希望能够边获得数据, 边解析数据, 充分利用CPU, 那么我们可能会这样写
parser = Parser()while not is_net_done(): bytes = read_little_from_net() parser.parse_little(bytes)print parser.tree
也就是, 我们会从网络里面读一点, 解析一点.
类似的需求很常见, 比如播放视频的时候, 我们肯定是希望从硬盘(或者网络)读取一点, 播放一点, 一个视频4GB, 要是全部载入内存才能播放, 好多人都看不成1080p的了.
所以, 我们有充分的理由把这种读一点处理一点(以及相反的生成一点, 写入一点)的数据类型(或曰操作)抽象出来, 这就是流.
至于其实现原理, 就实在太简单, 而且多种多样, 不讲了.
你只要记住: 流就是读一点数据, 处理一点点数据. 就可以了.
我们努力工作的目的不仅仅是为了维持这家公司(个人)的基本运营(基本生活),而是为了增加资产。拥有一定资产后,我们才能更好地应对风险和不确定性。因为只有资产才能在危机时刻变现,化解我们的危机!

此外,拥有现金流思维还能帮助你更好地挑选金融资产。比如,销售会告诉你某个理财产品的收益率有12%。但当你再深入研究该产品的现金流时,很大概率会发现对方在放大收益率,甚至对方都讲不明白理财产品的底层现金流是从哪里来,更不要说产品的违约风险了。
挑选金融理财产品,最核心的就是要弄清楚购买产品的现金流来源和走向。不要被理财经理的高收益率忽悠了,为什么他说12%你就要信呢?
.为什么要提出一种流式思维呢?因为思维决定软件设计,设计决定系统,而我们的系统是模拟真实客观规律运行的,因此我们的思维必须采取最贴近客观规律的方式去思考,那么客观规律是什么特点?
认识世界不只是需要面向对象思维,还需要流式思维。
客观世界是一种类似波的流式系统,流式思维是最接近隐式的客观规律
例:
流式思维在大数据架构上应用
比如Storm这个大数据处理框架,其有几个好像陌生的概念:Spout Tuple Bolt,如果单从字面上理解是“嘴” “元组” “螺栓”等意思,但是你从流式角度去思考就很容易理解,Spout嘴是产生事件流的源,而Tuple元组代表一个个小事件,多个事件就是Tuples了,Tuples代表了事件流,而Bolt代表流过程中一个处理器,如同将两个水管接在一起的接头。
流式总是和集合概念相对应的,因为集合一般是很多数据个体的总称,流式不像粒子性面向对象那样注重个体,流式是注重集体集合整体概念的,集合一般是流式的源泉。
流式思维在生命进程上应用
比如我们现今存留的思想,为什么,我们会认为封装精美,包装好看的书籍内容是“正确的”
因为那是有人希望你这么认为,通过整合“审美”,需求,和创造者的洪流,进入文字这种枯燥的载体,我们获得了更加“鲜活”的思想载体,通过“音乐”,这种鲜活的思想,我们让枯燥的映像数据,有了“鲜活”的生命。
语言回路
鼠:(1)没错,对,好的。。。。。。
(2)没,嗯,你也觉得吗,那就可以。。。。。
(3)也许吧,但,会的,哈 哈 哈。。。。。
温度:冷
牛:(1)是啊,对的,来,来吧
(2)你看看这个,你也来尝尝这个,好吗, 哈 哈 哈
(3)我不要你说对不起,怎么能后悔,不要担心都会好起来的
温度:热
虎:(1)嗷呜,哇偶,哇哈哈哈哈哈哈哈哈
(2)唉,但是哦,你确定了吗, 你看他做的多好,嗯,是吗。。。。。
(3)我就是,我就要,我偏偏不,我。。。。。。。
温度:随机
兔:(1)你看,我又买了新玩具,这可是最新研究产品
(2)科学证明,多吃胡萝卜有益于视力,你来多吃点,这对你很好
(3)你们都是无知的,书本里写了这么多,你们为什么不肯读,正确就是这么回事,相信我!
温度:冷
龙:(1)你愿意相信就来嘛,今天也会是热闹的一天
(2)好玩,好看,好听的,多来点,一起来玩,一起来闹吧
(3)我就不,我的错,但我不会改的,我干的,你管我
温度:冷/看起来热
蛇:(1)我们假设有这么个人,他叫张三,这个张三,无恶不做,而我,将为他辩护
(2)这咋没有放盐那? 这咋没有打灯那? 这咋闷闷不乐那?
(3)这个看起来挺值钱啊,那个用起来挺好,这个挺考究,挺好
温度:热/看起来冷
马:(1)诶,你好,既然来了就来喝杯茶把,写写书件吧,装点下这里
(2)是的,大家听我的,我会带领大家的,你好,我们是,我们将要。。。。。
(3)既然它不行了就换新的吧,或者你重新改一下行头,不能不细心,不能不,不能就这样。。。。
温度:热
羊:(1)我要成为一个人,我要学习成为一个人,我要去“知道,然后去保护”
(2)目的是最重要的,其他都是过程,合作是一段关系,也可以是一段愉悦的时光,对 吧,陌生人
(3)我要保护孩子,从坏人手上,我要结束这些谎言,我发誓了。
温度:热
猴:(1)听我的~ ,我给你准备了小礼物哦~~,你不要说不喜欢嘛~收下,然后说爱我~
(2)告诉我嘛, 听我说嘛,我任性,但你要原谅我的哦,毕竟人家也是想一直在一起嘛~
(3)会好起来的, 我来帮你? 搞砸了你也不能说我! 我可是好心的!
温度:随机
鸡:(1)可以去新的地方玩了,好开心,这在敲锣打鼓,好不热闹,好啊
(2)我不管,我就是小孩子,我才不会因为你说就改,我会一辈子这样,我挑剔是因为我觉得不好。
(3)好吗,我去做,为什么我做了你还是不高兴,这个就是你的不对了,我都做了,我都做了。。。。
温度:不冷不热
狗:(1)我说的,我就会去,我没有,我也会去,没啥事。。。。
(2)你不说怎么证明? 你愿意吗? 你不后悔就行。
(3)没事的。 你是对的, 这都是对的,是吧,我的朋友。
温度:热
猪:(1)来了! come on ,来搞点小动作,小娱乐吧,跳跳舞吧。
(2)对不起, 对不起哦,真的对不起!!!, 啊 我都说对不起了,你还想干吗。。。。
(3)我们一起吧,你能吗,我会改的,你能等等吗,你能。。。。。。。
温度:冷
生命的进程,本质上,就是成为流,或者汇入谁的流。
同时,生命也通过截断或引出流,来自我富足。