自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 「Flink反压机制」看这一篇就够了

从tcp数据传输,滑动窗口,再到Flink反压机制,一文看懂Flink反压

2023-07-16 20:27:18 1046

原创 【数仓日常踩坑】如何获取binlog数据里每个id的最新数据

如何获取binlog数据里每个id的最新数据

2022-08-04 10:58:55 528

原创 【数仓日常踩坑】记录一次特殊符号引发数据异常的排查思路

数仓日常踩坑

2022-07-28 12:12:05 979

原创 评估kafka能否抗住新增数据

kafka峰值评估

2022-07-15 16:14:19 316

原创 简述一下HTTP的状态码

分类描述1xx表示目前是协议的中间状态,还需要后续请求2xx表示请求成功3xx表示重定向,需要进一步的操作以完成请求4xx表示请求报文错误5xx服务器端错误状态码描述101表示切换请求协议,只能切换到更高级的协议,例如,切换到HTTP的新版本协议200请求成功,请求所希望的响应头或数据体将随此响应返回202服务器已接受请求,但未处理完成301永久重定向,请求的资源已被永久的移动到新URI,返回信息会包括...

2021-05-27 18:04:52 145

原创 HTTP和HTTPS的区别?描述HTTPS的工作过程

HTTP(HyperText Transfer Protoco!:超文本传输协议)超文本的意思就是带超链接的文本,网站地址的格式:http(s)://<主机>:<端口号>/<路径>HTTP是一个可靠的数据传输协议(依赖于传输层的TCP协议实现)可以传输文本、文件、图片、音频、视频、动图等运行在C/S架构上的(客户端和服务端)传输数据是明文传输如果要传输一些敏感的信息,如:账号密码,个人信息,账户金额等,用HTTP来传输是不安全的HTTPS(Secure)

2021-05-27 14:53:33 219

原创 小白都能看懂的DNS解析过程

DNS是域名系统,作用是将域名解析为IP地址。域名由点、字母和数字组成,通过点来分割不同的域;域名可以分为顶级域、二级域、三级域,例如:www.baidu.com中com为顶级域,baidu为二级域。DNS可以将www.baidu.com转换为其实际所用的IP地址可以把域名从上到下看成一颗树,树的根部为顶级域,根部下面是二级域,二级域下面是三级域DNS域名服务器:DNS服务是部署在服务器上的假设现在要访问www.baidu.com,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系

2021-05-27 14:30:29 340

原创 ARP协议以及RARP协议的工作原理

ARP协议和RARP协议都是五层网络协议中的网络层协议。ARP(Address Resolution Protocol)地址解析协议:作用是将网络层IP地址转换为数据链路层MAC地址,即完成IP地址与物理地址的映射。RARP(Reverse Address Resolution Protocol)逆地址解析协议:作用是完成硬件地址到IP地址的映射ARP协议的工作原理1)首先,每个主机都会在自己的ARP缓冲区中建立一个ARP缓存表,以表示IP地址和MAC地址之间的对应关系。2)当源主机

2021-05-27 12:43:32 2860

原创 OSI七层模型每一层的任务

应用层: 为用户提供应用接口,为用户直接提供各种网络服务。表示层: 这一层的主要功能是定义数据格式及加密。会话层: 它定义了如何开始、控制和结束的一个会话。传输层: 选择数据的传输方式是TCP还是UDP,建立两台设备的端到端连接网络层: 选择合适的网间路由和交换节点,为数据在点对点之间传输建立逻辑链路,并将传输层产生的报文分组转发。数据链路层: 使用物理寻址(ARP协议和RARP协议),将比特封装成帧和点到点的传输,并提供差错检验。物理层: 通过物理介质传输比特流;...

2021-05-27 12:17:13 577

原创 DHCP协议介绍

