自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 docker入门

仓储/镜像/容器 Docker 本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就似乎 image镜像文件。只有通过这个镜像文件才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。* image 文件生成的容器实例,本身也是一个文件,称为镜像文件。* 一个容器运行一种服务,当我们需要的时候,就可以通过d

2021-10-09 16:34:22 85

原创 Linux环境下持久化和集群部署nacos

持久化在nacos目录下的conf里面,有一个nacos-mysql.sql文件,在mysql上的数据库执行,会在mysql数据库中生成nacos相关的表。在nacos/conf下,有一个application.properties文件,在文件末尾配置数据库的连接信息spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&

2021-10-09 10:02:40 173

原创 数据结构——图

邻接矩阵是表示图形中顶点之间相邻关系的矩阵,对于 n 个顶点的图而言,矩阵是的 row 和 col 表示的是 1…n 个点。邻接矩阵需要为每个顶点都分配 n 个边的空间,其实有很多边都是不存在,会造成空间的一定损失.邻接表的实现只关心存在的边,不关心不存在的边。因此没有空间浪费,邻接表由数组+链表组成图的深度优先搜索(Depth First Search)深度优先遍历,从初始访问结点出发,初始访问结点可能有多个邻接结点,深度优先遍历的策略就是首先访问 第一个邻接结点,然后再以这个被访问的邻接结点作

2021-08-31 20:26:44 72

原创 平衡二叉树

平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为 AVL 树, 可以保证查询效率较高。具有以下特点:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过 1,并且左右两个子树都是一棵 平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。/** * @Description: 平衡二叉树 * @Version: * @author: zhuang.chen@hand-china.com * @Date.

2021-08-31 20:22:07 78

原创 二叉排序树

二叉排序树:BST (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当 前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点二叉排序树的删除情况比较复杂,有下面三种情况需要考虑删除叶子节点 (比如:2, 5, 9, 12)删除只有一颗子树的节点 (比如:1)删除有两颗子树的节点. (比如:7, 3,10 )第一种情况:删除叶子节点 (比如:2, 5, 9, 12) 思路(

2021-08-31 20:19:53 50

原创 赫夫曼树

基本介绍给定 n 个权值作为 n 个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为 最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近赫夫曼树几个重要概念和举例说明:路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为 1,则从根结点到第 L 层结点的路径长度为 L-1结点的权及带权路径

2021-08-31 20:13:20 60

原创 线索化二叉树

将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树. n+1=7问题分析:当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 }但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上.如果我们希望充分的利用 各个节点的左右指针, 让各个节点可以指向自己的前后节点,怎么办?解决方案-线索二叉树线索二叉树基本介绍n 个结点的二叉链表中含有 n+1 【公式 2n-(n-1)=n+1】 个空指针域。利用二叉链表中的空指针域,存

2021-08-31 20:07:52 63

原创 顺序存储二叉树

从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组要求:右图的二叉树的结点,要求以数组的方式来存放 arr : [1, 2, 3, 4, 5, 6, 6]要求在遍历数组 arr 时,仍然可以以前序遍历,中序遍历和后序遍历的方式完成结点的遍历顺序存储二叉树的特点:顺序二叉树通常只考虑完全二叉树第 n 个元素的左子节点为 2 * n + 1第 n 个元素的右子节点为 2 * n + 2第 n 个元素的父节点为 (n-1) / 2n : 表示二

2021-08-31 20:03:06 52

原创 数据结构——二叉树

树存储方式的分析能提高数据存储,读取的效率, 比如利用 二叉排序树(Binary Sort Tree),既可以保证数据的检索速度,同时也 可以保证数据的插入,删除,修改的速度。树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。二叉树的子节点分为左节点和右节点如果该二叉树的所有叶子节点都在最后一层,并且结点总数= 2^n -1 , n 为层数,则我们称为满二叉树。如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二 层的叶子节点在右边连续,我

2021-08-31 19:56:19 71

原创 数据结构——哈希表

这里用数组加链表实现哈希表的结构定义一个由链表组成的数组,数组的每一个元素都是由一条链表组成将数组的长度给定,最好是2的n次方减一在将数据存入哈希表的时候,会先根据元素的序号进行计算,将元素的序号除以数组的长度进行取模,将计算结果作为这个元素存入的链表数组的下标比如存入的数据序号是13,链表长度是7,那么用13除以7,取得的模是6将这条数据存入链表数组下标为6的那条链表中,这样就存入了一条数据整体代码:public class HashTabDemo { public static

2021-08-31 19:44:36 58

原创 数据结构——查找算法

二分查找是在有序数组中进行查找,已知数组的有序性,查找需要的数据二分查找的思路分析首先确定该数组的中间的下标mid = (left + right) / 2然后让需要查找的数 findVal 和 arr[mid] 比较1 findVal > arr[mid] , 说明你要查找的数在mid 的右边, 因此需要递归的向右查找2.2 findVal < arr[mid], 说明你要查找的数在mid 的左边, 因此需要递归的向左查找2.3 findVal == arr[mid] 说明

2021-08-31 19:22:10 53

原创 数据结构——排序算法

在学习中我主要学了8种常见的排序算法:这里放上链接

2021-08-09 17:31:08 42

原创 数据结构——堆排序

堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为 O(nlogn),它也是不稳定排序。将待排序序列构造成一个大顶堆此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余 n-1 个元素重新构造成一个堆,这样会得到 n 个元素的次小值。如此反复执行,便能得到一个有序 序列了。/** * @Description: 堆排序 * @Date: 2021/7/26 18:27 */public.

