自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 min-platform

快速开发脚手架

2023-06-02 20:16:26 54

原创 解决 seata 序列化异常

seata 序列异常解决方案

2022-07-15 14:27:59 1337

原创 idea下载源码失败 cannot download sources

idea下载源码失败 cannot download sources

2022-05-11 12:15:22 2425 2

原创 数据结构与算法-185~188-旨洛伊德(Floyd)算法

185 弗洛伊德算法基本介绍和 Dijkstra 算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名弗洛伊德(Floyd)算法计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径**弗洛伊德(Floyd)算法VS迪杰斯特拉算法:迪杰斯特拉算法通过选定的被访问顶点,求出从出发访问顶点到其他顶点的最短路径;**弗洛伊德算法中每一个顶点都是出

2022-04-29 21:01:58 106

原创 api-assert 一个的Java校验小框架、简单、好用

api-assert 是什么?一个的Java校验小框架、简单、好用。github地址gitee地址开源不易,点个赞吧api-assert 是一个轻量级的小小框架,或者说是一个工具类,用于提供在日常开发中,经常需要一些条件判断,如果条件成立需要抛出异常编写的重复,api-assert 提供了链式校验的方式,目前提供了几种检查器:com.old.apiAssert.check.FirstApiAssert 第一检查器,检查器可以提供链式编程,并且当第一个条件成立之后就不会再替换异常信息,并由调

2022-04-04 19:57:56 915

原创 数据结构与算法-178~184-迪杰斯特拉(Dijkstra)算法

178 迪杰斯特拉(Dijkstra)算法基本介绍最短路径问题介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。它主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。过程设置出发顶点为 v 顶点集合V[v1, v2, vi…] v 到 V 中各顶点的距离构成距离集合 Dis, Dis[d1, d2, di…],Dis集合记录着 v 到图中各顶点的距离(到自身可以看作 0,v 到 vi 距离对应为 di)从 Dis 中选择

2021-11-07 21:23:10 118

原创 数据结构与算法-172~177-克鲁斯卡尔(Kruskal)算法

172 克鲁斯卡尔(Kruskal)算法图解公交站问题某城市新增7个站点(A,B,C,D,E,F,G),现在需要修路把7个站点连通各个站点的距离用边线表示(权),比如A - B 距离 12 公里问:如何修路保证各个站点都能连通,并且总的修建公路总里程最短?介绍克鲁斯卡尔(Kruskal)算法,是用来求加权连通图的最小生成树的算法**基本思想:**按照权值从小到在顺序选择 n - 1 条边,并保证这 n - 1 条边不构成回路**具体做法:**首先构造一个只含 n 个顶点的森林,然后

2021-01-16 20:37:10 205 1

原创 数据结构与算法-168~171-普利姆算法(Prim)

168 普利姆算法(Prim)和介绍修路问题有胜利乡有7个村庄(A、B、C、D、E、F、G),现在需要修路把7个村庄连通各个村庄的距离用边线表示(权),比如 A - B 距离5公里问:如何修路保证各个村庄都能连通,并且总的修建公路总里程最短?思路:将10条边,连接即可,但是总的里程数不是最小的正确思路:尽可能的选择少的路线,并且每条路线最小,保证决里程数最小最小生成树修路问题本质就是最小生成树问题,最小生成树**(Minimum Cost Spanning Tree),简称 MST**

2021-01-16 11:23:22 242

原创 数据结构与算法-164~167-贪心算法

164 贪心算法的基本介绍集合覆盖问题假设存在下面需要付费的广播台,以及广播台的信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号广播台覆盖地区k1北京,上海,天津k2广州,北京,深圳k3成都,上海,杭州k4上海,天津k5杭州 ,大连贪心算法介绍贪心算法(贪婪算法)指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪心算法所得到的结果不一定最优的结果(有

2021-01-16 09:16:45 201

原创 数据结构与算法-160~163-暴力匹配和KMP算法

160 暴力匹配算法解决字符串匹配问题字符串匹配问题:有一个字符串 str1 = “硅硅谷 尚硅谷你尚硅 尚硅谷你尚硅谷你尚硅你好” ,和一个子串 str2 = “尚硅谷你尚硅你”现在要判断 str1 是否含有 str2 ,如果存在,就返回第一次出现的位置,如果没有则返回 -1暴力匹配算法如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有:如果当前字符匹配成功,(即 str1[i] == str2[j]) , 即 i++ , j++ ,

2021-01-10 22:36:13 173

原创 数据结构与算法-156~159-动态规划

156 动态规划算法基本介绍背包问题:有一个背包,容量为4磅,物品重量价格吉他(G)11500音响(S)43000电脑(L)32000要求达到的目标为装入的背包的总价值最大,并且重量不超出要求装入的物品不能重复动态规划算法介绍动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将求解问题分解成若干个子问题,先求解子问题,

2021-01-03 22:24:39 118

原创 数据结构与算法-154~155-分治算法

154 分治算法的设计模式介绍分治算法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题…直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序、归并排序),傅立叶变换(快速傅立叶变换)分治算法可以求解一些经典问题二分搜索大整数乘法棋盘覆盖合并排序快速排序线性时间选择最接近点对问题循环赛日程表汉诺塔分治算法的基本步骤分治法在第一层递

