copyright技术支持 东莞网站建设郑州同济医院收费高吗

news/2025/9/28 7:24:20/文章来源:
copyright技术支持 东莞网站建设,郑州同济医院收费高吗,wordpress底部的横线,南皮哪有做网站的zipkin 自定义采样率在第一篇文章的后续部分#xff0c;这一次我们将编写一些更有用的自定义收集器#xff1a;用于按给定的标准进行分组#xff0c;采样输入#xff0c;批量处理以及在固定大小的窗口上滑动。 分组#xff08;计数事件#xff0c;直方图#xff09; 假… zipkin 自定义采样率 在第一篇文章的后续部分这一次我们将编写一些更有用的自定义收集器用于按给定的标准进行分组采样输入批量处理以及在固定大小的窗口上滑动。 分组计数事件直方图 假设您有一些项目的集合并且想要计算每个项目相对于equals() 出现在此集合中的次数。 这可以使用Apache Commons Collections中的CollectionUtils.getCardinalityMap()来实现。 此方法采用IterableT并返回MapT, Integer 计算每个项目出现在集合中的次数。 但是有时我们不使用equals()而是按输入T的任意属性分组。 例如假设我们有一个Person对象列表我们想计算男性与女性的数量即MapSex, Integer 或年龄分布。 有一个内置的收集器Collectors.groupingBy(FunctionT, K classifier) –但是它从键返回一个映射到映射到该键的所有项。 看到 import static java.util.stream.Collectors.groupingBy;//...final ListPerson people //... final MapSex, ListPerson bySex people.stream().collect(groupingBy(Person::getSex)); 这很有价值但是在我们的例子中不必要地构建了两个ListPerson 。 我只想知道人数。 没有内置的这种收集器但是我们可以用一种非常简单的方式来组成它 import static java.util.stream.Collectors.counting; import static java.util.stream.Collectors.groupingBy;//...final MapSex, Long bySex people.stream().collect(groupingBy(Person::getSex, HashMap::new, counting())); 这个重载版本的groupingBy()具有三个参数。 如前所述第一个是键 分类器 功能。 第二个参数创建了一个新地图我们很快就会看到它为什么有用的原因。 counting()是一个嵌套的收集器它将所有同性的人带到一起并将它们组合在一起-在我们的示例中它们只是在到达时对其进行计数。 能够选择地图实现非常有用例如在构建年龄直方图时。 我们想知道在给定年龄下有多少人-但年龄值应排序 final TreeMapInteger, Long byAge people.stream().collect(groupingBy(Person::getAge, TreeMap::new, counting()));byAge.forEach((age, count) -System.out.println(age :\t count)); 我们最终得到了一个从年龄已排序到具有该年龄的人数的TreeMap 。 采样批处理和滑动窗口 Scala中的IterableLike.sliding()方法允许通过固定大小的滑动窗口查看集合。 该窗口从开始处开始在每次迭代中移动给定数量的项目。 Java 8中缺少的这种功能允许使用多种有用的运算符例如计算移动平均值 将大集合分成批处理与Guava中的Lists.partition()比较或每第n个元素进行采样。 我们将为Java 8实现具有类似行为的收集器。 让我们从单元测试开始它应该简要描述我们想要实现的目标 import static com.nurkiewicz.CustomCollectors.slidingUnroll class CustomCollectorsSpec extends Specification {def Sliding window of #input with size #size and step of 1 is #output() {expect:input.stream().collect(sliding(size)) outputwhere:input | size | output[] | 5 | [][1] | 1 | [[1]][1, 2] | 1 | [[1], [2]][1, 2] | 2 | [[1, 2]][1, 2] | 3 | [[1, 2]]1..3 | 3 | [[1, 2, 3]]1..4 | 2 | [[1, 2], [2, 3], [3, 4]]1..4 | 3 | [[1, 2, 3], [2, 3, 4]]1..7 | 3 | [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6], [5, 6, 7]]1..7 | 6 | [1..6, 2..7]}def Sliding window of #input with size #size and no overlapping is #output() {expect:input.stream().collect(sliding(size, size)) outputwhere:input | size | output[] | 5 | []1..3 | 2 | [[1, 2], [3]]1..4 | 4 | [1..4]1..4 | 5 | [1..4]1..7 | 3 | [1..3, 4..6, [7]]1..6 | 2 | [[1, 2], [3, 4], [5, 6]]}def Sliding window of #input with size #size and some overlapping is #output() {expect:input.stream().collect(sliding(size, 2)) outputwhere:input | size | output[] | 5 | []1..4 | 5 | [[1, 2, 3, 4]]1..7 | 3 | [1..3, 3..5, 5..7]1..6 | 4 | [1..4, 3..6]1..9 | 4 | [1..4, 3..6, 5..8, 7..9]1..10 | 4 | [1..4, 3..6, 5..8, 7..10]1..11 | 4 | [1..4, 3..6, 5..8, 7..10, 9..11]}def Sliding window of #input with size #size and gap of #gap is #output() {expect:input.stream().collect(sliding(size, size gap)) outputwhere:input | size | gap | output[] | 5 | 1 | []1..9 | 4 | 2 | [1..4, 7..9]1..10 | 4 | 2 | [1..4, 7..10]1..11 | 4 | 2 | [1..4, 7..10]1..12 | 4 | 2 | [1..4, 7..10]1..13 | 4 | 2 | [1..4, 7..10, [13]]1..13 | 5 | 1 | [1..5, 7..11, [13]]1..12 | 5 | 3 | [1..5, 9..12]1..13 | 5 | 3 | [1..5, 9..13]}def Sampling #input taking every #nth th element is #output() {expect:input.stream().collect(sliding(1, nth)) outputwhere:input | nth | output[] | 1 | [][] | 5 | []1..3 | 5 | [[1]]1..6 | 2 | [[1], [3], [5]]1..10 | 5 | [[1], [6]]1..100 | 30 | [[1], [31], [61], [91]]} } 在Spock中使用数据驱动的测试我成功地立即编写了将近40个测试用例简洁地描述了所有需求。 我希望这些对您来说都是清楚的即使您以前从未看过这种语法。 我已经假设存在方便的工厂方法 public class CustomCollectors {public static T CollectorT, ?, ListListT sliding(int size) {return new SlidingCollector(size, 1);}public static T CollectorT, ?, ListListT sliding(int size, int step) {return new SlidingCollector(size, step);}} 收藏家接连收到物品的事实使工作更加困难。 当然首先收集整个列表并在列表上滑动会比较容易但是却很浪费。 让我们迭代构建结果。 我什至不假装通常可以并行执行此任务所以我将不实现combiner() public class SlidingCollectorT implements CollectorT, ListListT, ListListT {private final int size;private final int step;private final int window;private final QueueT buffer new ArrayDeque();private int totalIn 0;public SlidingCollector(int size, int step) {this.size size;this.step step;this.window max(size, step);}Overridepublic SupplierListListT supplier() {return ArrayList::new;}Overridepublic BiConsumerListListT, T accumulator() {return (lists, t) - {buffer.offer(t);totalIn;if (buffer.size() window) {dumpCurrent(lists);shiftBy(step);}};}Overridepublic FunctionListListT, ListListT finisher() {return lists - {if (!buffer.isEmpty()) {final int totalOut estimateTotalOut();if (totalOut lists.size()) {dumpCurrent(lists);}}return lists;};}private int estimateTotalOut() {return max(0, (totalIn step - size - 1) / step) 1;}private void dumpCurrent(ListListT lists) {final ListT batch buffer.stream().limit(size).collect(toList());lists.add(batch);}private void shiftBy(int by) {for (int i 0; i by; i) {buffer.remove();}}Overridepublic BinaryOperatorListListT combiner() {return (l1, l2) - {throw new UnsupportedOperationException(Combining not possible);};}Overridepublic SetCharacteristics characteristics() {return EnumSet.noneOf(Characteristics.class);}} 我花了很多时间来编写此实现尤其是正确的finisher()所以请不要害怕。 关键部分是一个buffer 它可以收集项目直到可以形成一个滑动窗口为止。 然后丢弃“最旧”的物品并step向前滑动窗口。 我对这种实现并不特别满意但是测试正在通过。 sliding(N) 与sliding(N, 1)同义词将允许计算N项目的移动平均值。 sliding(N, N)将输入分成大小为N批次。 sliding(1, N)获取第N个元素样本。 希望您会发现这个收藏家有用喜欢 翻译自: https://www.javacodegeeks.com/2014/07/grouping-sampling-and-batching-custom-collectors-in-java-8.htmlzipkin 自定义采样率

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子商务和网站建设区别最新wordpress免费主题

