自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Map的遍历

1、for循环Entry/*** 最常见也是大多数情况下用的最多的,一般在键值对都需要使用 */Map <String,String>map = new HashMap<String,String>();map.put("熊大", "棕色");map.put("熊二", "黄色");for(Map.Entry<String, String> entry : map.entrySet()){ String mapKey = entry.getKey()

2021-05-17 15:06:08 145

原创 IDEA注释设置:从当前鼠标位置开始注释快捷键

在写xml或html注释时,经常出现注释出来的时候都是顶格的,前面包含一大段空格,并没有在鼠标位置开始。可在设置中进行修改,其他代码格式修改方法类似。

2021-05-16 20:14:28 1381

原创 Spring中使用Validation校验参数

在实际项目中经常需要对前段传来的数据进行校验,最普通的方法就是使用 if/else 对每个参数进行校验。@RestController@RequestMapping("/api/person")public class PersonController { @PostMapping public ResponseEntity<PersonRequest> save(@RequestBody PersonRequest personRequest) { if

2021-05-13 17:12:34 317

原创 Mybatis-Plus自动生成的数据库id过长

添加链接描述

2021-05-10 19:21:44 920

原创 面试题-MySQL

1、MySQL有哪几种数据存储引擎?有什么区别?MySQL中通过 show ENGINES 指令可以看到所有支持的数据库存储引擎。最为常用的就是 MyISAM 和 InnoDB 。MyISAM 和 InnoDB 的区别存储文件。 MyISAM 每个表有两个文件,数据文件(MYD)和索引文件(MYISAM)。而 InnoDB 每个表只有一个文件 idb 。InnoDB 支持事务,支持行级锁,支持外键InnoDB 支持XA事务InnoDB 支持部分回滚 SAVEPOINT...

2021-05-05 15:00:51 78

转载 IDEA-从 Windows 过度到 Mac 必备快捷键对照表

连接

2021-04-30 16:48:23 197 1

原创 SpringBoot 开启定时任务

用Redis记录博客阅读量时,需要使用定时任务将数据更新到MySQL中使用SpringBoot创建定时任务,目前主要有以下三种创建方式:一、基于注解(@Scheduled)二、基于接口(SchedulingConfigurer) 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库中读取指定时间来动态执行定时任务,这时候基于接口的定时任务就派上用场了。三、基于注解设定多线程定时任务这次仅尝试了使用 @Scheduled 的方法1. 静态:基于注解基于注解@Scheduled默认为单线.

2021-04-30 14:20:41 144

原创 Hexo 的 front-matter 格式

Front-matter 是文件最上方以 --- 分隔的区域,用于指定个别文件的变量,举例来说:---title: Hello Worlddate: 2013/7/13 20:46:25---以下是预先定义的参数,您可在模板中使用这些参数值并加以利用。参数描述默认值layout布局config.default_layouttitle标题文章的文件名date建立日期文件建立日期updated更新日期文件更新日期comments开启文

2021-04-28 21:33:26 424

原创 yilia主题创建标签(tags)首页

1、新建页面新建一个页面,命名为 ags 。命令如下:hexo new page "tags"2、将页面的类型设置为 tags在 blog\source\tags\ 下编辑刚新建的页面,将页面的类型设置为 tags ,主题将自动为这个页面显示 分类|标签云。页面内容如下:---title: 标签date: 2016-10-21 11:59:10type: "tags"---注意:如果有启用多说 或者 Disqus 评论,默认页面也会带有评论。需要关闭的话,请添加字段 comments

2021-04-28 21:26:30 402

原创 逻辑运算符的短路效应

在要求不能使用for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)的情况下,应该使用逻辑运算符的短路效应进行判断:常见的逻辑运算符有三种,即 “与 && ”,“或 || ”,“非 ! ” ;而其有重要的短路效应,如下所示:if(A && B) // 若 A 为 false ,则 B 的判断不会执行(即短路),直接判定 A && B 为 falseif(A || B) // 若 A 为 true ,则 B 的判

2021-04-28 18:25:22 792

原创 面试题-Spring

1. 什么事Spring?谈谈你对IOC和AOP的理解。Spirng:是一个企业级Java应用框架,他的作用主要是简化软件的开发以及配置的过程,简化项目部署环境。Spring的优点:Spring低入侵设计,对业务代码的污染非常低。Spirng的DI机制将对象之间的关系交由框架处理,减少组件的耦合。Spring提供了AOP技术,支持将一些通用的功能进行集中式管理,从而提供更好的复用。Spring对于主流框架提供了非常好的支持。IOC就是控制反转,指创建对象的控制权转移给Spirng来进行管理

2021-04-27 13:54:07 102

原创 Redis 命令参考

挖坑

2021-04-26 22:12:10 57

原创 3、共享模型之管程

本章小结本章我们需要重点掌握的是分析多线程访问共享资源时,哪些代码片段属于临界区使用 synchronized 互斥解决临界区的线程安全问题掌握 synchronized 锁对象语法掌握 synchronzied 加载成员方法和静态方法语法掌握 wait/notify 同步方法使用 lock 互斥解决临界区的线程安全问题掌握 lock 的使用细节:可打断、锁超时、公平锁、条件变量学会分析变量的线程安全性、掌握常见线程安全类的使用了解线程活跃性问题:死锁、活锁、饥饿应用方面

2021-04-26 15:23:30 125

原创 为什么一个java源文件中只能有一个public类

一个".java"源文件中可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同。一个编译单元(java文件)可以存在多个类,在编译时产生多个不同的.class文件,.class文件便是程序运行的数据来源。java将public类作为每个编译单元的数据接口,只能有一个,不然不能处理存在多个类的java文件。当一个编译单元(java文件)有多个非public类时,运行时需要对数据来源进行选择

2021-04-25 21:06:00 1276

原创 进制转换

进制代表数字进位的规则。这个规则说明了两个事情:每个位置数字的范围每个位置数字代表的数量n 进制转十进制以7进制为例:每个位置有0~6一共7个数字每个位置从右到左依次代表x7^0,x 7^1, x *7^2 …x * 7^ n,其中x代表每个位置的数字,n代表距离最右测的距离。那么7进制123 = 3 * 7^ 0 + 2 *7 ^ 1 + 1 * 7 ^ 2 即十进制66十进制转 n 进制十进制66要转化为7进制表示,则从最右边开始1)(66 / 7^0) % 7 = 最低位

2021-04-25 13:10:26 316

原创 2、 Java 线程

2.1 创建和运行线程方法一,直接使用 Thread// 创建线程对象Thread t = new Thread() { public void run() { // 要执行的任务 }};// 启动线程t.start();方法二,使用 Runnable 配合 Thread把【线程】和【任务】(要执行的代码)分开Thread 代表线程Runnable 可运行的任务(线程要执行的代码)Runnable runnable = new Runnable() { public v

2021-04-23 21:17:19 138

原创 1、进程与线程

1.1 进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360 安全卫士等)线程一个进程之内可以分为一到多个线程。一个线程就

