自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

瓜牛呱呱的博客

最美的不是下雨天,是曾与你躲过雨的屋檐

  • 博客(65)
  • 收藏
  • 关注

原创 DataX启动流程源码解析(图)

DataX执行流程源码图解

2022-06-16 18:29:36 466 2

转载 没有好平台如何成长

本文作者:林小铂 (Paul Lin)本文链接: http://www.whitewood.me/2017/04/02/没有好平台如何成长/版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!最近还是有些许惰性的,在网上看各个大佬的励志文章,以此来督促自己继续前进最近也是蛮想再度回到大厂的,看了这篇大佬的文章还是颇有感触,转载共勉前段时间Spenser有篇文章,大意是平台就是本事,因为环境在绝大多数人的成长中起到决定性作用,好的平.

2021-09-08 18:16:24 219

原创 Flink-1.10.0 Native Kubernetes 部署方式实践

最新发布的Flink有了native Kubernetes的功能,可以根据需求动态的增加、减少pod,非常值得测试前提1、1.9版本或者以上的K8s集群,且启用了DNS2、能够操作pod、service的 KubeConfig3、有RBAC权限的service Account,用于创建,删除pod测试解压flink tar包后,执行如下命令:./bin/kubernetes-...

2020-03-17 20:20:23 926

原创 JDK源码-HashMap-resize扩容方法(JDK7和JDK8)

