自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 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 2

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

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

2021-07-23 16:51:20 8 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 9

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

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

2021-07-23 14:20:17 16 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 46

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

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

2021-07-22 10:05:09 10

原创 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 5

原创 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 3

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

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

2021-07-19 15:32:08 6

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

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

2021-07-19 11:10:13 15

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

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

2021-07-09 16:27:06 12

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

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

2021-07-09 14:35:59 3

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

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

2021-07-09 10:33:02 7

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

贪心算法:数组先排序,排序之后以最后三个数为基准,看是否满足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 9

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

贪心算法:局部最优解不影响全局解代码: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 5

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

深度优先:递归,从子节点往上计算深度,计算到根节点取最小值广度优先:从根节点往下找,找到叶子结点为止代码: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 6

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

解题思路:迭代:循环计算和大于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 6

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

解题思路:暴力解法:双重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 7

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

考虑数组中的正负数。解题思路:排序:排序之后取值比较线性扫描:循环一遍计算比较复杂度以及具体逻辑看代码: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 11

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

解题思路:双指针算法,循环数组,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 5

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

不能使用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 5

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

解题思路一:暴力解法:每个数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 6

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

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

2021-07-05 11:29:26 9

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

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

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

原创 面试准备(六) Kafka

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

2021-07-01 15:36:58 7

原创 java groovy + spock 单元测试实例 powermock mock静态方法 以及Flink单元测试实例

具体的介绍看这篇介绍的很全面。https://blog.csdn.net/u012129558/article/details/78677357powermock mock静态方法实例1、pom依赖引入引入spock、groovy、powermock 相关依赖以及maven插件 <!-- 代码检查使用的依赖 --> <dependency> <groupId>org.apache.maven.p.

2021-06-28 16:41:04 33 2

原创 面试准备(五) java类的初始化和实例化

首先要了解java中类的加载机制:类的加载机制网上有各种各样的讲解文章,其实通俗的概括就是首先程序运行就会启动java虚拟机JVM。1)Loading(载入)JVM 在该阶段的主要目的是将字节码从不同的数据源(可能是 class 文件、也可能是 jar 包,甚至网络)转化为二进制字节流加载到内存中,并生成一个代表该类的java.lang.Class对象。2)Verification(验证)JVM 会在该阶段对二进制字节流进行校验,只有符合 JVM 字节码规范的才能被 JVM...

2021-06-17 16:15:36 24 1

原创 java SpringBoot(二十二)Mybatis generator自动生成字段注释修改为数据库注释

承接上文,我们发现Mybatis generator自动生成的注释惨不忍睹我们自定义生成注释,注释内容是我们数据库中表中字段的注目录:新增自定义类实现DefaultCommentGenerator注解类CommentGenerator:package com.zr.mall.demo.mbg;import org.mybatis.generator.api.IntrospectedColumn;import org.mybatis.generator.api.Introspe

2021-06-16 16:07:40 25

原创 java SpringBoot(二十一)Mybatis generator自动生成mapper、model以及字段注释

使用Mybatis generator可以自动生成mapper、model类以及mapper.xml,可以满足基本的crud功能。目录结构:使用:1、导入依赖 以及maven插件<!--集成druid连接池--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId>

2021-06-16 15:20:16 28

原创 java SpringBoot(二十)SpringBoot Swagger自动生成API接口文档

什么是Swagger:Swagger是一款Restful接口的文档在线自动生成和功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化Restful风格的Web服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。pom中导入依赖: <!--Swagger-UI API文档生产工具--> <dependency> <groupId&gt.

2021-06-10 17:48:46 9

原创 java SpringBoot(十九)SpringBoot API 状态码类以及返回信息工具类

在平时SpringBoot编写网络API接口代码的时候,难免需要用到返回状态码以及返回的数据、信息。今天写一个万能的返回状态信息工具类。目录结构:IErrorCode 接口类:package com.zr.mall.demo.common.api;/** * 封装API的错误码 */public interface IErrorCode { long getCode(); String getMessage();}ResultCode...

2021-06-10 14:58:25 45

原创 java SpringBoot(十八)SpringBoot的Group Id 与 Artifact Id