2021-04-23 20:46:15 94

原创 Hexo-Yilia 配置问题

我会写的!会写的!点就对了

2021-04-22 21:51:23 117

原创 Hexo常用命令

基础命令init$ hexo init [folder]新建一个网站。如果没有设置 folder ,Hexo 默认在目前的文件夹建立网站。new$ hexo new [layout] <title>新建一篇文章。如果没有设置 layout的话,默认使用 _config.yml中的 default_layout 参数代替。如果标题包含空格的话,请使用引号括起来。参数描述-p, --path自定义新文章的路径-r, --replace如果存在同名文章,

2021-04-22 09:25:34 183

原创 Java 字符串比较大小

总结compareTo() 按字典顺序比较两个字符串compareTo()返回值: int返回值类型分别有三种,小于0,等于0,大于0如果字符串相等返回值0;如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值)(负值前字符串的值小于后字符串,正值前字符串大于后字符串);如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方全比较完,这时就比较字符的长度。简介按字典顺序比较两个字符串。

2021-04-21 18:39:30 2826

转载 设计模式

添加链接描述

2021-04-20 20:47:32 49

原创 Java数组复制的四种方法

数组的复制,有四种方法:forcloneSystem.arraycopyarrays.copyof均是浅拷贝1、for//源数组int[] source = {10,30,20,40};//目标数组int[] target = new int[source.length];for (int i = 0;i < source.length;i++){ target[i] = source[i];}2、cloneprotected native Object cl

