自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 谈二级索引

唯一索引(Unique Index):与普通索引类似,但在索引列上要求唯一性,与主键索引不一样的是,主键索引的唯一性是针对主键列的,而唯一索引是针对普通索引。唯一索引可以确保索引列的值是唯一的,可以用于查找特定的匹配行,也用于加速对非聚簇索引列的查询。哈希索引(Hash Index):哈希索引将索引列的值通过哈希函数映射为哈希码,然后使用哈希码进行索引。非聚簇索引的就是二级索引,当我们在数据库中频繁使用某一个列作为查询条件的时候,数据库会自动帮我们创建该列作为二级索引,一定要是非常频繁才行哦。

2023-07-16 11:45:46 400

原创 mysql 是怎样运行的笔记

要注意的是,查询到一条符合条件的数据后,就立马去回表操作,然后在回来接着查询符合条件的列。所以在查询叶子节点的时候,会从第一条符合条件的数据不断的往后面页查找,直到找不到为止。innodb的做法是延用了页的结构,将每个用户页中取最小的主键值作为新的一页的标识,这个页的关系可以看成是一颗树也就是我们说的B+树,每个非叶子节点就是我们的目录项页,在讲到用户数据存取到的是在页中的时候,讲述到这些数据的存放规律,以及其他的存取内容。第二点,每页之间的页码不是按照顺序来的,当数据达到页最大的存储时就会分页。

2023-06-17 10:21:23 397

原创 spring.factories 的作用是什么

spring.factories 文件用于在 Spring Boot 项目中配置自动配置项。它包含了一系列 key-value 对,key 是自动配置类的全限定名,value 是这些配置类对应的条件类。Spring Boot 会在启动时扫描 classpath 下的 META-INF/spring.factories 文件,并加载其中定义的自动配置类。这些自动配置类会在满足条件时自动生效,配置对应的 bean。

2023-05-08 16:13:37 2190

原创 代码评审都评审些什么呢?

2.2、新的技术使用,自己是要讲解一下这个技术用来干什么的,是在这个业务的初衷是怎样,是否符合。2.3、风险问题也是要讲解一下,看看新增的代码是否有风险。2.1、可能影响到其他人的代码,确认代码的修改范围。1、 方法参数过多(最好是3个,一般是3-5个吧)2.4、自我讲解代码的亮点。6、 一个方法调用大量查询。2、方法太长,未进行拆分。5、方法命名及其不合理。可以分为以下几点进行描述。

2023-05-07 10:04:05 840

原创 idea 启动 rocketmq源码

在idea的配置应用程序中指定启动要读取的环境路径key值在org.apache.rocketmq.common.MixAll文件中。在mq的运行主目录中创建conf、logs文件夹,conf存放的文件去rocketmq-distribution模块下复制3个文件。去org.apache.rocketmq.example.quickstart文件下分别启动生产者和消费者。${user.home}替换成项目的路径,这样模块启动的日志才会到logs文件夹下。broker启动成功的页面。说明生产和消费都成功了。

2023-03-12 16:54:27 315

原创 避坑创建空list集合

如果需要创建支持常规list操作的空list,可以使用CollUtil.newArrayList。以上2个类内部都没有实现add方法,且都是继承AbstractList类,第一个 生成的是Collections内部的EmptyList对象,所以最终调用的add方法只能是AbstractList类中的,第二个 生成的是Arrays内部的ArrayList对象,而AbstractList类中的add方法是直接报错。生成的list都是不能直接添加数据的。

2023-03-09 17:47:52 348

原创 mybatis-plus lambda自动填充更新生效

非XML的更新或新增的操作,要想自动填充功能生效需要添加对应的实体类,才能走到自定义更新策略中、

2023-03-09 17:30:44 958

原创 mysql 逆向查询树状结构

