自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 面试|图解 kafka 的副本复制

对于一个复杂的分布式系统,如果没有丰富的经验和牛逼的架构能力,很难把系统做得简单易维护,我们都知道,一个软件的生命周期中,后期维护占了70%,所以系统的可维护性是极其重要的, kafka 能成为大数据领域的事实标准,很大原因是因为运维起来很方便简单,今天我们来看下 kafka 是怎么来简化运维操作的。kafka 使用多副本来保证消息不丢失,多副本就涉及到kafka的复制机制,在一个超大规模的集群中,时不时地这个点磁盘坏了,那个点cpu负载高了,出现各种各样的问题,多个副本之间的复制,如果想完全自动化容错

2020-08-11 18:20:04 10

转载 Flink的checkpoint配置详解

实例:StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// start a checkpoint every 1000 msenv.enableCheckpointing(1000);// advanced options:// set mode to exactly-once (this is the default)env.getCheckpointConfig()

2020-07-31 16:46:05 117

转载 Flink on YARN(下):常见问题与排查思路

Flink 支持 Standalone 独立部署和 YARN、Kubernetes、Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛。Flink 社区将推出 Flink on YARN 应用解读系列文章,分为上、下两篇。上篇分享了基于 FLIP-6 重构后的资源调度模型介绍Flink on YARN 应用启动全流程,本文将根据社区大群反馈,解答客户端和 Flink Cluster 的常见问题,分享相关问题的排查思路。客户端常见问题与排查思路▼ 应用提交控制...

2020-07-14 10:50:55 143

转载 Flink on YARN(上):一张图轻松掌握基础架构与启动流程

Flink 支持 Standalone 独立部署和 YARN、Kubernetes、Mesos 等集群部署模式,其中 YARN 集群部署模式在国内的应用越来越广泛。Flink 社区将推出 Flink on YARN 应用解读系列文章,分为上、下两篇。本文基于 FLIP-6 重构后的资源调度模型将介绍 Flink on YARN 应用启动全流程,并进行详细步骤解析。Flink on YARN 应用启动流程图Flink on YARN 集群部署模式涉及 YARN 和 Flink 两大开源框架,应用启动流

2020-07-14 10:35:53 32

转载 万字超强图文讲解 AQS 以及 ReentrantLock 应用

