自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(276)
  • 问答 (1)
  • 收藏
  • 关注

原创 【2022-07-25】

二叉树

2022-07-25 17:01:04 451

原创 【Flink知识汇总】【Join专题】

Flink Join 专题Join 的应用场景批Join和流Join的区别Flink 双流Join1. Window Join认识Window JoinFlink APISQL API解决方案的特点解决方案的适用场景2. Interval Join2.1 认识Interval Join2.2 Flink API2.3 SQL API2.4 解决方案的特点2.5 解决方案的适用场景3. Regular Join3.1 认识Regular Join3.2 SQL API3.3 解决方案的特点3.4 解决方案的适

2022-03-30 17:08:24 2103 1

转载 【Hive调优】Explain查看执行计划

Explain1. explain 的用法Operator2. explain 的使用场景案例一:join 语句会过滤 null 的值吗?案例二:group by 分组语句会进行排序吗?案例三:哪条sql执行效率高呢?案例四:定位产生数据倾斜的代码段1. 通过时间判断2. 通过任务 Counter 判断3. 定位 SQL 代码1.确定任务卡住的 stage2. 确定 SQL 执行代码3. explain dependency的用法案例一:识别看似等价的代码案例二:识别SQL读取数据范围的差别4. expla

2022-03-22 15:17:11 1324 1

原创 【Flink】Kafka Source和sink的容错

https://www.zhihu.com/people/bigdata-qingniu/zvideos?page=3

2022-03-14 13:20:09 2577

原创 【Flink】随机前缀解决数据倾斜

Source如果是多并行度,其采用的是轮询;KeyBy数据倾斜:BroadCast或者Custom广播适合join场景自定义适合groupby场景rebalancerebalance 将数据发往下游所有并行度rescale自定义分区器 //自定义分区器 泛型是key 返回值是分区号 source.partitionCustom(new Partitioner<String>() { @Override .

2022-03-13 04:55:54 522

原创 【Flink】反压原理和 内存管理

Spark Executor能跑多少个Task,由Core个数决定反压原理反压是指任务(Task)之间的现象;Task是线程,运行Task的是TaskManager进程,每个TaskManager中可以跑的Task数量是不确定的,1个Slot中可以跑1-n个Task;Flink网络传输下的内存管理:1.根据配置,Flink会在NetWorkBufferPool中生成一定数量(default 2048)个内存块MemorySegment,内存块的数量代表网络传输中所有可用的内存。NetWork.

2022-03-12 13:53:39 2019

原创 【滑动窗口】

滑动窗口应用场景满足一定条件最长、最短子序列/子串/子数组简单介绍滑动窗口核心思想找到最长连续红球子序列(1)初始化窗口:左右指针初始化为-1;(2)定义窗口的含义:如果right > left 只能容忍窗口中有红球(3)移动右指针:此时窗口有1个红球则继续移动右指针(4)窗口内出现白球,这是不容许的,因此移动left,使得left == right; 此时记下max = 1;(5)继续滑动right;(6)如此往复,知道right = arr.length代码

2022-03-08 17:19:14 321

原创 【Flink】【第9章】【 状态管理和容错机制】【02】CheckPoint和 状态后端

状态管理状态后端1.状态的存储1.MemoryStateBackend2.FsStateBackend3.RocksDBBackend4.配置方式4.1 全局配置4.2 单任务配置2.状态的备份(checkpoint 和 savepoint)4.3 状态一致性4.3.1 flink状态的一致性级别4.3.2 端到端(end-to-end)状态一致性**1.Sink端幂等写入****2.Sink端事务写入**2.1 预写日志2.2 两阶段提交5.Flink + Kafka实现端到端的一致性状态后端1.状态

2022-03-08 02:19:22 2606

原创 【同时在线问题】

