作者回复: 思考题中的问题是在并行操作arraylist时,需要考虑线程安全问题
作者回复: 是的,但未必所有公司都有构建大数据的能力,而且一些公司有自己的中间件团队,例如文章开始说到的分表分库的查询操作,使用stream的并行操作就有优势了
作者回复: 对的,可能会出现少数字、无序以及异常情况
作者回复: 当应用程序以前没有使用lambda表达式时,会动态生成lambda目标对象,这是导致慢的实际原因。我们可以在运行加载后,也就是初次测试之后,紧接着后面加几个for循环,再测试几次,对比下性能。
虽然单独使用lambda表达式在初次运行时要比传统方式慢很多,但结合stream的并行操作,在多核环境下还有有优势的。
作者回复: 是的,好的实现思想会被应用到各个地方
作者回复: 上万数量级使用并行可以提高效率。
作者回复: 之前用过sharing-jdbc以及mycat,一个明显的区别是sharing-jdbc是嵌入方式,而mycat是基于proxy,所以理论上来说 proxy方式会有性能损耗。现在我们在使用sharing-jdbc,这里不打广告,两个中间件都有自己的优势。
分页查询是基于我这篇文章说的方式,将每个分表的数据结果集查询出来,通过归并排序计算出。
具体的实现方式有区别,本次专栏的后面课程也会具体讲到。
作者回复: 对的,但copyOnwriteList更适合某一时间段统一新增,且新增时避免大量操作容器发生。比较适合在深夜更新黑名单类似的业务。
作者回复: 对的
作者回复: 终结操作又可以分为短路(Short-circuiting)与非短路(Unshort-circuiting)操作,前者是指遇到某些符合条件的元素就可以得到最终结果,后者是指必须处理完所有元素才能得到最终结果。
allMatch也是属于遇到某些条件的情况下可以终结的操作,即找到一个不合法条件的,短路返回false ,无需等待其他的处理结果,所以也属于短路。
作者回复: 是的