自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java HttpUtil 异步不等待调用

使用executeAsync()方法发送异步请求。使用thenAccept()方法处理异步请求的响应结果,并通过join()方法等待异步请求完成。

2024-06-14 11:11:05 463 1

原创 数字类型字符串效验NumberUtil.isNumber和StringUtils.isNumber以及StringUtils.isNumberOrDecimal

【代码】数字类型字符串效验NumberUtil.isNumber和StringUtils.isNumber以及StringUtils.isNumberOrDecimal。

2023-08-14 11:20:27 404

原创 生成扭曲图片验证码写法

2023-08-08 10:21:16 147

原创 controller实体类接收参数赋默认值

@Datapublic class Person {private static final String DEFAULT_PAGE_VALUE = 0;private static final String DEFAULT_SIZE_VALUE = 0;private String page = DEFAULT_PAGE_VALUE;//新增加的字段private String size = DEFAULT_SIZE_VALUE;//新增加的字段private String hobby;}

2023-06-05 17:55:51 611

原创 linux中netstat相关命令

本文的重点是弄清楚netstat指令中每一列的含义而在这个过程中,顺便记录一些网络指令(比如ipconfig,tracert,arp,netstat,tasklist)以及一些网络概念(比如localhost,loopback,和0.0.0.0 的区别),整理一下也算是一个回顾。

2023-03-17 15:23:54 499 1

原创 数据库字段timestamp根据当前时间设置默认值

数据库字段timestamp格式,勾选根据当前时间戳更新.当新增数据时发现并不会有默认值,只有修改数据的时候才会自动生成默认值。这种情况可以通过设置默认值。

2023-03-14 10:08:06 1371

原创 Linux中用curl发送GET和POST请求

curl 使用 -X POST 可以发送POST消息。curl默认协议就是GET,直接使用 curl url相当于直接用浏览器打开。

2023-03-13 09:51:57 1691

原创 nginx常用命令与简单转发配置

具体忘记什么错误了,只记得给了/usr/nginx/logs/nginx.pid’路径。指定检测特定Nginx配置文件:-c表示configuration,指定配置文件。解决方式:打开nginx.pid文件,里面填写nginx主进程ID即可解决。分配置,可以不同的命名文件,将不同类型的转发配置到不同的文件里方便管理。1.运行reload重新加载配置文件命令时报错。主配置,通过include即可加载很多分配置。6.重新加载配置文件。

2023-03-09 15:01:54 860

原创 工具类读取yml配置

1.注意工具类需要加@component。

2023-01-03 10:46:55 269

原创 Optional 常用方法总结以及实战示例

empty : 创建一个空的Optional对象of:为非null的值创建一个Optional。of方法通过工厂方法创建Optional类。需要注意的是,创建对象时传入的参数不能为null。如果传入参数为null,则抛出NullPointerException。因此不经常用。ofNullable:为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。isPresent: 检查一个Optional对象中是否有值,只有值非空才返回true,否则返回false。

2022-11-28 11:43:23 272

原创 OncePerRequestFilter自定义效验过滤器

【代码】OncePerRequestFilter自定义效验过滤器。

2022-11-28 10:52:01 870

原创 MySQL CONVERT() 函数

【代码】MySQL CONVERT() 函数。

2022-10-10 14:45:56 1372

原创 @Validated实体类参数效验注解

比较实用优雅的参数注解效验方式。

2022-08-18 10:43:38 1646

原创 自定义注解+泛型+反射实现SQL拼接

生产需求,代码框架没有用到mybatis,采用SQL直接执行方式。因为需要对不同的表进行插入数据操作,这里通过自定义注解+泛型+反射工具类,实现智能化SQL拼接,代码封装思路挺好的,值得记录学习。

2022-08-15 16:51:37 455

原创 springboot自定义注解防止表单重复提交

功能实现:使用了自定义注解、自定义拦截器、redis缓存等知识点。2.防止重复提交拦截器类3.具体拦截逻辑类4.添加自定义拦截器类(必须有这个拦截才会生效)5.过滤器(构建可重复读取inputStream的request)======================== 以下是上述主要逻辑的配套工具类 ========================...

2022-08-10 19:07:03 319

原创 java枚举类应用-让代码更有序(方便维护)

java枚举类应用-让代码更有序(方便维护)

2022-08-10 17:44:35 224

原创 stream中map相关方法

这三个方法一般用于格式转换mapToDouble,mapToInt,mapToLong举例:map里面可以写判断,举个例子

2022-08-10 14:59:05 429

原创 解决数据库查询时间少8小时(时区)问题

从业务表查询数据入到统计表。数据库时间存储字段为timestamp,发现从业务表查出的时间数据入统计表后少了8小时。debug经查是查询业务表的输出就少了8小时。采用方法二,修改代码数据库连接即可解决。方式一是修改数据库服务本身的配置。...

2022-08-09 20:56:23 2609

原创 List中数据量过大如何处理?集合拆分 + 并发处理(Lists.partition + Semaphore)你值得拥有

代码】List中数据量过大如何处理?集合拆分 + 并发处理(Lists.partition + Semaphore)你值得拥有。

2022-08-04 17:32:29 831

原创 int在数据库表设计中长度的含义

发现数据库表中某一条数据的某一字段定义为int类型,长度为4,结果发现其数据却存储了7位数。M指示最大显示宽度。最大有效显示宽度是255。显示宽度与存储大小或类型包含的值的范围无关。当实际的值的长度 小于 (M)时,可以使用zerofill属性,让该值从左侧填满长度。也就是说,int的长度并不影响数据的存储精度,长度只和显示有关。当实际的值的长度 大于 (M)时,照样可以显示实际值的长度。unsigned(无符号) int 存储范围是 2^4*8。int类型的存储大小为4个字节。...

2022-08-04 10:45:52 1318

原创 分页助手返回数据缺少问题解决

前言生产中遇到分页返回数据异常问题。分页选择10条数据,结果只返回2条,切换第二页可能10条返回3条。问题原因mybatis中使用了一对多,导致查询出来了10条数据,经过一对多的合并,数据就变少了。解决方式拆分SQL,删除一对多写法,改为多次查询,先查主表。...

2022-08-01 10:26:46 444

原创 mysql 优化 Using join buffer (Block Nested Loop)

说明:生产环境发现接口响应慢,经查是SQL执行慢,发现是表关联时候右表数据量大,循环嵌套查询速度很慢。如图刚开始SQL执行计划这是测试环境,生产环境fsp_cor_inf数据量很大,经过排查发现是Using join buffer (Block Nested Loop)导致的查询慢,开始解决,首先,在表关联的地方建立索引,然后执行发现没有效果。然后,发现两表字符集不一致,一个是uft8一个是uft8mb4,可能这个原因导致的索引失效。随后修改表字符集然后发现还是没效果,原来上面修改的是表的字

2022-07-27 17:15:41 1693

原创 PageHelper自定义count(*)查询解决排序失效导致数据总数不对问题

生产问题:带条件查询全部订单,发现展示数据2条,数据总数40条。分析后发现是分页助手查询总数时候会优化SQL,去除排序,导致SQL中分组求最新一条数据的排序丢失,导致数据不对后条件筛选导致查询count的SQL总数和数据总数不一致。解决方式:自定义count(*)查询最新版的PageHelper支持自定义count,参考链接: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/Changelog.md#504—

2022-07-11 14:17:36 1102

原创 java初始化读取yml配置文件内容工具类

可应用于static代码块内读取application.yml配置内容

2022-07-07 14:57:36 642

原创 mysql如何先排序后分组group by

**前言:**经常遇到需要对数据进行分组并取组内最新一条数据的需求,这边总结了3种方法。需求:查询业务流程明细表中每个业务流程最新明细信息实现:mysql 5.6可以这样:5.7以后对子查询排序做了优化,子查询全表排序失效,网上很多是在排序后面加limit的,这样感觉很不好,数据量大会丢数据,建议可以这样:方式一:方式二:...

2022-07-04 10:34:38 6346 8

原创 SQL正则匹配报错换个思路解法

**需求:**表中ancestors字段表示数据层级,当想匹配层级中含有13的数据但是不能匹配到131这种数据.思路:首先想到用like匹配,发现数据前后没有逗号,不好去匹配,然后想到了正则,发现SQL中regexp不支持复杂正则,例如"(?...

2022-06-22 16:46:16 405

原创 通过parent_id递归处理list集合成层级结构示例

**前言:**开发中经常遇到同一张表里面的数据需要通过id和parent_id进行层级处理,这里提供递归处理的代码示例。

2022-06-22 15:15:54 699

原创 Object转List<Map>工具类,理解泛型的使用

说明:解决直接强转爆黄警告问题,也可在此代码基础上自定义异常类型进行处理。

2022-06-22 15:08:52 1342

原创 group by分组和distinct去重导致数据量变大

问题出现:1.表通过公司名字distincy去重查询数据100条2.表通过公司地域分组和通过公司名字去重查询数据101条问题分析:存在相同名字不同地域的数据,SQL2先group by 把相同名字的数据分到不同的组里,然后在不同的组里面去distinct去重,所以导致SQL数据总量增多问题解决:找到脏数据,处理脏数据,当前我通过下面SQL查找相同名字不同地域的数据,然后修改脏数据解决问题....

2022-06-20 10:06:54 1179

原创 connector.ClientAbortException: java.io.IOException: Connection reset by peer

原因分析:同一只接口,当返回数据少的时候可以,返回数据多时报错,因此定位为后端返回数据过大,而nginx 的 配置文件中,默认的数据转发限制太小引发这种错误。页面接口报错控制台日志报错解决方法:修改nginx.conf文件,新增或修改如下4个参数重启nginx服务,问题解决......

2022-06-16 18:03:20 558 1

原创 Request Entity Too Large 上传文件错误代码413

问题:上传接口本地运行没问题,在服务器就报HTTP 413错误解答:修改配置文件,以nginx为例

2022-06-15 10:10:15 72

原创 nginx转发get请求多参数缺少参数问题

问题:nginx发现转发的get请求参数只有一个,&符号后面的第二个参数没了。解决:转发的链接参数&没加转义字符导致的

2022-06-08 19:42:42 1523

原创 请求接口报502错误

1.排查代码网关.2.排查nginx转发地址3.如果只是put或者delete请求报错,那么排查nginx配置是否支持4.如果出现问题3,并且支持,那么用IP地址调用put请求,不用用域名调用,看是否可行5.如果IP可行,域名不行,那么就是域名封装IP的时候不支持put和delete请求...

2022-06-08 17:35:42 8652

原创 好用的IDEA插件

前言:整理下我使用过的一些插件,本博客会不定时更新增加.1.IDEA插件----Free Mybatis plugin作用:通过XML写SQL的推荐安装,可以检查你返回值参数有没有问题,还可以实现dao接口和XML实现的跳转2.IDEA插件----Mybatis Log Plugin–超级实用,记得日志开启debug模式才可以生效效果是直接把参数嵌入SQL里面,...

2022-05-16 10:57:53 431

原创 2020.2.2版idea的file mask 为空解决办法

方式一:找IDEA的find.xml文件位置(以2020为例):C:\Users\Administrator\AppData\Roaming\JetBrains\IntelliJIdea2020.3\options\find.xml修改<application> <component name="FindSettings"> <option name="customScope" value="All Places" /> <option na

2022-05-13 11:09:18 1558

原创 error processing condition on org.autoconfigure.transaction.TransactionAutoConfiguration$Transaction

Jar包损坏,类没找到,可以尝试删除仓库,新建个仓库,让代码自己重新下载JAR包来解决

2022-05-11 11:31:29 643

原创 Springboot过滤器和拦截器实现

1.过滤器首先先写一个过滤器Filter,不使用注解package com.liuhaiyang.springboot.filter2; import javax.servlet.*;import javax.servlet.annotation.WebFilter;import java.io.IOException; //过滤器public class MyFilter implements Filter { @Override public void doFilter

2022-04-28 11:12:26 579 1

原创 ArraryList是怎样进行扩容的

概述:arrarList默认大小是10,当集合个数大于容量的时候,就会以1.5倍容量去进行扩容,如果还不够大就在扩容后的1.5倍再扩容。扩容后要对原来的集合进行cope到新的集合中。(在add()方法中调用确保内部容量方法,传入参数当前元素个数加一,当它大于实际数组大小的时候就调用grow()方法进行扩容。扩容是右移一位,进行扩容1.5倍,不够再进行扩容,通过copeof()方法进行数组的复制。)详细:为了说明说明这个问题,我们直接来看ArrayList的源码。首先看ArrayList中的add方

2022-04-06 14:22:44 943

原创 MySql 索引的最左匹配原则举例详解

最左匹配原则最左匹配原则就是指在联合索引中,如果你的 SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配。例如某表现有索引(a,b,c),现在你有如下语句:select * from t where a=1 and b=1 and c =1;#这样可以利用到定义的索引(a,b,c)select * from t where a=1 and b=1;#这样可以利用到定义的索引(a,b,c),用上a,bselect * from t where b

2022-04-04 12:36:12 3397

原创 SpringAOP中的JointPoint和ProceedingJoinPoint使用详解

概念Joint PointJointPoint是程序运行过程中可识别的点,这个点可以用来作为AOP切入点。JointPoint对象则包含了和切入相关的很多信息。比如切入点的对象,方法,属性等。我们可以通过反射的方式获取这些点的状态和信息,用于追踪tracing和记录logging应用信息。Pointcutpointcut 是一种程序结构和规则,它用于选取join point并收集这些point的上下文信息。pointcut通常包含了一系列的Joint Point,我们可以通过pointcut来同时

2022-03-25 10:35:45 3734

XMLTools插件

Notepad++插件,可序列化xml文件 Notepad++是现在比较流行的文本编辑器之一,小巧、响应快速,并且支持多种计算机语言编程,虽然在研发方面不能与高级IDE编程开发工具相提并论,但是应用Notepad++同样能写出漂亮的代码。 Notepad++另外吸引人之处在于支持插件安装,可以丰富Notepad++的功能。方便快捷,支持插件安装,Notepad++已经完全满足我们日常的需求,甚至能够替代IDE作为编程工具了。 今天介绍如何安装XML Tools插件,有了这个插件就可以玩转XML文件了。

2020-12-03

可在服务器上运行的多线程脚本架子.zip

这是一个可在服务器上运行处理任务的架子,可直接在指定类中写JAVA代码逻辑,然后打包,放在服务器上解压后一键启动.内部已经配置好多线程,留有注解,简单易懂,可以加深初学者对多线程理解.

2020-08-27

空空如也

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

TA关注的人

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