感悟随笔
0、真传一句话,假传万卷经
1、现代计算机原理思想并不艰深,只是复杂。计算机体系中我们不理解的部分,只是因为有我们不了解的背景、细节,和未曾关注的点(被干扰而忽视)。因此在面对暂时不理解的问题的时候,可以去排查下是不是有哪些基础知识我们不具备或者关注点(主体)不对。
可以在解决问题前,尝试忘掉(或者放空)固有的观念经验,作为一个小白,从头开始重新思考审视要面对的问题。
也有部分情况是被过多的细节或者枝叶掩盖干扰了核心及本质的问题
2、爱因斯坦曾经说过:“提出一个问题往往比解决一个问题更重要。因为解决问题也许仅是一个数学上或实验上的技能而已,而提出新的问题,却需要有创造性的想象力,而且标志着科学的真正进步。”
能精准地提出问题,意味着对问题已经有了一定的认识。也就是抓住了主要矛盾,抓住了主角(主体)。
3、spring,要解决的是java中对象创建和属性赋值的问题。没有spring的时候,我们可以用java在代码的任何位置new对象。有了spring,new 对象及属性赋值的操作基本都交给了spring去处理,我们就可以把重点和精力放在业务逻辑上。sping专注于处理对象的创建和赋值,就可以玩出花来(因为专注,所以专业)。
ioc,控制反转,控制权反转,也就是权利外放,创建对象的权利外放,是一种思想。spring实现方式是DI,依赖注入,可以想象为送货上门。形象的比喻,比如要喝水,之前是我们自己走1000米到商店,付钱买水喝,升级后,可以直接打电话送货上门。
而spring boot,则是为了进一步简化降低spring的使用难度(并没有新东西),因此spring boot的重点就是自动装配(spring的问题就是在于大型项目,会有很庞大复杂的配置,sping boot就是为了解决这个问题,解决办法就是自动配置)。
4、程序 = 数据结构 + 算法
一言蔽之,用程序处理问题就是 定义好主体(数据) + 梳理清楚逻辑(主体在时空上的变化)
仔细回想我们写的java项目,除去跟工具框架相关的代码,剩下的是什么?就是业务逻辑和定义的数据(信息)。按照这个逻辑去拆分工具框架的代码,也会发现最后就剩工具框架本身的逻辑和数据结构。因此程序 = 数据结构 + 算法
忘掉程序语言,用数学(哲学)语言去表示我们要解决的问题,会发现其实只需要定义好要处理的数据,再加上处理逻辑。因此程序 = 数据结构 + 算法。编程语言,框架组件等就是我们解决问题的工具。工具是围绕数据和算法服务的,那我们在理解编程语言、框架、结构等的时候,从数据(或者叫信息)流转(流动)的角度去看待,或许会豁然开朗,也会更深刻。
比如MVC架构,其实就是数据从磁盘(数据库、文件)--》内存(进程)--》网络的过程
再换个角度,软件处理的是数据(信息)在空间、时间上的变化。软件世界的主角是数据(信息),算法是软件世界的规则(逻辑)
5、理论、实践。
程序设计是很好的一种能理论结合实践、理论指导实践、实践完善理论的工作。
知行合一,勤在事上练。无他唯手熟尔。
6、为什么专注、坚持很重要
其实就是复利原理
7、主体(主角)很重要
比如语言中有主谓宾
软件设计中有面向对象,这个对象其实就是主体(主角)的意思
8、架构
mvc三层架构(针对单体应用而言,从逻辑分层),微服务架构(针对业务,从功能分层,面向分布式场景),服务网格
9、心静则慧生,身动则阳生
10、 空杯心态,化繁为简直指问题核心

浙公网安备 33010602011771号