自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (5)
  • 收藏
  • 关注

原创 MySQL索引底层结构

当数据库的数量太大,sql查询速度比较慢的时,大部分人应该都回给相关的字段添加索引,那索引是什么呢?本文以mysql数据库为例进行相关的闲谈;索引是什么?索引是一种数据结构,一个高效获取数据的排好序的数据结构;常见的索引数据结构:二叉树红黑树Hash表B-Tree我们知道MySQL数据库底层使用的索引数据库结构是B树中的B+树;那为什么不是其他几种数据类型呢?假设我们要存储的数据如下:col1col2135217324445515

2020-10-31 16:02:41 386 2

原创 MySQL之索引下推

在MySQL5.6之前的版本,这个查询只能在联合索引里匹配到名字是 ‘LiLei’ 开头的索引,然后拿这些索引对应的主键逐个回表,到主键索。索引下推会减少回表次数,对于innodb引擎的表索引下推只能用于二级索引,innodb的主键索引(聚簇索引)树叶子节点上保存的是全。MySQL 5.6引入了索引下推优化,可以在索引遍历过程中,对索引中包含的所有字段先做判断,过滤掉不符合条件的记录之后再回表,可。滤age和position这两个字段,拿着过滤完剩下的索引对应的主键id再回表查整行数据。

2022-10-17 11:40:40 321 1

原创 MapStruct进行对象转换

平时开发中会遇到各自对象之间的转换,之前需要自己写大量的set、get方法去进行转换赋值,使用MapStruct可以替代传统的get和set方法的转换,并且效率相当,省去了手写转换方法的过程,一定程度上提高了开发效率。

2022-09-02 10:06:35 1142

原创 IDEA开发中实用插件之一翻译插件Translation

平常开发过程中有时候需要调用一些底层的API,或者在看源码的时候,需要理解其意思;对于英语不好的实在太难了;在IDEA中setting->Plugins中搜索Translation,就可以看到对应的插件,就可以下载安装,重启IEDA就可以用啦;使用方法:例如我们看ExecutorService中一些方法的意思时;选中需要翻译的英语右键选择红色箭头指向的选项,或者快捷键Ctrl+Shift+Y就可以进行翻译;效果:当然如果不想选中,直接在点击英文部分右键选择Traslate Documn

2022-03-18 15:14:38 27770 8

转载 Mysql日期类型DATETIME和TIMESTAMP区别

在日常数据库设计中,几乎每张业务表都带有一个日期列,用于记录每条记录产生和变更的时间。比如用户表会有一个日期列记录用户注册的时间、用户最后登录的时间。又比如,电商行业中的订单表(核心业务表)会有一个订单产生的时间列,当支付时间超过订单产生的时间,这个订单可能会被系统自动取消。日期类型虽然常见,但在表结构设计中也容易犯错,比如很多开发同学都倾向使用整型存储日期类型,同时也会忽略不同日期类型对于性能可能存在的潜在影响。所以你有必要认真看看这篇文章,举一反三,在自己的业务中做好日期类型的设计。日期类型MyS

2022-03-18 14:32:12 3821

转载 Java之AQS

前言AQS( AbstractQueuedSynchronizer )是一个用来构建锁和同步器(所谓同步,是指线程之间的通信、协作)的框架,Lock 包中的各种锁(如常见的 ReentrantLock, ReadWriteLock), concurrent 包中的各种同步器(如 CountDownLatch, Semaphore, CyclicBarrier)都是基于 AQS 来构建,所以理解 AQS 的实现原理至关重要,AQS 也是面试中区分侯选人的常见考点,我们务必要掌握,本文将用循序渐近地介绍 AQ

2022-03-07 17:16:26 1134 1

转载 Jackson处理Map集合key为对象的情况

当使用 jackson 序列化 Map< ObjectA, ObjectB> 对象时,ObjectA 默认会以 toString 的方式来序列化,而在反序列化时,则会直接失败。这个问题,该如何解决呢?jackson 提供额外的接口供我们扩展,网上以 2.x 版本为例的解决方案很多,1.x 的比较少,这里主要说 1.x 版本的解决方案。在 jackson 里提供了 JsonSerializer 和 KeyDeserializer 抽象类,针对需要特殊处理的对象 ObjectA,提供对应的实现类

