- 博客(57)
- 收藏
- 关注
原创 Flink中任务(Tasks)和任务槽(Task Slots)详解
在之前不做共享的时候,每个任务都平等地占据了一个slot,但其实不同的任务对资源的占用是不同的。所以对于第一个任务节点source→map,它的6个并行子任务必须分到不同的slot上(如果在同一slot就没法数据并行了),而第二个任务节点keyBy/window/apply的并行子任务却可以和第一个任务节点共享slot。另外,同一个任务节点的并行子任务是不能共享slot的,所以允许slot共享之后,运行作业所需的slot数量正好就是作业中所有算子并行度的最大值。而不同的任务节点的子任务可以共享slot。
2024-03-19 16:46:25
1216
原创 Flink中JobManager与TaskManage的运行架构以及原理详解
TaskManager是Flink中的工作进程,数据流的具体计算就是它来做的,所以也被称为“Worker”。当然由于分布式计算的考虑,通常会有多个TaskManager运行,每一个TaskManager都包含了一定数量的任务槽(task slots)。TaskManager启动之后,JobManager会与它建立连接,并将作业图(JobGraph)转换成可执行的“执行图”(ExecutionGraph)分发给可用的TaskManager,然后就由TaskManager具体执行任务。
2024-03-19 15:32:30
2177
1
原创 [leetcode 189][轮转数组]
输入: nums = [1,2,3,4,5,6,7], k = 3。输入:nums = [-1,-100,3,99], k = 2。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]输出: [5,6,7,1,2,3,4]输出:[3,99,-1,-100]
2024-03-08 16:42:36
234
原创 [leetcode 26][删除有序数组的重复项]
解释:函数应返回新长度 length = 7, 并且原数组的前七个元素被修改为 0, 0, 1, 1, 2, 3, 3。不需要考虑数组中超出新长度后面的元素。解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3。输入:nums = [0,0,1,1,1,1,2,3,3]输出:7, nums = [0,0,1,1,2,3,3]输出:5, nums = [1,1,2,2,3]输入:nums = [1,1,1,2,2,3]
2024-03-07 16:54:14
244
1
原创 [leetcode 169][多数元素]
如果新来到的士兵不是同一阵营,则前方阵营派一个士兵和它同归于尽。如果新来的士兵和前一个士兵是同一阵营,则集合起来占领高地,领主不变,winner 依然是当前这个士兵所属阵营,现存兵力 count++;当下一个士兵到来,发现前方阵营已经没有兵力,新士兵就成了领主,winner 变成这个士兵所属阵营的旗帜,现存兵力 count ++。第一个到来的士兵,直接插上自己阵营的旗帜占领这块高地,此时领主 winner 就是这个阵营的人,现存兵力 count = 1。输入:nums = [2,2,1,1,1,2,2]
2024-03-07 15:50:32
303
原创 [leetcode 128][最长连续序列]
[leetcode 128][最长连续序列]给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1]输出:9class Solution { public int longestConsecutive(int[] nums
2021-10-26 16:26:52
131
原创 [leetcode 130][被围绕的区域]
[leetcode 105][被围绕的区域]给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充示例 1:输入:board = [[“X”,“X”,“X”,“X”],[“X”,“O”,“O”,“X”],[“X”,“X”,“O”,“X”],[“X”,“O”,“X”,“X”]]输出:[[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[“X”,“X”,“X”,“X”],[
2021-10-26 16:24:09
2893
原创 [leetcode 105][[从前序与中序遍历序列构造二叉树]
[leetcode 105][[从前序与中序遍历序列构造二叉树]给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]class Solution {
2021-10-25 16:57:45
79
原创 [leetcode 116][填充每个节点的下一个右侧节点指针]
[leetcode 116][填充每个节点的下一个右侧节点指针]给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。输入:root = [1,2,3,4,5,6,7]输出:[1,#,2,3,#,4,5,6,7,#]解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 n
2021-10-25 16:53:55
68
原创 [leetcode 78][子集]
[leetcode 78][子集]给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]class Solution { public List<List<Integer>> subsets(int[] nums) {
2021-10-20 17:35:38
53
原创 [leetcode 79][单词搜索]
[leetcode 79][单词搜索]给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”
2021-10-20 17:20:39
63
原创 [leetcode 49][字母异位词分组]
[leetcode 49][字母异位词分组]给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次。示例 1:输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]示例 2:输入: strs = [""]输出: [[""]]cl
2021-10-11 19:24:31
68
原创 [leetcode 43][字符串相乘]
字符串相乘给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”class Solution { public String multiply(String num1, String num2) { if (num1.eq
2021-09-24 17:54:59
57
原创 [leetcode 45][跳跃游戏2]
跳跃游戏2给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: 2cla
2021-09-24 17:52:52
60
原创 [leetcode 39][组合总和]
组合总和给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。示例 1:输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]示例 2:输入: can
2021-09-23 17:52:41
70
原创 [leetcode 46][全排列]
全排列给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]示例 2:输入: candidates = [2,3,5], target = 8输出: [[2,2,2,2],[2,3,3],[3,5]]class Solution { public List<List<Integer>> pe
2021-09-23 17:50:29
57
原创 平滑的加权负载轮询
平滑的加权负载轮询一、加权负载轮询是什么?有三个节点{a, b, c},他们的权重分别是{a=5, b=4, c=1}。发送20次请求,a会被分配10次,b会被分配8次,c会被分配2次。1、轮训所有节点,找到一个最大权重节点;2、选中的节点权重-1;3、直到减到0,恢复该节点原始权重,继续轮询;这样的算法看起来简单,最终效果是:{a, a, a, a, a, b, c},即前5次可能选中的都是a,这可能造成权重大的服务器造成过大压力的同时,小权重服务器还很闲。加权轮询算法将保持选择的平滑性,
2021-09-23 14:45:38
157
原创 [leetcode 36][有效的数独]
有效的数独请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:board =[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".","."
2021-09-18 11:55:53
64
原创 springBoot导出excle文件
文章目录前言项目结构一、pom文件所需依赖二、User实体类三、ExportExcelUtil工具类四、Contoller类(导出文件)五、启动项目,浏览器访问(http://127.0.0.1:8080/uploadExcel/test)打开效果前言本文可实现springboot批量导出为excle文件。项目结构一、pom文件所需依赖 <dependency> <groupId>org.springframework.boot</gr
2021-08-24 17:13:37
573
原创 [leetcode 17][电话号码的字母组合]
电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]class Solution { public List<String> letterCombi
2021-07-28 16:05:47
241
原创 [leetcode 15][三数之和]
三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]class Solution { public List<List<Integer>> th
2021-07-28 16:03:13
85
原创 [leetcode 11][盛最多水的容器]
盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的 容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例
2021-07-27 17:22:14
169
原创 [leetcode 03][无重复字符的最长字符]
无重复字符的最长字符给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。class Solution { public int lengthOfLongestSubstring(String s) { if
2021-07-20 20:12:23
56
原创 [leetcode 110][平衡二叉树]
平衡二叉树本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:falseclass Solution { public boolean isBalanced(TreeNode root) { return judgeBlance(root)
2021-06-30 20:35:59
65
原创 [leetcode 111][二叉树最小深度]
二叉树最小深度给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5class Solution { public int minDepth(TreeNode root) { if (root == nul
2021-06-30 20:33:55
60
原创 [二叉树的前序、中序、后序遍历(递归与非递归)]
二叉树的前序、中序、后序遍历(递归与非递归)递归前序static class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<>(); preTraverse(root, list); return list;
2021-06-29 11:50:51
80
原创 [leetcode 53][最大子序和]
最大子序和:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。class Solution { public int maxSubArray(int[] nums) { int[] dp = new int[nums.length]; dp[0] = nums[0];
2021-06-25 16:35:05
60
原创 [leetcode 20][有效的括号]
有效的括号:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:trueclass Solution { public boolean isValid(String s) { Stack<Character> stack =
2021-06-25 11:49:11
56
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人