DHCP(Dynamic Host Configuration Protocol:动态主机设置协议)DHCP是一个局域网协议DHCP是应用UDP协议的应用层协议DHCP的作用主要是为临时加入局域网的设备提供一个临时的IP地址DHCP协议提供了即插即用联网的功能,使得我们的设备在不同的地方时(例如:家、公司、户外等),不需要自行地配置IP地址就可以进行网络的连接,只要用了DHCP协议,就可以在不同的地方使用不同的网络如下图中,如果配置自动获得IP地址,就相当于启用DHCP协议,会允许我们自动地从

2021-05-26 15:08:09 740

原创 TCP连接的四次挥手全过程

TCP通过四次挥手来释放连接四次挥手的过程如下:第一次挥手:客户端向服务器发送一个 FIN 数据包(FIN = 1,seq = u)主动断开连接,报文中会指定一个序列号。告诉服务器:我要跟你断开连接了,不会再给你发数据了;客户端此时还是可以接收数据的,如果一直没有收到被动连接方的确认包,则可以重新发送这个包。此时客户端处于 FIN_WAIT1 状态。第二次挥手:服务器收到 FIN 数据包之后,向客户端发送确认包(ACK = 1,ack = u + 1),把客户端的序列号值 + 1 作

2021-05-25 18:51:51 16748 1

原创 TCP连接的三次握手过程,为什么不是两次或四次?

TCP的标记标记含义URGUrgent:紧急位, URG-1,表示紧急数据ACKAcknowledgement:确认位, ACK=1,确认号才生效PSHPush:推送位, PSH-1,尽快地把数据交付给应用层RSTReset:重置位, RST-1,重新建立连接SYNSynchronization:同步位, SYN=1表示连接请求报文FINFinish:终止位, FIN=1表示释放连接TCP连接中涉及到的标记有ACK、SYN、FINACK

2021-05-25 17:19:07 351

原创 TCP协议的拥塞控制

计算机网络中的资源是有限的,在某段时间对网络中某一资源的需求超过了该资源所能提供的可用部分,而导致网络性能下降的情况就是拥塞。通俗点说就是发送的数据包太多网络中的设备处理不过来,而导致网络性能下降的情况。拥塞控制的流量控制的区别在于:流量控制考虑点对点的通信量的控制,主要是通过窗口来进行通信量的限制,考虑到接收方可能的接收性能不如发送方的发送量拥塞控制考虑整个网络,是全局性的考虑,会感知网络是否发生拥塞,以及处理拥塞如何判断拥塞?如果发送的报文超时则认为是拥塞拥塞会导致丢包,但丢包不一定触发

2021-05-25 14:24:04 467

原创 TCP协议的流量控制

TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收数据。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。如下图中:ack=201代表期待收到的下一个字节的序号,rwnd=300,代表当前的窗口为300,表示说接收方还可以接收300个字节的数据现在考虑一种特殊的情况:当接收方窗口大小为0时,发送方不能发送数据,在接收方把数据处理完之后,向接收方发送rwnd=1000,通知发送方

2021-05-24 22:13:22 764

原创 可靠传输的原理:停止等待协议、ARQ协议;TCP协议的可靠传输

停止等待协议停止等待协议是最简单的可靠传输协议,停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。若接收方收到重复的分组,就会丢弃该分组,但同时还要向发送方发送确认;停止等待协议中主要有4种情况:无差错情况、超时重传、确认丢失和确认迟到;停止等待协议对信道的利用率不高,因为发送方每发送一个消息,都需要等待确认消息回来,只要确认消息没有正确地到达,就一直等;1)无差错情况2)有差错情况2.1 超时重传发送的消息在路上丢失了,每发送一组数据就会启动一个计时

2021-05-24 21:22:31 3509 2

原创 TCP和UDP各自特点,两者的区别?

什么是有连接,什么是无连接?有连接假如A和B需要进行一个电话通信在进行通话前A或B需要先拨号建立连接,连接建立成功之后才能进行通信通信结束之后要把电话挂断,即结束连接无连接A和B在通信时并不需要建立连接,只要在想发送数据时可以直接将数据发送出去UDP协议的特点UDP(User Datagram Protocol:用户数据报协议)UDP协议位于IP数据报里面,结构分为两部分:UDP首部和UDP的数据报,数据报是应用层传输过来的完整数据,UDP协议不会对数据进行任何处理,会直

