代码以及理论分析看得多了些,渐渐有了一些触类旁通的感悟
- 乐观锁,总是乐观地处理处理事务
乐观锁总是认为读取数据的时候没有来自其他线程的修改行为,不会出现脏读,直接操作数据,最后在提交更新的时候判断一下在此期间是否有来自其他线程的修改,如果没有就提交此次更新,否则丢弃更新。这样避免了加锁,提高了程序的性能。
我想这样的机制可以类比对待生活学习中日常计划的原则。
在日程安排相对稳定的学生时代,按照日常计划学习,不为突发事件留空档,认为突发事件不会发生,如果发生了突发事件再进行处理,这样可以减少研究如何处理突发事件的时间,以及为突发事件预留的大多情况下无用的时间。 - 多级缓冲的思想,好钢用在刀刃上。
计算机的 IO 读写速度与 CPU 指令执行的速度不匹配是当今计算机运行速度发展的瓶颈。
一般说来,我们的存储设备容量和速度从小到大有:寄存器 -->Cache-->RAM-->硬盘
一般说来,我们的存储设备单位容量造价则相反。
现代计算机常见的存储策略是CPU里面有大量寄存器用于存储操作数和指令,读写超级快,读写相当快,集成于 CPU 中的 Cache 用于高速缓存容量小,而内存用于存储当前程序频繁使用数据和指令,硬盘用于存储不那么频繁访问的数据有时也用作虚拟内存。
不同的存储介质有各自的特性,造价不同。寄存器和 Cache 只在CPU里面有,CPU 体积有限导致寄存器有限,造价高,Cache 的造价也相当高,内存读写快但是掉电即丢失数据,价格不菲,硬盘慢但是稳定,相较于上述器件已经十分廉价。
曾经质疑现代计算机为什么不完全采用极其快速的存储设备。存在即合理,软件的发展总是要去适应硬件芯片的,现代计算机的设计已经能够满足大多数软件的性能需求,速度最快的 CPU 中的寄存器和 Cache 只是作为外界与 CPU 交互的中介,极少的容量就能带来极大的效用。它们的容量应该是可以增加的,但现代计算机经过几十年的迭代和打磨,体系和标准已经十分确定,增加将会导致性价比的降低,又有谁会为之买单呢?