自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(179)
  • 资源 (6)
  • 论坛 (1)
  • 收藏
  • 关注

原创 RDD算子

RDD算子算子分类#1、transformation(转换)#根据已经存在的rdd转换生成一个新的rdd, 它是延迟加载,它不会立即执行例如:map / flatMap / reduceByKey 等#2、action (动作)它会真正触发任务的运行将rdd的计算的结果数据返回给Driver端,或者是保存结果数据到外部存储介质中例如:collect / saveAsTextFile 等transformation算子转换

2021-06-12 01:48:47 109

原创 kudu table

kudukudu介绍Kudu背景#在 KUDU 之前,大数据主要以两种方式存储:##可以更快地访问批量数据集(高吞吐量),而不是该数据集中的特定记录(低延迟)静态数据:以 HDFS 引擎作为存储引擎,适用于高吞吐量的离线大数据分析场景。这类存储的局限性是数据无法进行随机的读写。动态数据:以 HBase、Cassandra 作为存储引擎,适用于大数据随机读写场景。这类存储的局限性是批量读取吞吐量远不如 HDFS,不适用于批量数据分析的场景。#从上面分析可知,这两种数据在存储方式上完全不同,进而导致使用

2021-06-05 16:52:23 13

原创 List Reverse

List Reversepackage com.bingoabin.algorithm.listnode;/** * @author xubin03 * @date 2021/6/5 4:27 下午 */public class ReverseListKGroup { //NC50 链表中的节点每k个一组翻转 //样例:1,2,3,4,5 2 返回 21435 //分析:给你一个链表,按照k个一组进行翻转 //思路:定义两个亚节点,一个停留在组的头部,一个停留在组的尾部,进行翻转后

2021-06-05 16:43:48 11

原创 Roma & Int

Roma & Intpackage com.bingoabin.algorithm.math;public class IntToRoma { //LeetCode.12 整数转罗马数字 https://leetcode-cn.com/problems/integer-to-roman/ //案例:输入3 输出III //分析:将4000以内(不包括4000)的数字转化为roma数字,需要记住规则 // I 1 // V 5 IV

2021-05-29 00:56:51 98

原创 汉明距离distance

汉明距离package com.bingoabin.algorithm.math;public class HammingDisAll { //LeetCode 477. 汉明距离总和 https://leetcode-cn.com/problems/total-hamming-distance/ //案例:输入: 4, 14, 2 返回 6 总结:4和14的距离是2,4和2的距离是2,14和2的距离2 总距离是6 // 4 00100 //14 01110 //2 00010

2021-05-29 00:54:54 11

原创 keepalived

说明`Keepalived VIP`是实现高可用性的一种轻量级技术手段,主要用来防止单点故障,主要方法是`通过实现虚拟IP对连接的节点进行漂移`,也就是说`服务只需要连接虚ip就可以`,实际上连接的是`虚ip`指定的真实服务,避免了`单点问题`。我们默认`KDC和LDAP`的虚拟ip是172.21.139.250。配置VIP需要有一个虚IP,这个IP是局域网内一个合法的IP,同时不能被ping通。配置VIP需要配置`keepalived.conf`和外部进行状态检测的脚本,这里提供我们的配置作为参考:`

2021-05-24 09:37:36 52

原创 题霸五

NC78反转链表输入一个链表,反转链表后,输出新链表的表头。示例1输入{1,2,3}返回值{3,2,1}//递归实现public ListNode ReverseList(ListNode head) { if(head == null || head.next == null) return head; ListNode result = ReverseList(head.next); head.next.next = head; head.next =

2021-05-24 09:30:21 15

原创 三数之和

public class ThreeNumSum { //NC54 三数之和 https://www.nowcoder.com/practice/345e2ed5f81d4017bbb8cc6055b0b711?tpId=117&tqId=37751&rp=1&ru=%2Fta%2Fjob-code-high&qru=%2Fta%2Fjob-code-high%2Fquestion-ranking&tab=answerKey //样例:[-2,0,1,1,2]

2021-05-15 18:33:19 14

原创 题霸四

NC125未排序数组中累加和为给定值的最长子数组长度题目描述给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k,求arr所有子数组中累加和为k的最长子数组长度示例1输入[1,-2,1,1,1],0返回值3 //前缀和 public int maxlenEqualK1(int[] arr,int k){ int[] sum = new int[arr.length + 1]; for(int i = 0;i<arr.length;i++){

2021-05-09 23:03:59 18

原创 hive小文件治理

hive小文件治理背景hive中的数据最终落地到HDFS上,在HDFS上不可避免的有小文件产生,小文件问题,会产生诸多问题,比如:1.对底层存储HDFS来说,HDFS本身就不适合存储大量小文件,小文件过多会导致namenode元数据特别大, 占用太多内存,严重影响HDFS的性能2.对hive来说,在进行查询时,每个小文件都会当成一个块,启动一个Map任务来完成,而一个Map任务启动和初始化的时间远远大于逻辑处理的时间,就会造成很大的资源浪费。而且,同时可执行的Map数量是受限的。原因产生小文件

2021-05-02 10:55:49 60 1

原创 题霸三

NC29矩阵查找题目描述请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征:每一行的数字都从左到右排序每一行的第一个数字都比上一行最后一个数字大例如:对于下面的矩阵:[ [1, 3, 5, 9], [10, 11, 12, 30], [230, 300, 350, 500]]要搜索的目标值为3,返回true;示例1输入[[1,3,5,9],[10,11,12,30],[230, 300, 350, 500]],3返回值true

2021-05-01 22:59:01 20

原创 正则表达式

正则表达式一些规则#限定符? 比如used? 表示d可以出现0次或者1次* 表示出现0次或多次字符 比如ab*c 表示ac中间只能出现0个或者多个b+ 表示出现1次以上的字符 比如ab+c 表示ac中间至少出现一个b abc abbbbbbc{2,6} 表示精确出现的次数 比如ab{2,6}c,表示ac中间有只有2-6个b,如果想表示2次以上,可以把6省略,{2,}#上面的只是判断前面一个字符,如果想表示多个字符,可以用()括起来(ab)+ 表示至少出现ab 一次以上

2021-04-24 21:32:56 120 3

原创 题霸二

NC18顺时针旋转矩阵题目描述有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。示例1输入[[1,2,3],[4,5,6],[7,8,9]],3返回值[[7,4,1],[8,5,2],[9,6,3]]//方式一:暴力法public int[][] rotateMatrix1(int[][] mat, int n) { int[][] res = new int[n][n];

2021-04-24 21:24:44 32

原创 shell专题

shell统计文件的行数#写一个 bash脚本以输出一个文本文件 nowcoder.txt中的行数#示例:#假设 nowcoder.txt 内容如下:##include <iostream>#using namespace std;#int main()#{# int a = 10;# int b = 100;# cout << "a + b:" << a + b << endl;# return 0;#}#

2021-04-24 21:23:07 61 1

原创 Prometheus & Grafana

普罗米修斯 Prometheus介绍#Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。#它涵盖了可以绑定的整个生态系统工具集及其功能。Prometheus主要用于对基础设施的监控。包括服务器,数据库,VPS,几乎所有东西都可以通过Prometheus进行监控。Prometheus希望通过Prometheus配置中定义的某些端点执行的HTTP调用来检索度量标准。工作流程Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 m

2021-04-18 15:35:46 40

原创 【每日一题】二叉搜索树节点最小距离

783. 二叉搜索树节点最小距离给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。注意:本题与 530:https://leetcode-cn.com/problems/minimum-absolute-difference-in-bst/ 相同示例 1:输入:root = [4,2,6,1,3]输出:1示例 2:输入:root = [1,0,48,null,null,12,49]输出:1class Solution { //DFS Tr

2021-04-18 15:16:52 33

原创 题霸

NC119最小的K个数题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。示例1输入[4,5,1,6,2,7,3,8],4返回值[1,2,3,4] public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ArrayList<Integer> result = new ArrayList&

2021-04-18 15:10:26 110

原创 【每日一题】最大数

179. 最大数给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。示例 1:输入:nums = [10,2]输出:"210"示例 2:输入:nums = [3,30,34,5,9]输出:"9534330"示例 3:输入:nums = [1]输出:"1"示例 4:输入:nums = [10]输出:"10&quot

2021-04-13 10:17:06 40

原创 数据库与缓存双写一致性

数据库与缓存双写一致性背景#首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。#但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。策略#先做一个说明,从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。#这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操

2021-04-10 10:45:21 44

原创 mysql元数据解析hive表结构

1.mysql表中元数据dbs表CREATE TABLE `dbs` ( `DB_ID` bigint(20) NOT NULL, `DESC` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL, `DB_LOCATION_URI` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL, `NAME` varchar(128) CH

2021-04-10 10:41:54 40

原创 讨论类算法

讨论类#一个1G的空间,有 8*1024*1024*1024=8.58*10^9bit,也就是可以表示85亿个不同的数没出现的数#40亿个非负整数中找到没出现的数,假设内存限制1GB分析:40亿 4B整数 需要16GB内存方案一:设置一个40亿bit的数组 8个bit为1B 也就是500M 标记每个数字出现为1 最后找为0的方案二:如果内存限制为10MB 将40亿划分为64个区间 统计区间数据个数 如果少于区间差数 再将这个区间划分 最后求结果出现两次#40

2021-04-10 10:17:30 40

原创 技巧类算法

技巧类Manacher//最长回文子串//方式一:暴力解法public String longestPalindrome(String s) { if(s.length() < 2) return s; int maxLen = 1; int begin = 0; char[] charArray = s.toCharArray(); for(int i = 0;i< s.length()-1;i++){ for(int j = i

2021-04-10 10:16:56 37

原创 设计类算法

设计类三合一面试题 03.01. 三合一三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例1: 输入:["TripleInOne", "push", "push", "pop", "pop", "pop", "isEmpty"][[1

2021-04-10 10:15:41 38

原创 数学专题

十六进制魔术数字1271. 十六进制魔术数字你有一个十进制数字,请按照此规则将它变成「十六进制魔术数字」:首先将它变成字母大写的十六进制字符串,然后将所有的数字 0 变成字母 O ,将数字 1 变成字母 I 。如果一个数字在转换后只包含 {"A", "B", "C", "D", "E", "F", "I", "O"} ,那么我们就认为这个转换是有效的。给你一个字符串 num ,它表示一个十进制数 N,如果它的十六进制魔术数字转换是有效的,请返回转换后的结果,否则返回 "ERROR" 。示例 1:

2021-04-03 12:59:58 36

原创 kerberos

kerberos通俗解释介绍Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务,该认证过程的实现不依赖于主机操作系统认证,需要基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下,Kerberos作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。组件• Client• Server• KDC(Key Distribution C

2021-04-03 11:07:18 44

原创 大数据架构

大数据常用的架构随着多年的大数据的技术发展和积累,越来越多的人发现各个公司所使用的大数据技术大致可以分为两大类,分别是离线处理技术和实时处理技术,要么个别公司只有离线处理技术,要么个别公司只有实时处理技术,但是绝大部分公司基本上都是两种技术架构都带着一起在做,以为我们的业务lambda架构基本介绍业务系统基本流程介绍lambda架构基本介绍lambda架构最早是由storm的创始人,Nathan Marz进行提出并描述了我们目前所了解的lambda架构,其实lamda架构先入为主,已经适用在了绝

2021-03-16 10:27:25 102 2

原创

堆堆框架#二叉堆(本质是一个完全二叉树)- 最大堆- 最小堆#二叉堆的操作:- 插入节点 插入节点在完全二叉树的最后一个位置,不断“上浮”节点调整堆,复杂度为O(logn)- 删除节点 删除堆顶节点,把最后一个节点值补到堆顶,然后不断“下沉”操作,复杂度为O(logn)- 构建二叉堆 把无序的完全二叉树调整为二叉堆,本质就是让所有非叶子节点依次“下沉”,从最后一个非叶子节点开始,进行“下沉”操作,复杂度为O(n)#二叉堆虽然是一个完全二叉树,但是它的存储方式并不是链式存

2021-02-24 09:38:51 58

原创 python自学记录

python基础jupyter使用#注意:1.添加虚拟环境,conda create --name python34 python=3.42.切换环境,启用Anaconda Prompt,activate python342.克隆环境,conda create --name [虚拟环境名] -- clone [colne的环境]3.卸载环境,conda remove --name python34 --all4.安装包,pip install requests5.卸载包,pip u

2021-01-28 16:17:50 84

原创 三维形体投影

三维形体投影面积883. 三维形体投影面积在 N * N 的网格中,我们放置了一些与 x,y,z 三轴对齐的 1 * 1 * 1 立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。现在,我们查看这些立方体在 xy、yz 和 zx 平面上的投影。投影就像影子,将三维形体映射到一个二维平面上。在这里,从顶部、前面和侧面看立方体时,我们会看到“影子”。返回所有三个投影的总面积。示例 1:输入:[[2]]输出:5示例 2:输入:[[1,2].

2020-12-29 17:18:54 145

原创 多米诺骨牌问题

现有n块”多米诺骨牌”s1,s2,s3,…sn水平放成一排,每次骨牌si包含左右两个部分,每个部分赋予一个非负整数值,如下图所示为包含6块骨牌的序列.骨牌可做180度旋转,使得原来在左边的值变到右边,而原来右边的值移到左边,假设不论si如何旋转,L[i]总是存储si左边的值, R[i]总是存储si右边的值, W[i]用于存储si的状态:当L[i]<=R[i]时记为0,否则记为1,试采用动态规划算法设计时间复杂度为o(n)的算法参考博客:https://blog.csdn.net/duguduc.

2020-11-27 16:49:24 239

原创 合并k个升序链表

合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6//方式一:分别比较k个链表pub.

2020-10-24 23:28:25 103

原创 有序数组的平方

//给定一个按非递减顺序排序的整数数组 A,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。//比如输入:[-4,-1,0,3,10] 输出:[0,1,9,16,100]分析:也就是数组原先是增序排列,但是有负数,需要计算他们的平方然后重新排序。//最容易的方式,利用Arrays的sort方法//直接排序的方式public int[] sortedSquares(int[] A) { int[] result = new int[A.length]; int .

2020-10-18 11:47:51 159

原创 数学专题

数学寻找缺失的整数需求:在一个无序数组里有99个不重复的正整数,范围是1~100,唯独缺 少1个1~100中的整数。如何找出这个缺失的整数?解法一:Hash表- 创建一个哈希表,以1到100这100个整数为Key。然后遍历整个数组,每读到一个整数,就定位到哈希表中对应的Key,然后删除这个Key。- 由于数组中缺少1个整数,哈希表最终一定会有99个Key被删除,从而剩下1个唯一的Key。这个剩下的Key就是那个缺失的整数。 - 假设数组长度是n,那么该解法的时间复杂度是O(n),空间复杂度是O(

2020-09-22 23:35:05 90

原创 字符串专题

报数public static String countAndSay(int n) { if (n == 1) { return "1"; } //递归调用,然后对字符串处理 String str = countAndSay(n - 1) + "*";//为了str末尾的标记,方便循环读数 char[] c = str.toCharArray(); int count = 1; StringBuilder s = new StringBuilder.

2020-08-31 09:10:37 110

原创 链表专题

链表专题链表翻转//递归链表反转public ListNode reverseList(ListNode head) { if(head == null || head.next == null) return head; ListNode last = reverseList(head.next); head.next.next = head; head.next = null; return last; }

2020-07-28 00:17:14 133

原创 排序专题

排序算法的时间复杂度:【O(nn)选择、冒泡、插入】【O(NlogN)快速、归并、堆、希尔】【O(N)计数、基数】排序算法空间复杂度:【O(1)选择、冒泡、插入、堆、希尔】【O(logN)~O(N)快速排序 O(N)归并排序】【O(M)计数、基数(M为桶的数量)】排序算法稳定性:选择排序(不稳定),冒泡排序(稳定),插入排序(稳定),快速排序(不稳定),归并排序(稳定),堆排序(不稳定),希尔排序(不稳定),桶排序(稳定),计数排序(稳定),基数排序(稳定)稳定性的意义:在具体的业务场景中,需要保.

2020-06-20 14:07:28 190

原创 数组专题

1、二维数组中的查找// 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 public boolean Find(int target, int[][] array) { int i = 0; int j ...

2020-04-22 11:19:10 213

原创 设计模式概述——测试群发

1、设计模式问题以及目的程序员编写软件过程中,面临 耦合性、内聚性以及可维护性,可扩展性,重用性,灵活性等问题,设计模式就是为了让程序有更好的:1) ==代码重用性==(即:相同功能的代码,不用多次编写)2) ==可读性== (即:编程规范性, 便于其他程序员的阅读和理解)3) ==可扩展性== (即:当需要增加新的功能时,非常的方便,称为可维护)4) ==可靠性== (即:当我们增...

2020-03-17 22:38:02 812

原创 scala理解可变与不可变

我们定义变量的时候分为var可变变量和val不可变变量。我们使用容器的时候也分为可变容器和不可变容器。List和Tuple本身就是不可变的,set和map分为可变和不可变的,默认为不可变。//不报错var list = scala.collection.immutable.List(“Hello”,“World”);list += “Scala”;//报错val list = ...

2020-03-05 17:38:11 405 4

原创 泛型

泛型好处:1.可以统一数据类型,便于操作。2.将运行时的异常提前到了编译时,提高了效率。3.避免了强制类型转换4.实现代码的模板化,把数据类型当作参数传递,提高了可重用性。泛型种类:E:元素(Element),多用于java集合框架K:关键字(Key)N:数字(Number)T:类型(Type)V:值(Value)使用注意点:泛型类可能有多个参数,此时应将多个参...

2020-02-28 21:12:47 116

flume+kafka+sparkstreaming

通过flume监控文件,让kafka消费flume数据,再将sparkstreaming连接kafka作为消费者进行数据处理,文档整理实现

2019-02-23

presto集成到ambari

presto集成到hdp的操作使用文档,详细描述操作过程,亲测可用

2019-02-23

livy-0.5.0-incubating-bin.zip

livy安装包,亲测可用,通过livy来发任务到spark进行执行,更加方便了对spark的操作

2019-02-23

phoenix连接hbase驱动包

phoenix连接hbase驱动包,小文件,供大家下载,实现sql操作hbase,简单方便快捷

2018-07-31

presto-cli-0.191-executable.jar

presto集成到hdp需要下载的包,亲测,已集成成功,并正常使用。

2019-02-23

livy-rsc-0.5.0-incubating.jar

livy安装过程需要的包,进行替换livy部署包中jars中的对应的jar包

2019-02-23

徐茂盛的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

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

TA关注的人 TA的粉丝

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