自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java Flink(四十)FlinkSql 简单Demo以及具体使用

之前FlinkSql用的比较少,今天开始简单介绍一下。首先导入依赖:<!-- 引入flink table相关依赖--><dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-table-planner_2.12</artifactId> <version>1.10.1</version>

2021-07-29 10:53:16 4394

原创 java Flink(三十九)官方基础篇-算子概括(基础)

今天回顾一下Flink官方对内部提供的算子的一个介绍。算子:Map 转换流:DataStream → DataStream 简单说明:取一个元素并产生一个元素。将输入流的值加倍的映射函数(必须产生数据) 使用方式:DataStream<Integer> dataStream = //...dataStream.map(new MapFunction<Integer, Integer>() { @Override public I...

2021-07-23 16:51:20 522 1

原创 java Flink(三十八)用户自定义Functions-累加器

自定义Functions官方介绍就是除了我们自定义实现Flink提供的各种算子外,还提供了累加器等。 实现比较简单,就是简单的上下文注册以及使用。 代码: import org.apache.flink.api.common.accumulators.IntCounter;import org.apache.flink.api.common.functions.RichFlatMapFunction;import org.apache.flink.configuratio...

2021-07-23 16:12:31 342

原创 java Flink(三十七)Flink底层ProcessFunction的常见ProcessFunction总结以及简单使用

在flink中,转换算子是无法访问事件的时间戳信息和水位线信息的。所以! flink提供了一些列的Low-Level转换算法,他们可以访问时间戳,watermark以及注册定时器。总结:ProcessFunction可以被认为是一种提供了对状态和定时器访问的FlatMapFunction,没接收到一个数据流都会进行处理,可以通过访问时间戳来进行设置定时器等操作。 flink提供了8个ProcessFunction: ProcessFunction dataStrea...

2021-07-23 14:20:17 1360 1

原创 java Flink(三十六)Flink多流合并算子UNION、CONNECT、CoGroup、Join

UNION介绍 DataStream.union()方法将两条或者多条DataStream合并成一条具有与输入流相同类型的输出DataStream.事件合流的方式为FIFO方式。操作符并不会产生一个特定顺序的事件流。union操作符也不会进行去重。每一个输入事件都被发送到了下一个操作符。说明:1.union 合并的流的元素必须是相同的2.union 可以合并多条流3.union不去重,合流顺序为先进先出具体用法:DataStream<Sensor...

2021-07-22 13:59:07 6351

原创 java Flink(三十五)Flink的watermark设置以及部分实现类

