自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hibernate文档笔记

字段&枚举映射@Enumerated单实体动态更新@DynamicUpdate乐观锁@Version@OptimisticLock悲观锁@Lock

2022-03-16 17:56:46 416

原创 LeetCode_数组

大致数组的遍历 485、495、414、628统计数组中的元素 645、697、448、442、41、274数组的改变、移动 453、665、283二维数组及滚动数组 118、119、661、598、419数组的旋转 189、396特定顺序遍历二维数组 54、59、498二维数组变换 566、48、73、289前缀和数组 303、304、238数组的遍历485、495、414、628:遍历在遍历中,比较某种频数的最大值或者最小值;或者在遍历中做特殊规律的运算int max_num =

2021-09-25 15:14:56 130

原创 stream peek与map的区别

//Stream<T> peek(Consumer<? super T> action); //peek接受一个Consumer参数,没有返回值,因此不会改变原流元素(对象元素除外) Stream.of("one", "two", "three", "four") .peek(String::toUpperCase) .forEach(System.out::println); ..

2021-08-03 23:13:59 399

原创 SpringMVC Validated参数验证应用在@RequestBody、@RequestParam、@PathVariable的区别

@RequestBody在DTO类属性打上各验证注解后,只需打个@Valid在@RequestBody旁边即可验证失败抛出:MethodArgumentNotValidException@RequestParam、@PathVariable使用这2个注解接受参数时,打@Valid不会起效,而是需要在Controller上打上@Validated验证失败抛出:ConstraintViolationException注意:有时会忽略了@RequestBody、@RequestParam在接受参数前,

2021-08-03 23:00:01 1056

原创 flatMap和map的区别