2021-05-24 18:42:13 1240

原创 Flink在代码中配置checkpoint

def main(args: Array[String]): Unit = { val env: StreamExecutionEnvironment = StreamExecutionEnvironment.getExecutionEnvironment // 设置statebackend,默认保存在内存中;可以设置保存到本地或者HDFS env.setStateBackend(new FsStateBackend("localPath | hdfsPATH

2021-04-29 21:29:32 1786

原创 详解Flink的checkpoint工作原理

要了解flink的checkpoint,首先来了解一下flink的状态管理机制,在flink当中,checkpoint的保存由状态管理机制来决定flink状态管理机制状态后端:每传入一条数据,有状态的算子任务都会读取和更新状态由于有效的状态访问对于处理数据的低延迟至关重要,因此每个并行任务都会在本地维护其状态,以确保快速的状态访问状态的存储、访问以及维护,由一个可插入的组件决定,这个组件就叫做状态后端(state backend)状态后端主要负责两件事:本地的状态管理将检查点(check

2021-04-29 20:17:11 3901

原创 Flink的架构以及任务调度流程

flink架构体系JobManager处理器也称之为Master,用于协调分布式执行,它们用来调度task,协调检查点(CheckPoint),协调失败时恢复等。负责资源申请,任务分发,任务调度执行,checkpoint的协调执行;Flink运行时至少存在一个master处理器,如果配置高可用模式则会存在多个master处理器,它们其中有一个是leader,而其他的都是standby。TaskManager处理器也称之为Worker,用于执行一个dataflow的task(或

2021-04-29 18:23:59 2648

原创 源码解析HDFS写数据流程

HDFS写数据流程1)客户端这边先创建一个的RPC客户端,发送给NameNode进行请求,NameNode对这个请求进行判断,判断文件的路径是否存在,是否有权限添加2)客户端创建一个DataStreamer,DataStreamer里创建了一个队列dataQueue,并将dataQueue进行等待;同时DataStreamer从NameNode通过机架感知获取block块可以写到哪些DataNode上3)紧接着客户端会向DataNode请求建立数据传输通道4)然后才真正开始写数据,先写chunk和

2021-04-10 22:25:38 522

原创 源码解析Hadoop的DataNode启动时底层都做了哪些事

目录初始化方法1.初始化DataXceiverServer2.初始化HTTP服务3.初始化DataNode的RPC服务端4.DataNode向NameNode注册以hadoop3.x版本为例DataNode启动时做的大致工作如下:DataNode初始化1.初始化了一个DataXceiverServer2.初始化了DataNode的web页面的HTTP服务3.初始化了DataNode的RPC服务,接收客户端对其访问4.向NameNode进行注册5.向NameNode发送相关的心跳信息搜

2021-04-09 12:24:58 421 1

原创 Hadoop的NameNode在启动时都做了哪些事情?源码解析

目录1.启动9870端口服务2.加载镜像文件和编辑日志3.创建RPC服务4.对NameNode启动资源检查5.DataNode心跳超时判断6.安全模式以hadoop3.x版本为例namenode启动时大致有6个步骤1)首先启动9870端口2)启动完端口之后开始加载镜像文件和编辑日志3)紧接着创建RPC服务4)然后开始对NameNode的资源进行检测检测当前磁盘空间是否能够启动NameNode要检查镜像文件和编辑日志的路径上能存储多少内容,默认大小是100M,如果当前磁盘空间小于100M,

2021-04-06 23:11:09 778

原创 Hadoop中DataNode和NameNode如何进行通信,源码解析其RPC通信原理

