自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mybatis-plus 实现自动填充

mybatis-plus 实现自动填充一、说明在数据库中,有一些字段 需要用到自动填充的功能类似如下:gmt_create:创建时间yregmt_modified:修改时间这时候我们可以采用 MyBatis-Plus 中的字段自动填充功能去实现二、实现1.在要自动填充的字段上添加注解 @TableField /** * 创建时间 */ @TableField(fill = FieldFill.INSERT) private Date gmtCreate; /**

2020-09-04 13:46:38 295

原创 数据库事务的四种隔离级别

数据库事务的四种隔离级别1.隔离性​ 将数据库设计成单线程的数据库,可以防止所有的线程安全问题,自然就保证了隔离性.但是如果数据库设计成这样,那么效率就会极其低下。​ 数据库在想不保证隔离性,可能会发生的情况:如果是两个线程并发修改,一定会互相捣乱,这时必须利用锁机制防止多个线程的并发修改。如果两个线程并发查询,没有线程安全问题。如果两个线程一个修改,一个查询,就会导致脏读,不可重复读,虚读(幻读)。(1)更新丢失两个事务都同时更新一行数据,一个事务对数据的更新把另一个事务对数据的更新覆盖了。

2020-09-02 19:08:26 162

原创 二分查找(非递归)

二分查找(非递归)1定义二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。2.思路如果待查序列为空,那么就返回-1,并退出算法;这表示查找不到目标元素。如果待查序列不为空,则将它的中间元素与要查找的目标元素进行匹配,看它们是否相等。如果相等,则返回该中间元素的索引,并退出算法;此时就查找成功了。如果不相等,就再比较这两个元素的大小。如果该中间元素大于目标元素,那么就将

2020-08-29 16:35:37 166

原创 平衡二叉树(AVL)

平衡二叉树(AVL)1.定义​ 由于二叉排序(查找)树在某些极端情况下可能会形成一个链表,使其性能大大降低。AVL树作为对其的一种改进,数据的插入仍然遵循二叉查找树的特性,但是需要在元素插入时候保证其左右子树的高度之差<=1,如果不满足,则需要通过旋转来保证树的平衡性2.旋转1.左旋转2.右旋转3.左右旋转4.右左旋转3.代码实现/** * @Author ZZD * @Date 2020/8/26 15:44 * @Email [email protected] *

2020-08-27 18:52:47 113

原创 二叉排序树

二叉排序树1.定义​ 一棵空树,或者是具有下列性质的:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。2.构建8,3,10,1,6,14,4,7,13构建的树。3.代码实现public class BinarySortTree { //根节点 Node root = null; //添加节点, publi

2020-08-26 21:35:05 109

原创 堆排序

堆排序1.定义指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。2.基本思想​ 将需要排序的序列构造成一个大/小顶堆,根据大/小顶堆的性质,当前堆的根节点(堆顶)就是序列中最大/小的元素;2、将堆顶元素和最后一个元素交换,然后将剩下的节点重新构造成一个大/小顶堆;3、重复步骤2,如此反复,从第一次构建大顶堆开始,每一次构建,我们都能获得一个序列的最大值,然后把它放到大顶堆的尾部。最后,就得到一个有序的序列

2020-08-24 22:10:37 62

原创 哈夫曼树的构建

哈夫曼树的构建1.定义给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。2.构造假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树

2020-08-24 22:09:56 1179

原创 二分查找(递归)

二分查找(递归)1定义二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。2.思路如果待查序列为空,那么就返回-1,并退出算法;这表示查找不到目标元素。如果待查序列不为空,则将它的中间元素与要查找的目标元素进行匹配,看它们是否相等。如果相等,则返回该中间元素的索引,并退出算法;此时就查找成功了。如果不相等,就再比较这两个元素的大小。如果该中间元素大于目标元素,那么就将当

2020-08-01 12:58:56 893

原创 基数排序

基数排序1.定义基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog®m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法。2.代码实现public class RadixSort { public void

2020-07-31 20:14:03 73

原创 归并排序

归并排序1.定义归并排序(Merge Sort)是建立在操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。2.代码实现public class MergeSort { //递归的分割数组。并进行排序 public void sort(int[] arr, int start, int end

2020-07-31 20:04:57 58

原创 快速排序

快速排序1.定义通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。2.代码实现public class QuickSort { public int[] sort(int[] arr){ this.quickSort(arr,0,arr.length-1); return arr; }

2020-07-28 16:45:25 64

原创 插入排序

插入排序1.定义插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。2.代码实现public class InsertionSort { //插入的位置的索引。 private int insertIndex;

2020-07-28 16:18:55 61

原创 冒泡排序实现及优化

冒泡排序实现及优化1.定义它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。2.优化1.定义一个flag初始为false 如果出现交换,将false置为true,进入下轮遍历时将flag置为false 如果循环结束flag还是false表示未交换过元素,即已经排序完毕。直接结束排序即可。3.代码实现package com.zzd.sort;impo

2020-07-26 12:08:50 93

原创 八皇后-递归算法

八皇后-递归算法1.问题表述在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。2.思路分析由于二维数组每行只放一个数组,我们可以用一个一维的数组来表示创建一个长度为8的数组,数组的值表示棋子放在第几列。下标0表示第一行,以此类推。例

2020-07-25 18:53:26 212

原创 逆波兰计算器

1.实现思路遍历表达式。碰到数字将其放到栈中。遇到计算符 ,从栈中弹出两个数用计算然后再从新入栈。a在栈中的最后一个数即为结果、2.效果转换前:2*(9+6/3-5)+4转换后:2963/+5-*4+---------------------使用逆波兰计算结果为:16.03.实现代码public class RPNCalculator { //传入一个list类型的 后缀表达式 public double Calculator(List<String&gt

2020-07-24 16:15:09 114

原创 中缀表达式转换成逆波兰表达式(后缀表达式)

中缀表达式转换成逆波兰表达式1.定义2.思路分析3.实现代码1.定义逆波兰表达式又叫做后缀表达式。逆波兰表示法是波兰逻辑学家・卢卡西维兹(J・ Lukasewicz)于1929年首先提出的一种表达式的表示方法 。后来,人们就把用这种表示法写出的表达式称作“逆波兰表达式”。逆波兰表达式把运算量写在前面,把算符写在后面。2.思路分析首先要先将字符串分割成数组,方便操作。如果是数字先暂时存储起来,如果是多位数 直接拼接。定义方法,1.判断是否是操作符 2.操作符的优先级。一个零时存储操作

2020-07-24 15:22:47 885

空空如也

空空如也

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

TA关注的人

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