![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
业务所需
文章平均质量分 60
猫饭_ACE
这个作者很懒,什么都没留下…
展开
-
pom文件冲突引起的Excel无法下载
在最开始初始化的时候找不到对应的类,虽然我的Libraries里面是有的,ctrl也是能进去的,但就是找不进去经过排查发现,是poi版本冲突了,之前的 poi版本是4.1.2,但是同事更新成了5.2.0版的poi;后来我将poi坐标还原到了4.1.2版本(PS:也有升级到5.2.3 版本解决该问题的)原创 2024-01-15 18:44:06 · 1357 阅读 · 0 评论 -
【java】将本地jar包引入到maven项目中
-settings=是maven的setting.xml配置文件,会把jar包打包到xml文件中配置的本地仓库,未配置会打包到默认的本地仓库中(可以在idea的maven配置中找到该路径,配置文件中指定了maven仓库目录;2)system,system依赖不是由maven仓库,而是本地的jar包,因此必须配合systemPath标签来指定本地的jar包所在全路径。1)第一步,cmd命令行进入jar包所在的目录,执行命令后,本地仓库对应位置自动生成对应jar包和pom文件。-Dversion=版本号。原创 2023-12-18 11:01:25 · 1084 阅读 · 0 评论 -
【Idea】SpringBoot项目中,jar包引用冲突异常的排查 / SM2算法中使用bcprov-jdk15to18的报错冲突问题
项目中使用了bcprov-jdk15to18 pom依赖,但是发现代码中引入的版本不正确。追溯代码发现版本引入的是bcprov-jdk15on,而不是bcprov-jdk15to18,但是我找了半天pom依赖也没有发现有引入bcprov-jdk15on依赖。所以判断这个包肯定是其它依赖中包含的,需要exclude掉。原创 2023-12-15 17:52:38 · 2642 阅读 · 0 评论 -
【Java】在实体类中常用的注解校验
1.常用校验注解@NotEmpty,@NotBlank,@NotNull,需要搭配@Valid或@Validated使用2.@Valid或@Validated 中有 BindingResult,可以获取校验失败情况下的反馈信息,如果不添加,默认情况下会抛出对应的异常。3.@Validated无法单独提供嵌套验证功能。不能用在成员属性上,能配合嵌套验证注解@Valid进行嵌套验证。4.@Valid无法单独提供嵌套验证功能。能够用在成员属性上,能配合嵌套验证注解@Valid进行嵌套验证。原创 2023-11-09 00:12:46 · 4852 阅读 · 0 评论 -
【java】实现自定义注解校验——方法二
如图是我们自定义的一个年龄注解,message是该注解校验失败时的提示信息,default是默认值,我们可以重写该提示信息。下面两行代码是自定义注解需要加上的,这里不作研究。这里有两种实现方式,一种是当注解仅仅作用在字段(属性)上生效时:可以在工具类中编写方法进行逻辑校验;另一种:使用@Constraint注解,指明了校验类,进行校验,这里只实现第二种。自定义校验注解在代码中的应用////Class原创 2023-11-07 23:17:27 · 1023 阅读 · 0 评论 -
【java】实现自定义注解校验——方法一
编写注解类时,需要用到元注解来规定注解的实现方式等;/*** @Description 基础校验注解*/ //Target注解是指定当前自定义注解可以使用在哪些地方,这里仅仅让他可以使用在字段上;@Target(ElementType . FIELD) //指定当前注解保留到运行时;/*** 最小长度/*** 最大长度/*** 非空校验/*** 字典校验/*** 非法字符校验* 特殊字符:ascii码表中除字母、数字外的所有字符,顿号(、),间隔号(·)原创 2023-11-06 23:42:15 · 2033 阅读 · 0 评论 -
Java中常用的一些业务校验
半角字符是指英文字母、数字以及一些特殊符号,例如A-Z,a-z,0-9,!@#$%^&*()等。半角字符的宽度只有一个字符宽度。全角字符是指汉字、日文和韩文等非英文字符,以及一些特殊符号。全角字符的宽度通常为半角字符的两倍。原创 2023-10-19 17:23:27 · 502 阅读 · 0 评论 -
【springboot项目】在idea中启动报错合集
SpringBoot 启动命令过长点击项目启动配置项 -> shorten command line 选项选择 classpath file 或 java manifest 选项 -> 重新启动工程运行即可在 .idea/libraies/workspace.xml 中的。原创 2023-08-09 16:25:52 · 3060 阅读 · 0 评论 -
【Java】实现身份证的校验
【代码】【Java】实现身份证的校验。原创 2023-05-23 14:30:30 · 1524 阅读 · 0 评论 -
springBoot如何【禁用Swagger】
1、使用注解 @ConditionalOnProperty(name = “swagger.enable”, havingValue = “true”)并需要在配置文件里添加一个swagger.enable属性,根据不同的application-xx.yml进行动态插入true或false即可。2、然后在测试配置或者开发配置中 添加 swagger.enable = true 即可开启,生产环境不写该配置则默认关闭Swagger。生产环境下,需要关闭swagger配置,避免接口暴露。原创 2023-05-16 16:42:24 · 6286 阅读 · 1 评论 -
SpringBoot项目中的多数据源配置
}原创 2023-04-19 17:24:30 · 304 阅读 · 0 评论 -
【springboot 多数据源下,开启事务后,数据源切换失败】
当我们配置了事物管理器和拦截Service中的方法后,每次执行Service中方法前会开启一个事务,并且同时会缓存一些东西:DataSource、SqlSessionFactory、Connection等,所以,我们在外面再怎么设置要求切换数据源也没用,因为Conneciton都是从缓存中拿的,所以我们要想能够顺利的切换数据源,实际就是能够动态的根据DatabaseType获取不同的Connection,并且要求不能影响整个事物的特性。原创 2023-04-17 15:27:44 · 2038 阅读 · 0 评论 -
分布式多节点定时任务怎么只执行一次
该锁将持有5分钟,5分钟释放,当节点异常或者死亡,该锁默认在15分钟后自动释放。如果一个任务正在一个节点上执行,它会获取一个锁,以防止从另一个节点(或线程)执行相同的任务。如果一个任务已经在一个节点上执行,则在其他节点上的执行不会等待,只需跳过它即可。DB形式的外部存储需要创建表结构,redis等非结构形式的外部存储template会根据@SchedulerLock声明的锁名称自动创建对应的键值对,提供锁。当我们有多个服务器,每个服务器上都有相同的定时任务代码时,比如每天凌晨定时插入数据。原创 2023-04-12 14:23:30 · 3439 阅读 · 0 评论 -
webService的底层调用方式
同样,WebService客户端只要能使用HTTP协议把遵循某种格式的XML请求数据发送给WebService服务器,WebService服务器再通过HTTP协议返回遵循某种格式的XML结果数据就可以了,WebService客户端与服务器端不用关心对方使用的是什么编程语言。封装后的消息你可以通过各种已有的协议来传输,比如http,tcp/ip,smtp,等等,你甚至还一次用自定义的协议,当然也可以用https协议。Soap建立在http上,说白了是用http传送xml而已。原创 2023-04-04 17:50:12 · 493 阅读 · 0 评论 -
@Scheduled 定时任务不执行
【代码】@Scheduled 定时任务不执行。1. 启动类上加 @EnableScheduling 注解2. 定时任务类上加@Component3. 定时方法上加@Scheduled原因是:@Scheduled注解会在默认情况下以单线程的方式执行定时任务。这个“单线程”指两个方面:1. 如果一个定时任务执行时间大于其任务间隔时间,那么下一次将会等待上一次执行结束后再继续执行。2. 如果多个定时任务在同一时刻执行,任务会依次执行。原创 2023-03-28 16:47:46 · 14744 阅读 · 1 评论 -
【mysql、excel生成uuid格式总结】
2、Excel生成去除横杠uuid 格式(获取小写的32位随机ID:):600d65bc948a12602217fd8dfeebb1cs。1、Excel生成uuid 格式:600d65bc-948a-1260-2217-fd8dfeebb1cs。1、生成 有 - 的格式: 56b48f51-add0-11ed-9963-fa173e8e8ca0。2、生成不含 - 的格式:8ada3ef8add011ed9963fa173e8e8ca0。5、生成8位的随机ID。原创 2023-02-16 16:09:13 · 2662 阅读 · 0 评论 -
常用的Java正则表达式
EX:str.matches(“正则表达式”)原创 2023-02-13 17:25:44 · 450 阅读 · 0 评论 -
【文件读写】保存网页上的图片
从txt文件中依次读取图片的名称,在通过url保存网页上的图片到本地文件夹下。原创 2023-01-30 17:23:44 · 109 阅读 · 0 评论 -
【对象判空+时区问题+字符串格式日期的进位+序列化和反序列化】
序列化:把Java对象转换为字节序列(二进制)的过程。反序列化:把字节序列恢复为Java对象的过程。原创 2023-01-30 15:05:55 · 306 阅读 · 0 评论 -
【JavaEmail】发送邮件
在发送邮件之前,每次都会创建Session连接,这里可以定义一个JavaMailUtils工具类,每次创建连接时,只需要调用createSession()方法,不必频繁写重复代码了。MailLogger --是JavaMail的一部分,包含在Java EE环境里面,但是不包含在Java SE环境里面,出现这个错误很大的原因是在SE环境里面测试邮件的发送;(默认端口110),把存储在POP协议邮件服务器的邮件下载到用户计算机中,但不能对邮件进行在线操作。简单邮件传输协议,用于发送电子邮件的传输协议。原创 2023-01-04 11:20:18 · 548 阅读 · 0 评论 -
【 Redis中实现锁功能】---RedisTemplate
【代码】【 Redis中实现锁功能】---RedisTemplate。原创 2023-01-03 16:16:52 · 766 阅读 · 0 评论 -
【Log4j2 漏洞与解决方案】
这本是个不常用的插件,但代码触发到的频率很高,高到你代码中每次触发info,warn,error 等日志写入的时候,都会去校验一下是否执行Lookup的逻辑。如果用你的主机,远程调用我启动的破坏代码(应用服务)呢,这时候你的服务主机就是案板上的肉了,任人宰割。Log4j2 bug的破坏方式是什么,其实很简单,就是类似于SQL注入,这个更厉害,直接是代码注入,代码执行权限自然相当于应用权限。有的项目,可能依赖较为复杂,且不方便重新编译,可以直接在运行时,添加以下JVM参数,这样可以禁止Lookup生效。原创 2022-12-29 19:26:04 · 515 阅读 · 0 评论 -
【Java8新特性】groupingBy分组
Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组。需要对查询到的List集合,按照时间分组完毕后,在根据身份证分组。原创 2022-11-08 11:54:42 · 2719 阅读 · 0 评论 -
postman给后端传参数时使用raw中的josn不可以,但x-www-form-urlencoded可以
(处理json格式的数据),@RequestBody接收的是请求体中的数据(json格式的数据,只有请求体中能保存json),所以使用@RequestBody接收数据的时候必须是POST方式等方式。application/x-www-from-urlencoded,会将表单内的数据转换为键值对,当模拟表单上传数据时,用此选项,但当然此表单不能上传文件,只能是文本格式,要上传文件,使用上面的格式。这个不是很常用,了解即可。x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。原创 2022-11-08 10:03:21 · 2569 阅读 · 0 评论 -
【Apache Tomcat信息泄露漏洞】
9月28日,Apache发布安全公告,公开披露了Tomcat中的一个信息泄露漏洞(CVE-2021-43980)。由于某些Tomcat版本中的阻塞式读写的简化实现导致存在并发错误(极难触发),可能使客户端连接共享一个Http11Processor实例,导致响应或部分响应被错误的客户端接收,造成信息泄露。Apache Tomcat 版本 >= 10.1.0-M14。Apache Tomcat 版本 >= 10.0.20。Apache Tomcat 版本 >= 8.5.78。原创 2022-11-02 21:06:38 · 4204 阅读 · 0 评论 -
base64方式下载文件【java、js】(绝对路径|相对路径)
/使用此种方法获取文件流时,访问资源文件返回IO类为DataInputStream,该类没有重写available(),调用该方法会执行父类InputStream的available(),返回的是0,因此不能使用以下方式获取字节数组,可以使用OutputStream来获取数据。Linux环境下报找不到路径:src/main/resources/template/xxxx.docx。点击按钮下载用户手册,用户手册文件存放在项目中的resources目录下的template文件夹中。原创 2022-09-13 16:39:48 · 1809 阅读 · 0 评论 -
【Java】引入easyExcel后,导致springboot项目无法开启tomcat
在springboot运行中,无法开启tomcat并报错,原因是org.ehcache和net.sf.ehcache有冲突,导入了两个版本的encache包。只需要排除其中一个包就可以正常运行了。经过查询原来是easyExcel里面带着有encache包,所以排除easyExcel里面的ehcache即可。...原创 2022-08-15 19:20:37 · 516 阅读 · 0 评论 -
idea项目启动报错合集
增加@SpringBootApplication(exclude = MongoAutoConfiguration.class)这个注解即可。原创 2022-08-15 18:53:31 · 2403 阅读 · 0 评论 -
JSONObject转String有“\“
有可能是因为jsonboject中包含另一个json串,应该把里面那个json串提取出来,用fluenPut(key,value)方法放到jsonobject中;原创 2022-07-29 14:10:34 · 3562 阅读 · 1 评论 -
【Java】for循环删除元素 + map中key-value存储元素
采用迭代器Iterator,这种方式可以正常的循环及删除。2、使用map结构,以key-value的方式存储数据示例代码中,以省份为key,在遍历value值时,根据key查询map数组:若已存在该key,则dto直接存入value中,若该key不存在,则新建key-value,存储到map中...原创 2022-06-28 15:30:01 · 1084 阅读 · 0 评论 -
【JAVA】数字转化相关
matches() 方法:用于检测字符串是否匹配给定的正则表达式。EX:str.matches(“正则表达式”)正则表达式:2、java除法运算 并 向上与向下取整 | 四舍五入3、java中int(Integer)类型与long(Long)类型数据的相互转化int 类型数据转换为:long、Integer、Long ;long 类型数据转换为:int、Integer、Long;Integer 类型数据转换为:int、long、Long;Long 类型数据转换为:int、long、Inte原创 2022-06-24 19:20:24 · 145 阅读 · 0 评论 -
【为对象javaBean赋默认值】----java通过反射获取属性字段名、值、数据类型
JavaBean中属性值为null的赋默认值,根据对象的类型不同,分别赋不同的值仅限于当前类,不能给父类设置值参考了博主的方法,自己做了修改,原博主链接:https://blog.csdn.net/qq_25381015/article/details/116198594方法调用:...原创 2022-06-24 17:00:54 · 1620 阅读 · 0 评论 -
Http请求实战 ---- 【restTemplate.exchange方法】的简单了解应用
1、什么是RestTemplateRestTemple是Spring提供的用于访问Http请求的客户端;相对于apache的HTTPClient类,逻辑繁琐,代码复杂,还要自己编写使用类HttpClientUtil,封装对应的post,get,delete等方法。RestTemplate可以通过callback回调方法和配置HttpMessageConverter 来定制,用来把对象封装到HTTP请求体,将响应信息放到一个对象中。RestTemplate提供更高等级的符合HTTP的六种主要方法,可以很原创 2022-03-31 14:38:56 · 13576 阅读 · 2 评论 -
【Java】使用【sublist】方法实现分页
背景:根据业务需求,将数据提供给前端时需要实现分页,但由于数据是调用第三方服务查询出来的,并没有实现分页,因此后端需要实现分页后在将数据提供给前端各种百度后发现了list中的sublist方法,可方便的实现该需求,特此记录(PS:代码是网上找的,亲测可用)实现:/** * list集合工具类 */public class ListUtils { /** * * @param pageSize 当前页面大小 * @param pageIndex 当前页原创 2022-03-28 22:19:30 · 2636 阅读 · 0 评论 -
业务中有关【时间】的使用
Date同样有compareTo的方法,可以将String通过SimpleDateFormat转化成Date类型,再进行compareTo的判断。SimpleDateFormat可以通过parse方法,将一个日期类型的字符串,转化成对应的Date型日期。两个日期格式必须相同,如 :2020-01-01与2020-05-05。如果格式不同,比如2020/01/01,则可能会影响最终结果。该方法的返回值是自1970-01-01 00:00:00到指定日期间的毫秒数,返回值类型为long。原创 2022-03-03 11:04:22 · 1328 阅读 · 0 评论