自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 最小的K个数(快排和冒泡分别实现)

关于冒泡和快速排序更加详细的解析在:Java实现的快速排序 冒泡排序和双向冒泡排序算法思路很清晰,其实考察在于排序算法,直接上快速排序和冒泡排序两种(1)Main方法public static void main(String[] args) throws IOException { int[] array = new int[]{4,5,1,6,2,7,3,8}; int k = 4; List<Integer> list = getLe

2021-01-29 16:02:45 176

原创 Java线程池提交任务的两种方式(execute和submit)

线程池只是一个负责创建和管理线程任务的池子,具体概念在:[线程池的简单的底层解析和使用](https://blog.csdn.net/whiteBearClimb/article/details/107504976?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522161173244316780266221766%252522%25252C%252522scm%252522%25253A%25252220140713.1

2021-01-27 15:28:07 3932

原创 二叉树的先序,中序,后序三种遍历方式(Java实现)

首先了解生成二叉树:Java实现生成二叉树遍历的思路很简单(1)先序先序遍历意思是根节点在最前面,也就是根左右,找到叶子节点后,优先输出根节点即可private static void frontSearch(TreeNode tree) { // 先序遍历先打印出当前节点的值 System.out.println(tree.getValue()); // 先找左节点 if (!Objects.isNull(tree.getLeftN

2021-01-27 10:59:15 1149

原创 Java调用Shell脚本(内含FlinkShell提交取消FlinkJob示例)

先从需求说起:有一个数据管理平台客户端,数据处理流是FlinkJob的算子链完成的,但是要让客户端后端的SpringBoot项目直接控制FlinkJob的任务执行,包括提交,下线等等。一开始找了下现成的集成包,客户端,但是好像没有。后来仔细看了开源的DolphinSchedule,发现它针对Flink的操作全是Shell,于是自己也想着模仿它来弄一套。(1)本地写一个.sh脚本从这个shell看出,接受了一些入参。并且对百度发起了get请求。(2)通过Java来调用public static v

2021-01-22 16:10:27 961

原创 判断链表是否有环?

链表是否有环?首先了解自定义双向链表的实现:https://blog.csdn.net/whiteBearClimb/article/details/112978563先解释下有环的概念,有环的意思就是说,链表尾的下一个节点接回了头节点,这样导致了该链表会循环,永无尽头。方法1:自定义双向链表的时候,继承List,重写Size方法,每add方法新增一个Node节点,就Size++, 保证调用 XXX.Size() ;的时候能够返回自定义链表的长度。定义一个checkCycle方法,判断是否有环就

2021-01-22 14:02:38 645

原创 Java实现双向链表结构

LinkList是链表,如果我们要实现前后两个Node有关联能相互追溯,或者要实现一个循环♻️链表,可以按照自己思路实现。(1)仿照LinkList,创建一个链表类,包含前节点,数据,后节点。static class ListNode{ //当前节点数据 private Integer data; //后节点 private ListNode next; //前节点 private ListNode prev

2021-01-22 10:25:41 154

原创 Java实现的快速排序

(1)是什么?一种把乱序数组元素快速整理成有序的排序算法,时间复杂度是O(nLogn)(2)具体排序思路1:首先获取第一个元素当作排序目标,也就是第一轮的主要目的是把第一个元素放到准确的位置2:循环,先从右边找一个比目标数据小的,再从左边找到一个比目标数据大的,将这两个数据调换位置,然后继续从右边找一个比目标数据小的,再从左边找到一个比目标数据大的,继续调换位置,直到 左右两边游标重叠。使得左边全部数据比他小,右边全部数据比他大3:当第一个元素排好位置后,以它为中间点,切分成左右两段新数组,分别

2021-01-20 10:08:41 386

原创 设计LRU缓存结构(Java实现)

(1)是什么?Least Recently Used (最近最少使用)缓存淘汰算法中的一种。因为缓存是保存在内存中的,内存是很吃紧很宝贵的,所以要保证最热点的数据做缓存,冷门数据淘汰。(2)具体在哪些场景使用?Mysql的缓冲池,Linux OS 的虚拟文件系统VFS都有用到。(3)具体实现步骤?既然是缓存,那肯定就是List中存放着一大串 Key - Value 结构,我们查找目标数据的时候就是for这个List找到对应的Key,这个List可能很长,所以我们可以把热点数据排到较前面,冷门的放

2021-01-18 10:43:05 1890 1

原创 Java翻转链表

public static void main(String[] args) { List array = new LinkedList(); array.add(1); array.add(2); array.add(3); System.out.println(array.toString()); List convertArray = convertArray(array); System.

2021-01-15 15:08:58 103

原创 Java实现生成二叉树

(1)二叉树是什么:除叶子节点外,所有节点都拥有左右两条分支。每个节点都包含着当前节点的值。最上层的头叫做根节点。比根节点小的放左边,比根节点大的放右边。针对大批量的,动态的数据存储,查询增删的效率都非常高,理想状态下时间复杂度O(logN)。(2)如果有一串数组元素:6,3,2,5,4,1,8,7,9 , 组成的二叉树应该是怎样的?(3)过程解析:1:首先二叉树包含三个信息,左节点,右节点,还有当前节点value。2:在创建时肯定是拿一个元素做根节点,然后把后续进来的元素与根节点比较。

2021-01-15 14:42:36 1814

原创 最浅显易懂的全排列算法Java实现

对于全排列这个教科书上的入门级算法,当初我自己可是又爱又恨,是它让我体会到了时间倒流一样的恐怖,又让我油然而生一种解决问题的自豪。在这里,我将尝试抛开繁文缛节,从任何人都能理解的案例和思路出发,一步步踏入全排列的深坑。(1)全排列是什么?其实就是针对一个数组,输出它里面元素可能组成的全部不重复的组合。例如:{1,2,3} 经过全排列后得到:[1, 2, 3][1, 3, 2][2, 1, 3][2, 3, 1][3, 2, 1][3, 1, 2](2)具体步骤罗列:不着急敲代码实现,我

2021-01-14 14:52:38 481 1

原创 PropertyDescriptor(属性描述器)和Introspector(内省器)

(1)是什么?专门用于操作Java对象的属性的一套工具API,底层是充分利用了反射的原理便捷操作类属性。(2)具体用途:可以通过反射得到某个pojo的类属性所有get,set方法,并通过反射去调用它。例如如果有个100个类属性的pojo,如果我们set,是不是要写100次?如果我有1000个类属性,就写1000个get,set ?其实不用那么麻烦,只需要获取到该pojo的所有类属性,再通过反射获取对应属性的get,set方法,即可完成赋值。遇到一些还没有ORM映射的数据库,例如:Hive, Clic

2021-01-11 19:53:33 1241 2

原创 JSONObject类

(1)是什么?阿里巴巴提供的一个json快速转换工具类,实现了Map接口,通过Key Value形式存储数据,初始化大小为16,有参构造方法需要传入一个Map。项目中实际用途:用于Json转具体的Object实体类,或者String快速转JSON格式,都可以用或者有的数据属性变化较多,暂时不想定义一个POJO接参,就可以用JSONObject先接着。(2)怎么用?基本用法:public static void main(String[] args) throws Exception {

2021-01-11 15:00:40 7756

原创 Properties类的常用姿势

(1)是什么?Java配置文件类,主要用于读取,设置配置文件,Properties类继承Hashtable类并实现了Map接口,使用键值对的形式来保存配置属性,Key和Value都是字符串,在很多第三方连接驱动的Class都需要我们传递一个properties作为参数。例如Flink中监听Kafka消费:// 创建配置文件类Properties properties = new Properties();// 设置IP与端口号properties.setProperty(“bootstrap.se

2021-01-11 09:55:50 645

原创 CountDownLatch(Java多线程同步计数器)

CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。使某一个线程在某些其他线程任务执行成功后才开始执行,简单来说就是:

2021-01-08 18:04:41 232

原创 泛型、泛型类、泛型方法、泛型擦除

(1)是什么?一种允许我们在不确定参数类型时候使用的类型。例如我不知道A方法应该会传String还是int,我就用个泛型先占坑。(2)为什么要用泛型?泛型可以在编译期自动确定具体类型,检查类型是否匹配,可以提高代码的重用率,减少冗余编码。(3)泛型与Object的区别?像上面说的我不知道方法A的参数类型,其实也可以使用Object,但是使用Object出参的时候返回的也是Object,导致范围非常广泛, 返回值也许是其它类型。就会在运行时得到一个类型转换异常(ClassCastException:

2021-01-08 16:41:01 136

原创 SQL优化之谓词下推

(1)什么是谓词?谓词,用来描述或判定客体性质、特征或者客体之间关系的词项。意思就是,一个判断的动作或者形容某样东西的一个特征。(2)什么是谓词下推?将过滤条件表达式(=、!=、like、in、between、>、<…)尽量靠近要过滤的数据源,达到尽早过滤无用数据的目的。(3)有什么好处?例如有表:Student 学生, Grade 分数业务:查询出所有100分成绩的学生,用S_id做关联键SQL :SELECT * FROM Student t , Grade gWHERE

2021-01-08 11:46:27 4426 2

原创 Java8的默认方法小结

从Java8新增的几条原则说起,对:先看传统的接口与实现类:implement 重写对应的method后,执行一下:像上面这样是我们所熟悉的接口,一种规范,实现类必须重写实现那个接口定义的所有方法,直到Java8之后出现了默认方法默认方法:default的方法无需@Overwrite,在接口声明的时候就可以做具体实现,这无疑有点颠覆我们的传统三观问题一:如果实现类既实现了接口,又继承了抽象类,并且接口与抽象类中有同名方法,那么say2优先调用的会是哪一个?问题2: 如果定义两个接口

2021-01-05 18:33:02 172

内存溢出排查手册.pdf

内存溢出排查手册.pdf

2021-05-14

流式字符串统计的FlinkJob

流式字符串统计的FlinkJob小demo

2020-12-31

空空如也

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

TA关注的人

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