不是因为cache(提高速度)而管理对象生命周期,而是管理对象生命周期,而去使用cache(或者map,其实可以理解为带管理的容器,到底是数据还是对象,则看context)。在文章提到的情况,使用cache的原因很大程度在于硬件和jvm限制(map或是cache的选择原因)。若果没这些限制,我使用map,那时你还跟我讨论map是什么了么?其实这么想吧,若果cache的淘汰算法,是永不淘汰,它还是不是cache呢?我认为是(观点之前有了),而这时cache就和map同样价值了。试想,必须要淘汰掉数据,对象,实体才能成为cache么?cache不是为了淘汰数据而存在的,而是为了缓存,缓冲存储,也就是解决速度差问题。
“所以对于缓存系统而言,不需要去了解需要缓存什么”这是从里至外的看法,在外界看来,这东西就是缓存对象,就是缓存实体,对于一定的context下,所有基本单元已经不一样了。在文件系统下,cache就是缓存文件,因为若果不知道cache缓存什么东西,你就不能把东西取出来。对于使用者而言,你存入的是文件,拿出来的一定是文件,若果我缓存的东西变质了,它还能用作“存”么?还是那句若果都是数据,还有其他概念么?什么封装,抽象思维都可以不要了。引用banq的“屁股决定脑袋”。
对于“缓存”就是内存,在不改变该context(即前提:Spring,jdon框架上引入cache),此话是对的。首先,我们想想数据,对象什么时候才是活的。我引入系统的进程来说明,进程存在哪里?内存。进程是啥?就是进行着的程序,是运动着的。也就是必须要到达进程中才是活的东西,而cache就是进程中一块存储保存数据(对象)的地方。cache在进程中,进程在内存中,所以cache只是一个有边界的内存。其次,东西不是只有一个角度去观察的,根据我第一段话的意思,可以看出,cache依然带有本身的所有特性,但角度已经是作为带管理的容器了。角度的不同,不是一种否定。一种从技术角度,它依然提供了高效的载体,一种从架构设计角度,它作为带管理的容器,这两者本身并不矛盾。非彼即此的观点,在此并不适用。所以你否定其中一个,在我看来就如同否定全部一样。从技术上我们用到了其高效作用,在架构设计上我们用到其管理作用。既然谈论架构设计,也就没必要再延伸到另外一个角度了。我咋发现banq的“屁股决定脑袋”又再次适用了 - -|||(以上技术指的是支持技术,设计指的是设计思想,如实体概念这些。往往架构中是遵循一种思想,然后所有技术都是用来支持思想,注意是支持,并非决定)