System.out.println(
Arrays.asList(1, 2, 3, 4, 5, 6)
.parallelStream()
.reduce(0, (a, b) -> (a - b)));
它可能输出-21、3或其他一些值,因为累加器函数违反了关联属性。
标识要求的示例:
System.out.println(
Arrays.asList("w", "o", "l", "f")
.parallelStream()
.reduce("X", String::concat));
这本书是怎么说的:
为什么累加器不是关联的?
它不是关联的,因为减法运算的顺序决定了最终的结果。
如果运行串行流
,将得到预期的结果:
0 - 1 - 2 - 3 - 4 - 5 - 6 = -21
0 - 1 0 - 2 0 - 3 0 - 4 0 - 5 0 - 6
-1 -2 -3 -4 -5 -6
-1 - (-2) -3 - (-4) -5 - (-6)
1 1 1
1 - 1
0 - 1
-1
(1 - 2) - 3 = -4
1 - (2 - 3) = 2
那么到底什么才是合适的身份呢?
如果将标识值更改为“”
:
System.out.println(Arrays.asList("w","o","l","f"))
.parallelStream()
.reduce("", String::concat));
您将得到“Wolf”而不是“xwxoxlxf”。
问题内容: 在并行流上使用操作时,OCP考试手册指出,论点必须遵守某些原则。这些原则如下: 必须定义身份,以便对于流u中的所有元素,combiner.apply(identity,u)等于u。 累加器运算符op必须是关联且无状态的,等于。 组合器运算符还必须是关联且无状态的,并且必须与该身份兼容,以使得对于和 都等于。 本书提供了两个示例来说明这些原理,请参见下面的代码: 关联的示例: 这本书怎么
问题内容: 我知道元素上的设置用于使其居中(左右)。但是,我知道该元素及其父元素必须满足某些条件才能使用自动边距,而且我似乎永远无法正确理解魔术。 所以我的问题很简单:为了使孩子左右居中,必须在元素及其父元素上设置哪些CSS属性? 问题答案: 从我的头顶上: 所述元件必须是块级,例如或 元素不能浮动 元素不得具有固定或绝对位置1 超越别人的头: 元素必须具有不为2的 请注意, 所有 这些条件都必须
问题内容: 我对JAX-WS进行了概述,并注意到了(和)的一些引用。 在什么情况下需要?(我认为JSR 109服务器?!) 问题答案: 是使用SUN的参考实现将Web服务作为标准存档部署在非Java EE5 Servlet容器上时所需的专有部署描述符。 Sun的RI 用作servlet上下文事件的侦听器和调度程序servlet。两者都必须在中声明。然后需要该文件为定义Web服务端点,以使其知道必须
互联网是超文本标记语言(HTML)页面的集合,它们彼此链接以形成概念性信息网络。随着时间的推移,静态资源数量增加,图像等更丰富的项目开始成为Web结构的一部分。 高级服务器技术允许动态服务器页面 - 其内容基于查询生成的页面。 很快,需要拥有更多动态网页才能获得动态超文本标记语言(DHTML)。一切都归功于JavaScript。在接下来的几年中,我们看到了跨帧通信,试图避免页面重新加载,然后在帧内
当前信息时代,哪里都是应用程序。这些应用程序们不仅仅是运行人们工作场所的工具 - 它们现在正在经营人们的生活。 对即时响应的需求,完美的行为和更多的功能是前所未有的。 而且,当然,人们期望应用程序在不同类型的设备上运行平稳,特别是在移动设备上。 应用程序执行的速度与它所做的一样重要。 NGINX的核心功能,例如其具有高性能HTTP和反向代理服务器的大规模可扩展事件驱动架构,访问和带宽控制以及与各种