自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring发布订阅机制,应用监听(ApplicationListener)事件(ApplicationEvent)的基本用法

在实际业务中,一些经常重复操作的动作可以交给spring的监听发布事件来处理,写好监听逻辑,需要操作库的时候只需要发布对应的事件即可。3、例如实际业务中对订单有任何变动操作的,需要记录订单变动日志的场景下,可以使用spring的事件监听记录订单变动日志信息。如果多个监听类监听同一个事件类,此时发布一个事件,多个监听类每个都会监听到该事件。一、创建业务事件Bean,并继承ApplicationEvent。1、有监听就有发布,有发布就有监听,相辅相成。2、监听类只能监听相对应泛型Bean的事件。

2024-03-01 14:30:00 90 1

原创 Linux Centos7、Centos8、OpenCloudOS 8系统应用服务调用(上传附件)接口报The temporary upload location [/tmp/tomcat.xxx.8

3、文件上传接口,入参类型为 Multipart(form-data)的方式处理请求时,默认就是在第二个目录(tomcat.xxx.8070)下创建临时文件的(而本次报错的接口刚好就是form-data的入参格式)2、修改 /usr/lib/tmpfiles.d/ 目录下的 tmp.conf 文件,排除清除tomcat开头的目录和文件(系统 /tmp 目录的清理规则取决于 /usr/lib/tmpfiles.d/tmp.conf 文件设定的策略。(治标不治本,不推荐)

2024-02-29 14:30:00 172

原创 java中子类继承父类,重写构造方法、重写抽象方法使用案例及区别

2、子类重写父类的构造方法,父类可以是抽象类、也可以不是抽象类。并且子类构造方法可以对父类构造方法进行参数个数拓展,前提是只能增加参数(不能减少父类构造方法的参数个数)3、子类可以重写父类的抽象方法,重写父类抽象方法的前提为父类必须是抽象类、抽象方法。二、新建一个子类,继承基础抽象类并重写父类构造方法、抽象方法。1、以上写法可以得出,子类可以重写父类的构造方法和抽象方法。一、新建一个基础抽象类。

2024-02-29 10:30:00 166

原创 java中二维数组(String[][])的简单示例

2、由此可见,二维数组其实就是常规的集合中元素又是集合,也就是说。1、二者输出结果一致。

2024-02-01 13:45:00 287

原创 Java中逻辑运算符 | 和 || 的区别

二者都是逻辑运算或的关系,即多条件中任意一个成立,则整个运算逻辑成立。2、|| 则从左向右依次,任意一个成立则终止,不会再运算后面的逻辑。3、| 则从左向右依次,逐个运算全部逻辑。1、|| 和 | 都是或逻辑运算符。

2024-02-01 10:00:00 124

原创 Linux CentOS 8.x、9.x 系统安装启动某些服务报:libtinfo.so.5、libncurses.so.5 的问题,解决方式

1、根据报错内容可以看出,是因为xxx服务在启动的时候加载了 libtinfo.so.5 库文件。此时我们可以查看系统中是否存在该库文件。2、从查询结果中可以看到,现在使用的系统中并没有安装对应的 libtinfo.so.5 库文件,这个时候可以将高版本创建软连接到5版本。1、如果报 libncurses 系列类似的错误,也可以按照此方式解决。2、解决方式基本是一致的。重新启动服务,得以解决。

2024-01-08 14:00:00 850

原创 解决:CntOS 9安装rpm文件(红帽子包管理)报error: Failed dependencies: libtinfo.so.5()(64bit) is needed by xxx

1、报如上信息,可能是由于rpm程序包不健壮导致。1、上述是报错信息显示为缺少依赖关系包导致的。--nodeps:安装时不检查依赖关系而报错。2、需要在安装时强制忽略错误或警告信息即可。--force:强制安装。

2024-01-08 10:00:00 504

原创 MySql常用函数之 convert()、str_to_date()、date_format()、to_base64()、from_base64()等使用介绍

1、将日期字符串转换为date、datetime类型。2、将date、datetime转换为日期字符串。2、将日期字符串转换为 datetime 类型。4、将字符串转换为 decimal 类型。1、将日期字符串转换为 date 类型。2、from_base64() 解码。3、将日期转换为 time 类型。1、to_base64() 编码。6、将字符串转换为数字类型。5、将数字转换为字符类型。

2024-01-06 23:59:24 763

原创 Java中使用 Base64、UrlEncode、URLDecoder 实现对字符串编码、解码

java的 UrlEncode 等效于hutool的 URLEncodeUtil 编码,java的 URLDecoder 等效于hutool的 URLDecoder 解码。【2】使用hutool的 URLEncodeUtil、URLDecoder 可以对路径字符串进行编解码。2、验证hutool的 URLEncodeUtil、URLDecoder 编码和解码。1、验证java的 UrlEncode、URLDecoder 编码和解码。

2024-01-06 19:13:17 982

原创 Java实现生成普通二维码(输出流和Base64)、小程序二维码(Base64)、获取小程序短链接

1、使用 Hutool QrCodeUtil 工具类生成普通二维码,关键代码。(2)请求微信api地址需要携带query参数 access_token。(2)请求微信api地址需要携带query参数 access_token。(1)成功获取到小程序二维码所需要的Base64码。(1)成功获取到小程序短链接。1、请求微信api示例代码。1、请求微信api示例代码。(2)Base64方式。

2024-01-03 14:00:00 815

原创 解决java接口使用spring-validation验证入参类型为List校验不生效的问题

由于 List 是接口,无法直接用于参数验证,但可以通过实现类重写 List 接口,把此实现类作为校验dto即可。传空值不可以请求,校验已生效。传空值可以请求,无法验证。

2024-01-03 10:00:00 1066

原创 Java使用 List.stream().map() 或 List.stream().peek() 为集合中元素的空属性设置默认值

2、List.stream().map() 设置过后需要返回值,List.stream().peek() 设置过后不需要返回值。1、List.stream().map() 和 List.stream().peek() 都可以设置属性默认值。3、如果只为了设置属性默认值,例如把null设为0,推荐使用 List.stream().peek()

2024-01-02 14:00:00 817

原创 Java中 String.format()、MessageFormat.format() 格式化拼接字符串使用介绍

2、MessageFormat.format() 也是格式化作用,但 MessageFormat.format() 使用的是标准占位符,且占位符必须指定参数索引,否则无法格式化。1、Java中的 String.format() 方法是一种格式化字符串的方法,它允许开发人员使用特定的格式将一组数据转换成一定格式的字符串。(2)、%.2f或%.3f 分别对应保留2位小数或3位小数,保留小数自动使用四舍五入规则。(1)、这个例子中,我们使用两个占位符 %tF和%tT,分别代表要格式化的日期和时间。

2024-01-02 10:00:00 625

原创 Java中MDC是干嘛的,有什么作用

Log4j、Logback或者Log4j2等日志中最常见区分同一个请求的方式是通过线程名,而如果请求量大,线程名在相近的时间内会有很多重复的而无法分辨,因此引出了trace-id,即在接收到的时候生成唯一的请求id,在整个执行链路中带上此唯一id.2、上面方式,只能在当前线程中获取到值,因为 MDC 的实现原理就是基于 ThreadLocal,而 ThreadLocal 的主要作用就是只对当前线程有效。MDC.java本身不提供传递traceId的能力,真正提供能力的是MDCAdapter接口的实现。

2024-01-01 18:11:11 870

原创 java中收集器分组函数 Collectors.groupingBy() 的用法详解

【2】推荐写法二,Collectors.toMap() 会使用 Function.identity() 或 o -> o 确定使用对象,BinaryOperator.minBy()或maxBy() 则用来规定比较属性,例如按分数、id等取最大或最小的那条数据。java的 stream 流是非常重要的特性,在开发中是必备的技能,这里着重分析一下 Collectors.groupingBy() 的各种用法。1、代码示例,在第六步的基础上优化。【1】以上二种写法是等效的。

2024-01-01 15:46:41 1065 1

原创 解决同局域网下无法ping通另一台电脑ip地址的问题

一、打开网络和共享中心-高级共享设置。2、验证成功ping通。

2023-12-24 18:49:08 1386

原创 windows系统连接同局域网下的其他电脑mysql等服务

2、成功连接局域网配置的另一台mysql服务。【3】新建入站规则,设置全部端口或指定端口。3、设置允许访问的入站端口。【1】 防火墙-高级设置。2、设置局域网共享网络。

2023-12-24 18:41:07 653

原创 解决swagger报:java.lang.IllegalStateException: Ambiguous models equality when conditions is empty

两个对象之间存在循环引用可能会导致Springfox无法判断对象的模型定义,从而出现模糊不清的歧义。2、把循环引用的两个dto中swagger属性的文档标记为隐藏 hidden = true。此方式只是临时解决,只是swagger文档看不见此属性,但不影响接口正常返回该属性。swagger框架的bug导致,集成的是 springfox 依赖版本。1、把 springfox-swagger2 的版本降低至 2.9.2。这是由于集成了 swagger 并且实体类或dto类之间循环引用,

2023-12-21 12:12:21 764

原创 Java使用 String.CASE_INSENSITIVE_ORDER 实现对一组字符串排序或根据首字母升序排序,常用于参数签名

2、比较器 String.CASE_INSENSITIVE_ORDER(Comparator) 默认排序策略是升序,如果需要降序可以设置为降序策略 String.CASE_INSENSITIVE_ORDER.reversed()可以看到 CASE_INSENSITIVE_ORDER 是 String 类中的一个不区分大小写的比较器对象,可以用来对一组无序的字符串进行升序或降序排序。1、从输出结果可以看到,比较器 String.CASE_INSENSITIVE_ORDER 可以对字符串排序,符合预期。

2023-12-18 23:19:14 596

原创 Java中 a++ 和 ++a 有什么区别

(3)所以输出a是完成+1后的结果为2,而赋值给b的值是+1之前a的值。(3)所以输出a是完成+1后的结果为2,而赋值给b的值是+1之后a的值。(2)通过结果输出可以看到,++a 是先把a变量+1然后再使用变量a。2、如果你需要先使用变量的值,再将其递增,那么应该使用a++3、如果你需要先将变量递增,再使用其新值,那么应该使用++a。(2)通过结果输出可以看到,a++ 是先使用变量a后再+1。,先使用a的当前值,然后再将a的值递增1。,先将a的值递增1,然后再使用a的新值。++a是前缀递增运算符。

2023-12-18 22:27:51 528

原创 EasyExcel解决文件读写问题,linux服务器没有安装字体支持而导致出现错误

在使用 easyexcel 进行导出数据时,在 windows和mac 环境中都能正常导出,但在测试环境 linux 服务器上导出报空指针异常,经排查可能是因为 linux 服务器没有安装字体支持而导致报错。由于缺少了 FontConfig 组件。

2023-12-13 00:07:11 719

原创 SpringBoot项目中获取(下载)业务功能的导入数据模板文件

在实际业务场景中,经常会遇到某些管理功能需要数据导入共功能,但既然是导入数据,肯定会有规则限制,有规则就会有数据模板,但这个模板一般是让客户自己下载固定规则模板,而不是让客户自己随便上传模板。下面介绍直接下载模板。1、在项目的 resource 包下创建 template 目录专门用来存放模板文件。2、把模板文件放入此目录中。3、 编写下载模板接口代码。5、成功下载模板文件。

2023-11-18 23:57:44 460

原创 nacos客户端连接服务端报Client not connected, current status:STARTING

降低客户端版本至 1.4.1 就Ok了。nacos服务端版本:v2.1.2。nacos客户端版本:2.1.2。

2023-11-18 04:13:22 658

原创 idea显示pom.xml文件漂黄警告 Dependency maven:xxx:xxx is vulnerable

1、打开idea设置,找到 File | Settings | Editor | Inspections。2、取消上述两项勾选即可。

2023-11-17 23:38:07 3599 4

原创 使用 hutool 工具包的 DesensitizedUtil 脱敏工具类实现对常见信息脱敏

2、除对以上脱敏外,还可以对身份证号、银行卡等进行脱敏,脱敏类参考:DesensitizedType。1、以上是对中文姓名、手机号码、邮箱脱敏。

2023-11-09 00:41:22 478

原创 Naocs配置中心配置映射List、Map、Map嵌套List等方式

【1】@ConfigurationProperties(prefix = "list-json-str") 其中 prefix 的 list-json-str 为配置内容的根节点属性。【2】示例代码中 listJsonStrList、cfTestMap、cfTestMapValForList 是配置类的映射属性。【3】示例代码中 ListByJsonStrDto:映射属性传输类dto,此 dto 内属性与配置内容中的节点属性一一映射。

2023-11-08 23:57:25 731

原创 使用hutool工具包的 NanoId 类生成纳米字符串(id),以及使用 RandomUtil 生成随机字符串

3、指定长度自定义字符随机字符串,代码示例。2、使用自定义基础字符,代码示例。1、指定长度随机字符串,代码示例。2、指定位随机数字符串,代码示例。1、使用默认基础字符,代码示例。

2023-11-08 23:56:15 704

原创 java使用stream流把集合中元素的属性空值赋值为0,BigDecimal类型属性使用reduce()自定义运算符,避免计算的时候导致报错

3、BigDecimal类型的属性可以使用 .reduce(new BigDecimal(0), BigDecimal::add) 方法进行逻辑运算。1、把集合元素中属性的空值赋值为0,需要开启实体类或dto类的 @Accessors(chain = true) 链式写法。2、stream()后面可以连续map绘制,如 stream().map().map().map()计算结果:30.35。

2023-11-07 23:23:11 1221

原创 使用 Hutool 的 StrUtil 工具对字符串颠倒翻转,以及其他常用工具类使用记录

1、可以使用 DateUtil.offset() 指定抵消(年月日或时分秒)2、正数是获取之后的日期,负数是获取之前的日期。

2023-11-07 23:14:42 345

原创 java验证 Map 的 key、value 是否可以为空

3、Map中 key、value 也可以同时为 null。1、从结果看,Map中 key 可以为 null。2、Map中 value 也可以为 null。

2023-11-07 23:00:55 1273

原创 java使用 Map 模拟分布式锁的原理,key是否存在,若存在则只做一次动作

在实际业务场景中,通常会遇见在某个循环块中,通过自定义规则,如果前面数据已经做过相同的业务动作,则后面数据再有相同的规则就不需要再执行该动作。从结果看,符合规定相同的邮箱只发送一次的预期。

2023-11-07 22:47:31 135

原创 java使用 stream().skip() 配合 limit() 对集合元素进行分页

1、从输出结果看,达到对 list 集合数据分页的预期。

2023-11-07 21:37:38 514

原创 java中获取List集合元素的索引,并重设该索引对应的元素值

1、以下方式可以获取元素的索引,并通过索引重设对应的元素值。从结果看,达到获取指定条件元素的索引,并重设值。从结果看,达到获取指定条件元素的索引,并重设值。

2023-11-07 21:18:01 473

原创 windows电脑安装系统后固态硬盘和机械硬盘的盘符号顺序显示错乱,解决方法

由于电脑磁盘是SSD固态硬盘+自己拓展的1T机械硬盘组成,固态硬盘分为C、D两个盘区,机械硬盘分为E、F两个盘区。为了提升运行速度,系统安装在C盘,安装完成后按照习惯盘区顺应该为C、D、E、F,但实际情况却是D、E盘符号互换了,非常不符合使用习惯。1、系统安装完成后,windows键+R输入cmd打开命令窗口执行compmgmt.msc命令或者Windows + X快捷键选择计算机管理,打开计算机管理-存储-磁盘管理、找到对应的盘符号右键-更改驱动号和路径-更改,确认即可。确认更改盘符正确即可。

2023-10-30 01:55:10 1187

原创 HuTool工具类 CollUtil 实现多个集合的交集、差集

2、交集支持2个以上多集合取交集,交集结果支持去重和不去重。3、差集只支持2个集合取差集,并且不支持差集结果去重。1、从验证结果看,符合取交集、差集预期。交集结果:[4, 5, 5]去重交集结果:[4, 5]差集结果:[1, 6]

2023-09-23 07:29:52 3822 1

原创 Idea和DataGrip自定义常用代码模板,熟练使用快捷模板可促进开发效率

在实际工作中,我们不可能一个一个字母的去敲代码,为了提升开发效率,可以使用常用的快捷代码模板。idea和datagrip自带的有,我们也可以自定义快捷模板。1、在编写界面,只需输入对应的快捷简写代码,按 Tab 键即可快速生成。2、注释快捷模板也可以按上述方式自定义。

2023-09-23 06:36:57 662

原创 Docker进入容器报:exec failed: unable to start container process: exec: “/bin/bash“ 解决

将 /bin/bash 换成 /bin/sh 执行方式,成功。制作镜像时使用了精简版,只装了sh命令,未安装bash。

2023-09-04 17:59:18 2784

原创 Java使用 MailUtil、JavaMailSender 实现发送邮件,QQ邮箱为例

2、在 resources 目录下创建配置文件 mail.setting。2、配置 bootstrap.yml 邮件服务属性。成功接收到包含附件的邮件。

2023-07-24 12:00:43 667

原创 Java使用 java.util.regex.Pattern 正则表达式校验参数值是否规范

java中我们可以利用 @Pattern 注解对某个入参进行规则校验,但有些特殊参数在接口入口处不方便校验,需要在代码中校验。从结果看,使用 java.util.regex.Pattern 配合正则表达式可以校验字符,符合预期。示例正则表达式 ^[a-zA-Z0-9]+$ 限制只能输入大小写字母、和数字。前提:接口需要标记 @Validated 才会生效。1、输入特殊字符、空格等校验。2、输入符合表达式的字符。

2023-07-22 18:32:30 1670

原创 Vue表单提交正则表达式验证使用案例

7、属性 validator 为自定义校验器,示例校验器为 validateXxxNo。自定义校验器对象必须写在 表单使用验证规则对象 前面(上面),否则可能会无法引用。6、属性 min、max 输入字符最小、最大长度限制。1、sendRules 是表单使用的验证规则对象。2、定义表单中用到的实例、变量、交互dto等。2、属性 xxxNo 是具体校验那个属性字段。3、属性 required 非空校验。4、属性 message 提示字样。5、属性 trigger 触发事件。1、表单布局及变量定义。

2023-07-22 15:21:10 792

空空如也

空空如也

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

TA关注的人

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