自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(153)
  • 收藏
  • 关注

转载 LSM详解

关于LSM结构的相关介绍,这篇文章比较好,特此纪录一下https://yq.aliyun.com/articles/767772

2020-12-15 17:46:15 2056

原创 Flink中Slot概念理解

Flink中slot数量代表了所有最高能支持的subtask数量。也就是整个任务的最高并发度,但是并不代表一个线程的概念,内部也是可以启动很多线程的。

2020-12-04 18:20:29 1880 3

原创 一个好的Druid学习资料

推荐一个比较全面的Druid学习资料https://www.apache-druid.cn/

2020-05-12 14:19:53 363

原创 VisualVM分析内存泄漏情况

首先,导出jvm内存信息文件(.dump),通过命令:jmap -dump:format=b,file=文件名 [pid]其次,安装VisualVM,如下图然后进入VisualVM,如下图:点击"装入",然后选择你的dump文件,就可以分析了,如下图:参考:https://blog.csdn.net/lzwglory/article/details/795...

2020-04-07 20:20:27 3455 1

原创 记一次Flink任务Full gc的问题排查

最近发现flink任务vc_lark_rtc_event_job_new_test会每隔一两天会造成上游topic消费积压,后来发现是因为full gc(Full GC(Ergonomics)通过TM中的gc.log.0.current日志文件查看)频繁导致cpu飙升,造成数据处理不过来造成积压,查看Dtop监控可以看到然后进入到tm中,如下图:点击webshell,...

2020-03-29 18:29:25 5165 2

原创 flink深入研究(12) DataStream类中keyBy函数调用流程

这里再贴一下相关代码:// 连接socket获取输入的数据 DataStreamSource<String> text = env.socketTextStream("localhost", port, "\n"); // 计算数据 DataStream<WordWithCount> windowCount = text.flatMap(new Flat...

2020-01-31 15:59:14 3563

原创 flink深入研究(11) DataStream类中flatMap函数调用流程

flatMap算子和map有些相似,输入都是数据流中的每个元素,与之不同的是,flatMap的输出可以是零个、一个或多个元素,它的输出元素放在了Collector类对象中,接下来我们进入到代码中来进行分析,我们使用示例如下:// 计算数据DataStream<WordWithCount> windowCount = text.flatMap(new FlatMapFunctio...

2020-01-20 09:44:12 2782 2

原创 flink深入研究(10) env.socketTextStream("localhost", port, "\n")调用流程02