思路如下:如果同一个时刻既有进入也有退出,但是要先算进入的,再算退出的,需要row_number() ,因为开窗order by 如果有相同的,窗口大小和最后一条保持一致,下面这题就是这样SQL8 每篇文章同一时刻最大在看人数SELECT artical_id, MAX(uv) AS max_uvFROM( SELECT artical_id, SUM(flag) OVER(PARTITION BY artical_id ORDER BY rn) uv FROM ( .

2022-03-06 18:40:53 222

原创 【Mysql高级】【第十五章】【锁】

1.概述事务的隔离性由锁来实现2.Mysql并发实务访问相同记录并发事务访问相同记录的情况大致可以划分为3种:2.1 读-读2.2 写-写锁结构和事务是一一对应的,有几个事务,就会生成几个锁结构,如果该记录还有别的事务要进行操作,会对别的事务也建立锁结构!锁的生成事务T1 提交之前事务t1 提交之后小结2.3 读-写或者写-读2.4 并发问题的解决方案读MVCC ,写加锁读和写都加锁场景:读取的数据必须是最新数据脏读问题:B事务

2022-03-03 10:04:51 942 1

原创 【Mysql 高级】【第十六章】多版本并发控制

多版本并发控制1.什么是MVCC2.快照读和当前读2.1 快照读2.2 当前读3. 复习3.1 再谈隔离级别3.2 隐藏字段 Undo Log版本链4. MVCC实现原理之ReadView4.1 什么是ReadView4.2 不同隔离级别下的设计思路**Read Uncommited 隔离级别**Serializable隔离级别READ Committed 和 Repeatable read 隔离级别5. 举例说明5.1 READ COMMITTED隔离级别下5.2 REPEATABLE READ 隔离级别

2022-02-26 23:03:19 749

原创 【Hive】SQL执行原理

Join 的实现原理以下面这个 SQL 为例,讲解 join 的实现:select u.name, o.orderid from order o join user u on o.uid = u.uid; 在 map 的输出 value 中为不同表的数据打上 tag 标记,在 reduce 阶段根据 tag 判断数据来源。MapReduce 的过程如下:MapReduce CommonJoin 的实现group by原理将group by 的字段 作为key,即groupBy_key 。

2022-02-26 12:00:16 1338

原创 【JavaSE】Static

static关键字1.为什么要使用static关键字当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。2.类属性、类方法的设计思想类属性(类变量)作为

2022-02-18 10:45:29 244

原创 【SQL 经典题】

构造分区需求:每一次titlechinese变更,都重新排序;--建表CREATE TABLE test( titlechinese VARCHAR(100), changedate VARCHAR(10));-- 插入数据INSERT INTO test VALUES('地区销售经理','2019-12-13');INSERT INTO test VALUES('地区销售经理','2017-10-10');INSERT INTO test VALUES('地区销售经理','2017

2022-02-17 18:15:41 366

原创 【Flink 调优】【第一章】【资源配置调优】

资源配置调优1. 内存设置1.1 TaskManager内存模型1.2 生产资源配置2. CPU资源的合理使用2.1 使用DefaultResourceCalculator策略2.2 使用DominantResourceCalculator策略2.3 使用DominantResourceCalculator策略并指定core个数总结3. 并行度设置3.1 全局并行度计算案例3.2 Source端并行度配置3.3 Transform端并行度配置3.4 Sink端并行度配置1. 内存设置1.1 Tas

2022-02-15 23:53:03 2835

原创 【Hive】【内置常用函数】

get_json_object1)数据 json数组[{"name":"大郎","sex":"男","age":"25"},{"name":"西门庆","sex":"男","age":"47"}]2)取出第一个json对象select get_json_object('[{"name":"大郎","sex":"男","age":"25"},{"name":"西门庆","sex":"男","age":"47"}]','$[0]');结果是:{“name”:“大郎”,“sex”:“男”,“age

2022-02-13 18:41:15 658

原创 【JVM】【第 17 章】【 垃圾回收器】

垃圾回收器1、GC 分类与性能指标1.1、垃圾回收器概述与分类1.2、评估 GC 的性能指标评估 GC 的性能指标:吞吐量(throughput)评估 GC 的性能指标:暂停时间(pause time)对比2、不同的垃圾回收器概述2.1、垃圾收集器发展史2.2、回收器与垃圾分代之间的关系2.3、查看默认垃圾收集器3、Serial 回收器:串行回收器4、ParNew 回收器:并行回收5、Parallel 回收器:吞吐量优先6、CMS 回收器:低延迟CMS 特点和弊端6.5、CMS 参数配置CMS 小结7. G

2022-02-12 20:54:36 1280

原创 第 16 章 垃圾回收相关零散知识

垃圾回收相关零散知识1、System.gc() 的理解1.1、System.gc() 方法1.2、手动GC理解不可达对象的回收行为2. 内存溢出与内存泄漏2.1 内存溢出2.2 内存泄漏3. Stop the World4、垃圾回收的并行与并发4.1、并发的概念4.2、并行的概念4.3、垃圾回收的并行与串行5、安全点与安全区域5.1 安全点5.2 安全区域6、再谈引用6.0 四种引用类型概述6.1 强引用6.2 软引用6.3 弱引用6.4 虚引用6.5 终结器引用1、System.gc() 的理解1

2022-02-11 20:07:57 610

原创 【Mysql高级】【第十三章】【 事务基础知识】

事务基础知识1. 数据库事务概述1.1 存储引擎支持情况1.2 基本概念1.3 事务ACID特性1.4 事务的状态2. 如何使用事务2.1 显式事务2.2 隐式事务2.3 隐式提交数据的情况2.4 使用举例1:提交和回滚2.5 使用举例2:测试不支持事务的engine2.6 使用举例3:SAVEPOINT3. 事务隔离级别3.1 数据准备3.2 数据并发问题1.脏写2. 脏读3. 不可重复读4.幻读不可重复读和幻读的区别3.3 SQL标准中的四种隔离级别3.4 MySQL所支持的四种隔离级别3.5 如何设置

2022-02-11 16:26:52 1619

原创 【数据仓库】【第八章】【数据仓库建模方法论 - 维度模型 】

1. 维度建模概述维度建模理论为Ralph-Kimball 倡导的建模方法;维度模型以数据分析作为出发点,不遵循三范式,故数据存在一定的冗余。维度模型面向业务,将业务通过事实和维度呈现出来。事实对应业务过程,维度对应业务过程发生时所处的环境;表结构简单,故查询简单,查询效率较高。维度建模中,将表分为两类:事实表和维度表维度建模的特点就是以事实表为核心,一个事实表代表一个业务过程;2. 事实表事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)“事实”这个术语表示的是业务

2022-02-10 22:20:06 1756

原创 【数据仓库】【第七章】数仓架构 、分层、规范

1. 数据仓库核心架构2. 数仓分层3. 数据集市数据集市有两种,一种是从属型数据集市,其数据源来自于数仓;另一种是独立型数据集市,数据源直接对接业务数据库;从属型的数据集市的搭建开发周期较长,独立型不依赖于数仓,搭建周期短;从属型数据集市的数据来源都是经过数仓,因此都是经过统一处理过的;独而立型的各自为主,部门之间数据一致性比较差,会造成数据孤岛的情况4. 数仓规范表命名ODS层命名为ods_表名DIM层命名为dim_表名DWD层命名为dwd_表名DWS层命名为dws

2022-02-10 20:05:51 288

原创 【Mysql高级】【第十章】【 索引优化与查询优化】

索引优化与查询优化1.数据准备2.索引失效案例2.1 全职匹配我最爱2.2 最佳左前缀法则2.3主键插入顺序2.4 计算、函数 、类型转换 导致索引失效2.5 范围条件右边的列索引失效2.6 不等于(!= or <>)索引失效2.7 is null可以用索引,is not null不可以用索引2.8 like以通配符%开头索引失效2.9 OR前后存在非索引列,索引失效2.10 数据库和表的字符集统一使用uft8mb42.11 练习及一般性建议3.关联查询优化3.1 数据准备3.2 采用左外连接3

2022-02-10 15:42:21 1679

原创 【JVM】【第十五章】垃圾回收相关算法

垃圾回收相关算法1. 垃圾回收的3个阶段2. 标记阶段 - 对象存活判断2.1 引用计数法 (java没有采用)2.2 可达性分析算法哪些是GC Roots?可达性分析算法的注意事项3. 对象终止阶段-对象的 finalization 机制3.1 finalize() 方法机制3.2 finalize() 方法使用的注意事项3.3 对象是否"死亡"3.4 判断对象是否可回收的两次标记过程3.5 代码测试对象可复活4.使用(MAT与JProfiler)工具分析GCRoots5.垃圾清除阶段5.1 标记-清除算

2022-02-09 21:08:48 721

原创 【Mysql高级】【第九章 性能分析流程及细节】

1.数据库服务器的优化步骤2.查看系统性能参数(S1)3.统计sql的查询成本(S1->A1)4.定位执行慢的SQL:慢查询日志(S2)当添加缓存后,仍然有不规则卡顿和延迟,此时需要定位是否有执行慢的SQL;而慢查询日志的作用就是定位执行慢的sql的4.1 开启慢查询日志参数查看慢查询日志文件修改long_query_time阈值配置文件中永久配置4.2 查看慢查询sql个数4.3 慢查询案例演示(创造现象)步骤2:插入400万条记录;步骤

2022-02-09 10:33:48 778

原创 【Mysql高级】【第八章 索引的创建和设计原则】

第八章 索引的创建和设计原则1.索引的声明和使用1.1 索引分类1.2 创建索引1.创建表的时候创建索引1.1 隐式创建索引1.2 显示创建索引2.在已经存在的表上创建索引1.3 删除索引2.Mysql8.0 索引新特性2.1 支持降序索引2.2 隐藏索引3. 索引的设计原则3.1 哪些情况适合创建索引1.字段的数值有唯一性限制2.频繁作为where查询条件的字段3.经常group by和order by的列4.update\delete语句中的where条件列5.distinct字段需要创建索引6.多表j

2022-02-08 12:01:17 1196 3

原创 【Mysql】【高级篇】【第6章 索引】

https://www.bilibili.com/video/BV1iq4y1u7vj?p=1151.为什么使用索引索引的作用:减少磁盘I/O次数2.索引及其优缺点2.1 索引概述排好序的快速查找数据结构2.2 优点2.3 缺点(1)创建和维护耗时(2)索引站磁盘空间(3)更新表时,需要维护索引,耗时3.InnoDB中索引的推演https://www.bilibili.com/video/BV1iq4y1u7vj?p=116&spm_id_from=pageD

2022-01-29 20:26:34 3548 1

原创 【Mysql】【高级篇】【第5章 存储引擎】

1.查看存储引擎2.设置系统默认的存储引擎存储引擎和表息息相关,每张表都需要设置其存储引擎类型;这会影响改表底层的存储结构(1) 查看默认的存储引擎(2) 修改默认存储引擎3.设置表的存储引擎3.1 创建表时指定存储引擎3.2 修改表的存储引擎4. 引擎介绍5.5 版本之前默认是MyISAM,之后默认为InnoDB4.1 InnoDB引擎:具备外键支持功能的事务存储引擎(1)5.5版本后,默认表引擎改为InnoDB(2)InnoDB引擎有事务功能(3)在inser.

2022-01-29 12:06:15 2219

原创 【Mysql】【高级篇】【第4章 Mysql逻辑架构】【02】SQL执行流程

SQL执行流程1. Mysql中的SQL执行流程(1)查询缓存(2)解析器(3)优化器(4)执行器2. Mysql8中SQL执行原理2.1 确认profiling是否开启2.2 多次执行相同SQL查询2.3 查看profiles2.4 查看profileshowProfile高级用法3. Mysql5.7中SQL执行原理1.配置文件中开启查询缓存2.重启mysql服务3.开启查询执行计划4.执行语句两次5.查看profiles6.查看profile2.4 SQL语法顺序1. Mysql中的SQL执行流程

2022-01-28 16:19:48 729

原创 【Mysql】【高级篇】【第4章 Mysql逻辑架构】【01】逻辑架构剖析

1.逻辑架构剖析1.1 服务器处理客户端请求Mysql服务器端逻辑架构:1.2 Connectors

2022-01-28 16:09:29 1591

原创 【Flink SQL】【第四章 时间属性】

本章内容对应官网:https://nightlies.apache.org/flink/flink-docs-release-1.12/dev/table/streaming/time_attributes.html1.时间属性介绍Time attributes can be part of every table schema.They are defined when creating a table from a CREATE TABLE DDL or a DataStream.Once

2022-01-27 20:21:40 1829

原创 【Flink】【第9章】【 状态管理和容错机制】【03】程序恢复 和 SavePoint

什么叫容错机制?容错的含义:Flink程序挂了,重启故障恢复到挂掉之前的状态;从当前系统的状态存盘,用于Flink故障恢复容错机制的核心: 应用程序的状态的一致性检查点1.一致性检查点(Checkpoints)Flink想要做到精准一致性,就需要用到一致性检查点;一致性检查点就是checkpoint一致性检查点是flink程序故障恢复机制的核心;一致性检查点就是在某一个时间点,flink程序中所有并行度中状态的一份快照;通过将算子中的状态进行持久化,用于flink程序故障重启仍然能够无缝

2022-01-21 18:03:11 2238

原创 【Java 并发编程】【05】线程安全问题与线程同步

5. 线程安全问题与线程同步多线程编程是有趣且复杂的事情,它常常容易突然出现“错误情况”,这是由于系统的线程调度具有一定的随机性。即使程序在运行过程中偶尔会出现问题,那也是由于我们的代码有问题导致的。当多个线程访问同一个数据时,非常容易出现线程安全问题。5.1 线程安全问题所谓线程安全问题,其实就是多线程在并发访问的时候,对共享内存中的共享对象的属性进行修改所导致的数据冲突问题Keyword:并发访问共享内存共享对象 (共享内存中的共享对象)属性的修改 (方法是在栈中,不会有并发问题)

2022-01-21 14:13:19 3133

原创 【Java 并发编程】【04】线程的生命周期

4 线程的生命周期一个完整的生命周期中通常要经历如下的五种状态:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)、死亡(Dead)。CPU需要在多条线程之间切换,于是线程状态会多次在运行、阻塞、就绪之间切换。1.新建new之后当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状。此时它和其他Java对象一样,仅仅由JVM为其分配了内存,并初始化了实例变量的值。此时的线程对象并没有任何线程的动态特征,程序也不会执行它的线程体run()。2