2021-08-09 17:24:11 50

原创 数据结构——基数排序

基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾 名思义,它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用基数排序法是属于稳定性的排序,基数排序法的是效率高的稳定性排序法基数排序(Radix Sort)是桶排序的扩展基本思想将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。 这样从最低位排序一直到最高位排序完成以后, 数.

2021-08-09 17:22:28 281

原创 数据结构——归并排序

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer) 策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修 补"在一起,即分而治之/** * @Description: 归并排序 * @Date: 2021/7/6 10:48 */public class MergeSort { public static void main(String[] arg

2021-08-09 17:19:36 59

原创 数据结构——快速排序

快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两 部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排 序,整个排序过程可以递归进行,以此达到整个数据变成有序序列/** * @Description: 快速排序 * @Date: 2021/7/5 14:57 */public class QuickSort { public static void main(String[] args

2021-08-09 17:18:10 61

原创 数据结构——希尔排序

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含 的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止/** * @Description: shell排序 * shell排序分为3层循环 * 第一层循环是对待排数组进行分组,首先将数组分为arr.length/2组,然后后面每次分组的组数是上一次组数除以2 * 第二层循环是在第一层循环的基础上遍历每一个组 * 第三层循环是第二层循环的基础上循环每组的所有数据 * @Date:

2021-08-09 15:03:28 78

原创 数据结构——插入排序

插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有 序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排 序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。/** * @Description: 插入排序 * 把 n 个待排序的元素看成为一个有序表和一个无序表 * 开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素 * 排序过程中每

2021-08-09 14:48:48 93

原创 数据结构——选择排序

选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从 arr[0]~arr[n-1]中选取最小值, 与 arr[0]交换,第二次从 arr[1]~arr[n-1]中选取最小值,与 arr[1]交换,第三次从 arr[2]~arr[n-1]中选取最小值,与 arr[2] 交换,…,第 i 次从 arr[i-1]~arr[n-1]中选取最小值,与 arr[i-1]交换,…, 第 n-1 次从 arr[n-2]~arr[n-1]中选取最小值, 与 arr[n-2]交换,总共通过

2021-08-09 14:47:17 75

原创 数据结构——冒泡排序

冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较 相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。优化: 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排 序写好后,在进行)/** * @Description: 冒泡排序 * 冒

2021-08-09 14:45:54 74

原创 数据结构——递归

递归的概念简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时 可以让代码变得简洁。递归需要遵守的重要规则执行一个方法时,就创建一个新的受保护的独立空间(栈空间)方法的局部变量是独立的,不会相互影响, 比如 n 变量如果方法中使用的是引用类型变量(比如数组),就会共享该引用类型的数据.递归必须向退出递归的条件逼近,否则就是无限递归,出现 StackOverflowError,死龟了:)当一个方法执行完毕,或者遇到 return,就会返回,遵守谁

2021-08-09 14:34:10 255

原创 容器技术——docker小白入门

docker是什么:Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次封装,到处运行”。Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环

2021-08-01 13:09:33 264

原创 数据结构——栈

队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。思路如下:front 变量的含义做一个调整: front 就指向队列的第一个元素, 也就是说 arr[front] 就是队列的第一个元素front 的初始值 = 0rear 变量的含义做一个调整:rear 指向队列的最后一个元素的后一个位置. 因为希望空出一个空间做为约定.rear 的初始值 = 0当队列满时,条件是 (rear + 1) % maxSize == fron

2021-07-27 15:57:32 45

原创 数据结构——链表

本文章是数据结构与算法的学习路程稀疏数组新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法;增加了支持甘特图的mermaid语法1 功能;增加了 多屏幕编辑

2021-07-27 15:54:18 218

原创 数据结构——队列

队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。思路如下:front 变量的含义做一个调整: front 就指向队列的第一个元素, 也就是说 arr[front] 就是队列的第一个元素front 的初始值 = 0rear 变量的含义做一个调整:rear 指向队列的最后一个元素的后一个位置. 因为希望空出一个空间做为约定.rear 的初始值 = 0当队列满时,条件是 (rear + 1) % maxSize == fron

2021-07-27 13:22:45 44

原创 数据结构——稀疏数组

当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组二维数组 转 稀疏数组的思路遍历 原始的二维数组,得到有效数据的个数 sum根据sum 就可以创建 稀疏数组 sparseArr int[sum + 1] [3]将二维数组的有效数据数据存入到 稀疏数组稀疏数组转原始的二维数组的思路先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的 chessArr2 = int [11][11]在读取稀疏数组后几行的数据,并赋给 原始的二维数组

2021-07-27 11:09:42 41

原创 javaSE基础全覆盖

面向对象概念:面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。类:对一类事物的描述,是抽象的、概念上的定义对象:是实际存在的该类事物的每个个体,因而也称为实例(instance)对象是由类new出来的,派生出来的。属性 = 成员变量 = field = 域、字段方法 = 成员方法 = 函数 = method创建类的对象 = 类的实例化 = 实例化类如果创建了一个类的多个对象,则每个对象都独立的拥有一套类的属

2021-07-26 23:09:48 211

空空如也

空空如也

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

TA关注的人

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