我们在创建Spring boot 项目的时候,会要求我们自定义Group Id 与 Artifact Id。下面来介绍一下这两个该怎么写。什么是Group Id 与 Artifact Id:Group Id 与 Artifact Id被统称为“坐标”是为了项目的唯一性而提出的。如果你做了一个maven的通用包,打包到了maven仓库,那么其它项目对你的包进行引用的时候就需要这两个ID去识别导入你的包。Group Id:Group Id一般会分为好几段,例如 org.apach.xx.

2021-06-10 10:37:30 12

原创 java hadoop(六) hadoop mapreduce 规约Combiner案例

什么是规约Combiner:每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,以减少在map和reduce节点之间的数据传输量,以提高网络IO性能。Combiner会在没一个maptask所在的节点运行。这里我们以单词统计demo为例,加入一个Combiner,减少map->reduce的传输量。编写Combiner代码:package mapreduce;import org.apache.hadoop...

2021-06-10 09:47:08 4

原创 java hadoop(五) hadoop mapreduce 排序和序列化案例

什么是序列化与反序列化:序列化(Serialization)是指把结构化对象转化为字节流。反序列化(Deserialization)是序列化的逆过程。把字节流转为结构化对象。mapreduce中的序列化:实现这个接口即可第一个方法是进行序列化第二个方法是反序列化mapreduce中的排序:WritableComparable 接口包含了排序以及序列化,如果我们序列化的同时还需要排序,就实现这个接口即可。需求:代码实现:目录结构:包装类:通.

2021-06-09 19:26:32 22

原创 java hadoop(四) hadoop mapreduce 分区案例

我们在编码步骤那章简单介绍了一下分区。其实通俗来说,分区就是根绝K的某个特征属性(可能是大小、长度以及尾号等等),将K的数据写到不同的文件里。比如我们根据ID来分区,我们可以根据尾号来分10个文件。有几个分区就有几个Reduce Task。实现分区案例:我们根据hdfs文件中的这个字段大小进行分区,大于15的一个区,小于15的一个区,最终有两个out文件。目录结构:Mapper:package partitiondemo;import org.apa..

2021-06-09 16:52:13 17 1

原创 java hadoop(三) hadoop mapreduce 编程流程(以单词统计为例)

一、首先是map层1、首先我们的文件是存储在hdfs,hdfs存储文件是按block块进行存储的,每个块的大小默认是128M。2、我们是用InputFormat下边的子类TextInputFormat进行文件按行读取成K1 V1 模式 K1:这一行的起始点在文件中的偏移量V1:读取到的内容3、每个block都会启动一个MapTask进行处理,map的主要操作就是将读取的内容转换成 K2 V2二、进入Shuffle阶段,生成新的K2 V21、对map阶段输出的k2和v...

2021-06-09 15:50:04 14 1

原创 java hadoop(二) hadoop mapreduce简单介绍以及简单实例

1、简单介绍一下mapreduceMapReduce的思想核心是“分而治之”,适用于大量复杂的任务处理场景(大规模数据处理场景)Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。Reduce负责“合”,即对map阶段的结果进行全局汇总。这两个阶段合起来正是MapReduce思想的体现。2、mapreduce编写步骤https://lansonli.blog.csdn.net/article/.

2021-06-08 11:00:01 22 1

原创 java hadoop(一) 连接hadoop 执行操作

1、先导入依赖:pom.xml:<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <version>2.7.5</version> </d

2021-06-07 19:34:46 14

原创 java SpringBoot(十七)自定义starter

为什么需要自定义starter:项目中经常使用的功能可以包装成自定义的starter,方便调用以及使用。SpringBoot是怎样定义starterd:以test statrt为例:​我们发现我们导入test stater包之后,Spring会引入两个依赖一个是org.springframework.boot:spring-boot-test这个里边没什么东西,主要是告诉我们需要导入什么依赖另一个是org.springframework.boot:spring-boot...

2021-06-01 15:43:38 14 1

原创 java SpringBoot(十六)Profile简单使用

为了方便多环境适配,springboot简化了profile功能。1、配置文件目录结构:

2021-06-01 11:15:53 7

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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