RPC:Remote Procdure Call,远程过程调用;它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的。类似于C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。模拟 RPC 的客户端、服务端、通信协议三者如何工作的。以mkdirs为例模拟RPC协议,接口中定义一个版本号和mkdirs方法public interface RPCProtocal { long ve

2021-03-26 18:15:58 845

转载 Spark提交作业的参数

Spark是使用shell脚本进行提交提交任务的几个重要参数executor-cores —— 每个executor使用的内核数,默认为1,官方建议2-5个num-executors —— 启动executors的数量,默认为2executor-memory —— executor内存大小,默认1Gdriver-cores —— driver使用内核数,默认为1driver-memory —— driver内存大小,默认512M提交样例spark-submit \--master loca

2021-01-08 23:08:01 1028

原创 Spark的四种部署方式

(1)Local本地模式,运行在一台机器上,通常是练手或者测试环境。(2)Standalone独立集群模式,构建一个基于Master+Slaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的一个调度系统。(3)YarnSpark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。(yarn-client的Driver程序运行在客户端,适用于交互、调试,而ya

2021-01-08 22:58:18 6332

原创 Spark的简单介绍

Spark是一个基于内存的,快速通用的大规模数据处理(分析计算)引擎Spark的内置模块包括SparkCore,SparkSQL,SparkStreaming,SparkMLlib,SparkGraghx等等详见下图Spark Core:实现了Spark的基本功能(任务调度、内存管理、错误恢复、与存储系统交互等模块)。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。Spark SQL:是Spark用来操作结构化

2021-01-08 22:45:25 329

原创 剑指offer 面试题47:礼物的最大值(java)

题目在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物思路典型的动态规划定义dp数组dp[i][j]代表当前走到格子的(i - 1, j - 1)位

2020-12-27 12:17:42 427 2

原创 剑指offer 面试题46:把数字翻译成字符串(java)

题目给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”思路(动态规划)翻译时有两种情况可以把字符的每一位单独翻译,即[1, 2, 2, 5, 8]也可以将某些连

2020-12-27 12:15:02 131

原创 剑指offer 面试题45:把数组排成最小的数(java)

输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例输入: [3,30,34,5,9]输出: "3033459"思路最直接的方法就是暴力法,对数组中的数据进行全排列,然后拼接起来,找出拼接的数字的最小值,时间复杂度是O(n!)考虑更优的方法我们可以设置一个排序规则,数组根据这个规则排序之后能排成一个最小的数字如何制定排序规则呢?比较两个数字m和n时,需要判断m和n哪个应该排在前面m和n能拼接成mn和nm如果mn<nm,按照题目要求

2020-12-27 12:12:57 275

原创 面试常问的排序算法都在这里了(选择,插入,冒泡,快排,归并,堆排序)

目录初级排序 1)选择排序2)插入排序3)冒泡排序高级排序1)快速排序2)归并排序3)堆排序初级排序 时间复杂度为O(n^2)的排序1)选择排序每次找最小值,然后放到待排序数组的起始位置(1)首先对一个序列进行遍历,找出其中最小的元素(2)把这个元素放到数组下标为0的位置(3)然后对数组的子序列(指的是下标为1的位置往后)进行遍历,找到子序列中最小的元素,也就是数组中第二小的元素,将其放到数组下标为1的位置重复以上步骤,最后完成排序void f(int[] a) { for (

2020-12-26 19:14:22 429

原创 剑指offer 面试题44:数字序列中某一位的数字 O(logn) 时间(java)

题目数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。声明四个变量digit, start, count, numdigit 表示数字是几位数,比如1是1位数,12是两位数,321是三位数num 表示十进制数字start 表示位数(1位数,两位数)的起始数(比如1位数的起始位是1,两位数的起始位是10,三位数的起始位是100)c

2020-12-19 21:30:46 125 1

原创 剑指offer 面试题43:1~n整数中1出现的次数 O(logn)时间(java)

题目输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。思路将n分为个位和其他位n = 4 5 6 个位先分析个位出现1的次数:个位出现1的要取决于个位之前的几位,6之前是45,所以1至少会出现45次,因为个位是6,大于1,所以个位上还会出现一次1,总共出现45 + 1 = 46 次1再分析十位因为个位从0~9经过一轮之后(总共变化10次 0,1,2…9),十位才会增加

2020-12-19 19:46:09 120 1

原创 剑指offer 面试题42:连续子数组的最大和(java)

题目输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。思路这题其实就是求最大子序和方法1(暴力法)枚举起点和终点,时间复杂度O(n^2)此处有一些小优化,如果是负数,那么就不要设为起点或者终点了方法2(动态规划)max_sum(i)代表假设第i个元素被选择的话,那么从最开

2020-12-19 15:23:00 112 1

原创 剑指offer 面试题41:数据流中的中位数(java)

题目如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。例如[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。class Media

2020-12-19 14:37:12 169 3

原创 剑指offer 面试题36:二叉搜索树与双向链表(java)

题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。题目要求转换后的链表是排序过的,所以想到二叉搜索树的中序遍历是由小到大遍历的二叉搜索树中,左子节点小于父节点,右子节点大于父节点,所以在转换成排序双向链表时,原先指向左子节点的指针对应链表中指向前一个节点的指针,原先指向右子节点的指针对应链表中指向后一个节点的指针由于是循环链表, 设链表头节点 head 和尾节点 tail ,则应构建 head.left = ta

2020-11-28 19:02:49 167

原创 剑指offer 面试题35:复杂链表的复制(java)

题目请实现 copyRandomList(Node head) 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null这题刚开始没看懂题意,大概题意就是拷贝出来一个给出的复杂链表,链表中每个节点有两个指针,指向下一个节点和指向任意节点(或者是指向null),所以在拷贝时,不仅要拷贝链表的顺序,还要把链表中每个节点指向的任意节点拷贝过去,拷贝链表的顺序很容易,关键是如何拷贝当前节点指向的任意节点。在这里,

2020-11-28 17:56:23 125

原创 【zookeeper面试篇】二阶段、三阶段提交协议,Paxos算法

在分布式系统中,每一个机器节点虽然都能够明确地知道自己在进行事务操作过程中的结果是成功或者失败,但是无法直接获取到其他分布式节点的操作结果。因此事务操作需要跨越多个分布式节点时,需要引入一个协调者统一调度所有节点的执行逻辑,被调度的分布式节点被称为参与者。协调者负责调度参与者的行位,并最终决定这些参与者是否要把事务真正进行提交。二阶段提交二阶段提交将一个事务的处理过程分为投票和执行两个阶段,核心是对每个事务都采用先尝试后提交的处理方式阶段一:提交事务请求(1)事务询问协调者向所有的参与者发送.

2020-10-26 21:24:04 1914 2

原创 spark常用算子总结(附加代码示例)

文章目录简介Transformation转换算子value类型1.map()2.mapPartitions()3.mapPartitionsWithIndex()4.flatMap()5.glom()6.groupBy()7.filter()8.sample()9.distinct()10.coalesce()11.reparation()12.sortBy()13.pipe()双value类型1.union()并集2.intersection()交集3.subtract ()差集4. zip()拉链Key

2020-09-25 01:50:11 2791

原创 spark常见端口号

1)Spark历史服务器端口号:18080 (类比于Hadoop历史服务器端口号:19888)2)Spark Master Web端口号:8080(类比于Hadoop的NameNode Web端口号:9870(50070))3)Spark Master内部通信服务端口号:7077 (类比于Hadoop(高版本)的8020(9000)端口)4)Spark查看当前Spark-shell运行任务情况端口号:40405)Hadoop YARN任务运行情况查看端口号:8088...

2020-09-18 20:14:08 8670

原创 IDEA2019中设置scala的自动推导类型

1.打开settings2.搜索hint3.选中scala4.选择Type hints,将选项勾选上设置类型不匹配的时候显示类型设置即使在类型很明显的时候也显示,如果不打钩,那么比如a的值为10,就很清楚的知道是int类型,所以就不显示,若想让其显示,将下面的钩打上...

2020-09-06 16:51:14 1162

空空如也

空空如也

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

TA关注的人

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