2021-01-03 19:28:33 109

原创 数据结构与算法-146-153-图-深度优先-广度优先

146 图的基本介绍和存储形式为什么要图线性表局限于一个直接前驱和一个直接后继的关系树也只能有一个直接前驱,就是父节点如果需要多对多的关系,就需要图了介绍图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。结点也可以称为顶点。常用概念顶点(vertex)边(edge)路径无向图有向图带权图无向图:顶点之间的连接没有方向,比如A-B,即可以是 A -> B 也可以 B -> A路径:比如从 D -> C 的路径有D -

2021-01-03 18:40:32 121

原创 数据结构与算法-135-145 -平衡二叉树

135 平衡二叉树介绍二叉树可能的问题,一个数列是{1,2,3,4,5,6},这样的数列在二叉树中就变为了队列,整个树就是一个条直线基本介绍:平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree) 又被称为 AVL 树,可以保证查询效率较高具有以下特点:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一颗平衡二叉树,平衡二叉树的常用实现方法有红黑树、AVL(这是一种算法,不是avl树)、替罪羊树、Treap、伸展树等13

2020-12-20 21:00:21 159

原创 数据结构与算法-127-134-二叉排序树

127 二叉排序树(BST)的介绍数列:{7,3,10,12,5,1,9},要求能高效的完成对数据的查询和添加解决方案分析:使用数组,数组未排序,优点直接在数组尾添加,速度快。缺点:查找速度慢数组排序,优点:可以使用二分查找,查找速度快,缺点:为了保证数组有序在添加新数据时,找到插入位置后,后面的数据需整体移动,速度慢使用链式存储-链表不管链表是否有序,查找都慢,添加数据速度比数组快,不需要整体移动使用二叉排序树二叉树排序树介绍:二叉排序树:BST(Binary Sort(Sear

2020-11-02 23:03:30 795 1

原创 数据结构与算法-107-126-堆排序-赫夫曼树

107 大顶堆和小顶堆图解说明基本介绍:堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,,平均时间复杂度均为O(nlogn) ,它也是不稳定排序堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆,注意:没有要求结点的左孩子的值和右孩子的值的大小关系每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆特点:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]。对 i

2020-10-05 22:04:59 296

原创 数据结构与算法-087-106 哈希表与二叉树

087-089 哈希表087 哈希表实现思路图解基本介绍:哈希表的基本介绍(Hash table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。088-089 哈希表代码实现1-2package com.old.hashTable_087_089;import java.util.Random;import java.util.Scann

2020-09-21 23:40:00 160

原创 数组结构与算法-077-085-查找算法

077 线性查找分析和实现在java中,常用的查找有四种顺序(线性)查找二分查找/折半查找插值查找斐波那契查找线性查找有一个数列:{1,8,10,89,1000,1234},判断数列中是否包含此名称【顺序查找】,要求:如果找到了,就提示找到,并给出下标值思路:如果查找到全部符合条件的值package com.old.search.seqSearch077;public class SeqSearch { public static void main(String[] a

2020-09-03 22:16:49 126

原创 数组结构与算法-054-076-排序算法

054-056 冒泡排序054 冒泡排序算法思路图解冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相信元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就旬水底下气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行交换,就说明序列有序,因此要在排序过程中设置一个标志 flag 判断是否进行交换,从而减少不必要的比较055 冒泡排序算法代码实现package com.old.sort_0

2020-08-30 10:08:55 220

原创 数组结构与算法-054-056-冒泡排序

054 冒泡排序算法思路图解冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相信元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就旬水底下气泡一样逐渐向上冒。因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行交换,就说明序列有序,因此要在排序过程中设置一个标志 flag 判断是否进行交换,从而减少不必要的比较055 冒泡排序算法代码实现package com.old.sort_054_056;impo

2020-08-06 23:52:08 131

原创 数组结构与算法-050-053-排序算法与时间复杂度

050 排序算法介绍和分类排序也称排序算法(Sort,Algorithm),排序是将一组数据,依指定的顺序进行排列的过程排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器(内存)中进行排序外部排序法:数据量过大,无法全部加载到会败在中,需要借助外部存储进行排序算法的时间复杂度度量一个程序执行时间的两种方法事后统计的方法,这种方法可行,但是有两个问题:一是想对设计的算法的运行性能进行评测,需要实际运行该程序;二是所得旱的统计量依赖于计算机的硬件、软件等环境因素,这种方式,要在

2020-08-04 00:23:24 136

原创 数组结构与算法-047-049-八皇后问题分析与实现

047 八皇后问题分析和实现问题介绍八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例,该问题是国际西洋棋手马克斯·贝瑟尔于1848年提出:在 8*8 的国际象棋上摆放八个皇后,使不能互相攻击,即:任意两个皇后都不能处于同一行,同一列或同一斜线上,问有多少种摆法问题分析第一个皇后先放第一行第一列第十个皇后放在第二行第一列,然后判断是否ok,如果不ok,继续放第二列、第三列、依次把所有的列都放完,找到一个合适的继续第三个皇后,还是第一列,第二列…直到第8个皇后也能放在琴不冲突的位置,算是找

2020-08-02 22:17:39 104

原创 数组结构与算法-043-046-递归-迷宫回溯

034 递归应用场景和调用机制概念递归就是方法自己调用自己,每次调用时传入不同的变量。递归有助于编程者解决复杂的问题,同时可以让代码变得简洁package com.old.recursion_034_035;public class RecursionTest { public static void main(String[] args) { test(4); } public static void test(int n){ if (n

2020-08-01 21:22:42 69

原创 数组结构与算法-036-042 前中后缀表达式-逆波兰计算器

036 前缀 中缀 后缀(逆波兰表达式)表达式前缀表达式前缀表达式(波兰表达式)前缀表达式又称波兰表达式,前缀表达式的运算符位于操作数之前举例说明:(3 + 4) * 5 -6 对应的前缀表达式就是 - * + 3 4 5 6前缀表达式课计算机求值从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 和 次顶元素),并将结果入栈;重复上述过程直到表达式的最左端,最后运算出的值即为表达式的结果例如:(3 + 4) * 5 -6

2020-07-26 16:28:31 171

原创 数组结构与算法-030-035 栈

030 栈的应用场景和介绍栈的介绍栈的英文为 stack栈是一个先入看不出 (FILO-First In Last Out) 的有序列表栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端起先的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除出栈(pop)和入栈(push)的概念

2020-07-21 09:33:22 119

原创 数组结构与算法-024-029 双向链表、环形链表、约瑟夫问题

024 双向链表增删改查使用带 head 头的双向链表实现-水浒英雄排行榜,单向链表的缺点分析单身链表,查找的方向只能是一个方向,而双向链表可以向前或是向后查的单身链表不能自我删除,需要靠辅助节点,而 双向链表,则可以自我删除,所以前面单链表删除节点时,问题找到 temp ,tmep是待删除节点的前一个节点来删除分析 双向链表的遍历,添加,修改,删除的操作思路遍历方和单链表,只是可以向前,也可以向后查找添加(默认添加到双向链表的最后)先找到双向链表的最后这个节点temp.next

2020-07-13 23:42:36 151

原创 数组结构与算法-016-023-单链表

016 单链表介绍和内存布局链表(Linked List)是有序的列表,但是它在内存中是存储如下:链表是以节点的方式来存储,是链式存储每个节点包含 data 域,next 域指向下一个节点如图:发现链表的各个节点不一定是连续存入的链表分带头节点链表和没有头节点的链表,根据实际的需求来确定顺序表易查询,链表易更新017 单链表创建和遍历的分析实现使用带 head 头的 单向链表实现-水浒英雄排行榜管理完成对英雄人物的增删改操作,注:删除和修改,查找 建议独立完成第一种方式在添加英

2020-07-12 10:33:04 176

原创 数组结构与算法-007-015稀疏数组与队列

007 稀疏数组的应用场景基本介绍:当一个数组中大部分元素为0,或者为同一个数值的数组时,可以稀疏数组来保存该数组稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模008 稀疏数组转换的思路分析应用实例使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)把稀疏数组存盘,并且可以重新恢复原来的二维数组数整体思路分析二维数据转稀疏数组的思路遍历原始的二维数组,得到有效数据的个数 sum

2020-07-07 22:44:18 98

空空如也

空空如也

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

TA关注的人

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