思路:先定义一个变量 @r,默认值就是最初的code或id,用limit限制查询的次数,也可以理解为层级,新增一列,用户记录 每次查询的时候用变量值作为条件去向上查询的子查询,思路:利用单表的2个父子id或code字段进行查询,数据一条条从上往下查,所以要求按照倒序的排序要有规则,不然查询结果就会不对。需求:在一个具有层级结构的表结构中,我需要根据一个现有的code或id向上所有的父级code或id。一开始我想直接想在代码中用递归的方法逐级向上查询一条数据,直到到达顶层之后就结束。代码实现起来也不是很难。

2023-02-16 16:16:47 189

原创 Idea 书签使用

idea 书签使用

2022-10-08 18:01:57 3099

原创 自动拆箱装箱笔记

Java是一个面向对象的语言,而Java中的基本数据类型不是面向对象的,这在实际使用时存在很多不便。比如:我们在使用带有泛型的类时,如果你把int放到泛型中会提示出错。需要将基本类型转成包装类型。就是把基本类型进行包装成一个对象,在英文中就是boxing(装箱)的意思。在JavaSE5中,为了减少开发人员的工作,Java提供了自动拆箱与自动装箱的功能。自动装箱:将基本类型自动转成对应的包装类。自动拆箱:将包装类自动转换成对应的基本数据类型。虽然包装类自动装箱和拆箱很方便,但当我们拿到一个包装类对象去做运算或

2022-06-19 10:53:07 80

转载 线程池笔记

小明最近打算出去玩,需要预定酒店。小明心想多久都没出来玩了,这次奢侈一把,定个好点的房间吧。于是,拿起电话打给酒店前台客服,小明:你好,请问是XX酒店吗?我想定一个总统套房。前台:您好,好的,我先帮您看下还有没有总统套房,请您先稍等一下。小明:好的。前台:您好,很抱歉,由于最近是假期,今天的总统套房都已经被定满了,明天可能会有空房哦。您那边是打算什么时候入住呢?小明:刚好是明天要入住,但是呢,因为最近人很多,都在定酒店。所以前台小姐姐帮我看下明天预约总统套房的人数是多少,预约人数有没有满。前台:好的,这边帮

2022-06-17 12:38:37 83

原创 配合datagrip和postman 批量处理数据

postman 批量处理数据

2022-06-14 17:39:18 532

原创 mysql 中的unsigned

mysql 中的unsigned

2022-06-06 11:23:19 448

原创 Optional flatMap 和map 的区别

Optional flatMap 和map 的区别

2022-06-02 17:56:09 1292 2

原创 桥接模式笔记

主要作用是通过将抽象部分与实现部分分离,把多种可匹配的使用进行组合。说白了核心实现也就是在A类中含有B类接口,通过构造函数传递B类的实现可以将抽象化部分与实现化部分分开,取消二者的继承关系,改用组合关系。抽象化(Abstraction)角色:定义抽象类,并包含一个对实现化对象的引用。扩展抽象化(Refined Abstraction)角色:是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。实现化(Implementor)角色:定义实现化角色的接口,供扩展抽象化角色调

2022-04-08 17:39:41 72

原创 fastJson JSON.toJSON 序列化为null

原因:用到了lombok 的以下写法@Accessors(chain = true,fluent = true)chain = true 可以把setter方法的返回值变成自己,以便于链式的写法fluent = true 给set和get的方法,去除get或set前缀,命名为fieldName(),而不是例如setFieldName这就导致了类中的属性是没有get和set前缀的方法,下面这fieldInfoList 就是空的最终结果JSON.toJSON(实体类)返回值..

2022-04-06 20:33:06 612

原创 Spring this调用当前类方法无法拦截

