自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 归并排序(MergeSort)递归与非递归的实现

主要关注一下非递归版本,其实就是模拟了从长度为1的子段,不断长度翻倍,一直到最后为全长的过程。】归并的思想是: 1.将原数组首先进行两个元素为一组的排序,然后合并为四个一组,八个一组,直至合并整个数组; 2.合并两个子数组的时候,需要借助一个临时数组,用来存放当前的归并后的两个数组; 3.将临时数组复制回原数组对应的位置。代码中最后将tmp数组中的值写回原数组中。(注意归并为稳定的排...

2018-09-13 21:03:20 912

原创 翻转部分单向链表

题目:给定一个头结点head,以及两个整数from,to,在单链表上翻转第from个到第to个节点思路:可能存在换头的状态,例如1->2->3, from=1,to= 3,最后头结点会变,为3->2->1。所以要提前判断一下有没有换头的情况发生,即from,to与链表首尾长度的关系。  接下来要找到from-1,与to+1个节点。其实如果from-1==null就说明了会出...

2018-04-03 21:31:52 856

原创 删除链表的中间节点 / 删除链表a/b处的节点

一、删除中间节点:要求:删除中间节点的函数思路:本题并不是让你取得中间位节点,而是删除,所以关键是取得中间点的前一位。正常取中值用快慢指针,head.next,与,head.next.next。所以我们需要把慢指针前移一位,就变成了headpublic class text { public Node deleteMid(Node head) { if(head==null||h...

2018-04-03 15:45:04 1243

转载 计算1^1+2^2+3^3+4^4+5^5+……+20^20 ,大数运算(加,乘)java实现

这个题目是明显的大数运算,不能直接使用int long double 早就超出范围了,要用数组结合字符串进行处理,分别实现大数的加法和乘法,然后使用实现的加法和乘法写出来n的n次幂的实现,最后 把它们加起来首先存进来就是要用string来存贮,运算的时候按位运算,charAt(i)-'0'来取值。注意一点,string改成char[]数组的时候要变成反序操作,因为对于一个数组是要从左到右,相加放值...

2018-03-26 14:49:30 3531 2

原创 打印两个有序链表的公共部分

要求:给出两个有序单链表的头结点 head1,head2,打印两个链表公共部分思路:因为已经有序,所以直接比较值大小,若1小,1后移,2小,2后移,相等,打印,二者一起后移,继续比较。public void printCommomPart(Node head1,Node head2) { while(head1!=null&&head2!=null) { if...

2018-03-25 17:13:43 258

原创 构造数组的MaxTree

要求:给定一个无序的,无重复元素的数组,生成MaxTree,要求每一个根节点处为当前最大值           时间复杂度要求O(n),空间复杂度O(n)思路:一开始第一个想法是排序,在生成二叉排序树之类的,堆排序递归之类的,但是题目要求了时间复杂度为O(n),这些方 法都超了。但是题目没有要求生成的MaxTree一定为完全二叉树之类的,只要符合根节点最大,所以,我们可以自己规定MaxTree的特...

2018-03-25 16:29:54 380

原创 滑动窗口中的最大值

要求:输入整形数组arr,与窗口大小w。窗口从左滑至最右,输出一个数组,里面每个值代表每种窗口中的最大值思路:1、剑指offer中也有,思路是维护一个双端队列作为窗口。队列中放的是元素标号!!而非元素值!!因为后续要检查者队列长度有没有超过w,直接看队列头的编号与当前比较值的编号差值即可。 2、若当前值大于队列中的某些元素,循环removeLast,并将当前值放入(addLast)。此外还要判断这...

2018-03-25 13:42:28 1085

原创 用一个辅助栈,来实现另一个栈的排序

要求:将一个栈按从顶到底,从大到小的顺序排序,只许额外申请一个栈来操作思路:如果stack,pop出来的元素比help栈顶小,直接压入。否则,help栈不断弹出元素,直到找到合适的地方再压入。总结:善于总结操作,不要每个情况都写一个if操作,看看内部的操作是不是都一样,一样的话可以提出来一起写。public static void sortStack(Stack<Integer> st...

2018-03-24 18:49:09 1139

原创 猫狗队列

要求:已知有如下的数据结构,实现一种猫狗队列,具有:          add:将cat dog 插入队列          pollAll:将所有猫狗按插入顺序移除          pollDog:将所有Dog按插入顺序移除          pollCat:将所有Cat按插入顺序移除          isEmpty:查看是否为空          isDogEmpty:查看Dog元素是否为...

2018-03-24 18:28:03 232

原创 仅用递归函数,栈操作,来逆序一个栈

要求:一个栈依次压入1,2,3,4,5,将其reverse操作,栈内变成5,4,3,2,1。不借助其他数据结构思路:要取得每次的栈底元素,分别为1,2,3,4,5,再压入5,4,3,2,1。          如何取得栈底元素?递归pop,直至栈为空,返回递归最深的那个元素,其他的还要再压回去,否则栈就变了。注意栈底            元素return之后就不压回去了,这样下次递归的时候才能取...

2018-03-24 17:23:54 768

原创 两个栈组成队列

要求:编写一个类,用两个栈来实现队列的基本操作,add , poll , peek思路:一个push栈,一个pop栈。注意不用每次都更新pop栈,若pop栈里还有上次push进来剩下的,就继续用,顺序是一样的,push栈里什么都不用管,相当于队尾。pop栈的栈顶为队列头总结:return最好不要放在if-else里面,能最后单写就单独写。把判断条件尽可能合并。import java.util.*;...

2018-03-24 16:27:18 253

原创 设计一个有getMin功能的栈

要求:设计一个new class,实现push,pop,getMin,复杂度O(1)思路:两个栈一起用,一个做正常栈使用(normalStack),一个用于存放最小值(minStack),minStack中随着normal中的压入一起,当它为空的时候压入第一个元素,不空的时候,只压入比栈顶元素小的。pop的时候也是,如果normal中pop的比min中栈顶元素大,min不操作,若相等,一起pop更...

2018-03-24 16:09:47 150

原创 单链表排序----(快排+归并+插入)

public static void quicksort(Node begin,Node end){ if(begin!=end){ Node partition=getpartition(begin,end); quicksort(begin,partition); quicksort(par...

2018-03-22 15:42:11 256

转载 Hadoop中的数据倾斜

 在做Shuffle阶段的优化过程中,遇到了数据倾斜的问题,造成了对一些情况下优化效果不明显。主要是因为在Job完成后的所得到的Counters是整个Job的总和,优化是基于这些Counters得出的平均值,而由于数据倾斜的原因造成map处理数据量的差异过大,使得这些平均值能代表的价值降低。Hive的执行是分阶段的,map处理数据量的差异取决于上一个stage的reduce输出,所以如何将数据均匀...

2018-03-08 16:54:08 726

转载 Spark性能优化--数据倾斜调优与shuffle调优

一、数据倾斜发生的原理原理:在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作。此时如果某个key对应的数据量特别大的话,就会发生数据倾斜。数据倾斜只会发生在shuffle过程中。常用的并且可能会触发shuffle操作的算子:distinct、groupByKey、reduceByKey、aggregateByK...

2018-03-08 16:52:37 533

转载 Spark内存管理机制

a.      Spark静态内存管理在Spark 1.5版本及以前,Spark采用静态内存管理模型。对于一个Executor,对应的JVM Heap内存主要由三个独立的区块组成,如图所示。静态内存管理​Storage Memory。这片内存区域是为了解决对RDD进行的Cache缓存(通过程序中调用rdd.cache,rdd.persist等方法),还有节点间传输的广播变量Broadcasts,...

2018-03-08 16:35:30 737

转载 对比 Hadoop MapReduce 和 Spark 的 Shuffle 过程

如果熟悉 Hadoop MapReduce 中的 shuffle 过程,可能会按照 MapReduce 的思路去想象 Spark 的 shuffle 过程。然而,它们之间有一些区别和联系。从 high-level 的角度来看,两者并没有大的差别。 都是将 mapper(Spark 里是 ShuffleMapTask)的输出进行 partition,不同的 partition 送到不同的 reduc...

2018-03-08 16:12:06 898

转载 HTTP与HTTPS

1 从HTTP说起HTTP是一个应用层通信协议,用于从WWW服务器传输超文本到本地浏览器,传输的数据都是未加密的,内容可能会被窃听。一种解决方案是对通信报文的内容进行加密,对通信报文内容的加密仅仅是达到让攻击者难以破解的目的,但是加密后的报文本身还是能够被截获;另一种加密方式是将通信加密,HTTP配合SSL(安全套接层)或TLS(安全传输层协议)来对通信进行加密。         

2018-01-24 22:29:21 611 2

转载 Hadoop性能调优

转载自:http://blog.csdn.net/yzhang6_10/article/details/53151096Hadoop性能调优1. 简介Hadoop性能调优不仅涉及Hadoop本身的性能调优,还涉及更底层的硬件、操作系统和Java虚拟机等系统的调优。具体包括以下四部分,系统对这几部分适当地进行调优均可能给Hadoop带来性能提升。Hadoop(JobTra

2017-11-23 20:17:46 1085

转载 Hadoop二次排序及MapReduce处理流程实例详解

一、概述MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的,在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求。对于二次排序的实现,网络上已经有很多人分享过了,但是对二次排序的实现原理及整个MapReduce框架的处理流程的分析还是有非常大的出入,而且部分分析是没有经过验证的。本文将通过一个实际的MapRe

2017-11-23 15:49:33 279

转载 HDFS实现其高可靠性的策略及机制

分布式文件系统(HDFS)的高可靠性主要是由多种策略及机制共同作用实现的。主要有:冗余副本策略可以指定数据文件的副本数量,默认是3;保证所有的数据块都有副本,不至于在一个datanode宕机后,数据的丢失。机架策略集群一般放在不同机架上,机架间带宽要比机架内带宽要小;HDFS具有“机架感知”能力,它能自动实现在本机架上存放一个副本,然后在其它机架再存放另一副本,

2017-11-21 11:04:33 1595 1

转载 Hadoop 任务执行方面的优化

1. 推测式执行:   如果jobtracker 发现有拖后的任务,会再启动一个相同的备份任务,然后哪个先执行完就会去kill掉另一个,因此会在监控页面上经常能看到正常执行完的作业会有被kill掉的任务。 2.推测式执行缺省打开,但如果是代码问题,并不能解决问题,而且会使集群更慢,通过在mapred-site.xml 配置文件中设置 mapred.map.tasks.speculati

2017-11-21 10:55:19 253

转载 linux下profile和bashrc区别 + Linux中的权限

在Linux配置环境时遇到了点问题,转载一篇1. /etc/profile用来设置系统环境参数,比如$PATH. 这里面的环境变量是对系统内所有用户生效的。2. /etc/bashrc这个文件设置系统bash shell相关的东西,对系统内所有用户生效。只要用户运行bash命令,那么这里面的东西就在起作用。3. ~/.bash_profile用来设置一些环境变量,功

2017-11-17 15:40:13 1070

转载 hadoop 文件分块,block与split关系

hadoop的分块有两部分,其中第一部分更为人熟知一点。 第一部分就是数据的划分(即把File划分成Block),这个是物理上真真实实的进行了划分,数据文件上传到HDFS里的时候,需要划分成一块一块,每块的大小由hadoop-default.xml里配置选项进行划分。   dfs.block.size  67108864  The default block size

2017-11-12 17:10:33 1309

原创 Java SE(七)——IO文件

2017-10-18 20:40:24 256

原创 Java SE(六)—— 多线程

2017-10-18 16:58:40 301

原创 Java SE(五)——高级语言特性(collection接口+异常)

2017-10-18 16:55:54 263

原创 Java SE(四)——对象、类、接口 (第二个版本)

2017-10-18 16:53:12 299

原创 Java SE(四)—— 对象、类、接口(第一个版本)

2017-10-18 16:50:29 276 1

原创 Java SE(三)—— 数组、字符串

2017-10-18 16:48:38 235

原创 Java SE(二)—— 表达式、流控制

2017-10-18 16:45:59 210

原创 Java SE (一)——标识符、关键字、类型

2017-10-18 16:42:50 266

转载 Hadoop学习路线

转载自:http://lxw1234.com/archives/2016/11/779.htm第一章:初识Hadoop第二章:更高效的WordCount第三章:把别处的数据搞到Hadoop上第四章:把Hadoop上的数据搞到别处去第五章:快一点吧,我的SQL第六章:一夫多妻制第七章:越来越多的分析任务第八章:我的数据要实时第九章:我的数据要对外第

2017-10-09 15:22:47 9294 2

转载 关系型数据库+NoSQL(非关系型数据库)+HBase+Hive 区别与联系

水平扩展通常来说,可扩展性是指系统或服务在资源增加时所体现出的一种属性,其性能根据所增加资源的数量成比例地提高。集中式系统和分布式系统都可以实现扩展。在集中式系统中,垂直扩展(也称按比例增加)通过增加现有或较少资源的数量或能力实现。在分布式系统中,例如云计算所采用的系统,水平扩展通过增加更多的计算单元(如服务器等)实现。除了提供更好的性能,水平扩展还用于实现松耦合系统的冗余和可靠性。因此,

2017-09-27 10:38:04 7018

转载 java 判断一棵二叉树是否为平衡二叉树

题目:输入一棵二叉树的根节点,判断该树是不是平衡的二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。    有了求二叉树的深度的经验之后再解决这个问题,我们很容易就能想到一个思路:在遍历树的每个结点的时候,调用函数TreeDepth得到它的左右子树的深度。如果每个结点的左右子树的深度相差不超过1,按照定义它就是一棵平衡的二叉树。这种思路实现的代码如下:

2017-09-22 11:30:07 980 1

转载 java 求二叉树的深度 / 节点总数

1.判断根节点是否为空2.递归获取左子树的深度3.递归获取右子树的深度[java] view plain copy public int hight(Node node){          if(node==null){              return 0;          }else{              int i=hight(node

2017-09-22 10:45:48 3027

转载 求二叉树的深度和宽度[Java]

求二叉树的深度和宽度[Java]这个是常见的对二叉树的操作。总结一下:设节点的数据结构,如下:class TreeNode { char val; TreeNode left = null; TreeNode right = null; TreeNode(char _val) { this.val = _val; }}1.

2017-09-21 10:14:38 1165

转载 深入理解Java虚拟机到底是什么

什么是Java虚拟机作为一个Java程序员,我们每天都在写Java代码,我们写的代码都是在一个叫做Java虚拟机的东西上执行的。但是如果要问什么是虚拟机,恐怕很多人就会模棱两可了。在本文中,我会写下我对虚拟机的理解。因为能力所限,可能有些地方描述的不够欠当。如果你有不同的理解,欢迎交流。我们都知道Java程序必须在虚拟机上运行。那么虚拟机到底是什么呢?先看网上搜索到的比较靠谱的

2017-07-13 15:45:43 374

转载 循环、递归、迭代、遍历

/////////////////////////////////////////////////////////////////////////////////////表示“重复”这个含义的词有很多, 比如循环(loop), 递归(recursion), 遍历(traversal), 迭代(iterate).循环算是最基础的概念, 凡是重复执行一段代码, 都可以称之为循环. 大部分的递归

2017-07-12 15:35:02 488

原创 javascript中childNodes与children 区别 以及firstChild与firstElementChild区别

1:childNodes属性:标准的,它返回指定元素的子元素集合,包括html节点,所有属性,文本。可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点。如果代码中有换行、空格就会增加文本节点,这样用它来返回真正的子节点就会不准确,具体见下面的例子。如果一定要用这个方法(毕竟他是W3C标准),就要增加一个判断子节点类型过程:

2017-06-11 10:55:21 3920

空空如也

空空如也

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

TA关注的人

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