简介 原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制已有对象来生成新的对象,而无需再次使用构造函数。 描述 原型模式通过复制现有对象来创建新的对象,而无需显式地调用构造函数或暴露对象的创建…

VS2022激活秘钥

今天提醒我试用期过了 ,于是在网上找了个秘钥: VHF9H-NXBBB-638P6-6JHCY-88JWH

NOIP2025模拟赛24

T1 T2 T3 T4\(\color{#52C41A} 普及+/提高\) \(\color{#3498DB} 提高+/省选-\) \(\color{#9D3DCF} 省选/NOI-\) \(\color{#0E1D69} NOI/NOI+\)参赛网址:https://oj.33dai.cn/d/TYOI/contest/689ad798c5d9c2f14c20b17f…

郑州中原区建设局网站柳江企业网站开发公司

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 一、内省是什么、实现方式: 内省(Introspector)是Java语言对Bean类属性、事件的一种缺省处理方法。…

亿诚建设项目管理有限公司网站四字母net做网站怎么样

数据架构的重要构件之一是数据模型,当然从数据架构的视角来说的数据模型是指企业级数据模型。本篇文章更多是讨论如何设计和管理数据模型,此处的数据模型是泛指在组织中通过数据建模的过程,来发现、分析和确定数据需求范围,并用于…

五屏网站建设代理商珠海网站建设电话

文章目录 电压源与电流源简介1.电压源的本质2.电流源的本质3.Q&A 推荐学习 电压源与电流源简介 1.电压源的本质 无论带什么样的负载,输出电压保持不变的电路才是电压源。 一个电路想要输出电压不变,那它必须有强有力的输出电流能力,而不…

grammar(?

随机重排函数,shuffle(begin(),end(),rnd / rand()); (mt19937 rnd(time(0))😉 scanf读入printf输出 long double 需要用 %Lf

外贸电子网站建设南京seo关键词优化服务

一、堆树的定义 堆树的定义如下: (1)堆树是一颗完全二叉树; (2)堆树中某个节点的值总是不大于或不小于其孩子节点的值; (3)堆树中每个节点的子树都是堆树。 当父节点的键…

免费招聘网站平台有哪些wordpress右侧空白

第二周作业:本周作业内容:1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。touch,rm,mv,cp,file,ls,chmod,chown,ln,rename,touch 修改文件atime,如果文件不存在,那么创建该文件。rm&#xff1…

网站 外包 版权网站域名价值查询

大模型日报 2024-05-05 大模型新闻: Techs new arms race: The billion-dollar battle to build AI - 小型专业化模型可以为各种细分应用提供关键的、高效的能力,这是AI行业必须要支持的。来源:VentureBeatGenerative AI on Agenda for Next CIECA Webin…

什么网站做的比较好国家企业信息年度申报系统

内置函数 all()1、描述:all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 True,否则返回 False。元素除了是 0、空、None、False外都算 True。等价于函数:def all(iterable):for element in iterable:if not element:retur…

读人形机器人25伦理问题

读人形机器人25伦理问题1. 数据安全与隐私保护 1.1. 机器人融入日常生活引发了诸多伦理问题,社会必须予以关注 1.2. 在机器人日益融入家庭和工作场所的时代,保护个人信息至关重要 1.3. 数据安全和隐私是人机交互中至…

使用场景规则匹配模式代替复杂的if else条件判断

缘起 在业务处理程序中, 经常需要按照不同的场景有不同的处理方式, 在代码库中也充斥着大量的复杂的 if/else 语句, 这类代码可维护性非常差, 底层原因有:每个场景缺少定义, 将场景识别和场景的应对代码耦合在一…

9.28作业

结果: false false true SMALL MEDIUM 原因:枚举是特殊的类,他的每一个枚举值都是类的实例,LARGE两者指向不同内存地址,因此结果为 false 。isPrimitive() 用于判断是否为原始类型,因此结果为 false 。 结论:…

网站举报能不能查到举报人网站建设合同 模板

环境:win7python2.7 一直想学习多进程或多线程,但之前只是单纯看一点基础知识还有简单的介绍,无法理解怎么去应用,直到前段时间看了github的一个爬虫项目涉及到多进程,多线程相关内容,一边看一边百度相关知识点,现在把一些相关知识点和一些应用写下来做个记录. 首先说下什么是进…

广东网站建设英铭科技开一个小程序要多少钱

1.使用YUM查找软件包 $ yum search python 2.列出所有可安装的软件包 $ yum list | grep python 3.列出所有可更新的软件包 $ yum list updates 4.列出所有已安装的软件包 $ yum list installed | grep python

哪个网站可以搭建网页网站建设合同 技术合同

城市的街道因为汽车数量的增长越来越繁忙,对于驾车一族而言,在热门区域寻找停车场更是无比头痛的事情。然而与此同时,其实也许很多办公楼、住宅楼、酒店和公共车库中仍有许多付费停车的资源未被充分利用。 ParkBee就是这样一家为城市提供智能…

上海校园兼职网站建设微信插件 wordpress

数字人是指通过人工智能和虚拟形象技术创造的虚拟个体,具备自己的外貌、声音和行为。数字人的出现引起了广泛关注和热议,成为当今社会热门话题。本文将解析数字人的概念和特点,并探讨数字人之所以如此火爆的原因。 一、什么是数字人&#xf…

链接网站某一页面如何做自己怎么做网站推广

VS2022今天Visual Studio 2022 终于发布了,你只需要按下⾯地址就可以快速安装你所需要的Visual Studio 2022版本,包括了企业版本,专业版本,以及社区版本。请输入以下⽹址安装最新的Visual Studio 2022 https://aka.ms/InstallVS或…

2025.9.28+7[未完]

2025.9.28 Week 笔记2025.9.28