自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 maven子模块无法导入jar包问题

maven子模块无法导入jar包,然后放到父项目的pom.xml则可以导入。可以试试更新仓库后,引入成功。明明本地仓库有jar包。

2023-10-30 11:40:52 573

转载 jpa使用方法

JPA

2022-08-26 17:12:59 1598 1

转载 实用,一键生成数据库文档

数据库文档

2022-05-12 11:59:59 1135

转载 SpringBoot 整合 Redis 使用详解(StringRedisTemplate 和 RedisTemplate 对比分析)

1、前期准备首先保证安装好redis,并开启远程访问权限(最好配置密码)pom.xml: 添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>application.yml:spring: redis

2022-04-23 15:25:33 768

原创 Validation数据校验注解

2022-04-20 14:19:52 262

原创 如何使用@AllArgsConstructor和final 代替 @Autowired

@AllArgsConstructor和final 代替 @AutowiredSpringboot官方建议使用final来修饰成员变量,然后通过构造方法来进行注入原因:final修饰的成员变量是不能够被修改的,反射那就没办法了。spring代替 @Autowired(lombok相关注解) (前提:使用lombok)@Slf4j@RestController//生成一个包含过所有字段的构造方法//@AllArgsConstructor//会将类的每一个final字段或者non-null字段生

2022-03-28 21:43:29 3393 1

转载 使用Apache commons-text进行占位符替换

Apache commons-lang3包中的 StrSubstitutor可以将字符串中的变量替换为指定的值从commons-lang3-3.6.jar版本起 org.apache.commons.lang3.text.StrSubstitutor已经过时,文档上建议用commons-text的org.apache.commons.text.StrSubstitutor代替。先引入 <dependency> <groupId>org.ap

2022-03-28 11:46:36 3150

转载 Java内部类