2021-04-20 13:08:59 1949 1

原创 IDEA SpringBoot项目热部署

一、开启IDEA的自动编译(静态)具体步骤:(win)打开顶部工具栏 File -> Settings -> Default Settings -> Build -> Compiler 然后勾选 Build project automatically 。(mac)打开顶部工具栏 IntelliJ IDEA -> Preferences -> Build, Execution, Deployment -> Compiler 然后勾选 Build proj

2021-04-19 11:03:42 219 1

原创 异或运算(XOR)

1、含义异或运算(XOR)是 exclusive OR 的缩写。英语的 exclusive 意思是"专有的,独有的",可以理解为 XOR 是更单纯的 OR 运算。OR 运算的运算子有两种情况,计算结果为true。(1)一个为 true,另一个为 false;(2)两个都为 true。上面两种情况,有时候需要明确区分,所以引入了 XOR。XOR 主要用来判断两个值是否不同。XOR 一般使用插入符号(caret)^表示。如果约定0 为 false,1 为 true,那么 XOR 的运算真值表如下。

2021-04-18 13:02:00 39284 2

原创 字符数组反转

1、双指针 public static void reverseCharArray(char[] cs) { int n = cs.length; int begin = 0; int end = n - 1; char temp; while (begin < end) { temp = cs[begin]; cs[begin] = cs[end]; cs[e

2021-04-18 12:43:28 78

原创 lombok-@EqualsAndHashCode(callSuper = true)注解的使用

该注解用于有继承关系的子类对象之间进行比较的时候:不加该注解的影响:子类对象属性值一致,但其继承的父类对象属性值不一致,在比较的时候会出现比较结果不对的情况。这是因为在@Data生成的 equals 方法,只对该类里自有的属性进行了比较下面看下加与不加注解的时候编译后的子类 equals 方法(1)无 @EqualsAndHashCode(callSuper = true) 注解public boolean equals(Object o){ if (o == this) {

2021-04-16 16:04:08 733

原创 7、归并排序(Merge Sort)

将一组数分为两半排序合并这两半数排序分析:时间复杂度:最好:O(nlogn),顺序最坏:O(nlogn),逆序空间复杂度:O(n)稳定代码public static void mergeSort(int[] arr) { if (arr.length == 0) return; int[] result = new int[arr.length]; mergeSort(arr, 0, arr.length - 1, result);}// 对 a.

2021-04-15 13:59:39 122

原创 6、快速排序(Quick Sort)

挑一个元素(pivot)【基准值】小于pivot的值放前面,大于pivot的值放后面分析:时间复杂度:最好:O(nlogn),基准值每次为中间值最坏:O(n^2),基准值每次为极值空间复杂度:O(logn)不稳定代码一:public static void quickSort(int[] nums, int left, int right) { if (left >= right) return; int x = left; int y = righ.

2021-04-13 19:49:33 253

原创 优先队列重写比较器

PriorityQueue<Integer> queue = new PriorityQueue<>(new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2){ //如果认为o1优先级比o2高,先出o1 compare返回<0的整数 //如果认为o2优先级比o1高,先出o2 compare返回>0的整数

2021-04-12 19:01:58 453

原创 5、堆排序(Heap Sort)

5、堆排序(Heep Sort)用数列构建出一个大顶堆,取出堆顶的数字;调整剩余的数字,构建出新的大顶堆,再次取出堆顶的数字;循环往复,完成整个排序。分析:时间复杂度:最好:O(nlogn)最坏:O(nlogn)空间复杂度:O(1)不稳定代码public static void heapSort(int[] arr) { // 构建初始大顶堆 buildMaxHeap(arr); for (int i = arr.length - 1;

2021-04-07 08:48:03 134 1

原创 4、希尔排序(Shell Sort)

4、希尔排序(Shell Sort)一种高效的插入排序希尔增量 gap = length / 2魅族进行插入排序分析:时间复杂度:最好:O(nlogn),顺序最坏:O((nlogn)^2),逆序空间复杂度:O(1)不稳定代码public static void shellSort(int[] arr) { // 间隔序列,在希尔排序中我们称之为增量序列 for (int gap = arr.length / 2; gap > 0; gap /= 2)

2021-03-24 13:17:57 104

原创 3、插入排序(Insertion Sort)

3、插入排序(Insertion Sort)找到数的位置插入数到已排序序列分析:时间复杂度:最好:O(n),顺序情况最坏:O(n^2),逆序情况空间复杂度:O(1)稳定代码移动元素public static void insertSort(int[] arr) { // 从第二个数开始,往前插入数字 for (int i = 1; i < arr.length; i++) { int currentNumber = arr[i];

2021-03-22 09:51:31 82

原创 2、选择排序(Selection Sort)

2、选择排序(Selection Sort)找到最小的元素放到已排序序列的末尾分析:时间复杂度:最好:O(n^2),顺序情况最坏:O(n^2),逆序情况空间复杂度:O(1)不稳定代码public static int[] selectionSort(int[] nums) { if (nums == null || nums.length < 2) { return nums; } // 已排序序列末尾位置 int sm

2021-03-21 22:39:46 66

原创 1、冒泡排序(Bubble Sort)

1、冒泡排序(Bubble Sort)比较相邻元素大的元素后置分析:时间复杂度:最好:O(n),顺序情况最坏:O(n^2),逆序情况空间复杂度:O(1)稳定内存交换代码public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) {

2021-03-21 22:17:05 345

原创 3、面向对象(二)

6.可见性修饰符和数据域封装可见性修饰符包括 public、private、protected 和默认修饰符可见性修饰符 public 表示类成员可以在任何类中访问。可见性修饰符 private 表示类成员只能从自身所在的类中访问。如果不加任何可见性修饰符,则称为默认修饰符,表示类成员可以在同一个包里的任何类中访问,此时也称为包私有或包内访问。可见性修饰符 protected 的可见性在 public 和默认之间,表示类成员可以在同一个包里的任何类中访问,也可以在该类的子类中访问。子类可以覆盖

2021-03-02 16:13:03 229

原创 2、面向对象

1.面向对象概念面向对象和面向过程的区别面向过程:将问题分解成步骤,然后按照步骤实现函数,执行时依次调用函数。数据和对数据的操作是分离的。面向对象:将问题分解成对象,描述事物在解决问题的步骤中的行为。对象与属性和行为是关联的。面向过程的优点是性能比面向对象高,不需要面向对象的实例化;缺点是不容易维护、复用和扩展。面向对象的优点是具有封装、继承、多态的特性,因而容易维护、复用和扩展,可以设计出低耦合的系统;缺点是由于需要实例化对象,因此性能比面向过程低。对象和类对象是现实世界中可以明确标识的实体

2021-02-28 10:14:03 164 1

原创 1、基础语法

1.基本数据结构Java 的基本数据类型有 8 种,包括 6 种数字类型、1 种字符类型和 1 种布尔类型。数字类型包括 4 种整数类型和 2 种浮点数类型,4 种整数类型是 byte、short、int 和 long,2 种浮点数类型是 float 和 double。字符类型是 char,用于表示单个字符。Java 使用统一码对字符进行编码。布尔类型是 boolean,包括 true 和 false 两种取值数字类型直接量直接量是在程序中直接出现的常量值。将整数类型的直接量赋值给整数类型的变

2021-02-27 10:51:35 1070

空空如也

空空如也

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

TA关注的人

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