自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sweet Baby,甜宝

有些路,走过以后,再回头,一览众山小!

转载 kerberos体系下的应用(yarn,spark on yarn)

kerberos 介绍阅读本文之前建议先预读下面这篇博客kerberos认证原理Kerberos实际上一个基于Ticket的认证方式。Client想要获取Server端的资源,先得通过Server的认证;而认证的先决条件是Client向Server提供从KDC获得的一个有Server的Master Key进行加密的Session Ticket(Session Key + Client ...

2019-04-24 16:20:58 557

转载 kerberos认证原理

前几天在给人解释Windows是如何通过Kerberos进行Authentication的时候,讲了半天也别把那位老兄讲明白,还差点把自己给绕进去。后来想想原因有以下两点:对于一个没有完全不了解Kerberos的人来说,Kerberos的整个Authentication过程确实不好理解——一会儿以这个Key进行加密、一会儿又要以另一个Key进行加密,确实很容易把人给弄晕;另一方面是我讲解方式有问题...

2019-04-24 16:11:48 142

转载 阿里内部的 Flink 分支 Blink 要开源了

今年,实时流计算技术开始步入主流,各大厂都在不遗余力地试用新的流计算框架,实时流计算引擎和 API 诸如 Spark Streaming、Kafka Streaming、Beam 和 Flink 持续火爆。阿里巴巴自 2015 年开始改进 Flink,并创建了内部分支 Blink,目前服务于阿里集团内部搜索、推荐、广告和蚂蚁等大量核心实时业务。12 月 20 日,由阿里巴巴承办的 Flink Fo...

2019-04-16 14:35:47 398

原创 ubuntu16.04 安装谷歌拼音输入法

1:安装软件:fcitx-googlepinyin。sudo apt-get install fcitx-googlepinyin2:在Ubuntu16.04中选中左侧栏(ubuntu默认的)Settings。然后选择Language support里将keyboard input method system下拉框中设置为fcitx。3:关闭linux重新启动。shut...

2018-11-12 10:30:51 4190

转载 Top-K问题

面试中,TopK,是问得比较多的几个问题之一,到底有几种方法,这些方案里蕴含的优化思路究竟是怎么样的,今天和大家聊一聊。画外音:除非校招,我在面试过程中从不问TopK这个问题,默认大家都知道。问题描述:从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题。栗子:从arr[1, 12]={5,3,7,1,8,2,9,4,7,2,6,6} 这n=12个数中,找...

2018-10-04 10:49:32 1137 1

原创 数据结构----Java中数组的排序

快速排序:时间复杂度O(nlogn),不稳定的排序算法原理:快速排序是一种交换排序,它的基本思想是:通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。快速排序使用分治法来把一个串(list)分为两个子串(sub-lists)//快速排序public class QuickSort...

2018-09-22 09:04:14 145

原创 数据结构----Java中数组的查找

线性查找:时间复杂度O(n);适合于存储结构为顺序存储或链接存储的线性表。原理:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。//线性查找public class LinearSearch{ public static...

2018-09-22 09:04:05 192

原创 数据结构----Java中栈与队列相互实现

栈:先进后出;队列:先进先出,FIFO利用两个队列实现栈的功能//利用两个队列实现栈import java.util.Queue;import java.util.LinkedList;public class QueueToStack{ Queue<Integer> queue1 = new LinkedList<Integer>(); ...

2018-09-22 09:03:26 281

原创 数据结构----Java中与链表操作有关

定义链表的结构体:public class Linked{ private int data; private Linked next; public void setData(int data){ this.data = data; } public int getData(){ return data; ...

2018-09-22 09:03:13 115

原创 数据结构----Java中二叉树的遍历

二叉树的结构体类:public class BinaryTree{ private int data; private BinaryTree leftNode; private BinaryTree rightNode; public void setData(int data){ this.data = data; } ...

2018-09-22 09:02:48 113

转载 深入浅出Redis-redis底层数据结构(下)

概述:学习使用Redis,其实并不需要去研究其底层数据的实现。我们只需要了解他有哪些常用的数据类型,然后熟练使用,就可以很好的掌握Redis 这个工具了。但是这样的学习方法只适合Redis 的入门,“工欲善其事必先利其器”,我们想要用好Redis,则必须深入了解Redis 的底层到底是如何实现的,我们在选择数据结构的时候才能做出正确的选择。在上一篇博客《深入浅出Redis-redis底层数...

2018-08-30 19:12:29 225

转载 深入浅出Redis-redis底层数据结构(上)

1、概述相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-value数据库。在《Redis设计与实现》这样描述:Redis 数据库里面的每个键值对(key-value) 都是由对象(object)组成的:数据库键总是一个字符串对象(string obj...

2018-08-30 19:06:56 219

转载 MySQL中Innodb的聚簇索引和非聚簇索引

聚簇索引数据库表的索引从数据存储方式上可以分为聚簇索引和非聚簇索引(又叫二级索引)两种。Innodb的聚簇索引在同一个B-Tree中保存了索引列和具体的数据,在聚簇索引中,实际的数据保存在叶子页中,中间的节点页保存指向下一层页面的指针。“聚簇”的意思是数据行被按照一定顺序一个个紧密地排列在一起存储。一个表只能有一个聚簇索引,因为在一个表中数据的存放方式只有一种。一般来说,将通过主键作为聚簇...

2018-08-29 22:22:15 21323 12

原创 数组中重复的数字(Java)

题目:在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2, 3, 1, 0, 2, 5, 3},那么对应的输出是重复的数字2或者3。代码实现:public static boolean getRepeatNums(int numbers[...

2018-08-28 20:47:21 325

原创 树中两个结点的最低公共祖先(Java)

题目:树中两个结点的最低公共祖先。解决方法一:假设是二叉搜索树(二叉搜索树是一个排序的二叉树,左子树的结点小于根结点,右子树的结点大于根结点),故找到一个结点,使其大于左子结点小于右子结点即可。代码实现:public static TreeNode getLastCommonNode(TreeNode pRoot, TreeNode pLeft, TreeNode pRigh...

2018-08-28 15:48:21 2304 2

原创 把字符串转化成整数(Java)

题目:把字符串转化为整数代码实现:public static boolean g_status = true; //代表是否非法输入public static boolean g_overflow = false; //代表是否溢出public static int strToInt(String str) { if (str == "" || str.length() == ...

2018-08-27 16:33:32 772

原创 不用加减乘除法做加法(Java)

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+,-,*,/;四则运算符号。代码实现:public int add(int num1, int num2) { while(num2 != 0){ int tmp = num1 ^ num2; //不算进位各位相加 num2 = (num1&num2)<<1; //得到进位数 num1 = t...

2018-08-27 16:07:39 296

原创 求1+2+...+n(Java)

题目:求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。代码实现:public static int sum(int n){ int result = 0; int a = 1; boolean value = ((n!=0) && a==(result = sum(n-1)...

2018-08-27 15:53:52 289

原创 圆圈中最后剩下的数字(Java)

题目:0, 1,....., n - 1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。代码实现:一:利用数组实现public static int getLastNum(int n, int m){ if(n < 1 || m < 1){ //表示输入的非法 return -1; } int num[...

2018-08-27 15:31:39 487

转载 MySQL索引背后的数据结构及算法原理

摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第...

2018-08-27 11:32:03 126

转载 B-tree/b+tree 原理以及聚簇索引和非聚簇索引

B-Tree介绍B-Tree是一种多路搜索树(并不是二叉的):       1.定义任意非叶子结点最多只有M个儿子;且M>2;       2.根结点的儿子数为[2, M];       3.除根结点以外的非叶子结点的儿子数为[M/2, M];       4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)       5.非叶子结点的关键字个数=...

2018-08-26 15:23:27 281

转载 MySQL索引原理及慢查询优化

MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问...

2018-08-26 11:23:32 714

原创 翻转单词顺序VS左旋转字符串(Java)

题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出"student. a am I"。思路:思路一:先将整个英语句子中每个单词翻转即将“I am a student.”翻转成“I ma a .tneduts ”。然后再将整个句子翻转就变成"student. a am I"...

2018-08-25 19:32:22 215

原创 和为s的两个数字VS和为s的连续正数序列(Java)

题目:输入一个递增排序的数组和一个数字s,在数组在查找两个数,使得它们的和正好是。如果有多对数字的和等于s,输出任意一对即可。例如:输入数组{1、2、4、7、11、15}和数字15。由于4 + 11 = 15,因此输出4 和 11。思路:直观的思路:遍历数组两遍,即每一个数字和后面的数字相加看是否等于15,是直接返回,否则继续遍历直到找到或者遍历结束为止。时间复杂度O(n^2)。...

2018-08-25 16:39:09 106

原创 数组中只出现一次的数字(Java)

题目:一个整型数组里面除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字,要求时间复杂度是O(n),空间复杂度是O(1)。思路:利用异或去重的思想代码实现:public class Main { public static void findNumsAppearOne(int nums[]){ int len = nums.length;...

2018-08-25 15:57:08 899

原创 二叉树的深度(Java)

题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二叉树的结点定义:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};树的结构体publi...

2018-08-25 15:19:39 172

原创 矩阵的最小路径和(Java)

题目:给定一个矩阵m,从左上角开始每次只能向右或者向下走,最后达到右下角的位置,路径上所有的数字累加起来就是路径和,返回所有的路径中最小的路径和。举例:给定的m如下:1 3 5 98 1 3 45 0 6 18 8 4 0路径1,3,1,0,6,1,0是所有路径中路径和最小的,所以返回12。代码实现:方法一:/** * 借助m*n的辅助空间来解决问题 ...

2018-08-25 13:17:09 879

原创 数字在排序数组中出现的次数(Java)

题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。思路:第一种解法:蛮力法,顺序遍历数组,统计出数字3出现的次数,不过这时就没有利用到题目中给的有序,故时间复杂度过大,不符合要求。第二种解法:利用二分查找的思想(时间复杂度log(n))来解决问题。首先先找到数组中3出现的第一...

2018-08-24 17:17:06 2303

原创 两个链表的第一个公共结点(Java)

题目:输入两个链表,找出它们的第一个公共结点。链表结点的定义如下:struct ListNode{ int m_nKey; ListNode* m_pNext;}思路:第一种解法:蛮力(暴力)法。第二种解法:借助于栈的先进后出,由于找到两个链表的第一个公共结点,故这个链表在公共结点以后是一个Y字型,故我们将两个链表放入栈中,来找到栈中最后一个相同的结点,即为...

2018-08-24 16:20:58 527 1

原创 数组中的逆序对(Java)

题目:在数组中的两个数字如果前面的数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如在数组{7, 5, 6, 4}中,一共存在5个逆序对,分别是(7,6)、(7,5)、(7,4)、(6、4)和(5,4)。思路:利用归并排序的思想实现数组中的逆序对的统计。第一步将7, 5, 6, 4;分为7和5;6和4,统计得出有两个逆序对。对7和5...

2018-08-24 15:42:52 976

原创 第一个只出现一次的字符(Java)

题目:在字符串中找出第一个只出现一次的字符。如输入"abaccdeff",则输出'b'。第一思路:借助于数组来做。开辟一个长度为26的数组,用来存放字符串中每个字符出现的次数。这样第一次扫描去统计这个字符串中字符出现的次数,第二次去统计第一个出现结果为1的次数,并输出对应的字符。public class Main { //输出0代表没有满足条件的 public stat...

2018-08-07 09:44:44 2361 2

原创 丑数(Java)

题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。第一思路:逐个判断每个整数是不是丑数的解法,直观但不高效。注:所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n%m == 0。根据丑数的定义,丑数只能被2、3和5整除。即一个数能被2整...

2018-08-07 08:44:22 510 1

原创 把数组排成最小的数(Java)

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如,输入数组{3,  32,321},则打印出这3个数字能排成的最小数字321323。第一思路:利用全排列,然后比较全排列中的数字,得出最小数字。代码实现:public class Main { public static void permutation(String[] ...

2018-08-05 18:46:18 1935

原创 从1到n整数中1出现的次数(Java)

题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1, 10, 11和12;1一共出现了5次。第一思路:利用for循环累加从1到n中每个整数出现1的次数。判断每个整数是否出现1,利用对整数每次对10求余,判断整数的个位数字是不是1。如果这个数字大于10,除以10之后再判断个位数字是不是1。代码实现:/** ...

2018-08-05 16:14:10 5164 1

原创 ORACLE数据库实现自增的两种方式

Mysql数据库因为其有自动+1,故一般我们不需要花费太多时间,直接用关键字auto_increment即可,但是Oracle不行,它没有自动增长机制。顾我们需要自己去实现。一般有两种方式,但是这两种方式都与序列化有关。第一种方式:序列化+触发器;第二种方式:序列化+显示调用序列化。一般我选用第一种方式。因为我们只要建立好序列化+触发器,这样我们就需要太多的去关注这个字段了,触发器会在我们插入数据...

2018-07-27 22:16:04 4521

原创 工厂方法模式(Java)

一:工厂方法模式的定义定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。二:工厂方法模式的结构和说明图Product:定义工厂方法所创建的对象的接口,也就是实际需要使用的对象的接口。ConcreteProduct:具体的Product接口的实现对象。Creator:创建器,声明工厂方法,工厂方法通常会返回一个Product类型的实例对象...

2018-06-17 15:23:24 389

原创 连续子数组的最大和(Java)

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如:输入的数组为{1,-2, 3, 10, -4, 7, 2, -5},和最大的子数组为{3, 10, -4, 7, 2},因此输出为该子数组的和18。最直观的思路:一个长度为n的数组,总共有n(n + 1) / 2 个子数组;计算出所有子数...

2018-06-14 22:33:44 596 1

原创 基于SpringMvc框架的文件上传

这篇博客实现一个基于SpringMvc框架的文件上传。说到SpringMvc的上传。和《基于Struts2框架的文件上传》一样,也有一些注意事项:(1)在UI页面的form表单中form标签的中一定要加enctype="multipart/form-data" ;(2)在UI页面的form表单中一个要有一个input标签,type为file,一定要注意这个name属性的值<input typ...

2018-06-14 21:29:45 167

原创 最小的k个数(Java)

题目:输入n个整数,找出其中最小的k个数。例如输入4、 5、 1、 6、 2、 7、 3、 8这8个数字,则最小的4个数字是1、 2、 3、 4。思路:O(n)的算法,只有当我们可以修改输入的数组是可用经典常用的算法,快速排序的精髓利用快速排序划分的思想,每一次划分就会有一个数字位于以数组从小到达排列的的最终位置index;位于index左边的数字都小于index对应的值,右边都大于index指向...

2018-06-14 19:30:27 2191 1

原创 数组中出现次数超过一半的数字(Java)

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1, 2, 3, 2, 2, 2, 5, 4, 2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。第一思路:...

2018-06-12 15:04:04 756

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