Collector 源码分析】的更多相关文章

之前已经对流在使用上已经进行了大量应用了,也就是说对于它的应用是比较熟悉了,但是比较欠缺的是对于它底层的实现还不太了解,所以接下来准备大量通过阅读官方的javadoc反过来加深对咱们已经掌握这些知识更加深层次的理解,这个阅读会是一个比较枯燥的,但是它的价值是非常非常大的,也就是要达到知其然知其所以然的目的. 这里先以一个咱们之前用过的例子为例,以它做为咱们分析源码的一个入口,新建一个学生类: 然后生成集合: 然后干一个很无聊的操作:用stream再将它转换成List并打印,如下: 为什么要举这个…
Collectors Collectors 配合 stream 可以实现 MapReduce 操作,也可以单独完成流中元素的收集. 收集器接口和实现 /** * 收集器接口 */ public interface Collector<T, A, R> { /** * 创建并返回一个可变的结果容器 */ Supplier<A> supplier(); /** * 创建并返回一个将值归约到可变结果容器中的累加器 */ BiConsumer<A, T> accumulator…
1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持. spring-core从源码上看,分为6个package,分别是asm,cglib,core,lang,objenesis和util. 1.1 asm 关于asm的内幕参见博客: spring源码分析之spring-core asm概述 1.2 cglib 关于cglib的内幕参见博客 cglib源码分析--转 1.3 core 1.4 lang 四个注解接口 /** * In…
Solr4.8.0源码分析(6)之非排序查询 上篇文章简单介绍了Solr的查询流程,本文开始将详细介绍下查询的细节.查询主要分为排序查询和非排序查询,由于两者走的是两个分支,所以本文先介绍下非排序的查询. 查询的流程主要在SolrIndexSearch.getDocListC(QueryResult qr, QueryCommand cmd),顾名思义该函数对queryResultCache进行处理,并根据查询条件选择进入排序查询还是非排序查询. 1  /** 2 * getDocList ve…
Solr4.8.0源码分析(5)之查询流程分析总述 前面已经写到,solr查询是通过http发送命令,solr servlet接受并进行处理.所以solr的查询流程从SolrDispatchsFilter的dofilter开始.dofilter包含了对http的各个请求的操作.Solr的查询方式有很多,比如q,fq等,本章只关注select和q.页面下发的查询请求如下:http://localhost:8080/solr/test/select?q=code%3A%E8%BE%BD*+AND+l…
FP-Growth是一种常被用来进行关联分析,挖掘频繁项的算法.与Aprior算法相比,FP-Growth算法采用前缀树的形式来表征数据,减少了扫描事务数据库的次数,通过递归地生成条件FP-tree来挖掘频繁项.参考资料[1]详细分析了这一过程.事实上,面对大数据量时,FP-Growth算法生成的FP-tree非常大,无法放入内存,挖掘到的频繁项也可能有指数多个.本文将分析如何并行化FP-Growth算法以及Mahout中并行化FP-Growth算法的源码. 1. 并行化FP-Growth 并行…
## 1 一句话概括ThreadLocal<font face="微软雅黑" size=4>  什么是ThreadLocal?顾名思义:线程本地变量,它为每个使用该对象的线程创建了一个独立的变量副本.</font>## 2 ThreadLocal使用场景<font face="微软雅黑" size=4>  用一句话总结ThreadLocal真的实在是太苍白无力了!我们通过一个简单的例子入手.比如现在有A和B两台服务器需要通过htt…
JUnit Rule简述 Rule是JUnit 4.7之后新加入的特性,有点类似于拦截器,可以在测试类或测试方法执行前后添加额外的处理,本质上是对@BeforeClass, @AfterClass, @Before, @After等的另一种实现,只是功能上更灵活多变,易于扩展,且方便在类和项目之间共享. JUnit的Rule特性提供了两个注解@Rule和@RuleClass,大体上说@Rule可以与@Before及@After对应,@ClassRule可以与@BeforeClass及@After…
JVM源码分析之SystemGC完全解读 概述 JVM的GC一般情况下是JVM本身根据一定的条件触发的,不过我们还是可以做一些人为的触发,比如通过jvmti做强制GC,通过System.gc触发,还可以通过jmap来触发等,针对每个场景其实我们都可以写篇文章来做一个介绍,本文重点介绍下System.gc的原理 或许大家已经知道如下相关的知识 system.gc其实是做一次full gc system.gc会暂停整个进程 system.gc一般情况下我们要禁掉,使用-XX:+DisableExpl…
转载:https://blog.csdn.net/neven7/article/details/50782451 0.背景 性能测试工具nGrinder支持在无需修改源码的情况下,对目标服务器收集自定义数据,最多支持5类: 在性能测试详细报告页,目标服务器->你的机器ip便签页下,默认只收集CPU, Memory, Received Byte/s, Sent Byte Per Secode/s等4类数据: 可能你还需要监控其它的性能统计数据,用于分析(比如load, Full Gc):本文先介绍…
本节内容 agent功能 1.1 agent上报数据 1.2 agent与HBS同步 1.3 agent Http服务 agent源码分析 2.1 初始化config配置 2.2 初始化根目录,本地IP和rpc连接池 big mapper 2.3 定时同步各种数据 2.4 HTTP服务 agent设计优缺点 优点: 1. agent功能 agent的目的是收集目标机器上的所有数据,并动态同步hbs中的配置信息,将数据上报到transfer中,是所有监控数据的产生源头. 1.1 agent上报数据…
一个应用软件维护的后期一定是要做监控,akka也不例外,它提供了集群模式下的度量扩展插件. 其实如果读者读过前面的系列文章的话,应该是能够自己写一个这样的监控工具的.简单来说就是创建一个actor,它负责收集节点的性能信息,然后用eventStream或者PUB/SUB把消息发布出去,需要这个信息的actor或者router订阅,然后根据信息做响应的操作就好了.当然了,akka估计也是这样做的,因为在akka里面一切都是actor. akka实现的Metrics扩展能够搜集系统性能指标,并能够把…
elasticsearch源码分析之search模块(server端) 继续接着上一篇的来说啊,当client端将search的请求发送到某一个node之后,剩下的事情就是server端来处理了,具体包括哪些步骤呢? 过程 一.首先我们来看看接收地方其实就是在org.elasticsearch.action.search.TransportSearchAction中,收到请求之后会判断请求的index的shard是否只有一个,如果是一个的话,那么会强制将请求的type设置为QUERY_AND_F…
上篇文章 spark 源码分析之十六 -- Spark内存存储剖析 主要剖析了Spark 的内存存储.本篇文章主要剖析磁盘存储. 总述 磁盘存储相对比较简单,相关的类关系图如下: 我们先从依赖类 DiskBlockManager 剖析. DiskBlockManager 文档说明如下: Creates and maintains the logical mapping between logical blocks and physical on-disk locations. One block…
前面介绍了批量处理的WorkCount是如何执行的 <从flink-example分析flink组件(1)WordCount batch实战及源码分析> <从flink-example分析flink组件(2)WordCount batch实战及源码分析----flink如何在本地执行的?> 这篇从WordCount的流式处理开始 /** * Implements the "WordCount" program that computes a simple wor…
kubernetes版本:1.13.2 接上一节:kubernetes垃圾回收器GarbageCollector Controller源码分析(一) 主要步骤 GarbageCollector Controller源码主要分为以下几部分: monitors作为生产者将变化的资源放入graphChanges队列:同时restMapper定期检测集群内资源类型,刷新monitors runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attem…
前提 最近接触到的一个项目要兼容新老系统,最终采用了ThreadLocal(实际上用的是InheritableThreadLocal)用于在子线程获取父线程中共享的变量.问题是解决了,但是后来发现对ThreadLocal的理解不够深入,于是顺便把它的源码阅读理解了一遍.在谈到ThreadLocal之前先买个关子,先谈谈黄金分割数.本文在阅读ThreadLocal源码的时候是使用JDK8(1.8.0_181). 黄金分割数与斐波那契数列 首先复习一下斐波那契数列,下面的推导过程来自某搜索引擎的wi…
[源码分析] 从源码入手看 Flink Watermark 之传播过程 0x00 摘要 本文将通过源码分析,带领大家熟悉Flink Watermark 之传播过程,顺便也可以对Flink整体逻辑有一个大致把握. 0x01 总述 从静态角度讲,watermarks是实现流式计算的核心概念:从动态角度说,watermarks贯穿整个流处理程序.所以为了讲解watermarks的传播,需要对flink的很多模块/概念进行了解,涉及几乎各个阶段.我首先会讲解相关概念,然后会根据一个实例代码从以下几部分来…
[源码分析] 从实例和源码入手看 Flink 之广播 Broadcast 0x00 摘要 本文将通过源码分析和实例讲解,带领大家熟悉Flink的广播变量机制. 0x01 业务需求 1. 场景需求 对黑名单中的IP进行检测过滤.IP黑名单的内容会随时增减,因此是可以随时动态配置的. 该黑名单假设存在mysql中,Flink作业启动时候会把这个黑名单从mysql载入,作为一个变量由Flink算子使用. 2. 问题 我们不想重启作业以便重新获取这个变量.所以就需要一个能够动态修改算子里变量的方法. 3…
[源码分析] 从FlatMap用法到Flink的内部实现 0x00 摘要 本文将从FlatMap概念和如何使用开始入手,深入到Flink是如何实现FlatMap.希望能让大家对这个概念有更深入的理解. 0x01 Map vs FlatMap 首先我们先从概念入手. 自从响应式编程慢慢壮大以来,这两个单词现在越来越被大家熟悉了.前端能见到它们的身影,后台也能见到:安卓里面有,iOS也有.很多兄弟刚遇到它们时候是懵圈的,搞不清楚之间的区别.下面我就给大家简单讲解下. map 它把数组流中的每一个值,…
[源码分析] 带你梳理 Flink SQL / Table API内部执行流程 目录 [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 0x00 摘要 0x01 Apache Calcite 1. Calcite 概念 2. Calcite 处理流程 0x02 Flink SQL综述 1. Flink关系型API执行原理 2. Flink Sql 执行流程 3. Flink Table Api 执行流程 4. Flink Table/SQL 执行流程的异同 0x03…
[源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码生成 (修订版) 目录 [源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码生成 (修订版) 0x00 摘要 0x01 概述结论 1. 问题结论 2. 问题流程 0x02 UDX 1. UDX (自定义函数) 2. 自定义标量函数 Scalar Functions (UDF) 3. 自定义聚合函数(UDAF) 4. 自定义表值函数(UDTF) 5. RichFunction 0x03…
第一章.spark源码分析之RDD四种依赖关系 一.RDD四种依赖关系 RDD四种依赖关系,分别是 ShuffleDependency.PrunDependency.RangeDependency和OneToOneDependency四种依赖关系.如下图所示:org.apache.spark.Dependency有两个一级子类,分别是 ShuffleDependency 和 NarrowDependency.其中,NarrowDependency 是一个抽象类,它有三个实现类,分别是OneToO…
Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 目录 Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 0x00 摘要 0x01 背景概念 1.1 词向量基础 1.1.1 独热编码 1.1.2 分布式表示 1.2 CBOW & Skip-Gram 1.2.1 CBOW 1.2.2 Skip-gram 1.3 Word2vec 1.3.1 Word2vec基本思想 1.3.2 Hierarchical Softmax基本思路 1.3.3 Hierarchi…
Alink漫谈(十七) :Word2Vec源码分析 之 迭代训练 目录 Alink漫谈(十七) :Word2Vec源码分析 之 迭代训练 0x00 摘要 0x01 前文回顾 1.1 上文总体流程图 1.2 回顾霍夫曼树 1.2.1 变量定义 1.2.2 为何要引入霍夫曼树 0x02 训练 2.1 训练流程 2.2 生成训练模型 2.3 初始化词典&缓冲 2.4 更新模型UpdateModel 2.5 计算更新 2.5.1 sigmoid函数值近似计算 2.5.2 窗口及上下文 2.5.3 训练…
Alink漫谈(二十二) :源码分析之聚类评估 目录 Alink漫谈(二十二) :源码分析之聚类评估 0x00 摘要 0x01 背景概念 1.1 什么是聚类 1.2 聚类分析的方法 1.3 聚类评估 0x02 Alink支持的评估指标 2.1 轮廓系数(silhouette coefficient): 2.2 Calinski-Harabaz(CH) 2.3 Davies-Bouldin指数(Dbi) 2.4 Rand index(兰德指数)(RI) .Adjusted Rand index(调…
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 概述 接下来将对external-provisioner组件进行源码分析. 在external-provisioner组件中,rbd与cephfs共用一套处理逻辑,也即同一套代码,同时适用于rbd存储与cephfs存储. external-provisioner组件的源码分析分为三部分: (1)主体处理逻辑分析: (2)main方法与Leader选举分析: (3)组件启动参数分析. 基于ta…
ABP是一套非常优秀的web应用程序架构,适合用来搭建集中式架构的web应用程序. 整个Abp的Infrastructure是以Abp这个package为核心模块(core)+15个模块(module).其中13个依赖于Abp这个核心包.另外两个包(FluentMigration,Web.Resources)相对独立 Abp.AutoMapper: 实现对象之间的自动映射. Abp.EntityFramework:通过EntityFramework实现数据访问层. Abp.FluentMigra…
1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu…
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网络有关的配置命令主要有两个:listen和sever_name.首先先了解这两个命令的用法. listen listen命令设置nginx监听地址,nginx从这里接受请求.对于IP协议,这个地址就是address和port:对于UNIX域套接字协议,这个地址就是path. 一条listen指令只能…