public class FlatMapAndMap { public static void main(String[] args) { List<String> lstApple = Arrays.asList("apple1,apple2,apple3", "apple4,apple5,apple6"); //map的作用是,对子元素做完处理后,保持子元素的汇集形态 List<String[]> lstMapRes =

2021-07-27 00:37:00 181

原创 @Resource、@Autowired、@Qualifier的区别

2种自动注入bytype:通过bean属性类型自动注入,存在多个实现类时将报错byname:通过bean名称匹配自动注入@Autowired按bytype注入时要求bean只能有一个实现类,存在多个实现类,需要搭配@Qualifier指定bean名称,即byname注入@Resource两种注入方式都支持,将先按byname查找装配,无则按bytype查找...

2021-07-21 22:58:17 166

原创 Redis实现乐观锁

文章目录描述redis操作参考链接描述“乐观锁”是一种思想,旨在监视一数据,乐观的认为该值不会发生变化,而是在过程前后对监视数据进行比对,判断其是否被修改;因此,乐观锁并不上锁!大多数乐观锁是基于数据版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过为数据库表增加一个”version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数

2020-11-15 01:47:46 109

原创 排序二叉树(BST)

文章目录描述相关操作完整代码描述英文全称:Binary Sort Tree,它满足以下3个特点:1.一个节点的左节点的值,一定小于它本身节点的值2.一个节点的右节点的值,一定大于它本身节点的值3.一个节点的左右子树,都属于排序二叉树相关操作1、树节点构造class Node { int data; Node left; Node right; public Node() { } public Node(int data) {

2020-11-07 18:35:00 917

原创 排序算法8-堆排序

文章目录描述流程代码实现性能描述该算法将序列构建成大(小)顶堆,即完全二叉树,每次构建大小顶堆后,产出目前序列的最大最小值,逐步完成排序流程1、首先将待排序列构建成完全二叉树,从该数非叶子节点开始构建大顶堆2、构建完成后,最大的元素是二叉树的根节点(序列头),将根节点和最后一个叶子节点(序列尾)交换位置,放置在序列最右,作为有序组3、将剩下的无序组继续流程1、2,直至排序结束代码实现/** * 堆排序 */public class HeapSort { public stat

2020-10-30 18:34:13 77

原创 排序算法7-基数排序

文章目录描述代码实现性能描述找出序列中值最大的元素,循环它的位数(个、十、百、千……),循环过程中依次对序列中的元素按位数排序,结束后得到有序序列代码实现/** * 基数排序(经典空间换时间) */public class RadixSort { public static void main(String[] args) { //以下为推导过程 int[] arr = {46, 1, 8, 9, 15, 233, 566}; //桶

2020-10-29 22:13:47 114

原创 排序算法6-归并排序

文章目录描述代码实现性能描述归并排序采用了“分治”的思想“分”:将大序列逐步分为一个个小序列,可以理解为递归拆分子序列的过程,递归深度为log2n“治”:再将两个有序的小序列排序编回有序的大序列,两个小序列各需要一个指针逐步向后移动,所指元素比对由小至大放入temp,完成后,再将temp中已经完成排序的大序列copy进原序列,完成本次“治”;继续递归,直至整个序列排序完成代码实现/** * 归并排序 */public class MergeSort { public static

2020-10-29 21:44:43 111

原创 排序算法5-快速排序

文章目录描述流程代码实现性能描述快速排序是对冒泡排序基础上的优化版本,它打破了冒泡排序只能比对交换相邻元素的方式,并加入了“分治”思想流程1、对一序列,选定最左边的元素作为基数p;再定义i,使i依次从左到右寻找比基数p大的元素;再定义j,使j依次从右到左寻找比基数p小的元素;当i、j每每找到,便交换i、j元素,直到i、j相遇2、将i、j相遇位置的元素与基数p所在元素进行交换,便得到元素p的左边都比p小,右边都比p大3、对元素p的左边序列和右边序列重复走流程1、流程2,直到算法结束代码实现/*

2020-10-29 18:07:31 350 2

原创 排序算法4-希尔排序

描述希尔排序是对插入排序的优化版本,它解决了当较小值出现在序列尾部,需要频繁向前比对的过程流程1、算法对序列进行分组,选取一个gap值作为分组的组数、以及步长(例如gap=5,即分为5组;每组元素相隔步长5,下标0和5一组、下标1和6一组,以此类推)2、对每组进行插入排序(其中插入排序可分为交换法和移位法,移位法效率高)3、对gap值进行模2运算,即gap / 2,并重新进行1、2步骤4、直到gap = 1,即是整个序列为一个分组,并对其进行插入排序后,算法结束代码实现/** * 希尔排序

2020-10-28 01:08:13 101

原创 排序算法3-插入排序

描述该算法维护一个有序序列,然后把无序序列中的元素,在有序序列中从后往前进行扫描,找到位置后插入。从一个元素开始,该元素可以认为已经被排序好的。在有序序列从后往前扫描的过程中,也要将已排序的元素逐个后移,为新插入的元素提供位置代码实现/** * 插入排序 */public class InsertSort { public static void main(String[] args) { int[] arr = {3, 9, -1, 10, -20};

2020-10-20 15:21:25 178

原创 排序算法2-选择排序

代码实现/** * 选择排序 * 最好最坏时间复杂度:n^2 */public class SelectSort { public static void main(String[] args) { int[] arr = {300, 900, -19, -10, -20}; //默认最小值 int min = 0; //记录最小值下标 int minIndex = 0; for (int i

2020-10-20 12:08:16 123

原创 排序算法1-冒泡排序

代码实现/** * 冒泡排序 */public class BubbleSort { public static void main(String[] args) {// int[] arr = {3, 9, -1, 10, -2}; int[] arr = {3, 9, -1, 10, 20}; //交换变量 int temp; //判断上一次是否进行了排序,若上次没有进行排序,证明排序已经提前完成,可提前跳

2020-10-19 18:30:12 117

原创 时间复杂度基本概念

计算时间复杂度的方法1、用常数1代替运行时间中的加法常数2、只保留最高阶项3、去除最高阶项的系数常见的时间复杂度1、常数阶O(1)2、对数阶O(log2n)3、线性阶O(n)4、线性对数阶O(nlog2n)5、平方阶O(n^2)6、立方阶O(n^3)7、k次方阶O(n^k)8、指数阶O(2^n)从小到大排序:O(1) < O(log2n) < O(n) < O(nlog2n) < O(n^2) < O(n^3) < O(n^k) < O(

2020-10-19 00:37:34 266

原创 八皇后问题

文章目录解题思路代码实现解题思路使用递归回溯法进行解题,递归回溯法区别于穷举法(穷举法便是把8*8棋盘所有摆放放置都试一遍,即8的8次方,共有16777216种摆法,并保留符合要求的摆法),并优于穷举法。当递归到某层失败后,将回溯到上一层递归,很多情况下避免了很多失败的摆法这种方法从棋盘的第一行开始尝试摆放第一个皇后,摆放成功后,递归一层,再遵循规则在棋盘第二行来摆放第二个皇后。如果当前位置无法摆放,则向右移动一格再次尝试,如果摆放成功,则继续递归一层,摆放第三个皇后…如果某一层看遍了所有格子,都无

2020-10-16 22:23:50 159 1

原创

文章目录定义基本实现测试定义栈(Stack)是一种线性存储数据结构,它具有“先进后出”(即LIFO)的特点,且添加(入栈)或者删除(出栈)数据只能在一端进行(即栈顶)基本实现class StackArray { //存放数据的数组 private int[] stack; //栈顶 private int top = -1; //栈大小 private int maxSum = 0; //构建器 public StackArray(i

2020-10-14 20:52:43 84

转载 StackOverFlowError与OutOfMemoryError区别

1、stackoverflow:每当java程序启动一个新的线程时,java虚拟机会为他分配一个栈,java栈以帧为单位保持线程运行状态;当线程调用一个方法是,jvm压入一个新的栈帧到这个线程的栈中,只要这个方法还没返回,这个栈帧就存在。如果方法的嵌套调用层次太多(如递归调用),随着java栈中的帧的增多,最终导致这个线程的栈中的所有栈帧的大小的总和大于-Xss设置的值,而产生生StackOverflowError溢出异常。2、outofmemory:2.1、栈内存溢出java程序启动一个新线程时

2020-08-05 18:58:03 751

原创 Docker学习架构

Docker在centos上的安装image、容器、dockerfileimage和容器的关系构建image的两种方式dockerfile语法image的发布bridge、link命令容器之间的link容器端口映射多容器应用网络通信和部署数据持久化Data Volume(一般数据持久化)Bind Mounting(数据同步)docker compoes基于yum文件的使用水平扩展、负载均衡...

2020-08-02 15:13:15 56

原创 单向环形链表与约瑟夫问题

单向环形链表(CircleSingleLinkedList)单向环形链表,也就是单向循环链表,也就是在单链表的基础上,将尾节点的next指针指回头节点,形成一个环Node节点实现和单链表一样的实现,没什么好说的额/** * 链表节点 */class Node2 { private int no; private Node2 next; public Node2(int no) { this.no = no; } public int

2020-05-10 12:51:45 109

原创 双向链表

双向链表(DoubleLinkedList)相比单链表,双向链表中的每个节点都多了个pre指针,并指向前一个节点头结点不可动且不存储数据,仅做指向作用,pre不指向任何节点以下是其增删改查的基本实现package com.cxf.datastructures.linkedlist;/** * 双向链表 */public class DoubleLinkedListDemo { public static void main(String[] args) { Doub

2020-05-08 19:26:08 143 1

原创 单链表

单链表(singleLinkedList)头结点不可动且不存储数据,仅做指向作用单链表每个节点中包含next指针,并指向下一个节点,以此类推以下是其增删改查的基本实现代码实现package com.cxf.datastructures.linkedlist;/** * 单链表 */public class SingleLinkedListDemo { public st...

2020-05-05 12:52:32 95

原创 Vue学习笔记

计算属性computed与方法methods对比computed内部具有缓存,当页面重复执行时只会执行一次;除非依赖的数据发生变动,否则不会重新计算methods中的函数调用不具有缓存,使用多少次,执行多少次;依赖的数据发生变动,重新计算通过methods中定义方法,供@click调用时,参数问题1、当方法不需要参数时,可省略();若需传递一个参数,但未传递,则会将原生事件event传递进...

2020-04-19 14:07:19 155

原创 队列

队列(queue)一种只允许一端进行添加数据(入队),另一端进行删除数据(出队)的线性数据结构;它遵循“先进先出”原则,即FIFO;以下Java代码使用数组模拟实现队列1 基本队列首先,基本队列起码都具有四个属性:maxSize 队列容量front 队列头指针(初始值为 -1)rear 队列尾指针(初始值为 -1)arr 存放队列数据的数组注意:front指向的是头数据的前...

2020-04-18 14:10:52 128

原创 稀疏数组

应用场景当数组中大部分元素的值都为同一值时(如0),可转换为稀疏数组(如棋盘、地图等)处理方法记录数组共几行几列,有多少个不同的值将不同的值的元素的行、列、值记录到一个小规模数组中,从而缩小规模处理思路代码实现package com.cxf.datastructures.sparsearray;public class SparseArray { public ...

2020-03-02 23:51:33 73

原创 数据结构大致

1.线性结构和非线性结构数据结构包括:线性结构和非线性结构1.1线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系(如数组、链表、队列、栈)线性结构又分为顺序储存结构(如数组)和链式储存结构(链表)顺序储存的线性表又叫顺序表,其中的储存数据是连续的链式储存的线性表叫链表,储存数据不一定是连续的,元素中储存着相邻元素的地址信息1.2非线性结构其特点是数据元素之间存...

2020-03-01 23:46:48 93

原创 springboot2.2.x版本 使用restful风格 发送delete请求 405错误

今天学习springboot2.2.2下的Restful风格CRUD操作时,发现发送delete请求时,一直报405错误<form id="deleteEmpForm" method="post"> <input type="hidden" name="_method" value="delete"/></form>@DeleteMapping(...

2019-12-12 16:46:35 951 5

原创 父类子类初始化顺序

父类中静态成员变量和静态代码块(只加载1次)子类中静态成员变量和静态代码块(只加载1次)父类中普通成员变量和代码块,父类的构造函数子类中普通成员变量和代码块,子类的构造函数...

2019-11-29 00:45:25 97

原创 反射简单应用实例---分析类的能力

package com.cxf.reflectionDemo;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;import java.util.Scanner;/*...

2019-11-15 14:13:39 82

原创 重写equals方法规范

规则:注意点:下图重写equals方法重写equals、hashCode、toString(雇员经理例子)Employee类package com.cxf.EqualsHashCodeDemo;import java.time.LocalDate;import java.util.Objects;public class Employee { private ...

2019-11-15 14:11:31 186

原创 Overload与Override(覆盖)的区别

重载方法重写方法方法签名参数列表必须修改不能修改返回类型可以修改子类返回值[层次] <= 父类返回值[层次]抛出异常可以修改子类抛出异常范围 <= 父类抛出异常范围方法权限修饰符可以修改子类权限 >= 父类权限测试代码如下:Parent类public class Parent { @Override ...

2019-11-15 14:09:05 91

原创 三种获取键盘输入方法

//方式1:使用Scanner类(还是这个简单好用) Scanner in = new Scanner(System.in); System.out.println("输入你的名字"); String name = in.nextLine(); System.out.println("输入你的年龄"); int a...

2019-11-15 12:13:26 1192

原创 Java基础程序设计结构的“一些常忘”

整型用int类型表示一百万可以这么写(since 1.7)int a = 1_000_000;System.out.println(a);//1000000可用0b或0B表示二进制(同样since 1.7)byte a = 0b0000_0010;System.out.println(a);//2如出现:byte a = (byte) 200;System.out.pri...

2019-11-15 12:12:45 84

原创 JAVA反射

Class类对象的三种实例化模式Object类支持 根据实例化对象获取Class对象(需实例化相关对象;需导包)JVM直接支持 采用 “ 类.class ” 的形式实例化(不用实例化相关对象;需导包)Class类支持(不用实例化相关对象;不用导包)反射实例化对象Class.newInstance()方法相当于new , 但实例化时只能调用对应无参构造函数,不能准确进行实例,...

2019-10-14 22:39:43 119

原创 Comparable与Comparator的区别

java.lang.Comparable是类定义时实现的父接口,主要用于定义排序规则,里面只有一个compareTo()方法;java.util.Comparator是挽救的比较器操作,需要设置单独的比较器规则类实现排序,里面有compare()方法。使用时以Comparable为主!...

2019-10-12 16:38:48 88

原创 内部类一些

思考:为什么要在类中破坏类结构,去放置另一个类?这样就省去了类与类之间,为了得到对方的私有域而进行麻烦的对象引用,再进行调用getter、setter方法...

2019-10-12 01:51:01 46

原创 抽象、接口一些常忘

抽象定义抽象类时不能用final;抽象类中可提供构造方法(遵循继承中构造方法调用原则);抽象类中可以没有抽象方法;抽象类中的抽象方法不能省略abstract关键字;抽象类中可以出现static,并直接通过类名调用;接口命名规范:区分类名,接口名前+I;interface IMessage{ }接口中所有属性默认均为 public static final ,可省略;...

2019-10-12 00:43:35 83

原创 《Java核心技术卷1》

第3章 Java的基础程序设计结构整型用int类型表示一百万可以这么写(since 1.7)int a = 1_000_000;System.out.println(a);//1000000可用0b或0B表示二进制(同样since 1.7)byte a = 0b0000_0010;System.out.println(a);//2如出现:byte a = (byte) 2...

2019-09-26 01:36:45 1542

空空如也

空空如也

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

TA关注的人

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