Java SDK 为什么要设计 Lock曾几何时幻想过,如果 Java 并发控制只有 synchronized 多好,只有下面三种使用方式,简单方便publicclassThreeSync{privatestaticfinalObjectobject=newObject();publicsynchronizedvoidnormalSyncMethod(){//临界区}publicstaticsynchronizedvoidstaticS...

2020-06-10 15:43:00 55

转载 Maven 设置阿里镜像

前言Maven 默认的中央仓库速度慢,可以考虑换成阿里的镜像。修改方式主要有两种。1、针对所有项目修改中央仓库Maven 提供了全局配置文件 settings.xml 针对所有项目有效,位置是在安装目录 conf 下。可以将 settings.xml 文件拷贝到当前用户目录 .m2 下,此时只针对当前用户用效。 在 settings.xml 下找到 <mirrors> 节点,并...

2020-04-24 16:13:10 191

转载 手把手教你使用Git(最全的Git教程)

Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上 改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。一:Git是什么? Git是目前世界上最...

2020-04-24 14:44:18 68

转载 MySQL为什么用B+树做索引?

索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4]中找到4这个数据,直接对全...

2020-04-14 17:11:57 58

原创 使用getopt命令解析shell脚本的命令行选项

本文将要介绍的是getopt命令,它可以同时处理短选项和长选项。首先,getopt命令不是一个标准的unix命令,但它在大多数Linux的发行版中都自带了有,如果没有,也可以从getopt官网上下载安装。在getopt的较老版本中,存在一些bug,不大好用,在后来的版本中解决了这些问题,我们称之为getopt增强版。通过-T选项,我们可以检查当前的getopt是否为增强版,返回值为4,则表...

2020-04-02 15:20:11 44

原创 linux中的--双横杠有什么作用

bash的man page是这么写的:A -- signals the end of options and disables further optionprocessing. Any arguments after the -- are treated as filenames andarguments. An argument of - is equivalent to --....

2020-03-29 16:51:17 242

转载 while read line 用法详细介绍

循环中的重定向或许你应该在其他脚本中见过下面的这种写法:while read linedo…done < file刚开始看到这种结构时,很难理解< file是如何与循环配合在一起工作的。因为循环内有很多条命令,而我们之前接触的重定向都是为一条命令工作的。这里有一个原则,这个原则掌握好了,这个问题就很简单了:对循环重定向的输入可适用于循环中的所有...

2020-01-20 10:58:28 698

转载 linux中find与rm实现查找并删除目录或文件

inux 下用find命令查找文件,rm命令删除文件。删除指定目录下指定文件find 要查找的目录名-name .svn |xargs rm -rf删除指定名称的文件或文件夹:find -type d | grep .svn$ | xargs rm -r分析:find -type d | grep .svn$ 通过此命令查找文件夹 过滤正则表达式中的目录| xargs rm ...

2020-01-13 10:05:08 101

原创 linux centos6搭建ftp服务器

介绍本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置。知识点在linux中使用的FTP是vsftpFTP可以有三种登入方式分别是:匿名登录方式:不需要用户密码 本地用户登入:使用本地用户和密码登入 虚拟用户方式:也是使用用户和密码登入,但是该用户不是linux中创建的用户一、查看是否已经安装ftp显示如下内容证明已经安装ftp,否则没...

2020-01-07 19:06:12 59

转载 IDEA远程debug java项目

远程debug调试:服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态。步骤1、远程服务器上项目需以debug模式启动,在启动命令中加入参数-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,serve...

2020-01-03 16:40:00 86

转载 深入理解SPI机制

一、什么是SPISPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。我们先通过一个很简单的例子来看下它是怎么用的。1、小栗子首先,我们需要定义一个接口...

2019-11-21 11:18:06 49

转载 JVM之类加载器

虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流(即字节码)”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成字节码(.class 文件)。 类加载器...

2019-11-21 10:18:38 23

转载 类加载的原则

Java类加载器的作用就是在运行时加载类。Java类加载器基于三个机制:委托、可见性和单一性。委托机制是指将加载一个类的请求交给父类加载 器,如果这个父类加载器不能够找到或者加载这个类,那么再加载它。可见性的原理是子类的加载器可以看见所有的父类加载器加载的类,而父类加载器看不到子类 加载器加载的类。单一性原理是指仅加载一个类一次,这是由委托机制确保子类加载器不会再次加载父类加载器加载过的类。正确理...

2019-11-20 16:58:54 38

原创 ScheduledThreadPoolExecutor执行周期性任务异常

1.问题描述在使用ScheduledThreadPoolExecutor的时候,可以用来周期性地执行任务。但是不知道什么原因,发现过一段时间任务不执行了。2.解决思路使用jstack命令先看一下进程的状态:"scheduled-pool-0" #11 prio=5 os_prio=0 tid=0x000000001c370800 nid=0x31bc waiting on co...

2019-10-16 17:19:04 352

转载 Java8 HashMap之tableSizeFor

Java8对许多内置的容器进行了优化与拓展,其中对HashMap的改变尤其大。之后将进行总结。  最近在看HashMap的源码时,发现了里面好多很不错的算法,相比Java7从性能上提高了许多。其中tableSizeFor就是一个例子。tableSizeFor的功能(不考虑大于最大容量的情况)是返回大于输入参数且最近的2的整数次幂的数。比如10,则返回16。该算法源码如下:static f...

2019-09-19 15:08:52 33

转载 深入理解单例模式:静态内部类单例原理

本文主要介绍java的单例模式,以及详细剖析静态内部类之所以能够实现单例的原理。OK,废话不多说,进入正文。首先我们要先了解下单例的四大原则:构造方法私有。 以静态方法或者枚举返回实例。 确保实例只有一个,尤其是多线程环境。 确保反序列化时不会重新构建对象。看一下静态内部类的单例模式的代码:public class Singleton05 { private Sing...

2019-09-19 09:43:59 35

原创 总结单例模式的几种实现方式及优缺点

几种创建方式总结:1、饿汉式:类初始化的时候,会立即加载该对象,线程天生安全,调用效率高。2、懒汉式:类初始化时,不会初始化该对象,真正需要使用的时候才会去创建该对象,具备懒加载功能。3、双重检测方式(因为JVM本身重排序的原因,可能会出现多次的初始化)4、枚举单例:使用枚举实现单例模式,实现简单、调用效率高,枚举本身就是单例,由JVM从根本上提供保障,避免通过反射和反序列化的漏洞...

2019-09-18 10:41:32 299

原创 同步binlog并上传到hdfs

#!/bin/bash# #echo "执行节点"`hostname`# 正 时ip=$1portc=4044if [ $# -eq 4 ] ; then portc=$2yearId=${3} dateId=${4} startTime=${4}" 00:00:00" endTime=${4}" 23:59:59"else echo "输入参数有误:<...

2019-09-02 14:02:00 139

原创 kafka源码解析-分区副本的分配

主要介绍是未指定机架信息的分配策略,kafka版本是2.0.0,具体实现为kafka.admin.AdminUtils.scala文件中的assignReplicasToBrokersRackUnaware()方法,该方法的内容如下:private def assignReplicasToBrokersRackUnaware(nPartitions: Int,//分区数 ...

2019-08-31 16:01:09 208

转载 分析 java 占用 cpu 过高的原因以及 java ScheduledThreadPoolExecutor bug 介绍

近期发现一个java进程的cpu占用接近100%。开始简单地认为是由于给java分配的内存不足,从而导致频繁GC。于是首先的处理方式就是直接给该java程序分配更多的内存,然而进程启动没几分钟,cpu占用再次接近100%,看来问题没这么简单。一. 分析 java 占用 cpu 过高的原因1. 通过top命令直接查到该java进程的进程ID,可以看到进程ID为26260。...

2019-08-31 11:37:41 216

转载 原码,反码,补码杂谈

本文从原码讲起。通过简述原码,反码和补码存在的作用,加深对补码的认识。力争让你对补码的概念不再局限于:负数的补码等于反码加一。接触过计算机或电子信息相关课程的同学,应该都或多或少看过补码这哥仨。每次都是在课本的最前几页,来上这么一段:什么反码是原码除符号位,按位取反。补码等于反码加一。然后给整得莫名其妙,稀里糊涂地,接着就是翻页,反正后面的内容也跟三码没多大关系。我原来也是看了好几遍都没看...

2019-08-27 09:52:06 29

转载 guava-19.0和google-collections-1.0 的 ImmutableSet 类冲突

guava-19.0 google-collections-1.0 都有 ImmutableSet 类,包路径也一致,前者有 copyOf(Collection)?一、应用报错:二、解决办法configurations.all { exclude module: 'logback-core' exclude module: 'logback-classic'...

2019-08-03 15:05:19 216

转载 Java Socket设置timeout几种常用方式总结

原文链接:https://my.oschina.net/shipley/blog/715196摘要: Java的网络编程Socket常常用于各种网络工具,比如数据库的jdbc客户端,redis客户端jedis,各种RPC工具java客户端,这其中存在一些参数来配置timeout,但是之前一直对timeout的理解还不清晰,所以会导致使用这些网络工具的时候有点迷茫。在此做个总结。...

2019-07-14 11:25:57 3362

转载 centos6.5系统python2.6升级到python3.6

1.安装必备的工具wget:yum -y install wgetgcc:yum -y install gcczlib zlib-devel: yum install zlib zlib-devel -yopenssl-devel:yum install openssl-devel -y2.下载python3.6.8wgethttps://www.Python.org...

2019-05-31 14:08:01 375

原创 canal与mysql连接中断报错,不做mysql状态检测情况

一.报错信息2019-05-21 09:47:23.702 [destination = 127_0_0_1-3306 , address = /127.0.0.1:3306 , EventParser] WARN c.a.o.canal.parse.inbound.mysql.dbsync.DirectLogFetcher - Received EOF packet from serve...

2019-05-21 16:45:05 1790 1

原创 canal动态加载

CanalController.javaCanalController中和配置相关的代码:public class CanalController { // 默认使用spring的方式载入 // <destination,InstanceConfig> private Map<String, InstanceConfig> ...

2019-04-12 16:35:46 375 1

原创 PartitionedAppendOnlyMap和PartitionedPairBuffer的区别

1.继承关系不太一样,如下图所示:我们可以看到PartitionedAppendOnlyMap是间接的继承SizeTracker获得估算容量的功能,数据存在父类AppendOnlyMap的data数组中,而PartitionedPairBuffer是数据就存在该类的data数组中,并且是直接继承SizeTracker2.AppendOnlyMap会对元素在内存中进行更新或聚合,而Par...

2019-03-20 15:17:04 237

原创 spark源码-PartitionedAppendOnlyMap

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding cop...

2019-03-20 11:32:58 111

原创 spark源码-AppendOnlyMap类

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding cop...

2019-03-20 11:31:46 183

原创 spark源码-WritablePartitionedPairCollection特质

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding cop...

2019-03-19 11:59:17 43

原创 spark源码-SizeTracker特质

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding cop...

2019-03-19 11:27:25 88

转载 Kafka的Log存储解析

引言Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。借用官方的一张图,可以直观地看到topic和partition的关系。partition是以文件的形式存储在文件系统中,比...

2019-02-25 21:33:13 1147

转载 Flink流计算编程--watermark(水位线)简介

1、watermark的概念watermark是一种衡量Event Time进展的机制,它是数据本身的一个隐藏属性。通常基于Event Time的数据,自身都包含一个timestamp,例如1472693399700(2016-09-01 09:29:59.700),而这条数据的watermark时间则可能是:watermark(1472693399700) = 14726933967...

2019-02-20 10:07:51 369

转载 CentoOS6.6安装netcat

CentOS下安装netcat使用zookeeper过程中,需要监控集群状态。在使用四字命令时(echo conf | nc localhost 2181),报出如下错误:-bash: netcat: command not found。我的系统是CentOS 6.6, 64位系统,默认没有安装netcat,下面时安装过程中遇到的一些问题。(下面都是使用root用户)下载netcat安装包...

2019-01-23 11:16:18 132

转载 什么时候使用CountDownLatch

正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatch的概念是一个常见的面试题,所以一定要确保你很好的理解了它。在这篇文章中,我将会涉及到在Java并发编 程中跟CountDownLatch相关的以下几点:目录CountDownLatch是什么? Cou...

2018-12-18 17:28:13 36

转载 Kafka源码分析-Producer-BufferPool

注:本文依赖于kafka-0.10.0.1-src 我们都知道kafka生产者send一条记录(record)后并没有直接发送到kafka服务端,而是先将它保存到内存(RecordAccumulator)中,用于压缩之后批量发送,这里内存的创建和释放是比较消耗资源的,为了实现内存的高效利用,基本上每个成熟的框架或者工具都有一套内存管理机制,kafka的生产者使用BufferPool来实现内存(...

2018-12-18 16:21:48 265

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