前言:所谓削足适履,就是把解决问题的办法弄得本末倒置,使用了错误的方式去解决问题,自然就得不到好的结果。那么如何才能更好的解决问题呢,对于本章,我已经反复读了5遍了,然而苦于自己的理解能力,我仍然一知半解,但是我必须要迈过这个章节,不然我在当前阶段下,就无法读完这本书,而下一章节可能就会告诉我更多有用的办法。对于本章我没有弄明白的地方,以后等我再次翻读本书的时候可能就会得到答案。
作为成本的程序空间
我显然没有弄明白到底什么是程序的空间,也许作者是指程序运行时占用的内存空间、硬盘空间。不过有一句话是很明白的:“ 作为我们程序开发者来说,如果能够把程序对磁盘的操作提升到对内存的操作后,性能就会得到大幅度的提升”,这个在我负责的交易平台项目中就得到了验证,对于用户的持仓数据,如果都通过数据库的读写来完成,其性能就会很差,因为用户的持仓数据是实时的,并且是大量变化的,读写数据库的频率很高,这必然会造成性能的下降,那么行之有效的解决办法就是,把数据存储在内存当中,大量的读操作就通过内存来完成,写操作会同时更新数据库和内存数据,这样就会让性能得到大幅度的提升。那么问题来了,就目前为止,内存的价格远远高于磁盘的价格,然而我们不能只利用相对低廉的磁盘来取代内存,这个时候,必要的成本花费是值得的。
规模控制
对于这个小节的内容,是我无法弄明白的地方,就只能把我认为作者想要表达的记录下来:
和指定驻留空间预算一样,应该制定总体规模的预算;和制定规模预算一样,应该控制后台存储访问的预算。
在指明模块有多大的同时,确切定义模块的功能。
对于项目中的优化,不仅仅是要程序员对自己负责的内容进行优化,同时要有从整体上正视项目的觉悟。
空间技能
作者提到有两个技能,一个是用功能交换尺寸,另外一个是考虑空间-时间的折中。对于功能和尺寸的关系,对于用户,我们提供的功能有很多,如果细分到每一个功能显然会带来更大的成本,如同我们在京东上买东西的时候,如果不满足79元(银牌会员,原来是59,扯淡的成了79),就要多付额外的运费,也就意味着适当的捆绑功能组成一个小组,其成本就会降低。虽然我还没有弄明白空间-时间的折中问题,但是我很喜欢作者的两个方法:
在编程技能上进行培训,之前我在富士通的时候,就曾负责过对新人的培训,这个办法很好,因为一个有些经验的前辈通过一个小型的培训,会让很多新人在短时间内得到很好的技能提升。
在编程技术上积累,就是说开发并且积累很多团队所能共用的组件包。
数据的表现形式是编程的根本
这里,作者的观点我依然非常的认可,“ 技艺上的改进往往是战略上的突破,而不仅仅是技巧上的突破,而战略上的突破来自于数据或者表的重新表达”。我觉得这些话真的非常的有用,很多时候,如果我们只是不断强迫自己去挖掘数据,而没有一个行之有效的表格整理,效率就会非常低,而如果通过表格去观察数据的时候,往往就能得到突破。之前我在研究数据丢包的问题时,使用了大量的数据对比,通过输出数据把我想要找的问题定位出来,从而解决了数据丢包的情况。