watermark(水位线)是Flink里边的相当重要的存在,是Flink处理乱序数据的重要组成。Flink理论上定义了三种watermark广播机制(【2种生成水印的策略】【如果生成的watermark是null,或者小于之前的watermark,则该watermark不会发往下游】)。首先看看它的组成:AssignerWithPunctuatedWatermarks(为每条消息都会尝试生成水印)AssignerWithPeriodicWatermarks(周期性的生成水印,不会针对.

2021-07-22 10:05:09 1000

原创 java Flink(三十四)Flink ReducingState简单使用

直接上代码:import org.apache.flink.api.common.functions.ReduceFunction;import org.apache.flink.api.common.functions.RichFlatMapFunction;import org.apache.flink.api.common.state.ReducingState;import org.apache.flink.api.common.state.ReducingStateDescriptor

2021-07-20 11:37:44 406

原创 java Flink(三十三)Flink的广播流状态实例

实例介绍:广播状态在双流的应用,其中一个流当做另一个流的状态。DEMO:import org.apache.flink.api.common.state.MapStateDescriptor;import org.apache.flink.api.common.typeinfo.BasicTypeInfo;import org.apache.flink.configuration.Configuration;import org.apache.flink.streaming.api.da

2021-07-20 10:57:01 1202

原创 java Flink(三十二)Flink的异步IO访问外部数据

Flink的异步官方的介绍:当我们使用 Flink 在与外部系统进行交互时(例如:使用存储在数据库中的数据来丰富流事件),这时便需要注意Flink系统与外部系统的通信延迟了。我们使用 MapFunction() 的方式与外部数据库交互,使用的同步交互的方式。即:将请求发送到数据库,并MapFunction等待直到收到响应。在许多情况下,这种等待占据了功能的绝大部分时间。与数据库的异步交互,意味着单个并行函数实例可以同时处理许多请求并同时接收响应。这样,等待...

2021-07-19 15:32:08 1265 2

原创 java Flink(三十一)Flink分布式缓存

什么是Flink的分布式缓存? Flink提供了一个分布式缓存,类似于hadoop,可以使用户在并行函数中很方便的读取本地文件,并把它放在taskmanager节点中,防止task重复拉取。 此缓存的工作机制如下:程序注册一个文件或者目录(本地或者远程文件系统,例如hdfs或者s3),通过ExecutionEnvironment注册缓存文件并为它起一个名称。 当程序执行,Flink自动将文件或者目录复制到所有taskmanager节点的本地文件系统,仅会执行一次。用户可以通过这个指定的名称查找文..

2021-07-19 11:10:13 279

原创 面试准备(九)MySql索引

什么是索引:索引是帮助MySql高效获取数据的排好序的数据结构二叉树:如果是顺序存储,大的数据一直会往右侧插入。红黑树(二叉平衡树)如果数据量过大,树层级过大B树每次IO都会取出好几个节点进行查找B+树所有元素都在叶子节点,中间的冗余索引都是叶子节点最大的元素叶子节点大小从左往右依次递增。双向指针存储的两边地址,方便范围查询MySql索引默认存储到data目录下,一个库对应一个文件夹。MyISAM存储引擎(非聚集索引)会有三...

2021-07-09 16:27:06 106

原创 面试准备(二十)java HashMap

为什么用红黑树解决链表过长,查询效率过低的问题为什么不直接使用红黑树红黑树插入会很慢,要维护自己的结构为什么使用红黑树的阈值是8之所以是8,是因为Java的源码贡献者在进行大量实验发现,hash碰撞发生8次的概率已经降低到了0.00000006,几乎为不可能事件,如果真的碰撞发生了8次,那么这个时候说明由于元素本身和hash函数的原因,此次操作的hash碰撞的可能性非常大了,后序可能还会继续发生hash碰撞。所以,这个时候,就应该将链表转换为红黑树了,也就是为什么链表转红黑树的阈值是8。

2021-07-09 14:35:59 73

原创 面试准备(十九)java常见

一、什么是面向对象?谈谈你对面向对象的理解面向过程:注重事情的每一个步骤及顺序。面向过程比较高效。面向对象:注重事情有哪些参与者(对象)、各自需要做什么。更易于复用、扩展、维护。面向对象的特性包括:封装、继承、多态。封装:明确标识出允许外部使用的所有成员函数和数据项。内部细节对外部调用透明,外部调用无需修改或者关心内部实现。继承:继承基类的方法,并做出自己的改变和扩展。多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。二、JDK、JRE、JVM三者的区别和联

2021-07-09 10:33:02 94

原创 面试准备(十八)三角形的最大周长

贪心算法:数组先排序,排序之后以最后三个数为基准,看是否满足a+b>c,不满足则把最大值由c改成b,再从a前边找个d,看a+d是否大于c。代码:import java.util.Arrays;public class Triangles { public static void main(String[] args) { System.out.println(largestPerimeter(new int[]{3,6,2,3})); } ...

2021-07-06 14:40:20 92

原创 面试准备(十七)柠檬水找零

贪心算法:局部最优解不影响全局解代码:public class lemonChange { public static void main(String[] args) { System.out.println(change(new int[]{5,5,20})); } public static boolean change(int[] bills){ int five = 0,ten=0; for(int bill:..

2021-07-06 14:31:51 66

原创 面试准备(十六)二叉树 深度优先 广度优先

深度优先:递归,从子节点往上计算深度,计算到根节点取最小值广度优先:从根节点往下找,找到叶子结点为止代码:import java.util.LinkedList;import java.util.Queue;public class TreeDeep { static class TreeNode{ int val; TreeNode left; TreeNode right; int deep; ...

2021-07-06 14:10:47 110

原创 面试准备(十四)排列硬币

解题思路:迭代:循环计算和大于n之后输出二分法:牛顿迭代:代码:public class ArrangeCoin { public static void main(String[] args) { System.out.println(arrangeCoins(10)); System.out.println(arrangeCoins2(10)); System.out.println(arrangeCoins3(10))...

2021-07-05 17:56:08 89

原创 面试准备(十五)求两数之和

解题思路:暴力解法:双重for循环map标记法:循环一次即可,每个数据进入map进行标记,寻找target-x在不在即可代码:import java.util.Arrays;import java.util.HashMap;import java.util.Map;public class TwoSum { public static void main(String[] args) { System.out.println(Arrays.toStr...

2021-07-05 16:50:45 80

原创 面试准备(十三)三个数的最大乘积

考虑数组中的正负数。解题思路:排序:排序之后取值比较线性扫描:循环一遍计算比较复杂度以及具体逻辑看代码:import java.util.Arrays;public class MaxProduct { public static void main(String[] args) { System.out.println(); } //排序后输出最大值 Nlog(n) public static int sort(int[] ...

2021-07-05 16:36:26 110

原创 面试准备(十二)寻找数组中心下标

解题思路:双指针算法,循环数组,total(初始为0)从当前元素累加,sum(数组之和)如果不等于total,减去当前元素,继续循环。代码:import java.util.Arrays;public class ArrayCenterIndex { public static void main(String[] args) { System.out.println(pivotIndex(new int[]{1,7,3,6,5,6})); } ...

2021-07-05 15:23:17 83

原创 面试准备(十一)删除排序数组

不能使用set。解题思路:前提是:有序数组定义一个快指针j,定义一个慢指针i。开启循环,i,j一起往后循环,当发现i与j相等之后,i停止循环,j继续循环,直到j与i不相等之后,将i+1赋值为j,继续循环,最后返回i的值即可。代码:public class SortedArrayDuplicates { public static void main(String[] args) { System.out.println(removeDuplicates(n...

2021-07-05 15:12:51 68

原创 面试准备(十)素数个数统计

解题思路一:暴力解法:每个数n都计算与n-1之内的数能否整除(后期可以优化到与2-根号n之间)。解题思路二:埃筛法:利用合数的概念,素数*n必然是合数,因此可以从2开始遍历,将所有合数提前做上标记,减少计算。代码:public class PrimeNumber { public static void main(String[] args) { System.out.println(bf(100)); System.out.printl...

2021-07-05 14:44:40 97

原创 面试准备(八)链表反转

解题思路一:链表指向的都是下一个元素的指针,如果想链表反转,需要使用一个变量保存一下下一个元素的指针。每一次处理结果作为下一次处理的初始值。解题思路二:递归思想大问题拆成小问题,必须从最后一个元素开始才能保证链表不断。代码:public class ReverseList { //内部链表类 static class ListNode{ int val; ListNode next; p...

2021-07-05 11:29:26 114

原创 面试准备(七)Redis、Redis的分布式锁、Redis的双写问题、Reids击穿、穿透、雪崩

一、什么是Redis Redis是一个使用C语言编写的,开源的高性能非关系型(NoSQL)的键值对数据库。Redis的数据是存在内存中的,所以读写速度很快。常用于缓存方向,每秒可处理超过10W次读写操作,可以用来做分布式锁。此外,Redis支持事务、持久化等等。 优势:二、Reids的分布式锁举例:比如电商中的超卖问题,同时调用同一个接口,减少库存数量出现错误。解决方法:1、增加锁问题:分布式集群环境中通过分发之后jvm进程级别的锁并不管用。2、redis分布式锁...

2021-07-02 00:14:59 213 1

原创 面试准备(六) Kafka

一、Kafka概述 Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统,常见用于web/nginx日志、访问日志,消息服务等。 Kafka的设计目标如下: 1、以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保持常数时间的访问性能。 2、高吞吐率。即使在非常廉价的商用机器上也能做到单机支持没鸟100000条消息的传输。 3、支持Kafka Server间的消费分区以及分布式消费,同时能保证每个par...

2021-07-01 15:36:58 227

空空如也

空空如也

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

TA关注的人

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