一、什么是内部类?可以将一个类的定义放在里另一个类的内部,这就是内部类。广义上我们将内部类分为四种:成员内部类、静态内部类、局部(方法)内部类、匿名内部类。/*** 我是一个外部类(外部是相对内部而言)*/public class Outer{ /** * 我是一个内部类 */ class Inner{ //... }}二、为什么要用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影

2022-03-20 17:16:09 219

转载 泛型体系知识

一、什么是泛型1.背景:JAVA推出泛型以前,程序员可以构建一个元素类型为Object的集合,该集合能够存储任意的数据类型对象,而在使用该集合的过程中,需要程序员明确知道存储每个元素的数据类型,否则很容易引发ClassCastException异常2.概念:Java泛型(generics)是JDK5中引入的一个新特性,泛型提供了编译时类型安全监测机制,该机制允许我们在编译时检测到非法的类型数据结构。泛型的本质就是参数化类型,也就是所操作的数据类型被指定为一个参数。3.好处:类型安全消除了强制

2022-03-19 23:36:27 108

原创 自定义鉴权注解与AOP

1.给上游业务方发放key和秘钥才能访问系统2.上游根据DigestUtils.md5Hex(key.concat(时间戳).concat(秘钥).toUpperCase())生成token3.传递给下游key,token,timespan4.下游根据key查找数据库,用key和数据库的秘钥,时间戳重新进行加密5.下游加密后的结果与上游传的token进行比较上游传递参数:@Datapublic class AuthenticateBO { /** * 请求key

2022-03-16 20:25:59 513

转载 MyBatis-Plus

一、MyBatis-Plus1、简介  MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在。官网文档地址:  https://mp.baomidou.com/guide/MyBatis-Plus 特性:  https://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A72、使用 SpringBoot 快速使用 MyBatis-Plus(1)准备工作  需要 Jav

2022-02-26 15:03:45 267

原创 plantuml使用

plantuml的安装1.idea安装plantuml的插件2.安装graphviz,安装路径默认在c盘。画er图file->new ->classdemo:@startuml'https://plantuml.com/use-case-diagrampackage 订单{ entity (totalorder) { 订单总表 -- # string id 主键 stri

2022-02-25 11:02:08 2203

原创 hutool的使用总结

一.计时器TimeInterval的使用TimeInterval timer = DateUtil.timer();......代码执行log.info("执行耗时:{}ms",timer.interval());timer.intervalRestart();// 重置log.info("耗时:{}ms",timer.interval());TimeInterval的其他方法:package cn.hutool.core.date;import cn.hutool.core.util.

2022-02-17 14:45:04 3033

原创 Intellij IDEA中使用Debug调试详解

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容:一、Debug开篇二、基本用法&快捷键三、变量查看四、计算表达式五、智能步入六、断点条件设置七、多线程调试八、回退断点九、中断Debug十、附:JRebel激活一、Debug开篇首先看下

2022-01-25 11:22:24 7678

原创 git合作规范

第一种方式:develop 开发分支:开发人员每天都需要拉取/提交最新代码的分支test 测试分支:开发人员开发完并自测通过后,发布到测试环境的分支release 预发布分支:测试环境测试通过后,将测试分支的代码发布到预发环境的分支(这个得看公司支不支持预发环境,没有的话就可以不采用这条分支)master 线上分支:预发环境测试通过后,运营/测试会将此分支代码发布到线上环境hotfix 分支:在 master 发现新的 bug 时,需要创建一个 hotfix,完成后,合并到 master 和 de

2022-01-24 18:22:40 1415

原创 mysql的utf8和utf8mb4关联查询失效问题

user_limit_consume_record的total_order_id的编码是utf8mb4,而totalorder表的TotalOrderId编码是utf8编码,导致查询不走索引,索引失效,查询很慢select * from user_limit_consume_record uleft jointotalorder t on u.total_order_id = t.TotalOrderId;新增字段不指定编码,默认使用数据库的编码...

2021-12-30 18:36:04 864

原创 mysql的笛卡尔积问题

两个表左连接发现十几分钟还是出不来select count(*) from limitoperationrecord lleft JOIN t_employee e on e.user_id = l.user_idwhere l.log_time >= '2019-06-01 00:00:01' and l.log_time <'2020-01-01 00:00:01' ;检查发现l表user_id 为’’(空字符串)的数据有101857,e表user_id为’’(空字符串)

2021-12-28 11:44:46 599

转载 Optional 的使用

一.简介Optional 是一个对象容器,具有以下两个特点:提示用户要注意该对象有可能为null简化if else代码二. 方法介绍创建:Optional.empty(): 创建一个空的 Optional 实例Optional.of(T t):创建一个 Optional 实例,当 t为null时抛出异常Optional.ofNullable(T t):创建一个 Optional 实例,但当 t为null时不会抛出异常,而是返回一个空的实例获取:get():获取optional实例

2021-11-25 18:11:15 373

原创 WebClient网络请求工具类

网络请求工具类:package com.xx.xx.xx.helper;import com.fasterxml.jackson.core.type.TypeReference;import com.fasterxml.jackson.databind.ObjectMapper;import io.netty.channel.ChannelOption;import io.netty.handler.timeout.ReadTimeoutHandler;import org.springfra

2021-11-04 20:28:31 679

原创 注解切面打印日志

SysLog定义日志注解:/** * 系统日志注解 * * @author admin * @since 2020-09-01 10:25 */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface SysLog {}定义切面:/** * * 切面 * @author admin * @since 2020-09-01 10:25 */@S

2021-11-02 14:53:11 179

原创 mysql的联合索引

但是假设你要是在联合索引里把age放在中间的位置,设计一个类似(province, city, sex, age, hobby,character)的联合索引,接着SQL写成where province=xx and city=xx and sex in(xx, xx) andage>=xx and age<=xx and hobby in (xx, xx, xx, xx) and character=xx的话,那么不好意思,只有province, city, sex, age几个字段可以

2021-09-03 15:28:58 101

原创 mysql排序order by的时候如何使用索引

通常而言,就我们自己想象一下,假设你有一个select * from table where xxx=xxx order by xxx这样的一个SQL语句,似乎应该是基于where语句通过索引快速筛选出来一波数据,接着放到内存里,或者放在一个临时磁盘文件里,然后通过排序算法按照某个字段走一个排序,最后把排序好的数据返回。但是这么搞通常速度有点慢,尤其是万一你要排序的数据量比较大的话,还不能用内存来排序,如果基于磁盘文件来排序,那在MySQL里有一个术语,叫做filesort,这速度就比较慢了。通常

2021-09-03 10:23:17 8533

转载 mysql数据库中数据类型的长度

mysql中常见字段的大小在mysql中新建数据表的时候会有长度一说,其实用建表语句建数据表的时候也有涉及例如:CREATE TABLE user(uid int(4),name varchar(255),passward varchar(20)birthday data)不知道你有没有注意这个数据类型后面的括号有什么玄机,今天看了《Mysql 5.6 从零开始学》这本书,算是把这个地方搞清楚了。括号里的数字叫数据的宽度,我们不能一概而论,因为不同的数据类型对宽度的处理也

2021-08-18 15:44:48 2368

转载 mysql优化建议

数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 bak_为前缀并以日期 (时间戳) 为后缀所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)数据库基本设计规范

2021-08-18 12:49:12 170

原创 java自带延时队列

创建消息体对象import java.util.Date;import java.util.concurrent.Delayed;import java.util.concurrent.TimeUnit;/** * 延时任务消息体 * * @author * @since 2021-07-15 17:27 */public class DelayTask implements Delayed { final private String totalOrderId;

2021-07-23 17:49:21 185

原创 函数式接口

函数式接口:有且只有一个方法抽象方法的接口,可以有其他的方法.格式;intface in{//有且只有一个抽象方法//可以有其它默认方法,静态方法,私有方法…}@FunctionalInterfaceinterface ai {public void show();}自己定义函数式接口:demo1:demo2:定义无参数无返回接口方法定义一个函数式接口@FunctionalInterfacepublic interface LockExecutor { /**

2021-04-16 19:47:29 170

原创 SHA1加密工具类

安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。该算法经过加密专家多年来的发展和改进已日益完善,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为

2021-04-15 12:00:03 829

转载 编写自己的xxx-spring-boot-starter

一、编写自己的springboot-starter1.引入对应的依赖2.编写实现类3.编写配置文件读取类 主要注解是@ConfigruationProperties(“配置的值例如 example.a”)4.编写自动装配类5.编写默认的配置文件6.在resources/META-INF/spring.factories 中配置我们的自动装配类二、具体编码1. 引入的依赖<dependencies> <dependency> <group

2021-04-14 19:43:28 123

转载 pom.xml文件中的parent标签

maven的核心就是pom.xm,使用maven是为了更好地帮项目管理包依赖。如果要引入一个jar包,需要在pom文件中加上<dependency> <groupId></groupId> <artifactId></artifactId></dependency>就可以依赖相应的jar包了。基本使用:场景一:有两个项目A、B、C,都依赖同一个jar包:common.jar。若分别在各自的项目中引

2021-04-14 15:51:03 1982

原创 springboot 返回的json中忽略null属性值,不传递

方法一、实体上使用 @JsonInclude(JsonInclude.Include.NON_NULL)1、如果放在属性上,如果该属性为NULL则不参与序列化 ;2、如果放在类上,那对这个类的全部属性起作用 ;参数意义:JsonInclude.Include.ALWAYS 默认JsonInclude.Include.NON_DEFAULT 属性为默认值不序列化JsonInclude.Include.NON_EMPTY 属性为 空(””) 或者为

2021-04-09 19:30:54 1918

转载 SpringBoot项目的静态资源的访问及存放

在springBoot项目中,如果是只做后端的微服务,比较简单,直接写后端代码即可,但是部分情况下会需要页面的展示,所以在这个时候就需要进行一些配置来满足页面的展示下面是application.yml文件中对静态资源访问的配置spring: resources: #这个节点配置是设置静态文件存放的路径 static-locations: file:///d:/(这个是放在本地硬盘上的,比如为D盘) static-locations: classpath:/static(这个是放在resourc

2021-04-07 20:43:17 390

原创 springboot解决跨域

springboot解决跨域问题,新增文件CorsFilter文件解决文件代码:@Slf4j@WebFilter(filterName = "corsFilter", urlPatterns = "/*")@Order(1)public class CorsFilter implements Filter { private static final String ACCESS_CONTROL_ALLOW_HEADERS = "User-Agent,Origin,Cache-Contr

2021-04-06 09:11:27 97

转载 idea git合并某个分支下的指定文件

场景:现在所在分支A,需求将B分支的指定文件的合并到A分支下。1.显示与工作树的差异点击指定分支,选择Show Diff with Work Tree2.选择指定文件点击Get from Branch即可将该分支添加到所在分支下。3.选择指定文件点击Show Diff即可对比本地分支与目标分支的文件差异,可自主选择合并内容。...

2021-03-03 13:49:36 1500 2

原创 获取自定义注解

自定义注解:@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface ToJsonField { /** * key名 */ String name() default "";}注解使用:@Datapublic class LeaveFormReqDTO { /** * 泛微用户id */ @Require

2021-03-02 20:09:53 356

原创 js封装数组json串

function GetJsonData() { var cons = new Array(); var json = { "classid": 2, "name": "", "zlclass": "测试类型1,测试类型2,测试类型3", "pname": "", "tel": "" }; var json2 = { "classid": 2, "name": ".

2021-02-07 10:03:22 371

转载 Postman:API接口调试利器

Postman是一款API接口调试工具,使用它可以很方便的对接口进行测试,并且后端人员可以将自己的调试结果导出,方便前端人员调试。安装下载地址:https://www.getpostman.com/downloads/下载完安装包后直接双击安装即可。主题设置这里不得不说,Postman的界面还是做的很好的,比起Swagger来说好多了,Postman默认提供了两种主题,一种亮色和一种暗色,可以通过左上角的File->Settings按钮打开。调整字体大小可能界面默认的字体大小并不适合

2021-01-30 17:50:52 334

转载 Bigdecimal类型判断是否等于0(用equals方法的坑)

用来判断Bigdecimal类型是否等于0的方法,b.equals(BigDecimal.ZERO);用equals方法和BigDecimal.ZERO进行比较,方法存在的问题:Bigdecimal的equals方法不仅仅比较值的大小是否相等,首先比较的是scale(scale是bigdecimal的保留小数点位数,比如 new Bigdecimal(“1.001”),scale为3),也就是说,不但值得大小要相等,保留位数也要相等,equals才能返回true,Bigdecimal b = new

2021-01-29 15:39:38 988

原创 mysql的字符集

最近查询发现两个表的字符集不一样,导致查询很慢,没走索引。一个是utf8,一个表utf8mb4。两条语句查看表的字符集:select table_name,TABLE_COLLATION from information_schema.tables where table_schema = ‘financial_center’;show table status;更改表的字符集:alter table serviceorder convert to character set utf8mb4;

2020-12-31 09:46:58 107

转载 Java8中的foreach跳出循环break/return

java8中跳出循环不能使用break?通过测试发现:对于java8中的特殊写法lamada表达式中,不能使用break,会提示错误;java8中使用return,会跳出当前循环,继续下一次循环,作用类似continue;java8中使用foreach,但是不是lamada表达式写法,可以正常使用break或者return,可以直接跳出循环.public class TestForEachJava8 { public static void main(String[] args) {

2020-12-18 21:15:02 380 1

转载 将list分成多个list集合

1:按指定大小,分隔集合,将集合按规定个数分为n个部分/** * 将集合按len数量分成若干个list * @param list * @param len 每个集合的数量 * @return */ public static List<List<TotalorderDO>> splitList(List<TotalorderDO> list, int len) { if (list == nul

2020-11-30 11:15:22 9938

空空如也

空空如也

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

TA关注的人

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