上篇我们讲解类一部分数据源operator的生成,下面继续从addSource开始讲解,代码如下:/** * Ads a data source with a custom type information thus opening a * {@link DataStream}. Only in very special cases does the user need to *...

2020-01-09 08:40:10 1712

转载 Druid架构设计思想详解

Druid 的目标是提供一个能够在大数据集上做实时数据消费与探索的平台。对普遍的数据平台来说,数据的高效摄入与快速查询往往是一对难以两全的指标,但Druid 是怎么做到的呢?这很大程度上得益于其独到的架构设计和基于DataSource 与Segment 的数据结构。对于目前大多数Druid 的使用场景来说,Druid 本质上是一个分布式的时序数据库,而对于一个数据库的性能来说,其数据的组织方式...

2020-01-07 18:54:20 317

原创 flink深入研究(09) env.socketTextStream("localhost", port, "\n")调用流程01

数据源有多种:1、基于集合:有界数据集,更偏向于本地测试用2、基于文件:适合监听文件修改并读取其内容3、基于 Socket:监听主机的 host port,从 Socket 中获取数据4、自定义 addSource:大多数的场景数据都是无界的,会源源不断的过来。比如去消费 Kafka 某个 topic 上的数据,这时候就需要用到这个 addSource,可能因为用的比较多的原因吧,...

2020-01-01 12:24:14 3565

原创 flink深入研究(08) flink的StreamExecutionEnvironment.execute()函数调用过程02

上一篇我们讲到了ClosureCleaner的clean函数,这一篇我们继续往下分析,在clean函数中又调用了另外一个clean函数clean(func, level, checkSerializable, Collections.newSetFromMap(new IdentityHashMap<>()));代码如下:private static void clean(Obj...

2019-12-22 15:23:54 2269

原创 flink深入研究(07) flink的StreamExecutionEnvironment.execute()函数调用过程01

今天我们开始分析Flink中第一个流程图StreamGraph的生成,StreamGraph 相关的代码主要在org.apache.flink.streaming.api.graph包中。构造StreamGraph的入口函数是StreamGraphGenerator.generate(env, transformations)。该函数会由触发程序执行的方法StreamExecutionEnv...

2019-12-21 22:01:59 2007

原创 flink深入研究(06) flink的程序启动过程---01 flink的Graph

真正开始运行代码的是execute函数,这个函数会根据环境上下文采取不同的行为,这个我们后面会详细讲解,我们先来看看flink的架构,下图是结构图flink架构图当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然后 ...

2019-12-19 09:18:33 628

原创 flink深入研究(05) 算子operator

flink的整个数据处理流程是由一个个operator组成的,数据从源头开始传递给一个个operator进行链式处理,每一个处理逻辑就是一个operator,一个operator包含一个输入、一个处理逻辑、一个输出,operator是在TaskManager的slot中执行的,一个slot就是一个线程,一个operator只能在一个slot中执行,一个slot中可以运行多个operator(同一个...

2019-12-17 08:47:55 1601

原创 flink深入研究(04) flink的启动方式

Flink可以在单台机器上运行,甚至是单个Java虚拟机(Java Virtual Machine)。这种机制使得用户可以在本地测试或者调试Flink程序。Flink的启动方式总共有三种部署方式,local、standalone、Yarn。local方式:该方式是在Java虚拟机上运行Flink程序,或者是在正在运行程序的Java虚拟机上,像我们在IDE上直接运行就是采用的local方式,...

2019-12-14 08:29:02 2049 1

原创 flink深入研究(03) flink运行环境的获取(下)

上篇我们讲到了createStreamExecutionEnvironment函数,我们这里再贴一下代码:private static StreamExecutionEnvironment createStreamExecutionEnvironment() { // because the streaming project depends on "flink-clients" (an...

2019-12-08 09:43:14 1040

原创 flink深入研究(02) flink运行环境的获取(上)

// 获取运行环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();这行代码会返回一个可用的执行环境,是flink程序执行的上下文,记录了相关配,如并行度等,并提供了一系列方法,如输入流的读入方法,运行整个程序的execute方法等,对于分步式流处理程序来说,flatM...

2019-12-04 08:35:19 1406

原创 flink深入研究(01) flink本地部署

Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。此外,Flink的运行时本身也支持迭代算法的执行(来自百度百科的定义)。说白了就是flink是一个开源的分布式、高性能的流式处理框架,用于实时处理海量数据。在详细讲...

2019-11-28 08:39:09 310

原创 十步学习法

最近在看一本书,名叫《软技能》,里面有一章叫“十步学习法”,感觉很有启发,作为软件开发从业者,各种技术日新月异,我们要不断的学习才能不被这个行业淘汰,这也就意味着我们得花足够的时间在学习上,但是一天中工作就要占用我们大部分时间,更何况现在互联网公司都推行995甚至996,这大大压缩了我们的学习时间,这样我们的学习方法和效率就显得很重要,我们如何才能在有限的时间内高效学习? ...

2019-11-21 00:11:20 386

原创 IaaS、PaaS、SaaS之间的区别

推荐网址https://www.zhihu.com/question/20387284

2019-10-03 22:55:50 143

原创 读《Head First 设计模式》笔记--命令模式

单件模式定义将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

2019-09-25 19:23:23 104

原创 读《Head First 设计模式》笔记--单件模式

单件模式定义确保一个类只有一个实例,并提供一个全局访问点。单件模式要点1、单件模式确保程序中一个类最多只有一个实例。2、单件模式也提供访问这个实例的全局点。3、在java中实现单件模式需要私有的构造器、一个静态方法和一个静态变量。4、确定在性能和资源上的限制,注意多线程的问题。适用场景有些对象只需要一个,比如说线程池、缓存、日志对象、注册表、打印机等等。...

2019-09-05 13:50:09 102

原创 读《Head First 设计模式》笔记--工厂模式

工厂模式定义定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。设计原则要依赖抽象,不要依赖具体类。为了交互对象之间的松耦合设计而努力。不能让高层组件依赖底层组件,而且,不管高层还是底层,都应该依赖于抽象。抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。...

2019-09-04 20:16:32 71

原创 读《Head First 设计模式》笔记--修饰者模式

装饰者模式定义动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。设计原则类应该对扩展开放,对修改关闭。我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可搭配新的行为。这样的设计具有弹性可以应对改变,可以接受新的功能来应对改变的需求。...

2019-09-02 20:00:49 68

原创 读《Head First 设计模式》笔记--观察者模式

观察者模式定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。设计原则为了交互对象之间的松耦合设计而努力。...

2019-09-02 15:13:51 105

原创 读《Head First 设计模式》笔记--策略模式

策略模式定义定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。设计原则1、找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混合在一起。2、针对接口编程,而不是针对实现编程。3、多用组合,少用继承。关于1,之所以要将应用中变化的和不变的独立出来,是因为如果混合在一起,会导致每次需求变化,都需要针对整个应用修...

2019-08-30 10:58:00 110

转载 Redis Cluster原理详解

转载自http://moguhu.com/article/detail?articleId=108Redis 3.0之后,节点之间通过去中心化的方式,提供了完整的sharding、replication(复制机制仍使用原有机制,并且具备感知主备的能力)、failover解决方案,称为 Redis Cluster。即:将 proxy/sentinel 的工作融合到了普通Redis节点里。后面...

2019-06-03 18:03:20 1125

原创 链表的相关操作

文章主要是对链表进行一些操作,下面是相关代码:ListNode类package com.cs.algorithm.algorithm;public class ListNode { public ListNode() { } public ListNode(int val, ListNode nextnode) { super(); this.val = v...

2019-05-11 19:26:43 195

转载 相关对象的存储位置

推荐比较好的一篇文章https://www.cnblogs.com/liujunming/p/4391401.html

2019-05-06 11:51:55 102

原创 java性能调优工具

工具:jstackjstatjmapjhat1、jstack线程跟踪工具,用于打印指定Java进程的线程堆栈信息,如下示例:"2019-04-12 18:21:24Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.20-b23 mixed mode):\"Attach Listener\" #605 da...

2019-04-12 18:32:33 1030

转载 NIO和AIO

IO感觉上和多线程并没有多大关系,但是NIO改变了线程在应用层面使用的方式,也解决了一些实际的困难。而AIO是异步IO和前面的系列也有点关系。在此,为了学习和记录,也写一篇文章来介绍NIO和AIO。1. 什么是NIONIO是New I/O的简称,与旧式的基于流的I/O方法相对,从名字看,它表示新的一套Java I/O标 准。它是在Java 1.4中被纳入到JDK中的,并具有以下特性:N...

2019-04-01 20:29:12 305

转载 IO - 同步,异步,阻塞,非阻塞

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不...

2019-04-01 18:09:40 100

转载 什么是倒排索引

本文章属于转载文章,原文地址http://www.cnblogs.com/zlslch/p/6440114.html见其名知其意,有倒排索引,对应肯定,有正向索引。 正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引。 在搜索引擎中每个文件都对应一个文件ID,文件内容被表示为一系列关键词的集合(实际上在搜索引擎索...

2019-03-28 14:36:27 181

转载 一致性hash算法

本文是转载的,转载地址为https://www.cnblogs.com/xrq730/p/5186728.html一致性Hash算法关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法、一致性Hash算法的算法原理做了详细的解读。算法的具体原理这里再次贴上:先构造一个长度为232的整...

2019-03-19 15:50:16 110 1

原创 HDFS客户端文件写操作---FSDataOutputStream的写操作01

在分析FSDataOutputStream的写操作前,我们先来了解一下它的结构,相应的结构图如图1:图1我们开始分析写函数,最终调用的是DFSOutputStream类中的write函数,而DFSOutputStream继承FSOutputSummer,FSOutputSummer类中实现了write函数,该类中有两个write函数:write(byte b[], int off, int...

2019-03-13 23:42:27 1630

转载 Dapper,大规模分布式系统的跟踪系统

概述当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。Dapper--Google生产环境下的分布式跟踪系统,应运而生。那么我们就来介绍一个大规模集群的跟踪系统...

2019-03-13 18:02:30 155

转载 UML类图与类的关系详解

虚线箭头指向依赖;实线箭头指向关联;虚线三角指向接口;实线三角指向父类;空心菱形能分离而独立存在,是聚合;实心菱形精密关联不可分,是组合;内部类在UML中以一个带十字的圆圈的关联标记来表示。eg:&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt;匿名内部类的构造型有&lt;&lt;anonymous&gt;&gt;...

2019-03-10 09:48:26 868 1

原创 HDFS客户端文件写操作---FSDataOutputStream的构建过程

从上一篇文章(HDFS客户端文件写操作---概述)的示例代码中可以看到,先创建FileSytem类对象(其实这个对象就是DistributedFileSystem类对象,DistributedFileSystem类是FileSytem类的子类),我们从FileSytem类的get函数开始,该函数有两个,代码如下:/** Returns the FileSystem for this URI'...

2019-03-04 22:51:16 1368

原创 HDFS客户端文件写操作---概述

前面我们用了很多文章讲解了HDFS客户端文件读操作的相关内容,现在我们开始进入到写操作部分,HDFS目前提供了三个客户端接口:DistributedFileSystem、FsShell和DFSAdmin,详细看 hadoop2.6.0源码剖析-客户端(第一部分--概述),我们这里默认采用DistributedFileSystem接口,客户端在写操作前,首先需要调用DistributedFileSy...

2019-02-28 00:39:23 334

原创 redis中采用管道进行sadd操作

管道中sadd函数定义如下:public transient Long sAdd(byte[]key, byte[]... values)第一个参数为byte类型的一维数组,第二个参数可以传入0到多个Object对象或者传入一个Object[]数组。现在有一个需求,就是将Set&lt;String&gt;中的数据存储到某个key的value中,此时我们该怎么去将这个Set容器中的数据...

2019-02-27 19:25:46 3059

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除