2022-01-13 14:48:38 1182

转载 @JsonCreator 注解使用

该注解用在对象的反序列时指定特定的构造函数或者工厂方法。在反序列化时,Jackson默认会调用对象的无参构造函数,如果我们不定义任何构造函数,Jvm会负责生成默认的无参构造函数。但是如果我们定义了构造函数,并且没有提供无参构造函数时,Jackson会报错:com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.liyao.model.Person` (although at

2022-01-13 10:06:17 2935

原创 java8重复注解

在java8之前,如果需要在同一个元素上使用多个相同类型的注解,需要借助注解“容器”来实现.例如:@TestRepeatables({ @TestRepeatable(name = "test1"), @TestRepeatable(name = "test2")} )public class TestAnnotation1 {}java8开始引入了新特性:重复注解在我们定义需要重复的注解时,使用@Repeatable注解表示对应的注解是可重复的。在上面的例子中我们

2021-12-21 11:19:24 1255

原创 IDEA更改git远程仓库地址

最近项目地址迁移,需要更改开发的远程git仓库地址。步骤:1.idea中选择Git->Mange Remotes可以看到当前的git的远程地址信息如下:2.双击对应的git远程地址(红色框的地方)3.将URL中的值改成最新的项目远程仓库地址即可,OK保存...

2021-12-20 10:42:11 16910 1

原创 Redis学习笔记-String底层实现SDS

SDS结构:len:记录字符串的长度,可以直接获取字符串的长度,时间复杂度为O(1).alloc:分配给字符数组的空间长度,可以通过alloc-len获得剩余的空间大小,来判断空间是否满足修改需求,如果不满足,就自动将SDS的空间扩展到需要修改的大小,然后执行相应的修改操作,不会出现缓冲区溢出的问题。flags表示不同的类型的SDS,有5种:sdshdr5 sdshdr8 sdshdr16 sdshdr32 sdshdr64;buf[]:存储实际的数据,既可以字符串,也可以保持二进制相比

2021-12-03 09:41:46 287

原创 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column问题修复

details:"Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'geeznv_example_test.t_0.到货日期' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by"

2021-09-08 11:39:38 355

原创 SpringBoot国际化乱码问题解决

1.问题现象由于项目需要支持国际化,在测试过程中发现国际化提示信息乱码;现象如下:项目中i18n目录下messages_fr_FR.properties文件中对应词条如下:Format incorrect du numéro de téléphone可以发现法语中带有符合的字母都乱码了,那怎么解决这种乱码问题?2.解决方法我们在国际化话的时候,不管什么语种的词条,我们统一将其转换成ASCII就好;如何转ASCII码呢?有很多在线转的网址,我用的是:在线转ASCII码调用接口效果如下

2021-09-01 10:23:10 1313

原创 MySQL执行计划 Extra出现Using index condition 原因与解决方法

Extra中using index condition代表查询条件中虽然出现了索引列,但是有部分条件无法使用索引,会根据能用索引的条件先搜索一遍再匹配无法使用索引的条件。执行如下sql的执行计划结果:EXPLAIN SELECT * FROM tableName WHERE (name= ‘123123’ AND owner_id = 1);执行如下sql的执行计划结果:EXPLAIN SELECT * FROM tableName WHERE (name= ‘123123’ AND owner_

2021-07-29 16:26:18 14397 4

原创 查询哪些 B+树索引未被使用过

查询哪些 B+树索引未被使用过,在 MySQL 数据库中,可以通过查询表sys.schema_unused_indexes,查看有哪些索引一直未被使用过,可以被废弃。SELECT * FROM sys.schema_unused_indexesWHERE object_schema != 'performance_schema' and object_schema = '对应的数据库实例';...

2021-07-19 19:57:06 228

原创 SpringBoot中@Value注解设置默认值

在SpringBoot项目读取配置文件中读取值,我们会用到@Value注解来读取配置值,例如我们在配置文件中配置了服务器web域名为xxx.com的配置:server.web.domain=xxx.com在代码中读取其配置项:@Value("${server.web.domain}")private String domain;如果这个配置项在配置文件中忘记配置或者有的场景中我们不需要配置这项的时候,在项目启动的时候就会报错。报错信息如下:Caused by: java.lang.Ille

2021-07-19 19:41:40 34634

原创 Lombok中@Builder和@Data注解使用注意

Builder 使用设计模式中的创建者模式又叫建造者模式。简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节,但却可以精细地控制对象的构造过程。在对应实体类上使用@Builder注解标注,可以初始化所需要的实例对象: User.builder() .id(1) .name("zhangsan") .age(15) .build();@Data 注解的主要作用是提高代码的简洁,使用这个注解可以省

2021-06-23 17:41:11 3843

原创 初学SpringCloud(三)- Ribbon是什么

1.Ribbon是什么SpringCloud Ribbon是基于Netflix Rbbion实现的一套客户端负载均衡的工具。简单来说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实

2021-06-20 17:17:06 295

原创 初学SpringCloud(二)- Eureka是什么

1.Eureka是什么Eureka是Netfix的一个子模块,也核心模块之一,Eureka是一个基于REST的服务,用于定位服务,来实现云端中间层服务发现和故障转移。服务注册与发现对应微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件了。功能类似dubbo使用到的注册中心,例如Zookeeper;SpringCloud 封装了Netfix公司开发的Eureka模块来实现服务注册和发现。Eureka采用了C-S的设计架构,Eureka

2021-05-29 15:05:34 283 3

原创 SpringBoot多模块yml文件读取

在SpringBoot项目读取yml配置文件中参数时,使用@Value("${friend.name}") 去读取配置中参数值。配置如下:friend: name: zhangsan age: 20项目启动时报错:java.lang.IllegalArgumentException: Could not resolve placeholder 'friend.name' in value "${friend.name}"检查配置是否写错,k: v参数中是否带有空格,写法是正常的,又检查

2021-05-27 09:52:12 4064

原创 初学SpringCloud(一)- SpringCloud是什么

SpringCloud是分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称“微服务全家桶”。官网:https://spring.io/projects/spring-cloudSpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。Spring Cloud架构亮点:SpringCloud与SpringBoo

2021-05-23 11:04:41 143 3

原创 将MySQL数据库中的表结构导入到excel

在工作中有时候需要交付一些文档,其中比如数据库方面的数字字典需要用一个excel表。环境初始化:创建我们需要的表,如:user表;CREATE TABLE `user` ( id INT ( 11 ) NOT NULL AUTO_INCREMENT, user_name VARCHAR ( 10 ) NOT NULL DEFAULT '' COMMENT '用户名称', `password` VARCHAR ( 8 ) NOT NULL COMMENT '密码', create_timesta

2021-03-09 15:22:50 644

原创 MySql之varchar与char的区别

区别:1.定长和变长char 表示定长,长度是固定的,varchar表示变长,即长度可变。char如果插入的长度小于定义长度时,则用空格填充;varchar插入时长度小于定义长度时,还是按实际长度存储,插入多长就存多长。由于char长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,是以空间换取时间效率。varchar则刚好相反,以时间换空间。char存储定长数据很方便,char字段上的索引效率

2021-02-02 14:09:55 805 2

原创 linux用cat查看日志文件

cat指令 查看文件内容,是以只读的内容打开常用命令根据关键字查看日志cat xxx.log | grep "关键字"根据关键字查看后10行日志cat xxx.log | grep "关键字" -A 10根据关键字查看前10行日志cat xxx.log | grep "关键字" -B 10根据关键字查看前后10行日志,并显示出行号(-n)cat -n xxx.log | grep "关键字" -C 10查看日志前 10 行cat xxx.log | head -n 10查看

2021-01-13 14:00:10 12281 1

原创 排序算法之快速排序

基本介绍快速排序是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对两部分数据分别进行快速排序,整个排序过程可以递归进行,以达到整个数据变成有序序列。案例分析要求将数组[-9,78,0,23,-567,70]从小到大进行排序。假设我们取数组中间一个数为参照,如以0为参照,步骤如下:初始化左右指针0,5,选择(0+5)/2=2的下标值为0为参照,左边放比0小的,右边放比0大的,黑色指针此时-9和0比较,

2020-12-28 10:55:38 218

原创 SpringBoot项目中优雅处理参数校验失败信息

在springboot项目中对前端请求的参数进行校验常用的注解:@NotBlank,@NotNull,@Valid示例:public class UserRequest { @NotNull(message = "id不能为空") private long id; @NotBlank(message = "名字不能为空") @Length(min = 1, max = 50, message = "名字名称长度不能大于50") @Pattern(regexp

2020-12-25 14:37:15 3058 1

原创 排序算法之希尔排序

基本介绍希尔排序是希尔于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进后的高效版本,也称为缩小增量排序。基本思想在排序算法之插入排序中插入排序很循规蹈矩,不管数组分布是怎么样,都会一步一步的对元素进行比较,移动,插入;假设这种序列[1,2,3,4,5,0],数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按组进行插入排序操作,直至增量为

2020-12-13 10:53:43 499 1

原创 排序算法之插入排序

基本介绍插入排序是对一对序列以插入的方式寻找该元素的适当位置,以达到排序的目的。基本思想把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次和有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。案例分析初始数据: [ 3, 1, -1, 2, 4]将数组开始分为 {3} ,{1,-1,2,4},然后将1和3进行比较,3比1大,则将3插入1前面,一轮插入排序后,数组

2020-12-12 11:35:39 323

转载 synchronized锁优化

Java提供了关键字synchronized,方便快捷的解决的线程安全问题。那么synchronized真的就那么好用吗,就没有什么缺点或者需要优化的地方吗?本文就要介绍一下synchronized锁优化。自旋锁和适应自旋锁锁消除锁粗化偏向锁、轻量级锁、重量级锁锁的膨胀过程1.为什么需要优化?synchronized监视器锁在互斥同步上对性能的影响很大。Java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统的帮忙,这就要从用户态转换到内核态,状态转换需要花费

2020-12-10 16:24:36 182

原创 排序算法之选择排序

基本介绍选择排序是从一组数据中,按指定的规则选出某个元素,在按照规定交换位置后达到排序的目的;排序思想从头至尾扫描数组,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列;例子:给定数组 [3,5, 6, 2, 4],要求按照从左到右、从小到大的顺序进行排序分析思路:选择排序一个需要进行数组大小-1轮排序;先假设当前数为最小数,然后和后面每一个数进行比较,如果发现有比当前最小数更小的数,就更新当前最小数和下标;当一轮数组遍历到最后时,就可以获取

2020-12-10 16:10:59 868

转载 面试官: 讲讲 Spring 事务有哪些坑?

引言今天,我们来讲 Spring 中和事务有关的考题。因为事务这块,面试的出现几率很高。而大家工作中 CRUD 的比较多,没有好好总结过这块的知识,因此面试容易支支吾吾答不出来。于是乎接下来你就会接到一张好人卡,如"你很优秀,不适合我们公司!"主要内容如下:1.Spring 事务的原理;2.Spring 什么情况下进行事务回滚;3.Spring 事务什么时候失效;4.Spring 事务和数据库事务隔离是不是同一个概念;5.Spring 事务控制放在 Service 层,在 Service 方

2020-12-09 14:48:47 112 1

原创 排序算法之冒泡排序

基本思想给定一个数组,这些元素将通过相互之间的比较,按照大小顺序一个一个地像气泡一样浮出水面。实现思路每一轮,从数组头部开始,每两个元素比较大小并进行交换,直到这一轮当中最大或最小的元素被放置在数组的尾部,然后不断地重复这个过程,直到所有元素都排好位置。其中,核心操作就是元素相互比较。例子:给定数组 [3,5, 6, 2, 4],要求按照从左到右、从小到大的顺序进行排序思路:我们要使用循环遍历这个数组,从第一个值开始,每两个值去比较大小,如果第二个值比第一个值大,则进行交换,继续两两比较,直到数

2020-12-09 14:32:17 241

原创 Spring中@Autowired和@Resource注解区别

/*** 自动装配;* Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值;** 1)、@Autowired:自动注入:* 1)、默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值* 2)、如果找到多个相同类型的组件,...

2020-12-04 09:57:24 209

原创 联合索引(辅助索引)在B+树的结构

在什么是索引这篇文章中介绍了索引的常见的数据结构,其对应数据结构的图是以主键索引来讲解的。本文我们一起看下联合使用在B+树的结构是怎么样的?联合索引是什么对多个字段同时建立的索引(有顺序,ABC,CBA是完全不同的两种联合索引);假设联合索引为age,name,school组合的其在B+树的结构如下:联合索引的叶子节点中data数据存储的是主键id;如果要查询语句中查询的是表中所有的数据,则先通过联合索引树找到主键ID,然后再根据主键索引树找到对应data数据;联合索引中一个节点中会按照索引从

2020-11-04 10:34:41 2442

原创 IntelliJ IDEA 控制台修改不同级别日志的颜色

在使用IntelliJ IDEA 工具开发时,有时候为了方便查看一些控制台的日志,我们可以通过下载一个插件来进行设置不同日志级别在控制台打印的颜色;步骤:1.安装插件File ->Setting->Plugins 搜索Grep Console插件安装后重启IDEA2.File ->Other Settings , 可以看到 Grep Console,可以设置不同级别日志的颜色3.保存设置,启动项目,控制台日志打印就和设置的颜色一致啦;我们也可以点击红色箭头也可以直接到日志颜

2020-11-03 13:56:29 9247

原创 gitlab密码更新后,使用git命令报错remote: HTTP Basic: Access denied fatal: Authentication failed for ‘https:xxx‘

当我们的gitLab仓库的密码更新后,我们在使用命令行进行操作时,会出现问题:报错信息:remote: HTTP Basic: Access deniedfatal: Authentication failed for 'xxx'提示我们身份验证失败;解决方法:打开控制面板进入用户账户,点击管理Windows凭据找到对应的git凭证,进行编辑,修改成新密码,保存即可重新输入命令就可以啦...

2020-10-20 13:28:24 1024

原创 java.lang.IllegalArgumentException: No enum constant springfox.documentation.service.ParameterType.Q

java.lang.IllegalArgumentException: No enum constant springfox.documentation.service.ParameterType.QUERY项目使用springBoot整合swagger时启动报错:java.lang.IllegalArgumentException: No enum constant springfox.documentation.service.ParameterType.REQUEST at java.lang.

2020-10-20 09:52:01 8038

原创 ORA-01440: 要减小精度或标度, 则要修改的列必须为空问题修复

环境准备:使用oracle数据库:create table table01 ( id number(16) not null, name varchar2(50) default null, money number(12,6) default null, primary key (id));select * from table01;insert into table01 (id,name,money) values (1,'一路',200000.12);查询数据:在

2020-09-19 12:11:20 9603 1

原创 Spring零碎知识

Spring定义 Spring是一个容器,一个分层的JavaSE/EE一站式轻量级的开源框架。 SPring的主要作用就是为代码解耦,降低代码间的耦合度。 根据不同的代码,Spring采用了IOC和AOP进行解耦。我们用IOC降低主业务逻辑之间的耦合 AOP来降低主业务逻辑和系统级逻辑之间的耦合度。 IOC使得主业务逻辑在相互调用过程中,不再自己维护关系了,而是由Spring容器统一管理...

2020-09-19 10:39:32 255

原创 多线程之ExecutorCompletionService使用

在工作中在使用多线程进行并行处理一些事情的时候,我们希望能够依次获取先执行结束的任务结果,我们就需要使用到ExecutorCompletionService类进行处理;当然我们还是看下正常我们在处理多线程并行执行任务的Demo;Demo1:public class ExecutorCompletionServiceDemo { public static void main(String[] args) { //这里只是为了方便,真正项目中不要这样创建线程池

2020-08-30 21:21:19 7027 2

Reyco郭-SpringMVC4.7z

Reyco郭-SpringMVC4.7z

2021-09-12

SSM框架-基础知识.7z

SSM框架-基础知识.7z

2021-09-12

MyBatis3.7z

MyBatis3.7z

2021-09-12

Spring4讲义.pdf

Spring4讲义.pdf

2021-09-12

阿里巴巴开发规范手册-泰山版

阿里巴巴开发规范手册-泰山版,手册以 Java 开发者为中心视角,划分为编程规约、异常日志、 单元测试、 安全规约、 MySQL 数据库、 工程结构、 设计规约七个维度。

2020-10-17

空空如也

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

TA关注的人

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