先给出代码示例package com.example.demo.service;import org.springframework.stereotype.Service;@Servicepublic class ProxyService { public void testA(){ System.out.println("进入A"); this.testB(); } public void testB() { System.

2022-03-18 17:14:31 552

原创 简单JDK动态代理demo

动态代理demo/** * @Description: 定义一个女孩,声明这个女孩想干的事 */public interface Girl { void date(); void watchMovie();}/** * @Date: 2022/3/5 * @Version: 1.1 * @Description: 定义一个可爱美丽的热辣美女 */public class HotGirl implements Girl { public Ho

2022-03-05 12:04:44 294

原创 java中复习部分继承关系

前提:1、当一个类中没有声明构造函数的时候,系统会给这个类声明一个默认无参的构造函数2、子类的初始化过程中都会先去初始化父类 ,即会调用super方法3、super方法必须只能构造函数中的第一条语句在继承关系中1、子类和父类都没有声明构造函数的时候,系统会给这2个类指定一个无参的构造函数且子类中无参构造函数是默认调用super()父类的无参构造函数的。2、父类中有声明多个构造函数的,子类可以在构造函数中用super方法使用父类任意一个构造函数3、父类中声明的构造函数,子类中的构造函数可以完

2022-02-17 11:14:07 249

原创 spring 总结错误2

在spring中允许存在一个bean类型下的多个bean,每个bean的name要求不一样。1、当我们在使用这个类型bean时,需要具体指定是什么名称的bean,不然就会出错。默认情况下 bean的名称是首字母的小写,但是也有例外。可以通过查看下面的代码得到java.beans.Introspector#decapitalize如果这个bean的name 首字母和第二个字母都是大写就直接返回它本身的类名作为bean名,如果长度大于0不为null那么bean名就是类名首字母小写。我们也可以

2022-02-12 17:17:14 352

原创 spring 总结错误1

1、在application的启动类中默认的扫描路径是启动类的路径,要想自己的类能编译出来,需要放到同一路径或这个路径下,又或者用ComponentScan指定需要编译类的路径。可以通debug 类org.springframework.context.annotation.ComponentScanAnnotationParser#parse 下的 basePackages查看真实路径2、在spring中用注解@Service修饰类时,spring容器会自动帮我生成这个bean并放入到容器中,如果

2022-02-10 16:38:07 362

原创 javax 和hibernate 的NotBlank

问题:hibernate版本在5 的时候,如果你用了 import javax.validation.constraints.NotBlank;在校验的时会报错HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.String'. Check configuration for 'updateInfo.paramD

2022-02-09 17:07:40 2144 1

原创 idea sevices 显示

可以添加选择你想要的服务类型选第一个一般默认都是springboot

2022-01-07 11:57:02 170

原创 idea启动时候报错,无法加载到Could not resolve placeholder ‘my.userName‘ in value “${my.userName}“

思路:明明在nacos有配置这个参数,不应该会拿不到。代码也没有错,放在其他模块下可以运行,那为什么还会提交说找不到呢。除非是在resources下的bootstrap.properties配置文件中的配置信息没有被读取。 思路:我们知道idea编译的时候会把类和配置文件加载到target包下,打开发现确实没有bootstrap.properties这个配置文件。解决:于是乎就去网上找问题为何会不生成配置文件呢?大致的解决方法有1、看看是不是路径有没有放错,在不在resources下面,看看resou

2022-01-07 11:16:19 1996

原创 java 基础

class son extends parent implements Impl2,这种写法,子类要想得到impl2接口的方法该怎么写呢?1、可以看成,父类先实现impl2接口方法再给到子类去继承。 这样,父类完成实现接口的方法后,通过继承给到子类。子类就“合法”有了impl2的方法2、也可以是先继承父类,再到子类中去写实现impl2接口的方法第一种方法好处是装逼、并且可以实现一种方法的隔离设计。如果再有一个子类son2去继承parent,那么这个son2也是可以有Impl2的方法...

2021-12-10 19:48:09 305

原创 Transactional 默认回滚策略和自定义回滚异常类型

首先:当我们使用声明式注解事务的时候,如果你只写Transactional 的话,方法返回中有写throws Exception 的话,idea会提示你要指定对应可能出现的异常类型。这个时候我就在想,这个事务的默认回滚异常类型是什么?如果我在注解中指定一个对应的回滚异常会发生什么?想是想不出的,只能看源码!!!随即写了个简单的测试类:1:不在事务注解上指定回滚异常类通过debug定位,定位到这个类点击进去找到后你会找到RuleBasedTransactionAttribute这个类中rol

2021-11-04 16:41:14 5219 1

原创 Mybatis-Plus查询时排除某列和更新字段的时候设置为null,忽略实体null判断

1、LambdaQueryWrapper<PlmCommonNoticeEntity> wrapper = Wrappers.lambdaQuery(plmNoticeEntity).select(PlmCommonNoticeEntity.class,info -> !"content".equals(info.getColumn()))2、@TableField(value = "`length`", updateStrategy = FieldStrategy.IGNORE.

2021-10-14 20:56:02 1209

原创 jdk 8 ConcurrentHashMap computeIfAbsent 里面也有死循环

建议使用的时候要避免key的hashcode重复,如果一样是会发生死循环的。例子:Map<String, Integer> map = new ConcurrentHashMap<>(16);map.computeIfAbsent(“AaAa”,key -> {return map.computeIfAbsent(“BBBB”,key2 -> 42);});先调用了 get 方法,如果返回为 null,则调用 putIfAbsent 方法,这样就能不

2021-10-08 13:54:49 226

原创 注解+分组校验在service方法中使用

场景描述之前在controller层中使用注解校验实体属性,现在因为是操作同一个实体类,但是需要在service中同样校验属性,同时还要区别某个属性,因为在这个service方法中并不是所有的属性都想着校验,部分属性是不需要校验的。解决方法1、现在实体类中把想要校验的属性分组,这个分组类可以是内部类这个类之所以要继承Default是因为需要使用它自带的@NotNull或其他的常见注解接着只要在实体类是使用就行@NotNull(message = “是否含运费不能为空”,groups = Che

2021-09-30 18:38:40 585

原创 final的使用

这里写自定义目录标题final的使用修饰基本类型修饰对象final修饰方法和类final的使用修饰基本类型1、在方法外声明一个全局的基本类型可以一直开始就直接赋值,如果不赋值需要在构造函数中给变量赋值。如:number2如果搭配static 和final一起使用的话,就需要你再static代码块中为该变量赋值(static修饰的常量只能在static代码中初始化)2、如果是在方法内部中定义一个final变量,可以先不赋值,但是必须要在使用的时候给这个变量赋值修饰对象修饰变量为对象的时候,必

2021-09-30 14:22:41 66

原创 控制打印spring非分布式事务日志信息

name里面的数据是自己连接数据库所用的事务管理器,不要照搬我的。每个人的事务管理器可能不一样。<logger name="org.springframework.jdbc.datasource.DataSourceTransactionManager" level="DEBUG"/>

2021-08-27 18:04:14 277

原创 分布式事务前看懂CAP、BASE

CAP、BASE跟后面要看的分布式事务有直接的关系,但是这两个分布式的理论对我们研究分布式系统里面的一些技术和方案都是作为基础的知识需要掌握的这个CAP这个东西啊,也是个在研究分布式相关的问题中,比较经典的这么一个理论,大家在学习下面的知识之前,最好是先有相关知识的一个积累,这样下面学习起来才会比较轻松一些CAP,就是Consistency、Availability、Partition Tolerence的简称,简单来说,就是一致性、可用性、分区容忍性,所以这个CAP理论讲的就是这么个东..

2020-11-28 11:01:10 244

原创 事务分析(面试)

1、面试题spring的事务支持(注解事务、声明事务、编程事务、事务的传播机制)?执行某个操作,前50次成功,第51次失败。a 全部回滚;b 前50次提交,第51次抛异常。ab场景分别如何设置spring事务。2、面试官心里分析聊完上面那个问题,面试官估计心里对你感觉相当不错了,但是呢,事儿没玩,还得聊聊实际项目中,你的java系统里的事务咋玩儿的啊?这就涉及到了spring对事务的支持,然后重要的事务传播机制!3、面试题剖析这个,你一般就聊下,spring...

2020-11-27 11:56:55 145

原创 互联网公司部署方案:蓝绿部署、灰度发布以及滚动发布

设计、开发、测试、部署,流程都讲过了,微服务技术栈,服务注册中心,nacos,RPC框架,dubbo,设计就要把各个服务拆分完毕,包括你的业务逻辑,需求,接口,数据库,类,功能的时序图每个人就负责开发自己的服务就可以了,nacos+dubbo用dubbo开发一些接口,只要定义一些接口和dubbo注解,更多的还是写java代码不同的环境之下,你的服务注册的namespace必须是不同的(1)滚动发布这是最常见的部署模式,一般就是说你一个服务/系统都会部署在多台...

2020-11-27 10:57:13 1083

原创 单机redis 一主三从三哨兵,windows 配置

首先先下载好redis文件,复制出三份分别命名为Master6379,slave6380,slave6381。真实的开发中redis都是要配置密码的,可以在redis.windows.conf中写上 requirepass "lsss" ,lsss就是你的密码。同时也要配置slaveof 127.0.0.1 6370 masterauth "lsss" ,在每个redis文件夹中新建sentinel.conf文件port26379sentinelmonitormymast...

2020-11-02 17:29:07 185 2

转载 突然挂了!Redis缓存都在内存中,这下完了! 原创 轩辕之风O 编程技术宇宙

原文链接:https://mp.weixin.qq.com/s?__biz=MzIyNjMxOTY0NA==&mid=2247486926&idx=1&sn=58e99f81d6d6ee31c9a5c8f93122e108&chksm=e87301bddf0488abfb04313550991458c8d6390fc67bf05dbe289fb2a6eb4e3b5b8b280ff946&mpshare=1&scene=1&srcid=0918aKxbt

2020-09-18 17:35:49 371

转载 处理Java异常的10个最佳实践

以下文章来源于Java之道,作者HollisJava之道有道无术,术可成;有术无道,止于道;「Java之道」致力于为广大Javaer传道授业解惑。以术识道,以道御术;线上代码不要使用printStackTrace()写完代码后请一定要检查下,代码中千万不要有printStackTrace()。因为printStackTrace()只会在控制台上输出错误的堆栈信息,他只适合于用来代码调试。真正需要记录异常,请使用日志记录。永远不要在catch块中吞掉异常catc...

2020-09-16 10:41:38 69

原创 Oauth2设置令牌过期时间accessTokenValiditySeconds,在代码中怎么判断是否过期

我们再配置ouath2的时候都会配置资源认证的服务器其中在配置授权服务器断点时会配置令牌的存储:tokenStore(tokenStore) ,这个令牌存储中会存令牌的过期时间,cliend_id,name等信息,一般默认使用InMemoryTokenStore()存储。我们可以在AuthorizationServerEndpointsConfigurer类中查看区别判断token的存储代码逻辑有了上面的前提后,我们直接在AuthorizationServerEndpointsConfigure

2020-09-07 17:36:58 8163 1

原创 windows 安装elasticsearch 5.2.2(包括head、kibana插件)

es5以上版本安装head需要安装node和grunt(之前的直接用plugin命令即可安装)安装ElasticSearch5.2.2一、需要安装jdk8(jdk7不可以)二、安装ElasticSearch5.2.21、从官方下载中心ElasticSearch Download下载ElasticSearch安装包2,开启ElasticSearch 服务将zip文件解压到E盘,进入E:\elasticsearch-5.2.2\bin目录,双击执行elasticsearch.b...

2020-09-01 17:08:59 138

原创 idea项目target下无法生成读取资源文件

先删除target ,再rebuild project 试试

2020-08-28 10:48:24 464

空空如也

空空如也

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

TA关注的人

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