自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hadoop源码解读一

Hadoop源码解读一前言寻找入口类main方法createNameNode方法NameNode构造方法initialize方法loadFromDisk方法loadFSImage方法recoverTransitionRead方法loadFSImage方法saveNamespace方法总结前言在学习的过程中,我们总是不可避免的以使用为目标,而没有深入的去研究源码的构成,本文简单的分享我阅读源码的过程,希望能得到大神的指点寻找入口类我们运行sbin目录下的start-all.sh脚本时,脚本中会运行st

2021-10-31 20:43:32 1187

原创 从java字节码指令看代码优化

一、前言本篇文章我们谈一下如何从字节码指令方面做代码优化的分析,不懂字节码指令的朋友也没关系,我会解释指令的执行过程,重点是让我们了解到优化的原理,提升我们以后写代码的功底二、优化情景11、我们首先看一段简单的代码,你能分析出哪个方法更优吗a public void test1() { int i = 0; i += 1; } public void test2() { long i = 0; i += 1;

2021-06-29 20:30:04 203

原创 hadoop集群环境搭建

1、前置需要三台云主机,分别命名为node1,node2,node32、功能描述node1:namenode、sourcemanagenode2:secondarynamenode、datanode、datamanagenode3:datanode、datamanage3、技术介绍本次搭建的是hadoop集群环境,hadoop是一个分步式文件系统和分步式计算平台,环境搭建好后,不管是文件系统和分步式计算你都能使用。想搭建的伙伴必须先懂hadoop概念,然后才能进行接下来的操作。了解hadoop

2021-06-22 17:29:47 469 2

原创 springboot-starter启动原理

文章目录前言一、什么是starter二、注解追踪三、方法追踪总结前言学习了一段时间的springboot,知道了boot的四大核心组件,自动配置(autoconfiguration),起步依赖(starter),监控器(actuator),命令行界面(groovy),本文注重讲解starter的启动原理,通过对boot的源码追踪,向大家展示starter的所有细节。一、什么是starter也许还有部分同学不知道starter的具体含义,在此简单的解释一下,starter在自动配置的基础之上,使得b.

2021-04-25 21:31:48 463

原创 java红黑树详解

1、红黑树概述红黑树是一种近似平衡的树,没有像AVL树那样严格的平衡,但是AVL树为了保证它的绝对平衡,对插入和删除的效率有一定的影响,而红黑树插入和删除的效率就要高的多。同时,它又是一颗二叉查找树,使得它查找的效率也很高,查找的时间复杂度为O(logn),所以红黑树要优于AVL树。2、红黑树特性根结点为黑结点为红或黑不能有连续的两个红结点(红结点的子结点必须为黑)任一结点到它们子孙结点的所有路径上黑结点的数量相等叶子结点为黑(这里的叶子结点指的是null结点)3、补充特性最长路径上

2021-03-22 14:54:51 620

原创 java断言详解

文章目录前言一、什么是断言二、断言有什么用三、断言的语法规则规则一规则二四、断言案例五、eclipse开启断言功能1.选择运行配置2.-ea开启断言3.-da关闭断言总结前言在我的java学习过程中,断言是个存在感很低的东西,基本上没怎么使用过,所以我们只要大概地了解它就行了。一、什么是断言我们可以把断言跟受检异常和非受检异常进行类比,后两个都是抛出异常中断程序,然后我们还可以打印异常信息。同样的断言也可以中断程序打印信息,说到这里你对断言就有一个大概的了解了。二、断言有什么用在程序开发中,有.

2021-03-14 09:01:21 1324 3

原创 java冒泡排序

文章目录前言一、何为冒泡二、实现思路三、过程图解四、时间复杂度五、测试源码1.测试入口类2.模板类3.冒泡排序类六、源码解释总结前言排序是初学者不愿面对的一个问题,因为有八大经典排序,只要我们一深入的去学习这些算法就会感觉好累好难,我会逐一的解释分析这些算法,以尽可能地让大家学习起来轻松一点,也可以为温习这些算法的朋友提供一个参考。一、何为冒泡其实冒泡可以理解为不断找最大数或最小数的过程,只是在找的时候以交换的形式来进行,这也是为何冒泡排序和选择排序一样的时间复杂度但冒泡排序却效率低下的原因,就是.

2021-02-15 19:03:03 198 2

原创 java时间复杂度和空间复杂度详解

文章目录前言一、时间频度介绍二、时间频度分析1.分析算法中的时间频度2.结果三、时间复杂度介绍四、计算时间复杂度的方法1.方法2.示例五、时间复杂度分析1.分析算法中的时间复杂度2.结果六、常见的时间复杂度1.常数阶O(1)2.对数阶O(log~2~n)3.线性阶O(n)4.线性对数阶O(nlog~2~n)5.平方阶O(n^2^)6.立方阶O(n^3^)7.指数阶O(2^n^)六、空间复杂度介绍七、空间复杂度分析1.分析算法中的空间复杂度2.结果总结前言时间复杂度和空间复杂度看起来就像数学中的一些公式.

2021-02-07 23:06:02 680

原创 java递归(八皇后问题)

文章目录前言一、问题描述二、思路分析三、过程图解四、测试源码总结前言迷宫问题虽然也用到了递归,但它比较简单,我感觉八皇后问题才真正的体现了递归的深度难度,也体现了回溯的重要性,本文将着手揭开八皇后问题中递归的真面目一、问题描述在一个大小为8*8的国际象棋棋盘中,摆放着八个皇后,要求把八个皇后摆放到棋盘中的不同位置,使得皇后之间不能互相攻击,如果有两个皇后摆放在同一行或同一列或同一斜线,则表示这两个皇后可以互相攻击,请问该棋盘总共有多少种摆法。二、思路分析该问题可能会有很多的解法,我以我们人最容.

2021-02-04 17:05:40 391

原创 java递归(迷宫问题)

文章目录前言一、问题描述二、思路分析三、过程图解四、测试源码总结前言学会了递归的实现原理后,我们就可以使用递归来解决一些简单的实际问题,本文讲解的是迷宫问题。一、问题描述给出一个大小为n*n的二维数组map,该数组表示的是一幅地图,1表示障碍物,0表示通路,给出起始坐标(s1,y1)和终点坐标(s2,y2),要求输出图中起始位置到终点位置的路径。二、思路分析这是一个经典的递归问题,首先我们从起始坐标开始,选择一个方向进行递归查找,如果找到终点坐标就递归结束找到路径,如果碰到障碍物就返回上一级进.

2021-02-03 21:01:06 318

原创 java递归(最简单讲解)

文章目录前言一、单链表是什么?二、单链表图解三、单链表案例四、代码实现1.测试代码2.代码分析总结前言递归是学习算法的过程中一个痛苦的话题,特别是对于初学者而言,很容易让人自闭,本文以最简单的例子进行讲解,希望能让更多人懂得递归。一、单链表是什么?单链表是一种链式存取的数据结构,因为它只有指向下一个地址的引用,所以叫单向链表。二、单链表图解三、单链表案例请使用单链表模拟对水浒传中英雄人物的尾添加,有序添加,修改,删除,顺序查找,逆序查找,链表逆转,逆序打印等操作。四、代码实现1.测试代.

2021-01-30 18:44:15 1045

原创 java实现逆波兰计算器

文章目录前言一、功能要求二、思路分析三、核心代码图解四、时间复杂度五、代码实现1.测试代码2.代码分析总结前言逆波兰计算器是用逆波兰表达式实现的一个计算器,逆波兰表达式又叫后缀表达式,我们使用该计算器时输入的是中缀表达式,然后计算器会把中缀表达式转成后缀表达式,这样更有利于计算器的运算,计算器使用的数据结构是栈。一、功能要求写一个控制台计算器,能够进行简单的加减乘除运算,支持小括号,要求使用逆波兰表达式实现。二、思路分析首先我们把输入的中缀表达式字符串存入list集合,操作集合中的元素比直接操.

2021-01-28 14:33:59 249 1

原创 java实现链表栈

文章目录前言一、链表栈简单介绍二、链表栈图解三、链表栈简单实现案例四、代码实现1.测试代码2.代码分析总结前言学会了数组栈后,链表栈就非常简单了,但这里还是做一些简单的介绍。一、链表栈简单介绍栈具有先入后出的特点,不仅可以用数组实现,也可以用链表实现,用链表的优点是栈的大小没有限制,可以不断的增长下去,数组想实现自动增长就需要多做一些工作。二、链表栈图解用链表实现一个栈非常简单,只需要在链表的基础上,使得添加元素和删除元素在链表尾部操作即可。三、链表栈简单实现案例在控制台模拟栈的入栈,出.

2021-01-25 21:19:38 279

原创 java实现数组栈

文章目录前言一、栈是什么?二、数组栈图解三、数组栈简单实现案例四、代码实现1.测试代码2.代码分析总结前言栈是一种基础的数据结构,也是java中必须要掌握的一个内容,理解它对我们学习java很有帮助。一、栈是什么?栈是一种运算受限的线性表,简单来讲就是它在普通数组或链表的基础上,给操作它的元素作了一些限定,使得它里面的元素具有先入后出的特点。二、数组栈图解栈由一个数组和一个top指针构成,入栈一个元素,top指针上移,出栈元素top指针就下移,通过top指针和栈本身的结构就可使得它具有先进后.

2021-01-24 19:01:20 300

原创 java实现环形队列

文章目录前言一、环形队列特点二、环形队列图解三、环形队列实现案例四、代码实现1.测试代码2.代码分析总结前言普通队列很简单,这里继续使用数组实现一个环形队列。一、环形队列特点环形队列除了具有先进先出的特点外,还可以重复入队元素到已出队元素的位置,防止入队满元素之后就无法再入队了。二、环形队列图解环形队列结构跟普通队列的结构并无区别,只是使用了取模运算使得rear指针可以重新从0开始往后移动。三、环形队列实现案例在控制台模拟队列的入队,出队,查看队列,获取队首元素等操作。四、代码实现1.

2021-01-22 18:44:33 394

原创 java实现环形队列

文章目录前言一、队列是什么?二、队列图解三、队列简单实现案例四、代码实现1.测试代码2.代码分析总结前言继普通队列后,本文对环形队列进行简单的实现。一、队列是什么?队列是一种特殊的线性表,其实它的底层还是数组或链表,只是在数组或链表的基础上加了一些其它的特点。二、队列图解刚开始时front指针和rear指针都指向-1下标,当入队一个元素,rear指针后移指向下标1,front指针不变,由此可见入队元素和获取队首元素均和rear有关,当出队一个元素时,front指针后移指向下一个元素,出队元素.

2021-01-22 18:27:01 62

原创 java实现普通队列

文章目录前言一、问题描述二、解决思路三、过程图解四、时间复杂度五、代码实现1.测试代码2.代码分析总结前言约瑟夫问题是数据结构中的经典算法题,这里使用java中的单向环形链表解决该问题。一、问题描述n个人围成一圈,每个人分别标注为1、2、…、n,要求从1号从1开始报数,报到m的人出圈,接着下一个人又从1开始报数,如此循环,直到剩余人数为0,输出出队序列。例如当n=25,m=12时,出队序列为12,24,11,25,14,3,18,8,1,19,13,7,5,4,6,10,17,23,20,16,2.

2021-01-20 19:18:08 208

原创 java求解约瑟夫问题

文章目录前言一、问题描述二、解决思路三、过程图解四、时间复杂度五、代码实现1.测试代码2.代码分析总结前言约瑟夫问题是数据结构中的经典算法题,这里使用java中的单向环形链表解决该问题。一、问题描述n个人围成一圈,每个人分别标注为1、2、…、n,要求从1号从1开始报数,报到m的人出圈,接着下一个人又从1开始报数,如此循环,直到剩余人数为0,输出出队序列。例如当n=25,m=12时,出队序列为12,24,11,25,14,3,18,8,1,19,13,7,5,4,6,10,17,23,20,16,2.

2021-01-19 22:25:07 564

原创 java实现双向链表

文章目录前言一、双向链表是什么?二、双向链表图解三、双向链表案例四、代码实现1.测试代码2.代码分析总结前言双向链表是一种很常见的链表结构,在java的api中就能看到它,这里使用java对其进行简单的实现。一、双向链表是什么?顾名思义,双向链表就是有两个引用,分别指向前一节点和后一节点的一种链式存储结构。二、双向链表图解三、双向链表案例请使用双向链表模拟对水浒传中英雄人物的尾添加,有序添加,修改,删除,打印等操作。四、代码实现1.测试代码代码如下:package com.yc.l.

2021-01-18 21:43:15 327

原创 java实现单链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、单链表是什么?二、单链表图解三、单链表案例四、代码实现1.测试代码2.代码分析总结前言有时java api提供的链表并不能满足我们所有的需要,所以我们可以尝试自己实现一个单链表作为练习一、单链表是什么?单链表是一种链式存取的数据结构,因为它只有指向下一个地址的引用,所以叫单向链表。二、单链表图解三、单链表案例请使用单链表模拟对水浒传中英雄人物的尾添加,有序添加,修改,删除,顺序查找,逆序查找,链表逆转,逆

2021-01-17 23:13:43 299

原创 java实现稀疏数组

数据结构之稀疏数组总结前言一、稀疏数组是什么?二、如何使用稀疏数组?1.普通数组2.稀疏数组3.解释三、代码实现总结前言看了韩顺平老师的数据结构与算法视频后,在此分享稀疏数组的简单实现,希望能与更多的朋友一起交流学习经验。一、稀疏数组是什么?把一个数组很大但元素很少的普通数组转化为另一个数组,这就是稀疏数组。二、如何使用稀疏数组?1.普通数组2.稀疏数组3.解释稀疏数组至少有一行,第一行第一列为普通数组的行数,第一行第二列为普通数组的列数,第一行第三列为普通数组的非0元素个数,然后

2021-01-16 23:34:46 117

空空如也

空空如也

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

TA关注的人

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