2022-01-21 14:12:03 94

原创 【Java 并发编程】【03】Thread类API

3 .Thread类API3.1 创建线程对象相关构造器:Thread():创建新的Thread对象Thread(String threadname):创建线程并指定线程实例名Thread(Runnable target):指定创建线程的目标对象,它实现了Runnable接口中的run方法Thread(Runnable target, String name):创建新的Thread对象,并命名线程体和启动线程:public void run():子类必须重写run()以编写线程体pu

2022-01-21 14:11:13 484

原创 【Java 并发编程】【02】线程的创建和启动

2. 线程的创建和启动Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的对象。每个线程的作用是完成一定的任务,实际上就是执行一段代码,我们称之为线程执行体。Java使用run方法来封装这段代码,即run方法的方法体就是线程执行体。方式一:继承Thread类创建线程类通过继承Thread类来创建并启动多线程的步骤如下:(1)定义继承Thread的子类,并重写该类的run()。查看Thread类的源代码,发现当我们没有传target时,那么Thread类的run()就是一

2022-01-21 14:09:44 283

原创 【Java 并发编程】【01】线程概述及应用

多线程相关知识:1.JavaSE : 多线程基础2.JUC : 多线程高级一些概念:1.程序: 完成某个任务、功能 用某种语言编写的一组指令的集合。2.软件: 软件 = 程序 + 程序运行所需文件 一个软件中可能有很多个程序3.进程: 程序的一次运行。一个进程就是一个正在运行中的程序,可以看做是一款软件对应一个进程;每个软件(每个进程)之间是独立的,操作系统在分配资源(内存)的时候,是以进程为单位的。因此进程之间进行通信(交换数据)时,成本比较高,相当于两个软件之间进行通信。

