自从上次王老师让我们结束Web已经有快一个星期了,事实上我并没有彻底结束掉对Web的学习深入,上次基本上将一些比较关键的知识在细节并没有过于关注的情况下整理的还算比较完善,而预计的在Tomcat的源码和360商城源码的层面上进行分析的计划还在进行中,预计还至少需要一两个星期的时间去学习去总结吧,一方面我想借此机会弄懂真正优秀的代码是怎么样的,另一方面我想知道实际上一个完整的Web项目又是怎么样的。这个月的开始,王老师又让我们弄了一下数据库,测10亿级数据量MySQL5.7和8.0的性能,说是测性能,实际上是想办法尽可能的怎么样让增删改查变得更快,实际上运行出来的结果还是比较吃惊的,增删改查各个操作之间并没有什么特别的关系:
后来我就找了一下每个操作的优化方式,说的我确实有点懵圈,什么数据库的并发连接、分区、多缓冲区、增加InnoDB缓冲池大小等等,这些东西我之前一样都没有触及到过,而且找到的资料全部都是英文版的,几本经典的数据库书籍也没怎么提到相关的知识。估计以我现在的水平是没办法理解为什么一个存储数据的管理系统就这么复杂,这真是一个谜,今天我看到知乎的一个讨论,计算机的书籍动辄几百上千页,作为一个学生真的有必要啃这些大书吗?如果有必要,该如何提高效率的看书?你觉得MySQL这么复杂的知识体系都是怎么来的吗?想一下看懂?想一下会用?想啥呢孩子,以学打羽毛球为例,我想上来就是十公分厚的书籍在我面前先看懂才能打球那岂不是要无聊到死?
后来王老师开讨论会的时候提到其实他的真实意思有一条是让我们摸索出来Java在第一次运行和下一次运行之间的差别,Java的热代码和冷代码之间还是有比较大差别的,第二次运行的时候会根据热点代码进行优化,而且GC第二次运行的时候对程序的影响也会降低。在实际的测试过程中大概第二次运行会有20%的性能提升。涨姿势了~
to be continued...