自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA数据结构(13) 常用十种算法 、 2 分治算法解决汉诺塔问题

常用十种算法2 分治算法算法介绍:分支法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,在把子问题的解合并。这个技巧是很多高效算法的基础,入排序算法(快速排序、归并排序)等分治算法的基本步骤:​ 分治算法在每一层递归上都有三个步骤:分解:将原问题分解成若干个规模较小,相互独立,于原问题形式相同的子问题;解决:若子问题规模较小而容易被解决则直接解决掉,否则递归地拆解各个子问题;合并:将各个子问题的解合并为原问题的解。分治算法的设计模式

2020-11-30 17:34:31 234

原创 JAVA数据结构(13) 常用十种算法 、二分查找算法(非递归)

常用十种算法1 二分查找算法(非递归)对于数组{1,3,8,10,11,67,100},使用非递归的方式完成二分查找。实现思路:递归方式的实现思路通过传入本轮查找的起始位置和终止位置作为参数,实现不断的分段递归。非递归方式则无需传参,只需要在循环中不断改变查找的左右位置即可。完整代码实现(递归+非递归):/** * 非递归二分查找 */public class BinarySearch { public static void main(String args[]){

2020-11-30 17:32:30 176

原创 JAVA 数据结构 12-图的实现、深度遍历DFS、广度遍历BFS

JAVA 数据结构 12-图--图创建、深度、广度遍历完整代码见最后问题:为什么要有图?​ 线性表局限于一个直接前驱和一个直接后继的关系,当我们需要表示多对多的关系时,就需要用到图的结构。图的基本介绍:​ 图是一种数据结构,其中结点可以具有零个或多个相邻元素。两个结点之间的连接称为边。结点也可以称为顶点。如图:图的表示方式:​ 图的表示方式有两种:二维数组表示(邻接矩阵)和链表表示(邻接表)邻接矩阵是表示图中顶点之间直接相邻关系的矩阵,对于n个顶点的图而言,矩阵的行和列表示第n个点。若

2020-10-21 14:35:42 268 1

原创 JAVA数据结构与算法 11(5)树-平衡二叉树介绍、动画解析 平衡二叉树的构建操作、右旋转、左旋转、双旋转

JAVA数据结构与算法 11.树4 平衡二叉树4.1 平衡二叉树介绍​ 平衡二叉树也叫平衡二叉搜索树,又被称为AVL树,可以保证查询效率较高。具有以下的特点:在二叉排序树的基础上,它是一颗空树或它的左右两颗子树的高度差绝对值不超过1,并且左右两个子树都是一颗平衡二叉树。问题1:如何构建一颗平衡二叉树?​ 在构建二叉排序树的时候,每添加一个结点,判断根结点的左右子树的高度差,若大于1,则需要进行相应的处理。问题2:处理分为哪几种情况,每种情况需要做什么处理?​ 当当前结点右子树的高度-左子树的

2020-10-20 14:18:33 254

原创 JAVA数据结构与算法 11(4)树-二叉排序树介绍、二叉排序树的创建、二叉排序树的删除

JAVA数据结构与算法 11.树3 二叉排序树3.1 二叉排序树介绍​ 二叉排序树:BST(Binary Sort Tree),对于二叉排序树的任何一个非叶子结点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。3.2 二叉排序树的创建实现思路:对于数列{7,3,10,12,5,1,9},先将第一个数字7设置为二叉排序树的根节点;遍历数列,将剩余的数字插入树中:每一次插入均从根节点出发;若待插入的值大于当前节点,判断当前节点的左子树是否为空,若为空则直接将待插入节点

2020-10-19 13:58:20 150 1

原创 JAVA数据结构与算法 11(3)树-哈夫曼树的基本介绍、哈夫曼树创建实现、哈夫曼编码、利用哈夫曼编码压缩

JAVA数据结构与算法 11.树2 哈夫曼树2.1 哈夫曼树的基本介绍​ 给定n个权值作为n个叶子结点,构造一颗二叉树,若该树的带权路径长度(WPL)达到最小,称这样的二叉树为最优二叉树,也称哈夫曼树。因此权值较大的结点距离根节点较近。哈夫曼中的一些概念:​ 路径和路径长度:在一颗树中,从一个结点往下可以达到的孩子或孙子结点hi前的通路,称为路径。通路中分支的数目称为路径长度。若规定根节点的层数为1,则从根节点到第L层结点的路径长度为L-1。​ 结点的权和带权路径长度:若将树中结点赋给一个有某

2020-10-14 16:35:00 259 1

原创 JAVA数据结构与算法 11(2)树-顺序存储二叉树 线索化二叉树 线索+遍历(遍历、查找、子树删除)

JAVA数据结构与算法 11.树1 二叉树1.4 顺序存储二叉树​ 从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组。堆排序会使用到顺序存储二叉树要求:要求以数组的方式来存放二叉树要求在遍历数组arr时,仍然可以以前序、中序和后序的方式完成结点遍历存储二叉树的特点:顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为2*n+1第n个元素的右子节点为2*n+2第n个元素的父节点为(n-1)/2n:表示二叉树中的第几个元素(按0开始

2020-10-13 16:16:54 139

原创 JAVA数据结构 08.排序算法(4) 堆排序 的算法思路图解和代码实现

JAVA数据结构 08.排序算法2. 八大排序算法 实现 解析 和优化2.7 堆排序算法介绍:​ 堆排序是利用堆这种数据结构而设计的一种排序算法,是一种选择排序,是不稳定的。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆。注意:没有要求结点左右结点值的大小关系。每个结点的值都小于等于其左右孩子结点的值,称为小顶堆。​ 大顶堆举例:​ 可以对堆中的结点按层进行编号,顺序存储二叉树得到数组arr:​ 大顶堆的特点:由顺序存储二叉树的可得,arr[i] &

2020-10-13 16:14:20 122

原创 JAVA数据结构与算法 11(1).树-为什么需要树这种数据结构? 二叉树的概念、二叉树的操作(遍历、查找、子树删除)

JAVA数据结构与算法 11(1).树前景问题:为什么需要树这种数据结构?回答:对于数组存储方式而言,通过下标方式访问元素,速度快,但若需要插入或删除某一个值时,效率很低;对于链式存储方式而言,插入删除数据时,只需要将结点插入或删除,速度很快,但进行检索时,效率很低;有没有一个数据结构可以同时增加数据的存储和读取的效率?树型结构能提高数据存储和读取的效率,比如利用二叉排序树,即可以保证数据检索的速度,同时也可以保证数据的插入,删除,修改的速度。1 二叉树1.1 二叉树的概念树有很多种,每个节

2020-10-12 17:12:20 333 2

原创 JAVA数据结构与算法 10.哈希表基本概念、结构介绍、JAVA代码实现

JAVA数据结构与算法 10.哈希表使用场景:​ 有一个公司,当有新的员工来报道时,要求改员工的信息加入(id,性别,年龄,名字…),当输入该员工的id时,要求查找该员工的所有信息。要求:不适用数据库,尽量节省内存,速度越快越好解决方法:哈希表(散列)1 哈希表的基本概念什么是哈希表?​ 哈希表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫散列函数,存

2020-10-12 10:24:21 117

原创 JAVA数据结构与算法 09.四大查找算法思路解析和代码实现 【线性查找、二分查找、插值查找、斐波那契(黄金分割法)查找】

JAVA数据结构与算法 09.查找算法在java中,常用的查找有四种:顺序(线性)查找二分查找/折半查找插值查找斐波那契查找按照上面的顺序依次介绍1. 线性查找算法介绍:最简单的查找,通过遍历集合,匹配数组中数与待查询数value相同的数字,返回下标;匹配失败返回-1。特点:顺序遍历;不需要数组有序代码实现:public class SeqSearch { public static void main(String args[]){ int[] arr

2020-10-10 15:32:58 235

原创 JAVA数据结构 08.排序算法(3) 基数排序 桶排序 的算法思路图解和代码实现

JAVA数据结构 08.排序算法2. 八大排序算法 实现 解析 和优化2.7 基数排序(桶排序)算法介绍:基数排序是桶排序的扩展,是使用空间换时间的经典算法。桶排序顾名思义,它是通过键值的各个位的值,将要排序的元素分配到某些“桶”中,达到排序的目的。基数排序是效率高的稳定性排序法,它是将整数按位数切割成不同的数字,然后按每个位数分别比较。算法思想:创建10个桶bucket,标号分别为0~9,对应个位数值为0~9;获取数组arr中最大值的位数maxLength,算法的循环次数就是位数的值max

2020-10-10 10:57:36 131

原创 JAVA数据结构 08.排序算法(2) 快速排序和归并排序的算法思路图解和代码实现

JAVA数据结构 08.排序算法2. 八大排序算法 实现 解析 和优化2.5 快速排序算法介绍:快速排序是对冒泡排序的一种改进。算法思想:设置两个索引指针指向待排序数据的头和尾;通过一趟排序将要排序的数据分割成两部分(将数组最左边的数作为基准点);通过移动头尾指针,寻找逆序的两个数字(头指针值比基准点大和尾指针比基准点小),对两个数字进行交换,实现第一轮交换。一次移动头尾指针,交换所有逆序数,当头指针和尾指针重合时,循环结束;当一轮循环结束后,使得头(尾)指针前一部分的所有数据都比另外一

2020-10-09 17:04:24 158

原创 MySQL 高级(六)查询截取分析 慢查询日志 MySQL dump slow 慢查询日志分析工具 show profile 全局查询日志

MySQL 高级(六)查询截取分析问题:在开发环境中,分析出SQL并优化的步骤是什么?流程:观察,至少跑1天,看看生产的慢SQL情况开启慢查询日志,设置阈值,比如超过5秒钟的就是慢SQL,并将它抓取出来EXPLAIN+慢SQL分析show profile 进一步分析运维经理 or DBA ,进行SQL数据库服务器的参数调优总结要点:慢查询开启并捕获EXPLAIN+慢SQL分析show profile 查询SQL在MySQL服务器里面的执行细节和生命周期情况SQL数据库服务器的参

2020-10-02 16:25:00 464

原创 MySQL 高级(五)排序索引优化 永远小表驱动大表 Order by 关键字的排序优化 Group by 关键字的优化

MySQL 高级(五)排序索引优化5 排序索引优化5.1 永远小表驱动大表优化原则:小表驱动大表,即小的数据集驱动大的数据集案例:SELECT * FROM A WHERE id in (select id from B)--等价于for select id from Bfor select * from A where A.id = B.id--for 表示循环​ 当B表的数据集小于A表的数据集时,用in优于existselect * from A where exists( se

2020-10-02 16:22:41 432

原创 MySQL 高级(四)索引性能分析 索引单表优化 索引两表优化 索引三表优化 索引优化案例 规律 索引面试题分析 优化总结口诀

MySQL 高级(四)索引优化分析4.7 索引性能分析前景知识:MySQL中有专门负责优化SELECT语句的优化器模块,可以通过计算分析系统中收集到的统计信息,为客户端请求的Query提供MySQL认为最优的执行计划**如何获取MySQL的执行时间?**使用EXPLAIN 关键字EXPLAIN关键字:使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如果处理你的SQL语句。分析你的查询语句或是表结构的性能瓶颈能够分析哪些信息?SQL中涉及到表的读取顺序–>id

2020-10-02 16:19:22 409

原创 MySQL 高级(三)索引介绍和使用

MySQL 高级(二)索引介绍和使用4.索引简介4.1 什么是索引?索引是帮助MySQL高效获取数据的数据结构,索引是数据结构!索引的目的在于提高查询效率,可以类比字典索引是数据库系统维护着满足特点查找算法的数据结构,这些数据结构以某种方式引用(指向)数据一般来说,索引也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上总结:排好序的快速查找数据结构就是索引,因此索引会影响WHERE和ORDER BY关键字后面的条件筛选。​ 我们平常说的索引,如果没有特别指明,都是指

2020-10-02 16:05:51 170

原创 MySQL 高级(二)一条SQL语句的执行顺序 SQL中的七种JOIN图解

MySQL 高级(二)一条SQL语句的执行顺序 SQL中的七种JOIN图解1. SQL的执行顺序人的书写思路:1 SELECT DISTINCT <select_list>2 FROM <left_table> <join_type>3 JOIN <right_table> ON <join_condition>4 WHERE <where_condition>5 GROUP BY <group_by_l

2020-10-02 16:01:45 261

原创 MySQL 高级(一)MySQL架构层次结构介绍 引擎对比MyISAM和InnoDB的对比区别

MySQL 高级(一)MySQL架构层次结构介绍​ mysql采用插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存储提取相分离。1.MySQL的层次结构:​ 在对mysql进行优化前,需要对mysql的层次结构有一定了解,当问题出现时(等待时间长,查询时间长),可以更好的定位到问题的位置。连接层​ 最上层的连接层提供一些客户端的连接服务,包含本地sockt通信和大多数基于客户端/服务端工具实现的类似tcp/ip的通信。只要完成一些类似于连接处理、授权认证及相关的安全方案。在该层上引

2020-10-02 15:58:52 1795 1

原创 Springboot整合实现定时任务和异步定时任务 解决定时任务阻塞问题 cron表达式解析

实现定时任务 Springboot整合1.cron表达式参考文章在线Cron表达式生成器cron表达式来指明定时任务的时间,Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义结构:corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份各字段的含义:字段允许值允许的特殊字符秒(Seconds)0~59的整数, - * / 四个字符分(Minutes)0~59的整数, - * / 四

2020-09-23 11:53:49 683

原创 Spring Boot学习 RabbitMQ 消息队列(3) 延时队列的介绍和使用 保证消息可靠性的方法 解决 消息丢失 消息重复 消息积压

Spring Boot学习 RabbitMQ 消息队列 基本概念 web端操作 SpringBoot整合4.延时队列 实现定时任务设置队列TTL的实现方式:此次实现方式:使用同一个交换机的不同路由键实现代码实现:4.1 创建组件package com.rwp.gulimail.order.config;import org.springframework.amqp.core.Binding;import org.springframework.amqp.core.Exch

2020-09-21 16:31:15 272

转载 用户身份校验使用session 和 jwt的区别和优点

用户身份校验使用session 和 jwt的区别和优点

2020-09-21 14:19:31 107

原创 JAVA数据结构 08.排序算法(1) 排序算法的介绍和分类 算法的时间复杂度 冒泡排序 选择排序 插入排序 希尔排序

JAVA数据结构 08.排序算法(1)1.排序算法的介绍和分类排序:将一组数据,以指定的顺序进行排列的过程排序的分类:内部排序:将需要的所有数据加载到内存中进行排序**(8大排序算法)**插入排序直接插入排序希尔排序选择排序简单选择排序堆排序交换排序冒泡排序快速排序归并排序基数排序外部排序:数据量过大,无法全部加载到内存中,需要借助外存进行排序,先部分排序后合并度量一个排序算法:算法的时间复杂度算法的空间复杂度2. 八大排序算

2020-09-19 18:33:10 154

原创 接口幂等性介绍 SpringCloud下接口幂等性的解决方案 Token令牌机制实现

接口幂等性介绍 SpringCloud下接口幂等性的解决方案 Token​ 场景:在分布式系统之间,当给表单提交数据或分布式系统之间的相互调用,一个方法可能会执行多次(用户重复提交),需要保证执行多次(提交多次)和执行一次的结果相同,保证接口的幂等性什么是接口幂等性?​ 接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的.不会因为多次点击而产生了副作用.​ 举例:比如说支付场景,用户购买了商品支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行

2020-09-17 16:45:27 3208

原创 SpringCloud学习 - Feign远程调用丢失请求头问题的解决 使用Feign+CompletableFuture 异步调用丢失请求头的问题

SpringCloud学习 Feign远程调用 异步调用CompletableFuture 丢失请求头问题的解决1.使用Feign进行远程调用丢失请求头问题当使用Feign进行远程调用时,Feign会自动构造一个新的http请求再发送.因此会默认丢掉原请求的请求头信息.导致一些重要的数据丢失(Cookie)解决方法: 添加Feign远程调用拦截器,在拦截器中进行请求头信息的同步.原理:Feign在构造http远程调用请求时,会检查是否有添加拦截器RequestInterceptor(默认没有),

2020-09-16 11:37:44 3035 3

原创 Spring Boot学习 RabbitMQ 消息队列 (一) 消息队列 基本概念 web端操作

Spring Boot学习 RabbitMQ 消息队列 基本概念 web端操作Spring Boot学习 RabbitMQ 消息队列 (二) SpringBoot整合 设置消息确认机制,可靠抵达 ConfirmCallbac ReturnCallback 1. 基本概念2.web端操作rabbitmq2.1 添加交换机Exchange2.2 创建队列2.3 设置绑定关系点击交换机列表进入交换机设置:绑定成功:...

2020-09-14 16:28:39 173 1

原创 # Spring Boot学习 RabbitMQ 消息队列 (二) SpringBoot整合 设置消息确认机制,可靠抵达 ConfirmCallbac ReturnCallback

Spring Boot学习 RabbitMQ 消息队列 基本概念 web端操作 SpringBoot整合 设置消息确认机制,可靠抵达 ConfirmCallbac ReturnCallback1. 基本概念2.web端操作rabbitmq2.1 添加交换机Exchange2.2 创建队列2.3 设置绑定关系点击交换机列表进入交换机设置:绑定成功:3. SpringBoot整合 RabbitMQ3.1 环境搭建3.1.1 导入整合依赖<dependency&

2020-09-14 16:25:44 863

原创 JAVA数据结构 07.递归 迷宫问题 八皇后问题

JAVA数据结构 07.递归 迷宫问题 八皇后问题1. 递归介绍和解决思路递归:简单来说,递归就是方法自己调用自己,每次调用时传入不同的变量.​ 递归有助于编程者解决复杂的问题(只需要关注每一次递归解决的问题),同时可以让代码变得简洁.递归调用规则:当程序执行到一个方法时,就会开辟一个独立的空间(存储再栈中);每个空间的数据(局部变量)都是独立的;递归必须向退出递归的条件逼近,否则就是无限递归,产生栈溢出错误当一个方法执行完毕,或者遇到return时,就会返回到调用该方法的地方继续执行下

2020-09-13 13:56:20 196

原创 JAVA 数据结构-06 (3) 栈结构的应用 前 中 后缀三种表达式 中缀表达式转后缀表达式 逆波兰计算器实现和算法思路

JAVA 数据结构学习-05.栈2. 栈结构的应用(表达式与计算器)2.2 前 中 后缀三种表达式前缀表达式(波兰表达式)运算符位于操作数之前举例:(3+4)*5-6的前缀表达式就是 - * + 3 4 5 6计算机求值的流程:从右至左进行扫描,遇到数字,将数字压入堆栈,遇到运算符,弹出栈顶两个数,用运算符进行计算,并将结果压入栈,重复操作直到表达式最左端,最后得出的结果就是表达式的结果.中缀表达式最常见的运算表达式 (3+4)*5-6对于计算机并不好操作( 需要判断相邻运算符

2020-09-12 17:08:17 145

原创 JAVA 数据结构-06 (2) 栈结构的应用 简易计算表达式的计算(中缀表达式)

JAVA 数据结构学习-06 栈2. 栈结构的应用(表达式与计算器)2.1 简易计算表达式的计算(中缀表达式)70*2*2-5+1-5-3+4实现思路:设置2个栈结构,一个数栈numStack只用来保存数字;一个符号栈operStack只用来保存符号.通过一个index值来遍历我们的表达式;如果发现index值是一个数字,就直接入符号栈;如果发现扫描到一个符号:分为一下三种情况:如果符号栈为空,就直接入栈如果符号栈不为空且当前index扫描的操作符优先级小于或等于栈顶的操作符,就需要

2020-09-12 17:06:20 146

原创 JAVA 数据结构-06 (1)栈的基本数据结构实现(数组实现,链表实现)

JAVA 数据结构-06 栈栈是一个先入后出的有序列表栈式限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表.允许插入和删除的一端,为变化的一端,称为栈顶,另一端为固定的一端 ,称为栈底.栈的基本应用场景:子程序的调用:在跳往子程序前,会先将下一个指令的地址存到堆栈中,直到子程序执行完成之后再将地址取出,以回到原来的程序.处理递归调用:和子程序调用类似,只是除了存储下一个指令的地址外,也将参数和区域变量等数据存入堆栈中表达式的转换 [中缀表达式转后缀表达式] 与求

2020-09-12 17:04:31 101

原创 SpringCloud 学习-SpringSession介绍,使用,整合项目解决Session常规问题

SpringCloud 学习-SpringSession介绍,使用,整合项目解决Session常规问题1. SpringCloud为什么要用SpringSession? HttpSession不行吗?HttpSession的问题:不同服务,session不能共享的问题:不能跨不同域名之间共享session的数据,因为不同域名之间,cookie中的sessionID是不共享的.同一服务,复制在多台服务器,session不同步的问题:session的数据存在服务器中,而分布式微服务环境下,同一服务模块

2020-09-10 17:01:35 926

原创 Springboot学习 -社交登录的实现 OAuth2.0 微博登录整合SpringBoot

Springboot学习 -社交登录的实现 OAuth2.01.社交登录​ 由于QQ/微博/github等网站的用户量非常大,别的网站为了简化自我网站的登录与注册逻辑,简化用户注册步骤,引入社交登录功能.步骤:用户点击其他平台登录按钮引导跳转到平台授权页用户主动点击授权,跳回之前的网页,完成注册.2. OAuth2.0OAth(开放授权):是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容.

2020-09-08 17:32:18 767

原创 SpringBoot 整合 httpclient http请求发送工具类HttpUtils

SpringBoot 整合 httpclient http请求发送工具类HttpUtils导入依赖<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.12</version></dependency><dependenc

2020-09-07 17:08:24 4823 1

原创 递归问题解决思路 83. 删除排序链表中的重复元素 24. 两两交换链表中的节点 203. 移除链表元素

递归问题解决思路 案例小结看了leetcode上一篇博主发的博客套路解决递归问题按照他的思路用递归写了几道题目83. 删除排序链表中的重复元素题目:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。输入: 1->1->2输出: 1->2思路:使用递归方式解题,注重三个方面:找到整个递归的终止条件:递归应该在什么时候结束? 此题在链表遍历到最后一个元素时终止.找返回值:应该给上一级返回什么信息?此题应该返回已经处理好的链表找单次递归的任务:本次递归

2020-09-06 15:06:09 153

原创 JAVA数据结构-05 双向链表的实现

JAVA数据结构-04 双向链表​ 双向链表的结构与单向链表相同,包含数据域和指针域.区别在于双向链表同时包含指向下一个节点的next指针和指向上一个节点的pre指针.单向链表只能从前往后进行遍历,双向链表可以从前和后两个方向进行遍历单向链表不能自我删除,需要靠辅助节点进行,所以单向链表的删除需要找到前一个节点.而双向链表可以进行自我删除.双向链表的结构数据节点://每一个数据节点就是一个music对象class Music2{ public int no; public

2020-09-06 14:10:42 118

原创 JAVA数据结构-04 单向环形链表解决约瑟夫问题

JAVA数据结构-04 单向环形链表解决约瑟夫问题问题描述:num个人围成一圈,从第start个开始报数,第k个出圈,最后剩下一个,求出圈的顺序。构建一个单向环形链表思路:先创建第一个节点,让这个节点的next指针域指向自己,并形成环形后面当我们每创建一个新的节点,就把该节点,加入到已有的环形链表即可遍历时判断遍历一圈结束的条件.temp.next == first数据节点:class Child{ public int no; public Child next;

2020-09-06 13:29:40 137

原创 JAVA数据结构-3.链表

JAVA数据结构-单链表链表(Link list)是以节点的方式来存储,各个节点不一定是连续存放的每个节点包含data域,next域,指向下一个节点链表分带头节点的链表和没有头节点的链表,根据实际需求来确定链表在内存中的存储情况:链表(带头节点)的逻辑结构:​ head节点不存放具体的数据,作用就是表示单链表的头和指向第一个数据节点的指针next单链表的结构定义一个节点类,每一个类对象就是一个数据节点每个数据节点包含自己的数据域data和指向下一个对象的指针域next//每一

2020-09-05 16:41:56 154

原创 JAVA数据结构-链表算法题 21. 合并两个有序链表 剑指 Offer 22. 链表中倒数第k个节点 剑指 Offer 06. 从尾到头打印链表 剑指 Offer 24. 反转链表

JAVA数据结构-单链表 算法题21. 合并两个有序链表题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:1->2->4, 1->3->4输出:1->1->2->3->4->4方法:循环比较两链表的首个数据节点,将较小的值插入新链表.类似于插入排序,以一个链表L1作为基础,将另外一个链表L2的节点不断遍历比较并插入L1.将两链表相连,直接进行排序操作 (超时)方法一思路:

2020-09-05 16:40:21 151

原创 Springboot学习-MD5盐值密码加密 DigestUtils 和 BCryptPasswordEncoder

Springboot学习-MD5盐值密码加密 DigestUtils和BCryptPasswordEncoder使用场景:当需要从后端向数据库中存储密码类型的信息时,可以采取可逆加密或不可逆加密.

2020-09-04 15:08:55 4764

空空如也

空空如也

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

TA关注的人

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