2022-01-21 14:07:08 530

原创 【Flink】【第9章】【 状态管理和容错机制】【01】状态编程

1.状态编程介绍1.1 有状态计算和无状态计算流式计算分为无状态和有状态两种情况:(1)无状态的计算基于每个独立事件给出每个事件的结果例如,流处理应用程序从传感器接收温度读数,并在温度超过90度时发出警告。(2)有状态的计算则会基于多个事件输出结果1.所有类型的窗口。例如,计算过去一小时的平均温度,就是有状态的计算。2.所有用于复杂事件处理的状态机。例如,若在一分钟内收到两个相差20度以上的温度读数,则发出警告,这是有状态的计算。3.流与流之间的所有关联操作、流与静态表、动态表之间的关联

2022-01-21 09:31:27 2516

原创 【Flink】【第八章】 ProcessFunctionAPI

1.ProcessFunction介绍1.1 API上的说明A function that processes elements of a stream.For every element in the input stream processElement(Object, ProcessFunction.Context, Collector) is invoked. This can produce zero or more elements as output. Implementa

2022-01-20 22:38:51 925

原创 【Flink】【第五章 流处理API】Source 和 Sink

Source输入Controlling Latency(控制延迟)Source传输控制策略_29集默认情况下,流中的元素不会一个一个的在网络中传输,而是缓存起来,这样可以减少连接的次数,提高效率;缓存的大小可以在Flink的配置文件、ExecutionEnvironment、或者某个算子上进行配置;输入控制延迟默认为100ms输入延迟的好处:提高吞吐量输入延迟的缺点:增加了延迟如何把握平衡?如果是为了最大吞吐量,则可以设置setBufferTimeout(-1),移除timeout

2022-01-19 10:49:56 956

原创 【Mysql】【高级篇】【第02章】Mysql的数据目录

本章对后续了解Mysql索引有所帮助,但不是重点章节;1.Mysql8的主要目录结构1.1 数据库文件的存放路径1.1.1 windows系统库目录Mysql在安装的时候,配置文件中会指定Data目录,该目录下每一个目录代表一个数据库;表文件数据库目录下对应.idb格式的文件,就是数据表文件配置文件my.iniwindows系统下的mysql的配置文件为my.ini数据库服务器进程目录Mysql是一个服务端程序,是一个进程;下面就是服务器程序对应的物理文件bin目录:存放可执

2022-01-18 13:18:22 973

空空如也

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

TA关注的人

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