扩容操作可以认为是HashMap源码中最复杂的resize方法的不是public的,不能通过client触发,所以只能直接进入源码查看JDK 7void resize(int newCapacity) { Entry[] oldTable = table; int oldCapacity = oldTable.length; if (oldCapacity == MAXIMUM_C...

2018-11-09 16:07:13 1581

原创 JDK源码-HashMap-remove方法(JDK7和JDK8)

测试代码/** * 测试remove操作的区别 */@Testpublic void remove(){ HashMap<String, String> map = new HashMap(); map.put("aa","aa"); map.remove(&am

2018-11-09 11:49:21 583

原创 JDK源码-HashMap-put方法(JDK7和JDK8)

下面是对HashMap中put方法的源码进行注释测试代码 /** * 测试put操作的区别 */ @Test public void put(){ HashMap<String, String> map = new HashMap(); map.put("aa","aa"); }JDK 7...

2018-11-09 10:34:53 808

原创 Java实现斐波那契数列(递归、遍历、矩阵)

什么是斐波那契数列其实很简单,可以理解为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)比如这样一个数列:1、1、2、3、5、8、13、21、34、……有兴趣可以看百度百科下面我们就来实现,给定一个n,求f(n)的值递归解法递归方法其实是对方法定义完美的一对一实现,但是时间复杂度为O(2的n次方)代码如下: /** ...

2018-09-27 20:23:24 7514

原创 Java实现二叉树——增删改查

今天心血来潮,突然想写个二叉树的类,哈哈~功能代码如下:package tree;/** * 傻逼tree * @author lwj * @date 2018/9/20 */public class MyTree<K extends Comparable, V>{ TreeNode root; /** * 插入操作 * @p...

2018-09-20 13:02:54 1274

原创 JDK1.8中TreeMap源码解析——红黑树删除

在看本文之前建议先看一下二叉树的删除过程,这里有一篇文章写得不错,可以看一下1、后继节点在看源码之前,先说说红黑树寻找 待删除节点t 的 后继节点 的过程:如果待删除节点t有右节点,那么后继节点为该节点右子树中最左的节点,也就是右子树中值最小的节点如果待删除节点t无右节点,那么后继节点是向上遍历过程中 第一个向左拐的父节点图解过程如下:注:图片来源该过程对应的TreeMap...

2018-09-19 13:10:04 752

原创 Flume中Memory Channel参数说明

参数说明capacity在 channel 中 最多能保存多少个 event。默认是100transactionCapacity在每次从source中获取数据或者将数据sink出去的一次事务操作中,最多处理的 event 数。默认是100byteCapacity在 channel 中最多能容纳 所有event body的总字节数。默认是 JVM最大可用内存(-...

2018-09-18 17:10:19 6996

原创 记用 SpringBoot 消费 Kafka 过程中的一次问题排查

1、现象最近在接受公司Kafka的集群,之前公司重启一台服务器的时候出现重复消费的情况,所以就跟消费端的服务一起联调查册。消费端目前有两个服务,但是在测试的过程中发现其中一个服务可以接受到数据,但是另一个服务端却接受不到数据。于是查看了一下它的日志,关键日志如下:[INFO] org.apache.kafka.clients.consumer.internals.AbstractCoord...

2018-07-04 20:35:02 10019 1

原创 Kafka Producer生产数据时数据丢失分析

今天在测试 Storm 程序过程中,想通过运行在 idea 的 Kafka Producer 生产一条数据来验证一下 Storm 程序,发现居然没有成功将数据生产到 Kafka 集群中,于是进行了一番测试,最终找到了原因! 注:下面程序测试中使用的 kafka 的版本为 0.10.2.0,zookeeper 的版本为 3.4.5一、情景再现在 linux 中运行如下命令来监控...

2018-05-10 15:59:05 7867 3

原创 SparkML之推荐引擎(二)—— 推荐模型评估

本文内容和代码是接着上篇文章来写的,推荐先看一下哈~ 我们上一篇文章是写了电影推荐的实现,但是推荐内容是否合理呢,这就需要我们对模型进行评估 针对推荐模型,这里根据 均方差 和 K值平均准确率 来对模型进行评估,MLlib也对这几种评估方法都有提供内置的函数在真实情况下,是要不断地对推荐模型的三个关键参数 rank、iterations、lambda 分别选取不同的值,然后...

2018-05-04 10:35:24 1759

原创 SparkML之推荐引擎(一)—— 电影推荐

本文将使用 SparkML 来构建推荐引擎。 推荐引擎算法大致分为 基于内容的过滤、协同过滤、矩阵分解,本文将使用基于属于矩阵分解的 最小二乘法 算法来构建推荐引擎。 对于推荐引擎模块这里将分为两篇文章,第一篇文章主要是以实现推荐功能为主,第二篇文章主要是对模型进行评估 文章将按照以下章节来进行书写: 需求分析、获取数据、提取特征、训练模型、使用模型(推荐)一、需求分...

2018-05-02 18:17:24 1749

原创 SparkStreaming Direct 方式中手动管理 Kafka Offset 的示例代码

在大数据的场景下,流式处理都会借助 Kafka 作为消息接入的中间件,且 SparkStreaming 中 Direct 方式的优越性,现在可以说都使用 Direct 方式来获取 Kafka 数据Direct 方式是采用 Kafka 低级的 API 来获取数据,也就是说我们要自己来管理 这个offset SparkStreaming 中可以用 StreamingContext 的 chec...

2018-04-25 16:17:26 2664

原创 Redis SortedSet 中 score 的精度问题

一、问题发现通过 jedis 往 sortedset 中添加了个成员,并且设定了一个Double 类型的分数时,精度出现了问题 测试代码如下:@Testpublic void zadd(){ jedis.zadd("test:cli", 13.36, "mb1");}如果用 jedis 的 api 来获取 score 的话一切正常@Testpublic vo...

2018-04-23 14:39:21 8460

原创 【源码追踪】SparkStreaming 中用 Direct 方式每次从 Kafka 拉取多少条数据(offset取值范围)

我们知道 SparkStreaming 用 Direct 的方式拉取 Kafka 数据时,是根据 kafka 中的 fromOffsets 和 untilOffsets 来进行获取数据的,而 fromOffsets 一般都是需要我们自己管理的,而每批次的 untilOffsets 是由 Driver 程序自动帮我们算出来的。 于是产生了一个疑问:untilOffsets 是怎么算出来的? 接下...

2018-04-19 16:37:12 3418

原创 JVM垃圾收集器(五) —— 默认的垃圾收集器

在前面的几篇文章讲述了各种垃圾收集器,但是问题来了,我们在Linux或者Windows安装的 jdk 默认是什么收集器呢?打开控制台,在控制台中输入一下命令:java -XX:+PrintCommandLineFlags -version32位的windows可以看到下面的输出:-XX:InitialHeapSize=16777216 -XX:MaxHeapSize=2...

2018-04-18 12:00:01 2249 4

原创 JVM垃圾收集器(四) —— G1收集器

前面两篇文章主要是讲了新生代和老年代的垃圾收集器,本文就来介绍一下比较特殊的垃圾收集器——G1垃圾收集器G1是一款面向服务端应用的垃圾收集器。一、G1的特点:1、并行与并发:G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU(CPU或者CPU核心)来缩短Stop-The-World停顿的时间,部分其他收集器原本需要停顿Java线程执行的GC动作,G1收集器仍然可以...

2018-04-17 18:33:01 338

原创 JVM垃圾收集器(三) —— 老年代垃圾收集器

上一篇文章讲了新生代的垃圾收集器,这篇文章我们来讲讲老年代的垃圾收集器Serial Old收集器1、说明:一个单线程收集器,使用“标记-整理”算法。其实就是Serial收集器老年代的版本2、优缺点 和 运行图 和Serial收集器一样,所以这里就不多赘述了Parallel Old收集器1、说明:Parallel Old是Parallel Scavenge收集...

2018-04-17 17:34:24 1721

原创 JVM垃圾收集器(二) —— 新生代垃圾收集器

在看本文之前,建议先去了解一下几个概念先再来看下文哈,大牛请忽略,哈哈~所有收集器概括图下面先给大家看一下所有收集器及其关联的示意图,然后我们再对每个回收器进行讲解: ★★★ 注意:如果两个收集器之间存在连线,就说明它们可以搭配使用Serial收集器1、特点:一个单线程的收集器;且运行时必须暂停其他所有的工作线程,直到它收集结束2、虚拟机运行在Client模式...

2018-04-17 16:02:10 549

原创 JVM垃圾收集器(一) —— 概念:新生代和老年代、并行和并发

在上篇文章中我们讲到了垃圾回收的几种算法。垃圾收集算法是内存回收的方法论,而垃圾收集器是垃圾回收的具体实现。 在了解垃圾收集器之前,本篇文章先来简单的说一下新生代和老年代、并行和并发的概念。新生代和老年代从内存回收的角度来看,一般我们可以将Java堆分为:新生代和老年代。 新生代再细分可以分为 Eden空间、From Survivor空间、To Survivor空间1、...

2018-04-17 15:58:25 1369

原创 JVM垃圾回收集算法 —— 标记-清除算法、复制算法、标记-整理算法

标记-清除算法1、执行过程:如同它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象2、该算法是回收算法中最基础的算法,其他的算法都是基于该算法进行改进的3、缺点: (1)效率问题:标记和清除两个过程的效率都不高 (2)空间问题:标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配...

2018-04-17 11:24:50 3503 1

原创 JVM 中判断对象是否 “存活” 的算法 —— 可达性分析算法

在堆中,几乎存放着所有的对象实例,那么回收这些对象实例时,我们需要判断哪些对象是 “已死” 可以回收的,哪些对象是 “存活” 不需要回收的,下面就来介绍一下 JVM 中如何判断上述问题的。基本思路通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用...

2018-04-17 10:28:22 416

原创 JVM运行时数据区域 —— 程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区、运行时常量池

java虚拟机运行时数据区域的概括图如下所示: 下面将对运行时数据区进行讲解程序计数器1、说明:程序计数器可以看做是当前线程所执行的字节码的行号指示器。其实通俗点讲就是记录class文件运行到哪一行2、注意的点: (1)因为CPU执行时只能处理一个线程的代码,但是可能有多个线程在执行,所以需要记录每个线程执行到哪里,所以每个线程都有一个独立的程序计数器。所以这类区域是 “线...

2018-04-16 17:47:33 451

原创 关于 Redis Cluster 模式下获取 Java Client 的问题

Redis连接池对于单机模式来说,官网有提供个JedisPool工具类,用起来也比较方便 但是对于Redis集群模式下,官网没有提供连接池的工具类,于是就需要我们自己来实现类似的功能了,我这里采用的是单例模式的方法来解决高并发的场景。单机模式如果对于 Redis 是单机模式下的话,那么 Redis 有提供一个JedisPool类 用来构建 Redis Client 的连接池,...

2018-04-16 15:11:57 1572 2

翻译 让 Spark Streaming 程序在 YARN 集群上长时间运行(三)—— Grafana、优雅地停止(Graceful stop)、总结

前段时间看到了外国朋友写的一篇文章,觉得还不错,于是就把他翻译一下,供大家参考和学习。 如果没看过前两篇文章(第一篇、第二篇),建议先去看一下哈,这里是接着上两篇文章来写的哈~Grafana当你为 Spark 应用程序配置第一个 Grafana 仪表板时,首先出现的问题是:How to configure Graphite query when metrics fo...

2018-04-15 22:31:34 2280

翻译 让 Spark Streaming 程序在 YARN 集群上长时间运行(二)—— 日志、监控、Metrics

前段时间看到了外国朋友写的一篇文章,觉得还不错,于是就把他翻译一下,供大家参考和学习。 如果没看过第一篇文章,建议先去看一下上一篇文章哈,这里是接着上一篇文章来写的哈~日志访问 Spark 应用程序日志的最简单方法是配置 Log4j 控制台 appender,等待应用程序终止并使用 yarn logs -applicationId [applicationId] 命令。 ...

2018-04-15 20:09:21 2431 3

翻译 让 Spark Streaming 程序在 YARN 集群上长时间运行(一)—— 故障容错、性能、安全

前段时间看到了外国朋友写的一篇文章,觉得还不错,于是就把他翻译一下,供大家参考和学习。长时间运行的 Spark Streaming 作业一旦提交给 YARN 集群,应该一直运行,直到故意停止。 任何中断都会导致严重的处理延迟,并且可能会导致处理数据丢失或重复。 YARN 和 Apache Spark 都不是为执行长时间运行的服务而设计的。 但是他们已经成功地适应了日益增长的近乎实时处理...

2018-04-14 17:58:52 2598

原创 Spark内存管理模型(二)—— 统一内存管理(Unified Memory Manager)

Spark内存模型在1.6版本之前版本采用的是静态管理(Static Memory Manager)的方式,在1.6之后采用的是统一管理(Unified Memory Manager)的方式。且Spark的可用内存分为堆内和堆外,由于堆外的比较简单,所以本文会对统一管理方式的情况进行讲解。Spark 1.6 之后引入了统一内存管理机制,该机制与静态内存管理的区别在于,存储内存(Stor...

2018-04-13 11:22:55 1199 1

原创 Spark内存管理模型(一)—— 静态内存管理(Static Memory Manager)

Spark内存模型在1.6版本之前版本采用的是静态管理(Static Memory Manager)的方式,在1.6之后采用的是统一管理(Unified Memory Manager)的方式。且Spark的可用内存分为堆内和堆外,所以本文先对静态内存管理的机制进行讲解。一、堆内静态管理(堆内)的模型如下图所示: 静态内存管理中,内存主要规划为3部分:一、Storage...

2018-04-13 10:29:32 1585

原创 HBase的优点

列可以动态增加,并且列为空就不存储数据,节省存储空间;HBase可以自动切分数据,使得数据存储自动具有水平扩展功能;HBase可以提供高并发读写操作的支持;容错性;版权免费;自动故障转移;行级别原子性,即PUT操作一定是完全成功或者完全失败。摘取自:https://www.zhihu.com/question/39859266...

2018-04-09 16:29:59 1445

原创 Spark 和 MR(MapReduce) 的区别

个人总结了三点,如下:数据处理形式不同:Spark的数据转换都是基于内存的,而MR都是处理一次刷到磁盘一次代码书写的不同:Spark提供了非常丰富的算子,书写起来非常爽,而MR的书写就有点让人头痛容错性不同:Spark的容错比MR更加高,因为Spark算子有血缘关系...

2018-04-09 16:24:43 1432

原创 Hive 中 Order By 和 Sort By的区别

刚面试的时候面试官问到Hive的 order by 和 sort by 的区别,没答出来,于是在网上找了一下,个人理解如下:1、Order Byorder by 排序出来的数据是全局有序的,但是只能有一个partition2、Sort Bysort by 排序出来的数据是局部有序的,但是全局无序。即partition内部是有序的,但是partition与partition之...

2018-04-09 16:21:49 11004

原创 Java多线程知识点总结——进阶篇(十二) 之 Join方法 & 优先级 & yield方法

join方法方法说明:等待该线程终止。 通俗来说就是 当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。样例代码如下:class Demo implements Runnable { public synchronized void run() { for (int x = 0; x < 70; x++) { ...

2018-03-31 23:46:31 231

原创 Java多线程知识点总结——进阶篇(十一) 之 守护线程(后台运行)

如果你想让你的线程在后台运行,那么你可以调用:Thread.setDaemon(true);但是有一点需要注意的: 如果你设置你的线程后守护线程,那么如果主线程执行完了,那么后台程序也会跟着退出!样例代码如下:class DaemonThread implements Runnable{ public synchronized void run() {...

2018-03-31 21:29:34 216

原创 Java多线程知识点总结——进阶篇(十) 之 中断线程

在停止线程运行时有一种特殊情况,就是当线程处于了冻结状态时,就不会读取到while循环的标记,那么线程就不会结束。 如下代码:class StopThread implements Runnable{ private boolean flag =true; public synchronized void run() { while(flag)

2018-03-31 21:20:12 183

原创 Java多线程知识点总结——进阶篇(九) 之 停止线程

如何停止线程? 只有一种,run方法结束。 开启多线程运行,运行代码通常是循环结构。只要控制住循环,就可以让run方法结束,也就是线程结束。 注意:stop方法已经过时。实例代码如下:class StopThread implements Runnable { private boolean flag = true; //控制循环是否退出的标志 ...

2018-03-31 20:32:54 232

原创 Java多线程知识点总结——进阶篇(八) 之 等待唤醒机制 Lock 锁升级版

JDK1.5 中提供了多线程升级解决方案。 将同步 Synchronized 替换成现实 Lock 操作。 将Object中的 wait、notify、notifyAll,替换成了Condition 对象。该对象可以对 Lock 锁进行获取。该示例中,实现了本方只唤醒对方操作。Lock: 替代了 Synchronized,关键API有: lock () ...

2018-03-31 16:14:12 279

原创 Java多线程知识点总结——进阶篇(七) 之 等待唤醒机制

1、线程的通信方式通信: 其实就是多个线程在操作同一个资源,但是操作的动作不同。 2、API介绍 Object.wait():在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 Object.notify():唤醒在此对象监视器上等待的单个线程。 Object.notifyAll():唤醒在此对象监视器上等待的所...

2018-03-31 15:47:48 205

空空如也

空空如也

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

TA关注的人

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